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