王輝華,梁 浩,李舒婷,潘文靜,周 娟
(福建福清核電有限公司,福建福清 350300)
依據(jù)中國(guó)互聯(lián)網(wǎng)信息和數(shù)據(jù)使用的變化趨勢(shì),計(jì)算機(jī)用戶每天仍然需要并處理數(shù)十萬(wàn)個(gè)互聯(lián)網(wǎng)數(shù)據(jù),許多傳統(tǒng)的計(jì)算機(jī)軟硬件方法將越來(lái)越多。隨著計(jì)算機(jī)軟硬件的安裝和維護(hù)成本越來(lái)越高,它將成為信息技術(shù)和互聯(lián)網(wǎng)相關(guān)應(yīng)用快速發(fā)展、普及和使用的最新技術(shù)壁壘。為了快速解決技術(shù)問(wèn)題,谷歌于2006年啟動(dòng)了“谷歌101計(jì)劃”,并率先正式實(shí)施了云計(jì)算的新概念。云計(jì)算的目標(biāo)是逐漸將核心計(jì)算能力轉(zhuǎn)化為可動(dòng)態(tài)管理和操作的邏輯資源。虛擬化已經(jīng)成為未來(lái)云計(jì)算架構(gòu)的五大核心技術(shù)要素之一。虛擬化的核心技術(shù)有很多,根據(jù)實(shí)際運(yùn)行模式可分為、全虛擬化和半虛擬化;根據(jù)應(yīng)用實(shí)現(xiàn)的類型,它可以分為硬件虛擬化應(yīng)用和純軟件虛擬化應(yīng)用。全虛擬化服務(wù)可以為客戶系統(tǒng)提供完整可靠的虛擬計(jì)算平臺(tái)。半虛擬化技術(shù)必須通過(guò)操作系統(tǒng)虛擬化和VMM 服務(wù)配合實(shí)現(xiàn)。
GPU 本身是云計(jì)算系統(tǒng)的另一個(gè)強(qiáng)大硬件元素,它被廣泛應(yīng)用于云計(jì)算平臺(tái)、天氣預(yù)報(bào)系統(tǒng)等許多重要領(lǐng)域。除了計(jì)算云,高性能GPU 已廣泛應(yīng)用于亞馬遜天文臺(tái)EC2和阿里巴巴Eun 平臺(tái)。GPU 可以使用越來(lái)越多的嵌入式實(shí)時(shí)內(nèi)核,這就使得GPU 支持越來(lái)越強(qiáng)大的虛擬實(shí)時(shí)計(jì)算平臺(tái)。如果一個(gè)多用戶系統(tǒng)有一個(gè)可以同時(shí)使用數(shù)據(jù)陣列的GPU,這無(wú)疑將得到顯著改善。
此外,GPU 芯片廣泛應(yīng)用于視頻解碼器、圖像播放器、生物醫(yī)學(xué)設(shè)備和云計(jì)算設(shè)備。在大型應(yīng)用中,計(jì)算的高性能要求可能會(huì)有所不同[1]。一些系統(tǒng)可以完全支持高性能GPU 虛擬技術(shù)的使用,其技術(shù)對(duì)各種計(jì)算機(jī)應(yīng)用也提出了很高的要求。
由于許多商業(yè)和競(jìng)爭(zhēng)原因,GPU 的許多設(shè)計(jì)和細(xì)節(jié)不被披露,每一代產(chǎn)品的技術(shù)性能也非常不同。此外,GPU 硬件接口不開(kāi)放,主要原因是缺乏統(tǒng)一的標(biāo)準(zhǔn)。為了方便和提高GPU 的使用效率,系統(tǒng)只能根據(jù)制造商提供的驅(qū)動(dòng)程序安裝驅(qū)動(dòng)軟件。這些原因也極大地增加了圖形驅(qū)動(dòng)程序設(shè)計(jì)的虛擬性和實(shí)用性。
與原始硬件系統(tǒng)相比,虛擬硬件系統(tǒng)平臺(tái)上的程序運(yùn)行速度導(dǎo)致的性能損失是另一個(gè)重要原因和問(wèn)題。如果多余的功耗太大,直接減少使用GPU 芯片會(huì)增加設(shè)備成本。作為一個(gè)虛擬平臺(tái),GPU 對(duì)應(yīng)用程序和驅(qū)動(dòng)程序系統(tǒng)的使用和可見(jiàn)性的影響在很大程度上取決于實(shí)際部署和復(fù)雜性。
虛擬GPU 功能包括兩大任務(wù):完成硬件建模和硬件數(shù)據(jù)共享。硬件建模方法是通過(guò)硬件仿真軟件獲取虛擬GPU 提供的硬件,而無(wú)需實(shí)際訪問(wèn)虛擬GPU硬件資源的方法。硬件共享意味著管理多個(gè)GPU 硬件資源,以便能夠更廣泛地使用它們。
為保證GPU 虛擬技術(shù)引進(jìn)和實(shí)施任務(wù)的完成和實(shí)現(xiàn),GPU 虛擬集成的主要應(yīng)用模型可分為硬件建模、API 重定向、硬件直接橋接和應(yīng)用程序虛擬自適應(yīng)四大應(yīng)用。硬件直接仿真技術(shù)是指在系統(tǒng)本身沒(méi)有物理硬件的情況下,通過(guò)純仿真軟件直接實(shí)現(xiàn)仿真設(shè)備的物理元素。這與將某些專用應(yīng)用程序或高效GPU 硬件虛擬化的可能性直接相關(guān),這在實(shí)際系統(tǒng)開(kāi)發(fā)和操作實(shí)踐中尤為必要。應(yīng)用于圖形顯示技術(shù)建模和處理設(shè)備開(kāi)發(fā),優(yōu)化高性能GPU 系統(tǒng)架構(gòu),研發(fā),設(shè)計(jì)和應(yīng)用等專業(yè)領(lǐng)域。API 重定向的解決方案是,當(dāng)虛擬客戶端直接管理GPU 資源時(shí),使用主機(jī)虛擬監(jiān)視器作為另一個(gè)中心集線器。當(dāng)無(wú)法完全考慮更改調(diào)用接口以共享和管理GPU 時(shí),客戶端虛擬機(jī)監(jiān)視器可以使用不同的解決方案,使用接口模塊和終端模塊之間的直接通信通道。設(shè)備模塊之間的直接連接解決了虛擬機(jī)監(jiān)視器無(wú)法有效使用GPU 資源的問(wèn)題。全局虛擬技術(shù)是對(duì)虛擬機(jī)監(jiān)視器的修改,使監(jiān)視器本身無(wú)法更有效地管理GPU 資源,實(shí)現(xiàn)了虛擬機(jī)與GPU 節(jié)點(diǎn)之間的資源數(shù)據(jù)的實(shí)時(shí)無(wú)縫利用。
PF:在模塊化節(jié)點(diǎn)上運(yùn)行的主設(shè)備。模塊化計(jì)算機(jī)中使用的GPU 或GPU 驅(qū)動(dòng)程序模塊通??煽康匕惭b在集成PF 模塊中。PF 設(shè)備驅(qū)動(dòng)程序管理是所有設(shè)備管理器。與通用GPU 驅(qū)動(dòng)程序管理的另一個(gè)顯著區(qū)別是,它在整個(gè)生命周期和整個(gè)硬件規(guī)劃周期中完全管理幾乎所有的VF 驅(qū)動(dòng)程序。事實(shí)上,它控制著一個(gè)完整的設(shè)備驅(qū)動(dòng)程序。
PCI 設(shè)備。通過(guò)VFIO 模塊啟動(dòng)虛擬機(jī)時(shí),QEMU 將VF 設(shè)備作為PCI 設(shè)備帶寬返回虛擬機(jī),安裝在虛擬機(jī)上的操作系統(tǒng)將自動(dòng)安裝在相應(yīng)的VF PCI設(shè)備上,該設(shè)備通向帶寬設(shè)備。換句話說(shuō),VF 設(shè)備實(shí)際上只占用GPU 資源的一小部分。如果至少有兩個(gè)VF 和PF 設(shè)備斷開(kāi)連接,那么很明顯,在兩個(gè)VF虛擬機(jī)上運(yùn)行的引擎GPU 的實(shí)際顯示特性對(duì)于宏級(jí)別的虛擬機(jī)至少可以是1/2。
軟件仿真是指通過(guò)純軟件虛擬化,直接實(shí)現(xiàn)模擬GPU 在相關(guān)硬件邏輯單元中的功能需求的軟件方法。早期的虛擬機(jī)技術(shù)通常只消耗主機(jī)內(nèi)核中CPU的大部分計(jì)算能力,以及存儲(chǔ)和操作模塊的其他硬件資源。為了保證現(xiàn)有計(jì)算機(jī)環(huán)境系統(tǒng)的正常、連續(xù)運(yùn)行,它不能通過(guò)虛擬機(jī)直接模擬外部硬件設(shè)備,并提供一些相關(guān)的實(shí)用計(jì)算功能。最基本的建模方法之一是虛擬機(jī)只能提供與GPU 和其他硬件相對(duì)應(yīng)的少數(shù)硬件接口,以及與其他硬件相關(guān)的實(shí)際處理能力。最直觀、最簡(jiǎn)單、最詳細(xì)、最容易理解的演示方法之一是在GPU 模型中直觀、實(shí)時(shí)地演示硬件的實(shí)際操作。由于軟件建模還可能需要對(duì)GPU 的整個(gè)操作和其他復(fù)雜的硬件功能進(jìn)行建模,因此軟件建模方法至少應(yīng)具有足夠的靈活性和計(jì)算能力。然而,軟件仿真方法可以直接模擬各種硬件系統(tǒng)的實(shí)時(shí)行為。目前,這種軟件仿真方法正應(yīng)對(duì)著越來(lái)越多人能夠面對(duì)的各種領(lǐng)域的實(shí)際硬件測(cè)試問(wèn)題。目前可以說(shuō),它已廣泛應(yīng)用于大型繪圖和簡(jiǎn)單圖形處理的功能需求分析和預(yù)測(cè),以及大型復(fù)雜GPU 應(yīng)用的圖形設(shè)計(jì)技術(shù)的理論研究。
在通用計(jì)算機(jī)總線領(lǐng)域,GPGPU-SIM 基于CUDA 編程模型,分析了多目標(biāo)指令的啟動(dòng)順序,并在CPU 或CPU 上進(jìn)行了軟件仿真,后部由PTX 控制。
VGA 可以直接處理一些視頻信號(hào),對(duì)于用戶來(lái)說(shuō),最好使用VGA 直接處理視頻信號(hào),在模擬信號(hào)處理過(guò)程中,可以為用戶提供簡(jiǎn)單的功能。目前,這些GPU 芯片提供基本的二維圖形顯示或控制,廣泛應(yīng)用于大型虛擬顯示和平臺(tái)的設(shè)計(jì)。例如,KVM 和XEN 使用這些QEMU 芯片設(shè)計(jì)和開(kāi)發(fā)各種虛擬圖形顯示和控制器。
在并行可編程模型的條件下,GPU 自動(dòng)啟動(dòng)一個(gè)可與計(jì)算機(jī)同時(shí)工作的并行組(網(wǎng)格)。因此,這些平行導(dǎo)線通常分為塊。通過(guò)軟件仿真,成功地實(shí)現(xiàn)了GPGPU-SIM 卡。32并行線程可以在運(yùn)行計(jì)算模塊的管道上運(yùn)行,并且可以使用SIMD 進(jìn)行同步。如果條件分支不能同時(shí)發(fā)生在序列之間,則在同時(shí)使用收斂機(jī)制之前,它們不能自動(dòng)同步。GPU-SIM 已被廣泛應(yīng)用于解決各種相關(guān)的應(yīng)用問(wèn)題,并對(duì)基于GPU技術(shù)的各種結(jié)構(gòu)或新的功能特性進(jìn)行了研究和驗(yàn)證。
框架重定向API 和設(shè)計(jì)模式允許在接口和終端模塊中配置虛擬客戶端功能和虛擬主機(jī)。接口模塊設(shè)計(jì)用于應(yīng)用程序需要訪問(wèn)的兩個(gè)公共接口。主要用于連接GPU 驅(qū)動(dòng)程序的支持模塊提供對(duì)GPU 的直接訪問(wèn)。通用接口協(xié)議(如RPC 協(xié)議)廣泛應(yīng)用于前端和后端模塊中的無(wú)縫通信。在圖像顯示和管理功能方面,VMGL 完全兼容映射接口,該接口是通過(guò)添加到虛擬機(jī)客戶端數(shù)據(jù)庫(kù)中的新模塊接口直接從原始OpenGL 客戶端庫(kù)獲得的。它還支持通過(guò)新的客戶端虛擬節(jié)點(diǎn)數(shù)據(jù)庫(kù)終端模塊連接到原始OpenGL 庫(kù)。WireGL 網(wǎng)絡(luò)傳輸協(xié)議用于確保虛擬銀行客戶端調(diào)用映射控制命令直接發(fā)送到虛擬服務(wù)器。這避免了對(duì)客戶端GPU 服務(wù)器的直接和間接訪問(wèn)。它不僅通過(guò)WireGL 協(xié)議提高了網(wǎng)絡(luò)寬帶資源的使用效率,而且還提供了高達(dá)86%VMGL 的本地GPU 顯示效果。
GPU 的全虛擬化意味著應(yīng)用程序可以直接使用GPU,而無(wú)需使用虛擬機(jī)上的所有硬件驅(qū)動(dòng)器,即使用透明性。通常,設(shè)備模擬方法只能模擬內(nèi)部結(jié)構(gòu)簡(jiǎn)單、性能較差的虛擬硬件。API 重定向方法可以使設(shè)備的模擬性能接近原始虛擬硬件,但最大的技術(shù)缺點(diǎn)是必須更改客戶端虛擬庫(kù)存儲(chǔ)中的程序庫(kù)。設(shè)備直接連接方案的模擬性能相對(duì)較好,但發(fā)射率仍然較低。近年來(lái)提出的通用虛擬化GPU 實(shí)現(xiàn)方案結(jié)合了上述兩種實(shí)現(xiàn)方案,實(shí)現(xiàn)了客戶端虛擬機(jī)的充分利用和透明化。事實(shí)上,這種虛擬化方法和原理使用軟件直接模擬寄存器等硬件上下文信息。上下文更改完成后,可以直接從軟件連接硬件設(shè)備,并充分利用GPU 功能。
與設(shè)備之間的線性虛擬連接技術(shù)相比,GPU 的整個(gè)虛擬連接技術(shù)更具分裂性。同時(shí),它的性能明顯優(yōu)于模擬設(shè)備。提供一個(gè)不需要更改的驅(qū)動(dòng)程序,并將其加載到虛擬客戶端。這是基于GPU 架構(gòu)的全虛擬連接技術(shù)的最佳解決方案。gVirt 由英特爾青年大會(huì)高級(jí)工程師提出。通過(guò)圖像應(yīng)用實(shí)現(xiàn)了全虛擬GPU 系統(tǒng),并對(duì)gHyvi 和gScale 的完整虛擬機(jī)進(jìn)行了優(yōu)化。首先Yukzum 等人提出了整個(gè)網(wǎng)格系統(tǒng)的虛擬化,然后Yukzum 等人實(shí)現(xiàn)了整個(gè)網(wǎng)格系統(tǒng)的虛擬化。
為了實(shí)現(xiàn)基于GPU 內(nèi)核的完整平臺(tái)虛擬化,基于Xen 開(kāi)發(fā)了gvirt?;赬en(dom0)結(jié)構(gòu),更改虛擬主機(jī)非常容易。gVirt 為視頻存儲(chǔ)和命令緩存、非性能通知資源和其他關(guān)鍵I 塊寄存器區(qū)分多個(gè)GPU關(guān)鍵通道源和多個(gè)執(zhí)行者身份源。為了向用戶提供比原始GPU 處理器更快、更可靠、更緊湊的性能,gVirt 虛擬機(jī)可以支持直接訪問(wèn)影響隔離機(jī)制中性能的所有重要硬件資源。軟件模擬方法是用戶直接訪問(wèn)不重要的資源??梢杂行еС痔摂M機(jī),還支持先進(jìn)的存儲(chǔ)區(qū)域管理技術(shù),如彩色頁(yè)面結(jié)構(gòu),使所有虛擬機(jī)用戶都可以使用相對(duì)完整、獨(dú)立、可靠的存儲(chǔ)空間。首次成功地提出并應(yīng)用了地址空間擴(kuò)展等新技術(shù)和方法,大大降低了地址空間轉(zhuǎn)換的額外成本。gVirt 首次成功實(shí)現(xiàn)了GPU 時(shí)間控制器??刂朴?jì)劃周期的長(zhǎng)度可以顯著縮短GPU 任務(wù)上下文的更改時(shí)間。GPU內(nèi)存調(diào)度算法也可以獨(dú)立于Xen 處理器調(diào)度算法來(lái)實(shí)現(xiàn),這實(shí)際上意味著CPU 調(diào)度和GPU 內(nèi)存支持對(duì)視頻內(nèi)存的并行訪問(wèn)。gHyvi 提出了一種較慢的基于Xen 的映射表機(jī)制,該機(jī)制提供了嚴(yán)格的寫保護(hù),并減少了映射表刷新時(shí)間和VMM 同步成本。
由于硬件的結(jié)合,處理器進(jìn)程之間的切換可以在幾秒鐘內(nèi)自動(dòng)完成,但GPU 程序的數(shù)量并不小,GPU 編程頻率可以達(dá)到每秒數(shù)百納秒。對(duì)于相對(duì)簡(jiǎn)單的應(yīng)用程序,GPU 的編程周期約為每秒1毫秒。在此期間,從一個(gè)上下文切換到另一個(gè)上下文大約需要50萬(wàn)h。實(shí)際轉(zhuǎn)換只能使用大約一毫秒的預(yù)測(cè)時(shí)間。簡(jiǎn)單地說(shuō),GPU 本身消耗的時(shí)間和資源本質(zhì)上是對(duì)客戶端時(shí)間的浪費(fèi)??蛻舳俗疃嗫梢越邮?6%的GPU 資源。
在當(dāng)今高速網(wǎng)絡(luò)社會(huì),對(duì)計(jì)算資源性能、大規(guī)模密集計(jì)算和工作負(fù)載能力的要求逐年提高,在云平臺(tái)服務(wù)器上大規(guī)模部署高性能GPU 所需的硬件性能改進(jìn)也在不斷提高。為了盡快實(shí)現(xiàn)高性能GPU 在云平臺(tái)服務(wù)器系統(tǒng)上的共享,建議盡可能提高高性能GPU 系統(tǒng)服務(wù)器的帶寬利用率,使云服務(wù)器的管理更加簡(jiǎn)單。規(guī)范和逐步發(fā)展高性能GPU 系統(tǒng)的虛擬化和應(yīng)用技術(shù)。本文對(duì)GPU 虛擬化技術(shù)進(jìn)行了系統(tǒng)、詳細(xì)的綜述、研究、分析和比較。結(jié)果表明,經(jīng)過(guò)近十年的快速發(fā)展,GPU 虛擬化系統(tǒng)的綜合技術(shù)已經(jīng)分為4個(gè)子領(lǐng)域:設(shè)備模擬、API 重定向、設(shè)備直連和虛擬化。本虛擬系統(tǒng)技術(shù)研究報(bào)告除了收集了大量國(guó)內(nèi)外原始基礎(chǔ)研究數(shù)據(jù)外,還旨在了解虛擬系統(tǒng)的總體技術(shù)框架、系統(tǒng)設(shè)計(jì)及相關(guān)操作規(guī)范。