欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

半虛擬化的虛擬gpu的制作方法

文檔序號(hào):6378609閱讀:274來源:國知局
專利名稱:半虛擬化的虛擬gpu的制作方法
半虛擬化的虛擬GPU技術(shù)領(lǐng)域
本發(fā)明總地涉及虛擬化計(jì)算機(jī)架構(gòu),并且,更具體地,涉及一種半虛擬化的虛擬 GPU。
背景技術(shù)
計(jì)算機(jī)虛擬化是一種涉及將物理計(jì)算機(jī)器平臺(tái)封裝到在硬件計(jì)算平臺(tái)或者“主 機(jī)”上在虛擬化軟件的控制下執(zhí)行的虛擬機(jī)中的技術(shù)。虛擬機(jī)既具有虛擬系統(tǒng)硬件又具有 客戶操作系統(tǒng)軟件。在典型的虛擬化系統(tǒng)中,系統(tǒng)中所包括的任何物理硬件資源經(jīng)由仿真 模塊呈現(xiàn)給虛擬機(jī)。仿真模塊允許設(shè)計(jì)用于單個(gè)用途的設(shè)備功能性擴(kuò)至允許多個(gè)用途的模 型。例如,為了虛擬機(jī)與硬件輸入設(shè)備交互,諸如鼠標(biāo),需要提供呈現(xiàn)鼠標(biāo)操作的軟件仿真 模塊。虛擬機(jī)然后經(jīng)由軟件仿真模塊與鼠標(biāo)交互。
對(duì)于使用通用接口和低性能需要的簡(jiǎn)單設(shè)備,諸如鼠標(biāo)或者鍵盤,軟件仿真模塊 是有效的。然而,在虛擬化系統(tǒng)中經(jīng)由軟件仿真模型訪問具有更綜合接口和更高性能需要 的更復(fù)雜的設(shè)備,諸如圖形處理單元(GPU),產(chǎn)生兩個(gè)主要的問題。第一,因?yàn)镚PU是高度繁 復(fù)的處理單元,提供綜合的而且呈現(xiàn)GPU所提供的大范圍的功能性的軟件仿真模塊是非常 困難的任務(wù)。因此,當(dāng)前缺乏試圖呈現(xiàn)GPU的所有功能性的軟件仿真模塊,以致就算真的存 在,消耗GPU的、運(yùn)行在虛擬機(jī)中的應(yīng)用也運(yùn)行不佳。第二,因?yàn)镚PU接口更復(fù)雜并且性能 嚴(yán)格,提取的低效率經(jīng)常生成瓶頸和低效率。
一個(gè)用于上面描述的低效率的解決方案是為執(zhí)行在主機(jī)上的每個(gè)虛擬機(jī)提供獨(dú) 立的GPU。但是,這樣的解決方案實(shí)現(xiàn)起來非常昂貴并且不可擴(kuò)展。因此,這樣的解決方案 不能在各種需要從虛擬機(jī)訪問GPU的用戶中有效地實(shí)現(xiàn)。
因此,本領(lǐng)域中需要一種用于在多個(gè)顧客或者虛擬機(jī)中有效地共享單個(gè)GPU而沒 有必要擴(kuò)展硬件的系統(tǒng)和方法。發(fā)明內(nèi)容
本發(fā)明的一個(gè)實(shí)施例提出一種計(jì)算機(jī)系統(tǒng),包括初級(jí)處理單元,耦合到初級(jí)處理 單元并且經(jīng)由多個(gè)可指派接口可訪問的二級(jí)處理單元,在初級(jí)處理單元上執(zhí)行的多個(gè)客戶 虛擬機(jī),其中每個(gè)客戶虛擬機(jī)包括與二級(jí)處理單元相關(guān)聯(lián)的驅(qū)動(dòng)程序,以及特權(quán)虛擬機(jī),其 在初級(jí)處理單元上執(zhí)行并配置為將包括在多個(gè)可指派接口中的不同可指派接口組分配給 包括在多個(gè)客戶虛擬機(jī)中的每個(gè)驅(qū)動(dòng)程序,其中分配給包括在第一客戶虛擬機(jī)中的第一驅(qū) 動(dòng)程序的第一可指派接口組使第一驅(qū)動(dòng)程序能夠訪問二級(jí)處理單元而不與包括在多個(gè)客 戶虛擬機(jī)中的任意其他驅(qū)動(dòng)程序相沖突。
這里所描述的技術(shù)的一個(gè)優(yōu)點(diǎn)是在客戶虛擬機(jī)中執(zhí)行的客戶GPU驅(qū)動(dòng)程序能經(jīng) 由所分配的一組接口直接利用GPU的處理能力的至少一部分。因?yàn)閷?duì)于建立和控制對(duì)客戶 虛擬機(jī)的訪問,虛擬化層執(zhí)行最小干預(yù),所以這樣的直接訪問提升了多客戶虛擬機(jī)競(jìng)爭(zhēng)訪 問GPU的系統(tǒng)的性能。


因此,可以詳細(xì)地理解本發(fā)明的上述特征,并且可以參考實(shí)施例得到對(duì)上面所簡(jiǎn) 要概括的本發(fā)明的更具體的描述,其中一些實(shí)施例在附圖中示出。然而,應(yīng)當(dāng)注意的是,附 圖僅用于示意本發(fā)明的典型實(shí)施例,由于本發(fā)明可以具有其他等效的實(shí)施例,因此附圖不 應(yīng)被認(rèn)為是對(duì)本發(fā)明范圍的限制。
圖1是示意出配置為實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)的框圖2是示意出根據(jù)本發(fā)明的一個(gè)實(shí)施例的在圖1中的計(jì)算機(jī)系統(tǒng)中執(zhí)行的虛擬化 計(jì)算環(huán)境的框圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的圖2的特權(quán)VM和客戶VM的更詳細(xì)的視圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的圖2的特權(quán)VM和客戶VM與圖1的GPU之間的 交互的概念上的示意圖;以及
圖5A和圖5B是根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于使客戶VM能夠以半虛擬化的方 式訪問GPU的方法步驟的流程圖。
具體實(shí)施方式
在下面的描述中,將闡述大量的細(xì)節(jié)以提供對(duì)本發(fā)明更為徹底的理解。然而,對(duì)于 本領(lǐng)域技術(shù)人員來說顯而易見地是,缺少這些具體細(xì)節(jié)的一個(gè)或多個(gè)也可以實(shí)踐本發(fā)明。 在其他實(shí)例中,沒有描述公知的特征,以免對(duì)本發(fā)明造成混淆。
圖1是示意出配置為實(shí)現(xiàn)本發(fā)明一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)100的框圖。計(jì)算 機(jī)系統(tǒng)100包括中央處理器(CPU) 102以及經(jīng)由互連路徑進(jìn)行通信的系統(tǒng)存儲(chǔ)器104,該互 連路徑可包括存儲(chǔ)器橋105。存儲(chǔ)器橋105例如可以是北橋芯片,其經(jīng)由總線或者其它的通 信路徑106 (例如超傳輸鏈路)與I/O (輸入/輸出)橋107相連。I/O橋107例如可以是 南橋芯片,其從一個(gè)或多個(gè)用戶輸入設(shè)備108 (例如,鍵盤,鼠標(biāo))接收用戶輸入,并且將該輸 入經(jīng)由路徑106和存儲(chǔ)器橋105轉(zhuǎn)發(fā)給CPU 102。GPU 112經(jīng)由總線或者其它的通信路徑 113 (例如,PCI Express,加速圖形端口,或者超傳輸鏈路)耦合至存儲(chǔ)器橋105 ;在一個(gè)實(shí) 施例中,GPU 112為圖形子系統(tǒng),其向顯示設(shè)備110 (例如,常規(guī)的基于CRT或者IXD的監(jiān)視 器)遞送像素。系統(tǒng)磁盤114也連接到I/O橋107。開關(guān)116提供了 I/O橋107與諸如網(wǎng) 絡(luò)適配器118和不同的插卡(add-1n card) 120和121的其他組件之間的連接。其它組件 (未明確的示出),包括USB或者其它端口連接、⑶驅(qū)動(dòng)器、DVD驅(qū)動(dòng)器、膠片錄制設(shè)備等等, 其也可以連接到I/O橋107。圖1中將各組件互連的通信路徑可以使用任何適宜的協(xié)議來 實(shí)現(xiàn),諸如PCI (外圍組件互連)、PC1-Express、AGP (加速圖形端口)、超傳輸或者任何其它 總線或者點(diǎn)對(duì)點(diǎn)通信協(xié)議,并且如本領(lǐng)域中公知的,不同設(shè)備之間的連接可使用不同協(xié)議。
在一個(gè)實(shí)施例中,GPU 112包含被優(yōu)化用于圖形和視頻處理的電路,例如包括視頻 輸出電路,并且構(gòu)成圖形處理單元(GPU)。在另一個(gè)實(shí)施例中,GPU 112包含被優(yōu)化用于通 用目的處理的電路,同時(shí)保留底層(underlying)的計(jì)算架構(gòu),本文將進(jìn)行更為詳細(xì)的描述。 在另一個(gè)實(shí)施例中,GPU 112可以與一個(gè)或多個(gè)其他系統(tǒng)元件集成,諸如存儲(chǔ)器橋105、CPU 102以及I/O橋107,以形成片上系統(tǒng)(SoC)。
應(yīng)該理解,本文所示系統(tǒng)是示例性的,可以對(duì)其進(jìn)行變形和修改。可根據(jù)需要修改連接拓?fù)?,包括橋的?shù)目和布置、CPU 102的數(shù)目以及GPU112的數(shù)目。例如,在一些實(shí)施例中,系統(tǒng)存儲(chǔ)器104直接連接到CPU 102而不是通過橋,其他設(shè)備經(jīng)由存儲(chǔ)器橋105以及 CPU 102與系統(tǒng)存儲(chǔ)器104通信。在其他替代拓?fù)渲?,GPU 112連接到I/O橋107或直接連接到CPU102,而不是連接到存儲(chǔ)器橋105。在又一些實(shí)施例中,I/O橋107和存儲(chǔ)器橋105 可被集成到單個(gè)芯片中。大量的實(shí)施例可包括兩個(gè)或更多個(gè)CPU102以及兩個(gè)或更多個(gè)GPU 112。本文所示的特定組件是可選的;例如,可以支持任意數(shù)目的插卡或外圍設(shè)備。在一些實(shí)施例中,開關(guān)116被去掉,網(wǎng)絡(luò)適配器118和插卡120、121直接連接到I/O橋107。
在一個(gè)實(shí)施例中,GPU 112包括一個(gè)或多個(gè)并行處理單元(PPU)(未示出),其中每個(gè)均耦合至本地并行處理(PP)存儲(chǔ)器(也未示出)。通常,GPU包括U個(gè)PPU,其中U彡I。 PPU和并行處理存儲(chǔ)器可使用一個(gè)或多個(gè)集成電路設(shè)備來實(shí)現(xiàn),該集成電路設(shè)備諸如可編程處理器、專用集成電路(ASIC)或存儲(chǔ)器設(shè)備,或以任何其他技術(shù)上可行的方式來實(shí)現(xiàn)。在一些實(shí)施例中,GPU 112中的一些或所有PI3U是具有渲染管線的圖形處理器,其可以配置為執(zhí)行與下述各項(xiàng)相關(guān)的各種任務(wù)由CPU 102和/或系統(tǒng)存儲(chǔ)器104經(jīng)由存儲(chǔ)器橋105和總線113所提供的圖形數(shù)據(jù)生成像素?cái)?shù)據(jù)、與本地并行處理存儲(chǔ)器(可被用作圖形存儲(chǔ)器, 包括例如常用的幀緩沖區(qū))交互以存儲(chǔ)和更新像素?cái)?shù)據(jù)、遞送像素?cái)?shù)據(jù)到顯示設(shè)備110等等。在一些實(shí)施例中,GPU 112可包括一個(gè)或多個(gè)作為圖形處理器操作的PPU,以及一個(gè)或多個(gè)用作通用計(jì)算的其他PPU。PTO可以是相同的或不同的,并且每個(gè)PPU均可有自己的專用并行處理存儲(chǔ)器設(shè)備或非專用并行處理存儲(chǔ)器設(shè)備。一個(gè)或多個(gè)PPU可輸出數(shù)據(jù)到顯示設(shè)備110,或每個(gè)PTO均可輸出數(shù)據(jù)到一個(gè)或多個(gè)顯示設(shè)備110。
在操作中,CPU 102是計(jì)算機(jī)系統(tǒng)100的主處理器,控制和協(xié)調(diào)其他系統(tǒng)組件的操作。具體地,CPU 102發(fā)出控制GPU 112的操作的命令。在一些實(shí)施例中,CPU 102將用于 GPU 112的命令流寫入到命令緩沖區(qū)中,該命令緩沖區(qū)可位于系統(tǒng)存儲(chǔ)器104、并行處理存儲(chǔ)器204、或可由CPU102和GPU 112訪問的其他存儲(chǔ)位置處。GPU 202從命令緩沖區(qū)讀取命令流,然后相對(duì)于CPU 102的操作異步地執(zhí)行命令。
圖2是示意出根據(jù)本發(fā)明的一個(gè)實(shí)施例的、在圖1的計(jì)算機(jī)系統(tǒng)100中執(zhí)行的虛擬化計(jì)算環(huán)境的框圖。如所示,系統(tǒng)存儲(chǔ)器104包括特權(quán)虛擬機(jī)(VM)202,一組客戶虛擬機(jī) 204和虛擬化層206。
虛擬化層206包括管理程序208、硬件虛擬化模塊210和輸入/輸出存儲(chǔ)器管理單元(IOMMU) 212。管理程序208是系統(tǒng)級(jí)軟件模塊,其允許多個(gè)客戶VM 204在計(jì)算機(jī)系統(tǒng) 100中同時(shí)運(yùn)行。管理程序208在硬件虛擬化模塊210和IOMMU 212之上執(zhí)行。硬件虛擬化模塊210配置為支持計(jì)算機(jī)系統(tǒng)100內(nèi)的諸如CPU 102的硬件資源的共享。IOMMU 212 是存儲(chǔ)器管理單元,其連接DMA-capa ble I/O總線至系統(tǒng)存儲(chǔ)器104,并配置為將設(shè)備可見的虛擬地址映射到物理地址。在操作中,管理程序208通過消耗由硬件虛擬化模塊210和 IOMMU 212所提供的服務(wù),來為每個(gè)客戶VM204仿真單獨(dú)的物理地址空間,并且配置為將虛擬機(jī)頁面鎖定(“固定(pin)”)至諸如系統(tǒng)存儲(chǔ)器104的物理存儲(chǔ)器,以支持I/O設(shè)備和虛擬機(jī)頁面之間的直接存儲(chǔ)器訪問(DMA)。
在一個(gè)實(shí)施例中,包括在虛擬化層206中的IOMMU 212不是本發(fā)明所必需的組件。
特權(quán)VM 202提供I/O仿真軟件和允許客戶VM 204經(jīng)由管理程序208訪問計(jì)算機(jī)系統(tǒng)100中的硬件資源的資源管理器。以下論述更詳細(xì)地描述了特權(quán)VM 202在為客戶VM204提供對(duì)GPU 112和顯示設(shè)備110的訪問中的操作。在以下論述中,“主操作系統(tǒng)”是用 于特權(quán)VM 202的操作系統(tǒng),而“客戶操作系統(tǒng)”是用于客戶VM 204的操作系統(tǒng)。操作系統(tǒng) 的類型可隨客戶VM 204和特權(quán)VM 202變化??蛻舨僮飨到y(tǒng)的示例包括任意公知的商品操 作系統(tǒng),諸如 Microsoft Windows、Linux 等等。
圖3是根據(jù)本發(fā)明一個(gè)實(shí)施例的、圖2的特權(quán)VM 202和客戶VM 204的更詳細(xì)的 視圖。如圖所示,特權(quán)VM 202包括硬件仿真軟件302、插入到硬件仿真軟件302中的GPU仿 真模塊304和主資源管理器(RM)306,其中GPU仿真模塊304包括顯示仿真模塊305。仍如 所示,客戶VM 204包括應(yīng)用308、客戶GPU驅(qū)動(dòng)程序310和代理RM 312。
應(yīng)用308為軟件模塊,當(dāng)其執(zhí)行時(shí)發(fā)送將由GPU 112處理的一個(gè)或多個(gè)指令。應(yīng) 用308消耗由客戶GPU驅(qū)動(dòng)程序310所呈現(xiàn)的諸如應(yīng)用程序接口(API) 311的一個(gè)或多個(gè) API來控制GPU 112的操作??蛻鬐PU驅(qū)動(dòng)程序310是與沒有意識(shí)到應(yīng)用308或客戶GPU 驅(qū)動(dòng)程序310正在虛擬機(jī)中而非直接在CPU 102的執(zhí)行環(huán)境中執(zhí)行的GPU 112相關(guān)聯(lián)的驅(qū) 動(dòng)程序。
在操作中,當(dāng)應(yīng)用308首先發(fā)送初始化指令至要求訪問GPU 112的不同組件或處 理能力的客戶GPU驅(qū)動(dòng)程序310時(shí),客戶GPU驅(qū)動(dòng)程序310發(fā)送請(qǐng)求至客戶GPU驅(qū)動(dòng)程序 310假設(shè)是在CPU 102上執(zhí)行的操作系統(tǒng),用于建立對(duì)GPU 112的訪問。由客戶GPU驅(qū)動(dòng)程 序310所發(fā)送的請(qǐng)求由GPU仿真模塊304捕獲。
代理資源管理器312提供客戶GPU驅(qū)動(dòng)程序310和特權(quán)VM 202之間的通信通道。 重要的是,代理資源管理器312意識(shí)到應(yīng)用308、客戶GPU驅(qū)動(dòng)程序310和代理資源管理器 正在虛擬機(jī)中執(zhí)行。因此,代理資源管理器312將要求訪問計(jì)算機(jī)系統(tǒng)100中的硬件資源 的初始化命令路由至特權(quán)VM 202用于操控。在一個(gè)實(shí)施例中,代理資源管理器312經(jīng)由遠(yuǎn) 程過程調(diào)用(RPC)在特權(quán)VM 202中通信。在虛擬硬件接口和共享存儲(chǔ)器上實(shí)現(xiàn)RPC通信 路徑,因此允許RPC路徑獨(dú)立于包括在虛擬化層206中的管理程序208的類型。
在操作中,用于建立對(duì)GPU 112的訪問的請(qǐng)求由代理資源管理器312路由至GPU 仿真模塊304,然后該GPU仿真模塊304將請(qǐng)求發(fā)送至包括在特權(quán)VM 202中的主資源管理 器306。主資源管理器306是軟件模塊,其對(duì)包括在計(jì)算機(jī)系統(tǒng)100中的硬件資源與不同的 客戶VM 304之間的訪問和交互進(jìn)行管理。更具體地,主資源管理器306從客戶VM 204接 收針對(duì)諸如輸入設(shè)備108、GPU 112等的硬件資源的訪問請(qǐng)求,并且確定用于為客戶VM提供 對(duì)這些硬件資源的訪問的機(jī)制。
一旦接收到用于建立對(duì)GPU 112進(jìn)行訪問的請(qǐng)求,主資源管理器306分配與GPU 112相關(guān)聯(lián)的通道給客戶VM 204。通道為硬件構(gòu)造,其允許諸如應(yīng)用308的應(yīng)用當(dāng)發(fā)送用 于在GPU 112中執(zhí)行的命令時(shí)直接訪問GPU112。每個(gè)通道對(duì)應(yīng)于不同組通道控制寄存器, 其可編程為填充對(duì)應(yīng)的通道。GPU 112與預(yù)先確定數(shù)目的指派接口(本文稱之為“通道”)相 關(guān)聯(lián),并且主資源管理器306將預(yù)先配置數(shù)目的這些通道分配給客戶VM 204。在一個(gè)實(shí)施 例中,分配給客戶VM 204的數(shù)目和具體通道由主資源管理器306隨機(jī)確定。
一旦通道由主資源管理器306分配給客戶VM 204,便通知包括在硬件仿真軟件 302中的GPU仿真模塊304。GPU仿真模塊304是GPU 112的半虛擬化模型,其仿真GPU 112 的諸如某些配置信息寄存器的部分,并且為客戶VM 204提供對(duì)GPU 112的其他部分的直接 訪問。一旦特權(quán)VM202完成客戶VM 204經(jīng)由GPU仿真模塊304對(duì)GPU 112的仿真部分的訪問以及客戶VM 204對(duì)GPU 112的諸如通道的可直接訪問的部分的直接訪問的建立,則進(jìn) 行上述訪問。在一個(gè)實(shí)施例中,GPU仿真模塊304經(jīng)由插件API耦合至硬件仿真軟件302, 并且因此獨(dú)立于管理程序308的類型。
當(dāng)GPU仿真模塊304被通知已經(jīng)分配通道給客戶VM 204,GPU仿真模塊304將對(duì) 應(yīng)于所分配通道的一組控制寄存器316映射至客戶VM 204可訪問的存儲(chǔ)空間。GPU仿真模 塊304為不同的客戶VM 204提供地址空間隔離,使得所映射的存儲(chǔ)空間對(duì)于每個(gè)客戶VM 204是單獨(dú)的。因此客戶VM 204不能訪問經(jīng)映射用于不同客戶VM 204的存儲(chǔ)空間,從而不 會(huì)造成分配給不同客戶VM 204的通道上的沖突。為達(dá)到這樣的隔離,GPU仿真模塊304利 用虛擬化層206來鎖定VM地址,并將經(jīng)鎖定的物理地址轉(zhuǎn)譯為系統(tǒng)存儲(chǔ)器104中的物理地 址。然后,將經(jīng)轉(zhuǎn)譯的地址映射到與GPU112相關(guān)聯(lián)的地址空間。
一旦與所分配的通道相對(duì)應(yīng)的一組控制寄存器316被映射,則通知代理資源管理 器312通道已經(jīng)分配給客戶GPU驅(qū)動(dòng)程序310,該代理資源管理器312發(fā)送通知給客戶GPU 驅(qū)動(dòng)程序310來指示通道已經(jīng)被分配。然后客戶GPU驅(qū)動(dòng)程序310將經(jīng)映射的存儲(chǔ)空間映 射到應(yīng)用308。
如上所述,一旦建立對(duì)GPU 112的訪問,根據(jù)應(yīng)用308的命令,客戶GPU驅(qū)動(dòng)程序 310可通過操縱與所分配的通道相關(guān)聯(lián)的一組控制寄存器316來直接訪問GPU 112。更具 體地,客戶GPU驅(qū)動(dòng)程序310采用將發(fā)送至GPU 112的命令來填充存儲(chǔ)器區(qū)域(本文稱之為 “命令緩沖區(qū)”)。然后,客戶GPU驅(qū)動(dòng)程序310對(duì)被映射到客戶VM 204可訪問的存儲(chǔ)空間 中的一組控制寄存器316進(jìn)行編程,來指示所填充的命令緩沖區(qū)的起始存儲(chǔ)器地址和終止 存儲(chǔ)器地址。一旦終止存儲(chǔ)器地址被編程到一組控制寄存器中,則GPU 112自動(dòng)地開始獲 取包括在命令緩沖區(qū)中的命令用于執(zhí)行。重要的是,在該階段沒有執(zhí)行捕獲或仿真操作。
回顧GPU仿真模塊304,其如上所述對(duì)GPU 112的部分進(jìn)行仿真,諸如配置寄存器、 快速外圍組件互連(PCIe)總線寄存器、事件/中斷。客戶VM 204,更具體地客戶GPU驅(qū)動(dòng) 程序310,經(jīng)由GPU仿真模塊304來訪問這些經(jīng)仿真的資源,而不直接訪問GPU 112。對(duì)于 由GPU 112發(fā)起的諸如通道故障和完成通知的事件,客戶GPU驅(qū)動(dòng)程序310將客戶GPU驅(qū) 動(dòng)程序310想要注冊(cè)的事件指示給GPU仿真模塊304。每次GPU 112發(fā)起事件,GPU仿真模 塊304確定客戶VM 204是否已經(jīng)針對(duì)該具體事件注冊(cè)。如果如此,GPU仿真模塊304將通 知轉(zhuǎn)發(fā)給包括在客戶VM 204中的客戶GPU驅(qū)動(dòng)程序310,指示該事件發(fā)起。此外,GPU仿真 模塊304接收由與具體通道相關(guān)聯(lián)的GPU命令處理所造成的故障事件。然后,GPU仿真模 塊304確定為其分配通道的客戶VM 204,并將故障事件轉(zhuǎn)發(fā)給該客戶VM204。
此外,當(dāng)?shù)刂繁恢匦掠成浠驌p壞時(shí),GPU仿真模塊304跟蹤GPU虛擬地址的狀態(tài)。 當(dāng)對(duì)于固定客戶頁面的所有GPU參考已經(jīng)被重寫或損壞,客戶頁面是非固定的。另外,GPU 仿真模塊304包括用于保留計(jì)算機(jī)系統(tǒng)100中的資源給給定的客戶VM 204的規(guī)定,使得避 免意外分配失敗。最后,GPU仿真模塊304通過當(dāng)暫停時(shí)對(duì)至系統(tǒng)存儲(chǔ)器104或諸如系統(tǒng) 磁盤114的外部存儲(chǔ)設(shè)備的GPU通道和GPU虛擬地址映射的狀態(tài)進(jìn)行保存,以及通過當(dāng)重 新開始時(shí)恢復(fù)該狀態(tài),來支持暫停和重新開始可能在不同物理系統(tǒng)或在不同GPU上的客戶 VM 204。在暫停虛擬機(jī)之后,GPU仿真模塊304釋放諸如所分配的通道的GPU資源,并解除 對(duì)任意固定虛擬機(jī)頁面的固定。重新開始時(shí),GPU仿真模塊304固定并且轉(zhuǎn)譯所有經(jīng)映射 的虛擬機(jī)地址,并且重新創(chuàng)建GPU虛擬映射。
當(dāng)生成用于顯示的圖形幀時(shí),客戶VM 204生成圖形幀,同時(shí)假設(shè)整個(gè)顯示設(shè)備 110被分配給該客戶VM 204。因此,由包括在客戶VM 204中的顯示驅(qū)動(dòng)程序(未示出)所發(fā) 送的顯示命令被顯示仿真模塊305所捕獲。使用GPU 112來轉(zhuǎn)譯經(jīng)捕獲的顯示命令,以根 據(jù)針對(duì)客戶VM 204的顯示設(shè)備110的實(shí)際分配來對(duì)顯示幀的合成、縮放和其他處理進(jìn)行模 擬。
此外,主資源管理器306還對(duì)諸如存儲(chǔ)器的資源進(jìn)行跨多個(gè)客戶VM204的劃分。針 對(duì)單個(gè)客戶VM 204靜態(tài)地或動(dòng)態(tài)地劃分、指派和保護(hù)資源,并且隨后給該資源以(經(jīng)由存 儲(chǔ)器地址)回到客戶VM 204的直接訪問以使用。與通道非常類似的,然后,這樣的資源可用 于由客戶GPU驅(qū)動(dòng)程序310直接保護(hù)地訪問。
圖4是根據(jù)本發(fā)明一個(gè)實(shí)施例的圖2的特權(quán)VM 202和客戶VM 204與圖1的GPU 之間的交互的概念示意圖。
為訪問仿真資源,諸如GPU配置寄存器,客戶GPU驅(qū)動(dòng)程序310,在交互402處,發(fā) 送請(qǐng)求到GPU仿真模塊304。GPU仿真模塊304當(dāng)接收到請(qǐng)求時(shí)或預(yù)先與GPU 112通信,以 檢索與仿真資源相關(guān)聯(lián)的有關(guān)數(shù)據(jù)。響應(yīng)于該請(qǐng)求,GPU仿真模塊304將有關(guān)數(shù)據(jù)發(fā)送到 客戶GPU驅(qū)動(dòng)程序310。
為建立對(duì)GPU的訪問用于執(zhí)行命令,客戶GPU驅(qū)動(dòng)程序310,在交互404處,發(fā)送訪 問請(qǐng)求到代理資源管理器312。代理資源管理器312,在交互406處,將請(qǐng)求轉(zhuǎn)發(fā)到主資源 管理器306。主資源管理器306,在操作408處,將與GPU 112相關(guān)聯(lián)的至少一個(gè)GPU通道 分配給客戶GPU驅(qū)動(dòng)程序310。分配可以動(dòng)態(tài)進(jìn)行或可以靜態(tài)預(yù)定。主資源管理器306通 知GPU仿真模塊304該通道分配。隨后,GPU仿真模塊304,在操作410處,將與所分配通道 相關(guān)聯(lián)的一組通道控制寄存器映射到可由包括客戶GPU驅(qū)動(dòng)程序310的客戶VM 204訪問 的存儲(chǔ)空間??蛻鬐PU驅(qū)動(dòng)程序310隨后以上述方式在操作412處經(jīng)由一組通道控制寄存 器直接訪問GPU 112。
為注冊(cè)由GPU 112發(fā)起的事件,將由客戶GPU驅(qū)動(dòng)程序310發(fā)送的針對(duì)事件注冊(cè) 的請(qǐng)求路由到GPU仿真模塊304。GPU仿真模塊304保持跟蹤客戶GPU驅(qū)動(dòng)程序310已經(jīng) 注冊(cè)的任意事件。當(dāng)GPU仿真模塊304從GPU 112接收到客戶GPU驅(qū)動(dòng)程序310已經(jīng)注冊(cè) 的事件通知時(shí),GPU仿真模塊304將事件通知轉(zhuǎn)發(fā)到客戶GPU驅(qū)動(dòng)程序310。
圖5是根據(jù)本發(fā)明一個(gè)實(shí)施例的,用于使客戶VM能夠以半虛擬化的方式訪問GPU 的方法步驟的流程圖。盡管該方法步驟結(jié)合圖1-3描述,但是本領(lǐng)域的技術(shù)人員應(yīng)該理解 配置為以任意順序執(zhí)行該方法步驟的任意系統(tǒng)均落入本發(fā)明的范圍內(nèi)。
方法500始于步驟502,其中代理資源管理器312從客戶GPU驅(qū)動(dòng)程序310接收訪 問與GPU 112相關(guān)聯(lián)的仿真寄存器的請(qǐng)求。在步驟504,代理資源管理器308經(jīng)由主資源管 理器306將請(qǐng)求發(fā)送到GPU仿真模塊304。在步驟506,GPU仿真模塊304經(jīng)由主資源管理 器306和代理資源管理器312將與仿真寄存器相關(guān)聯(lián)的數(shù)據(jù)發(fā)送到客戶GPU驅(qū)動(dòng)程序310。
在步驟508,代理資源管理器312從客戶GPU驅(qū)動(dòng)程序310接收用于建立對(duì)GPU 112的訪問用于執(zhí)行命令的請(qǐng)求。在步驟510,代理資源管理器312經(jīng)由遠(yuǎn)程過程調(diào)用將請(qǐng) 求轉(zhuǎn)發(fā)到主資源管理器306。主資源管理器306,在步驟512,將與GPU 112相關(guān)聯(lián)的至少一 個(gè)GPU通道分配給客戶GPU驅(qū)動(dòng)程序310。主資源管理器306隨后通知GPU仿真模塊304 該通道分配。在步驟514,GPU仿真模塊304將與分配通道相關(guān)聯(lián)的一組通道控制寄存器映射到可由包括客戶GPU驅(qū)動(dòng)程序310的客戶VM 204訪問的存儲(chǔ)空間。在步驟516,代理資 源管理器312對(duì)客戶GPU驅(qū)動(dòng)程序310指示GPU 112可以在操作412處在沒有系統(tǒng)100內(nèi) 的任意其他組件的干預(yù)的情況下以上述方式經(jīng)由一組通道控制寄存器直接訪問。
以這樣的方式,在客戶虛擬機(jī)中執(zhí)行的客戶GPU驅(qū)動(dòng)程序310能夠直接利用GPU 112的處理能力的至少一部分。因?yàn)樘摂M化層206對(duì)于建立對(duì)客戶VM的訪問進(jìn)行最小干 預(yù),所以具有這樣的直接訪問提高了其中多個(gè)客戶VM競(jìng)爭(zhēng)對(duì)GPU 112的訪問的系統(tǒng)的性 能。此外,因?yàn)榭蛻鬐PU驅(qū)動(dòng)程序310可以直接將命令發(fā)送到GPU 112,所以命令轉(zhuǎn)譯量和 當(dāng)在虛擬環(huán)境中支持不同類型的GPU驅(qū)動(dòng)程序時(shí)發(fā)生的兼容性問題大大減少。
本文所述的各種實(shí)施例可以采用包括存儲(chǔ)在計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)的各種計(jì)算機(jī) 實(shí)現(xiàn)的操作。例如,這些操作可要求物理量的物理操作一通常,但并非必然,這些量可以采 取電或磁信號(hào)的形式,其中它們或它們的表示能夠被存儲(chǔ)、轉(zhuǎn)換、合并、比較或進(jìn)行其他處 理。進(jìn)一步地,這樣的處理通常清楚地涉及諸如產(chǎn)生、識(shí)別、確定或比較。本文所述的形成 本發(fā)明一個(gè)或多個(gè)實(shí)施例的一部分的任意操作可以是有用的機(jī)器操作。此外,本發(fā)明的一 個(gè)或多個(gè)實(shí)施例還涉及用于執(zhí)行這些操作的設(shè)備或裝置。裝置可以是用于特定的所需目的 而特別構(gòu)造的,或者其可以是由存儲(chǔ)在計(jì)算機(jī)中的計(jì)算機(jī)程序選擇性激活或配置的通用計(jì) 算機(jī)。特別地,各種通用機(jī)器可以與根據(jù)本文的教導(dǎo)所編寫的計(jì)算機(jī)程序一起使用,或者構(gòu) 造更專用的裝置以實(shí)施所需的操作可能是更方便的。
本文所述的各種實(shí)施例可以與其他計(jì)算機(jī)系統(tǒng)配置一起實(shí)踐,其他計(jì)算機(jī)系統(tǒng)配 置包括手持設(shè)備、微處理器系統(tǒng)、基于微處理器的或可編程的消費(fèi)電子產(chǎn)品、微型計(jì)算機(jī)、 大型計(jì)算機(jī)等等。
本發(fā)明的一個(gè)或多個(gè)實(shí)施例可以作為包含在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的一 個(gè)或多個(gè)計(jì)算機(jī)程序或者一個(gè)或多個(gè)計(jì)算機(jī)程序模塊實(shí)現(xiàn)。術(shù)語計(jì)算機(jī)可讀介質(zhì)是指可以 存儲(chǔ)其后可以輸入到計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)的任意數(shù)據(jù)存儲(chǔ)設(shè)備-計(jì)算機(jī)可讀介質(zhì)可以基于 用于以使其能夠由計(jì)算機(jī)讀取的方式體現(xiàn)計(jì)算機(jī)程序的任意現(xiàn)有的或隨后開發(fā)的技術(shù)。計(jì) 算機(jī)可讀介質(zhì)的示例包括硬盤驅(qū)動(dòng)程序、網(wǎng)絡(luò)附加存儲(chǔ)(NAS)、只讀存儲(chǔ)器、隨機(jī)存取存儲(chǔ) 器(例如,閃存設(shè)備)、⑶(壓縮磁盤)一⑶-ROM、⑶-R或⑶-RW、DVD (數(shù)字多功能光盤)、磁帶 以及其他光學(xué)和非光學(xué)數(shù)據(jù)存儲(chǔ)設(shè)備。計(jì)算機(jī)可讀介質(zhì)還可以分布在耦合網(wǎng)絡(luò)的計(jì)算機(jī)系 統(tǒng)上以使計(jì)算機(jī)可讀代碼以分布方式存儲(chǔ)和執(zhí)行。
盡管為清晰理解已經(jīng)詳細(xì)描述了本發(fā)明的一個(gè)或多個(gè)實(shí)施例,但是顯而易見的是 在權(quán)利要求的范圍內(nèi)可以做出某些改變和修改。因此,所描述的實(shí)施例應(yīng)該視為示例性的 而非限制性的,并且權(quán)利要求的范圍不局限于本文所給出的細(xì)節(jié),而是在權(quán)利要求的范圍 和等價(jià)內(nèi)可以修改的。在權(quán)利要求中,元素和/或步驟不意味著任何特定順序的操作,除非 在權(quán)利要求中明確指出。
根據(jù)各種實(shí)施例的虛擬化系統(tǒng)可以實(shí)現(xiàn)為主實(shí)施例、非主實(shí)施例或作為趨向兩者 之間模糊區(qū)別的實(shí)施例,都是設(shè)想的。此外,各種虛擬化操作可以完全或部分地以硬件實(shí) 現(xiàn)。例如,硬件實(shí)現(xiàn)可以采用用于對(duì)安全非磁盤數(shù)據(jù)的存儲(chǔ)訪問請(qǐng)求的修改的查找表。
無論虛擬化的程度,許多變化、修改、增補(bǔ)和改進(jìn)都是可能的。因此虛擬化軟件可 以包括主機(jī)、控制臺(tái)或執(zhí)行虛擬化功能的客戶操作系統(tǒng)的組件??梢詾楸疚拿枋鰹閱蝹€(gè)實(shí) 例的組件、操作或結(jié)構(gòu)提供多個(gè)實(shí)例。最后,各種組件、操作和數(shù)據(jù)儲(chǔ)存之間的邊界在某種程度上是隨意的,并且特定操作在具體示例性配置的上下文環(huán)境中示出??梢栽O(shè)想功能性的其他分配并其可落入本發(fā)明的范圍內(nèi)。一般,在示例性配置中作為單獨(dú)組件表示的結(jié)構(gòu)和功能性可以作為組合的結(jié)構(gòu)或組件來實(shí)現(xiàn)。類似地,作為單個(gè)組件表示的結(jié)構(gòu)和功能性可以作為單獨(dú)的組件來實(shí)現(xiàn)。這些以及其他變化、修改、增補(bǔ)和改進(jìn)可落入所附權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種計(jì)算機(jī)系統(tǒng),包括 初級(jí)處理單元; 二級(jí)處理單元,其耦合到所述初級(jí)處理單元并且經(jīng)由多個(gè)通道可訪問; 多個(gè)客戶虛擬機(jī),其在所述初級(jí)處理單元上執(zhí)行,其中每個(gè)客戶虛擬機(jī)包括與所述二級(jí)處理單元相關(guān)聯(lián)的驅(qū)動(dòng)程序;以及 特權(quán)虛擬機(jī),其在所述初級(jí)處理單元上執(zhí)行并且配置為將包括在所述多個(gè)通道中的不同通道組分配給包括在所述多個(gè)客戶虛擬機(jī)中的每個(gè)所述驅(qū)動(dòng)程序,其中分配給包括在第一客戶虛擬機(jī)中的第一驅(qū)動(dòng)程序的第一通道組使所述第一驅(qū)動(dòng)程序能夠訪問所述二級(jí)處理單元而不與包括在所述多個(gè)客戶虛擬機(jī)中的任意其他驅(qū)動(dòng)程序相沖突并且免受其影響。
2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中每個(gè)客戶虛擬機(jī)包括配置為經(jīng)由遠(yuǎn)程過程調(diào)用與所述特權(quán)虛擬機(jī)通信的代理資源管理器。
3.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中所述第一客戶虛擬機(jī)包括第一代理資源管理器,其配置為 發(fā)送請(qǐng)求到所述特權(quán)虛擬機(jī),以為所述第一驅(qū)動(dòng)程序建立對(duì)所述二級(jí)處理單元的訪問,以及 從所述特權(quán)虛擬機(jī)接收所述第一通道組已經(jīng)分配給所述第一驅(qū)動(dòng)程序的通信, 其中所述特權(quán)虛擬機(jī)將與所述第一通道組相關(guān)聯(lián)的一個(gè)或多個(gè)控制寄存器映射到所述第一驅(qū)動(dòng)程序可訪問的存儲(chǔ)空間的一部分,其中每個(gè)控制寄存器與所述第一通道組中的不同通道相關(guān)聯(lián),并且所述第一通道組中的每個(gè)通道基于與所述通道相關(guān)聯(lián)的關(guān)聯(lián)控制寄存器的內(nèi)容來用命令填充。
4.根據(jù)權(quán)利要求3所述的計(jì)算機(jī)系統(tǒng),其中所述第一驅(qū)動(dòng)程序通過將一個(gè)或多個(gè)命令寫到命令緩沖區(qū)以及用與所述命令緩沖區(qū)相關(guān)聯(lián)的至少第一存儲(chǔ)器地址填充與包括在所述通道組中的第一通道相關(guān)聯(lián)的通道控制寄存器來訪問所述第二處理單元。
5.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中所述特權(quán)虛擬機(jī)包括配置為仿真所述二級(jí)處理單元的一部分的仿真軟件模塊,以及所述代理資源管理器配置為 將訪問所述第二處理單元的一部分的請(qǐng)求從所述第一驅(qū)動(dòng)程序路由到所述仿真軟件模塊,以及 響應(yīng)于所述請(qǐng)求將數(shù)據(jù)從所述仿真軟件模塊發(fā)送到所述第一驅(qū)動(dòng)程序。
6.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中所述特權(quán)虛擬機(jī)包括每當(dāng)由所述第二處理單元發(fā)起事件時(shí)得到通知的仿真軟件模塊,以及所述第一代理資源管理器配置為 將注冊(cè)所述第二處理單元將發(fā)起的第一事件的請(qǐng)求路由到所述仿真軟件模塊,以及 當(dāng)所述第二處理單元發(fā)起所述第一事件時(shí),將通知從所述仿真軟件模塊發(fā)送到所述第一驅(qū)動(dòng)程序。
7.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),進(jìn)一步包括顯示器,其中每個(gè)所述客戶虛擬機(jī)包括配置為將顯示幀渲染到所述顯示器上的顯示驅(qū)動(dòng)程序。
8.根據(jù)權(quán)利要求7所述的計(jì)算機(jī)系統(tǒng),其中所述特權(quán)虛擬機(jī)包括配置為捕獲由包括在所述第一客戶虛擬機(jī)內(nèi)的第一顯示驅(qū)動(dòng)程序所發(fā)送的、關(guān)于將第一顯示幀渲染到所述顯示器上的顯示命令的仿真軟件模塊。
9.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中所述特權(quán)虛擬機(jī)包括每當(dāng)與包括在所述多個(gè)通道中的任意通道相關(guān)聯(lián)的故障發(fā)生時(shí)由所述第二處理單元通知的仿真軟件模塊。
10.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中所述特權(quán)虛擬機(jī)配置為當(dāng)所述第一客戶虛擬機(jī)終止時(shí)從所述第一驅(qū)動(dòng)程序解除分配所述第一通道組。
全文摘要
本發(fā)明的一個(gè)實(shí)施例提出一種計(jì)算機(jī)系統(tǒng),包括初級(jí)處理單元,耦合到初級(jí)處理單元并且經(jīng)由多個(gè)通道可訪問的二級(jí)處理單元,在初級(jí)處理單元上執(zhí)行的多個(gè)客戶虛擬機(jī),其中每個(gè)客戶虛擬機(jī)包括與二級(jí)處理單元相關(guān)聯(lián)的驅(qū)動(dòng)程序,以及特權(quán)虛擬機(jī),其在初級(jí)處理單元上執(zhí)行并配置為將包括在多個(gè)通道中的不同通道組分配給包括在多個(gè)客戶虛擬機(jī)中的每個(gè)驅(qū)動(dòng)程序,其中分配給包括在第一客戶虛擬機(jī)中的第一驅(qū)動(dòng)程序的第一通道組使第一驅(qū)動(dòng)程序能夠訪問二級(jí)處理單元并且通過直接訪問二級(jí)處理單元通道而不與包括在多個(gè)客戶虛擬機(jī)中的任意其他驅(qū)動(dòng)程序相沖突且具有最小的性能開銷。
文檔編號(hào)G06F9/455GK103034524SQ20121038304
公開日2013年4月10日 申請(qǐng)日期2012年10月10日 優(yōu)先權(quán)日2011年10月10日
發(fā)明者威廉·J·厄爾, 凱文·J·克蘭楚施, 薩蒂亞·基蘭·保普瑞, 克里斯托弗·W·約翰遜 申請(qǐng)人:輝達(dá)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
东阿县| 盘锦市| 昌都县| 台北县| 丰原市| 靖边县| 新丰县| 拜城县| 兴国县| 玉树县| 东乡县| 靖州| 滨海县| 乳山市| 辽中县| 柳林县| 黄陵县| 宾川县| 南安市| 巴楚县| 汤原县| 习水县| 太保市| 甘洛县| 咸阳市| 东丰县| 陵川县| 塘沽区| 运城市| 清远市| 南投县| 阳江市| 永嘉县| 石泉县| 德清县| 阜南县| 普陀区| 五寨县| 思南县| 庐江县| 中卫市|