TW201331844A - 半虛擬化的虛擬圖形處理單元 - Google Patents

半虛擬化的虛擬圖形處理單元 Download PDF

Info

Publication number
TW201331844A
TW201331844A TW101137297A TW101137297A TW201331844A TW 201331844 A TW201331844 A TW 201331844A TW 101137297 A TW101137297 A TW 101137297A TW 101137297 A TW101137297 A TW 101137297A TW 201331844 A TW201331844 A TW 201331844A
Authority
TW
Taiwan
Prior art keywords
virtual machine
processing unit
gpu
channels
guest
Prior art date
Application number
TW101137297A
Other languages
English (en)
Other versions
TWI498824B (zh
Inventor
William J Earl
Kevin J Kranzusch
Satya Kiran Popuri
Christopher W Johnson
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of TW201331844A publication Critical patent/TW201331844A/zh
Application granted granted Critical
Publication of TWI498824B publication Critical patent/TWI498824B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/4555Para-virtualisation, i.e. guest operating system has to be modified
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Abstract

本發明一具體實施例提出一種電腦系統,其包含一主要處理單元、一次級處理單元,其耦合至該主要處理單元且可經由複數條通道進行存取,及在該主要處理單元上執行的複數個客虛擬機器,其中每一客虛擬機器包括一關聯於該次級處理單元的驅動器,及一在該主要處理單元上執行的特許虛擬機器,且其設置成分配包括在該等複數條通道中的一不同組合的通道給包括在該等複數個客虛擬機器中的每一驅動器,其中分配給包括在一第一客虛擬機器中一第一驅動器的一第一組通道使得該第一驅動器能夠存取該次級處理單元,而不會與包括在該等複數個客虛擬機器中任何其它驅動器發生衝突,且藉由直接存取該等次級處理單元通道而具有最小的效能負擔。

Description

半虛擬化的虛擬圖形處理單元
本發明概略關於一種虛擬化的電腦架構,尤指一種半虛擬化的虛擬圖形處理單元。
電腦虛擬化為一種牽涉到將一實體運算機器平台包封到一虛擬機器當中的技術,其在一硬體運算平台或「主機」(host)上的虛擬化軟體的控制之下執行。一虛擬機器同時具有虛擬系統硬體與客作業系統軟體。在典型的虛擬化系統中,包括在該系統中的任何實體硬體資源經由模擬模組暴露給該虛擬機器。模擬模組允許被設計做為單一使用的裝置功能被延伸到允許多重使用的一種模型。例如,對於像是滑鼠的一硬體輸入裝置互動的一虛擬機器而言,需要提供一種暴露該滑鼠之作業的軟體模擬模組。然後虛擬機器經由該軟體模擬模組與該滑鼠進行互動。
對於使用共通介面與低效能需求的簡單裝置而言,例如滑鼠或鍵盤,該軟體模擬模型即屬有效。但是,經由在一虛擬化系統中的一軟體模擬模組要存取具有更綜合性的介面與較高效能需求之更為複雜之裝置(例如圖形處理單元(GPU,“Graphics Processing Unit”)即會造成兩個主要問題。首先,因為GPU為一種高度複雜的處理單元,要提供一種綜合性的軟體模擬模組且能夠暴露大範圍及由該GPU提供的功能性之軟體模擬軟體將是一項非常困難的工作。因此,目前並沒有嘗試暴露該GPU的所有功能之軟體模擬模組,使得在使用該GPU的一虛擬機器中運作的應用程式無法最佳化地運作,甚至根本無法運作。其次,因為該GPU介面更加複雜且效能非常關鍵,無效率的抽象化通常造成瓶頸與沒有效率。
對於上述無效率的一種解決方案為針對在該主機上執行 的每一虛擬機器提供一獨立的GPU。但是這種解決方案在實作上非常昂貴,且無法擴充。因此,這種解決方案無法針對需要自一虛擬機器內的一GPU進行存取的廣大使用者之間能夠有效率地實作。
因此,本技術中需要一種能夠橫跨多個使用者或虛擬機器來有效率地共用一單一GPU而不需要擴充硬體的系統與方法。
本發明一具體實施例提出一種電腦系統,其包含一主要處理單元、一次級處理單元,其耦合至該主要處理單元且可經由複數個可指定的介面進行存取,及在該主要處理單元上執行的複數個客虛擬機器,其中每一客虛擬機器包括一關聯於該次級處理單元的驅動器,及一在該主要處理單元上執行的特許虛擬機器,且其設置成分配包括在該等複數個可指定介面中的一不同組合的可指定介面給包括在該等複數個客虛擬機器中的每一驅動器,其中分配給包括在一第一客虛擬機器中一第一驅動器的一第一組可指定介面使得該第一驅動器能夠存取該次級處理單元,而不會與包括在該等複數個客虛擬機器中任何其它驅動器發生衝突。
此處所述之該等技術的一個優點為,在一客虛擬機器上執行的一客GPU驅動器能夠經由一被指定組合的介面直接控制該GPU的該等處理能力中之至少一部份。具有這種直接存取可增加一系統的效能,其中多個客虛擬機器(VM,“Virtual Machine”)皆在競爭要存取至該GPU,其係因為該虛擬化層在設置與控制該等客虛擬機器之存取時執行最少的干預。
在以下的說明中,許多特定細節係被提出來提供對於本發 明之更為完整的瞭解。但是本技術專業人士將可瞭解到本發明可不利用一或多個這些特定細節來實施。在其它實例中,並未說明熟知的特徵,藉以避免混淆本發明。
第一圖例示設置成實作本發明一或多種態樣之一電腦系統100的方塊圖。電腦系統100包括一中央處理單元(CPU,“Central Processing Unit”)102與一系統記憶體104,其經由包括一記憶體橋接器105的互連接路徑進行通訊。記憶體橋接器105可為例如一北橋晶片,其經由一匯流排或其它通訊路徑106(例如HyperTransport(超輸送)聯結)連接到一輸入/輸出(I/O,“Input/Output”)橋接器107連接。I/O橋接器107可為例如一南橋晶片,其接收來自一或多個使用者輸入裝置108(例如鍵盤、滑鼠)的使用者輸入,並經由路徑106及記憶體橋接器105轉送該輸入至CPU 102。一圖形處理單元(GPU,“Graphics Processing Unit”)112經由一匯流排或其它通訊路徑113(例如PCI Express(PCI快速)、加速繪圖埠(AGP,“Accelerated Graphics Port”)或HyperTransport(超輸送)聯結)耦合至記憶體橋接器105;在一具體實施例中,GPU 112為一圖形子系統,其傳遞像素到一顯示器110(例如一習用陰極射線管(CRT,“Cathode Ray Tube”)或液晶顯示器(LCD,“Liquid Crystal Display”)式的監視器)。一系統碟114亦連接至I/O橋接器107。一交換器116提供I/O橋接器107與其它像是網路轉接器118與多種嵌入卡120,121之其它組件之間的連接。其它組件(未明確顯示),包括有USB或其它埠連接、CD驅動器、DVD驅動器、薄膜記錄裝置及類似者,其亦可連接至I/O橋接器107。互連接第一圖中該等多種組件的通訊路徑可使用任何適當的協定來實作,例如周邊組件互連(PCI,“Peripheral Component Interconnect”)、PCI Express(PCI快速,PCI-E)、加速圖形通訊埠(AGP,“Accelerated Graphics Port”)、HyperTransport(超輸送)或任何其它匯流排或點對點通訊協定及不同裝置之間的連 接,皆可使用如本技術中所知的不同協定。
在一具體實施例中,GPU 112加入可針對圖形及視訊處理最佳化的電路,其包括例如視訊輸出電路,且構成一圖形處理單元(GPU,“Graphics Processing Unit”)。在另一具體實施例中,GPU 112加入可針對一般性目的處理最佳化的電路,而可保留底層的運算架構,在此處會有更為詳細的說明。在又另一具體實施例中,GPU 112可被整合於一或多個其它系統元件,例如記憶體橋接器105、CPU 102及I/O橋接器107而形成一系統上晶片(SoC,“System On Chip”)。
將可瞭解到此處所示的系統僅為例示性,其有可能有多種變化及修正。該連接拓樸,包括橋接器的數目與配置,CPU 102的數目及GPU 112的數目皆可視需要修改。例如,在一些具體實施例中,系統記憶體104直接連接至CPU 102而非透過一橋接器耦接,而其它裝置透過記憶體橋接器105及CPU 102與系統記憶體104進行通訊。在其它可替代的拓樸中,GPU 112連接至I/O橋接器107或直接連接至CPU 102,而非連接至記憶體橋接器105。在又其它具體實施例中,I/O橋接器107及記憶體橋接器105可被整合到一單一晶片當中。大型具體實施例可包括兩個或更多的CPU 102,及兩個或更多的GPU 112。此處所示的該等特定組件皆為選擇性的;例如其可支援任何數目的嵌入卡或周邊裝置。在一些具體實施例中,交換器116被省略,且網路轉接器118及嵌入卡120、121直接連接至I/O橋接器107。
在一具體實施例中,GPU 112包括一或多個平行處理單元(PPU,“Parallel Processing Unit”)(未示出),其每一者耦合至一局部平行處理(PP,“Parallel Processing”)記憶體(亦未示出)。概言之,一GPU包括數目為U的PPU,其中U 1。PPU與平行處理記憶體可以使用一或多個積體電路裝置來實作,例如可程式化處理器,特殊應用積體電路(ASIC,“Application Specific Integrated Circuits”),或記憶體裝置,或以任何其它技術上可行的方式來實作。在一些具體實施例中,GPU 112中部份或所有的PPU為圖形處理器,其具有顯像管線,其能夠設置成執行由CPU 102及/或系統記憶體104經由記憶體橋接器105及匯流排113所供應的圖形資料產生像素資料的多種工作,與局部平行處理記憶體互動(其能夠做為圖形記憶體,其包括例如一習用像框緩衝器),以儲存及更新像素資料,傳遞像素資料到顯示器110及類似者。在一些具體實施例中,GPU 112可以包括可操作為圖形處理器的一或多個PPU,及用於通用型運算的一或多個其它PPU。該等PPU可為相同或不同,且每個PPU可以具有其本身專屬的平行處理記憶體裝置或並無專屬的平行處理記憶體裝置。一或多個PPU可以輸出資料到顯示器110,或每個PPU可以輸出資料到一或多個顯示器110。
在作業中,CPU 102為電腦系統100的主控處理器,其控制及協調其它系統組件的作業。特別是CPU 102發出命令來控制GPU 112的作業。在一些具體實施例中,CPU 102針對GPU 112寫入一命令串流到一命令緩衝器,其可存在於系統記憶體104、平行處理記憶體204或同時可由CPU 102與GPU 112存取的其它儲存位置。GPU 112自該命令緩衝器讀取該命令串流,然後相對於CPU 102之作業非同步地執行命令。
第二圖為例示根據本發明一具體實施例在第一圖的電腦系統100中執行的一虛擬化運算環境之方塊圖。如所示,系統記憶體104包括一特許虛擬機器(VM,“Virtual Machine”)202、一組客虛擬機器204與一虛擬化層206。
虛擬化層206包括一超管理器208、一硬體虛擬化模組210與一輸入/輸出記憶體管理單元(IOMMU,“Input/Output Memory Management Unit”)212。超管理器208為一系統層級的軟體模組,其可允許多個客虛擬機器204在電腦系統100內同時地運作。超管理器208在硬體虛擬化模組210與IOMMU 212之上執行。硬體虛擬化模組210設置成支援在電腦系統100內該等硬體資源(例如CPU 102)的共用。IOMMU 212為一種記憶體管理單元,其連接一支援可直接記憶體存取(DMA,“Direct Memory Access”)的I/O匯流排至系統記憶體104,且設置成將裝置可見的虛擬位址映射到實體位址。在作業上,藉由使用硬體虛擬化模組210與IOMMU 212所提供的該等服務,超管理器208針對每一客虛擬機器204模擬一個別的實體位置空間,且設置成鎖定(「釘住」)虛擬機器頁面到實體記憶體中,例如系統記憶體104,以支援一I/O裝置與一虛擬機器頁面之間的直接記憶體存取(DMA,“Direct Memory Access”)。
在一具體實施例中,包括在虛擬化層206中的IOMMU 212並非本發明之必要組件。
特許虛擬機器202提供I/O模擬軟體與一資源管理員,其可允許客虛擬機器204經由超管理器208存取至電腦系統100內的該等硬體資源。以下的討論更細部地描述特許虛擬機器202在提供存取至GPU 112,及顯示器110至客虛擬機器204之該等作業。在以下的討論中,「主機作業系統」為特許虛擬機器202的作業系統,而「客作業系統」為一客虛擬機器204的作業系統。該等作業系統的種類可隨著客虛擬機器204與特許虛擬機器202而改變。一客作業系統的示例包括任何熟知的商用作業系統,例如Microsoft Windows、Linux及類似者。
第三圖為根據本發明一具體實施例中第二圖的特許虛擬機器202與客虛擬機器204的細部圖示。如所示,特許虛擬機器202包括硬體模擬軟體302、一GPU模擬模組304,其插入到包括一顯示器模擬模組305與一主控資源管理員(RM,“Resource Manager”)306的硬體模擬軟體302當中。亦如所示,客虛擬機器204包括一應用程式308、一客GPU驅動器310與一代理人RM 312。
應用程式308為一軟體模組,其在當執行時傳送要由GPU 112處理的一或多個指令。應用程式308使用由客GPU驅動器310暴露的一或多個應用程式介面(API,,“Application Program Interface”),例如API 311,以控制GPU 112的作業。客GPU驅動器310為關聯於GPU 112的一驅動器,其並不知道應用程式308或客GPU驅動器310正在一虛擬機器內執行,且並不直接位在CPU 102的執行環境內。
在作業上,當應用程式308先傳送初始化指令至需要存取GPU 112的不同組件或該等處理能力的客GPU驅動器310時,客GPU驅動器310傳送一要求而使客GPU驅動器310假設為在CPU 102上執行的該作業系統而來設置存取至GPU 112。由客GPU驅動器310傳送的該要求由GPU模擬模組304捕捉。
代理人資源管理員312提供客GPU驅動器310與特許虛擬機器202之間的一通訊通道。重要地是,代理人資源管理員312知道應用程式308、客GPU驅動器310與代理人資源管理員正在一虛擬機器內執行。因此,代理人資源管理員312導引需要存取至電腦系統100內的硬體資源的初始化命令至特許虛擬機器202來做處理。在一具體實施例中,代理人資源管理員312經由遠端程序呼叫(RPC,“Remote Procedure Call”)在特許虛擬機器202內進行通訊。該RPC通訊路徑係實作在虛擬硬體介面與共用記憶體上,藉此允許該RPC路徑獨立於包括在虛擬化層206中超管理器208的類型。
在作業上,用於設置存取至GPU 112的該要求由代理人資源管理員312導引至GPU模擬模組304,其接著傳送該要求至包括在特許虛擬機器202中的主控資源管理員306。主控資源管理員306為一種軟體模組,其管理不同的客虛擬機器304與包括在電腦系統100中該等硬體資源之間的存取與互動。更特定而言,主控資源管理員306自客虛擬機器204接收硬體資源的存取要求,例如輸入裝置108、GPU 112等,並決 定用於提供至那些硬體資源之存取至該等客虛擬機器的該機制。
在收到用於設置存取至GPU 112的一要求時,主控資源管理員306分配關聯於GPU 112的一通道給客虛擬機器204。一通道為一硬體結構,其可允許應用程式(例如應用程式308)在當傳送要在GPU 112內執行的命令時可直接存取GPU 112。每一通道對應於一不同組合的通道控制暫存器,其被程式化來位於該相對應通道上。GPU 112關聯於一預定數目的被指定介面(在此稱之為「通道」(channel)),且主控資源管理員306分配預先設定數目的那些通道給客虛擬機器204。在一具體實施例中,分配給一客虛擬機器204的該數目與該等特定通道通常由主控資源管理員306決定。
一旦一通道由主控資源管理員306分配給客虛擬機器204,即通知包括在硬體模擬軟體302中的GPU模擬模組304。GPU模擬模組304為GPU 112的一半虛擬化模型,其可模擬GPU 112的某些部份,例如某些組態資訊暫存器,並提供對於GPU 112之其它部份的直接存取至客虛擬機器204。
GPU 112的被模擬部份經由GPU模擬模組304被客虛擬機器204存取,且GPU 112的該等直接可存取部份,例如該等通道,皆可在一旦該存取之設置已由特許虛擬機器202完成時即可直接由客虛擬機器204存取。在一具體實施例中,GPU模擬模組304經由一嵌入API耦合至硬體模擬軟體302,因此與超管理器308的種類無關。
當GPU模擬模組304被通知一通道已經被分配給客虛擬機器204時,GPU模擬模組304將對應於該被分配的通道之該組控制暫存器316映射到可由客虛擬機器204存取的一記憶體空間。GPU模擬模組304提供該等不同客虛擬機器204的位址空間隔離,使得該被映射的記憶體空間對於每一客虛擬機器204為隔開。因此,一客虛擬機器204無法存取針對一不同 客虛擬機器204映射的該記憶體空間,藉此不會造成分配給不同客虛擬機器204的一通道上之衝突。為了達到這種隔離,GPU模擬模組304利用虛擬化層206來鎖定虛擬機器位址,並轉譯該等已鎖定的實體位址至系統記憶體104內的實體位址。然後該等轉譯的位址被映射到關聯於GPU 112的該位址空間中。
一旦對應於該被分配通道的該組控制暫存器316被映射,代理人資源管理員312被通知該通道已被分配給客GPU驅動器310,然後傳送一通知給客GPU驅動器310指明該通道已被分配。然後客GPU驅動器310將該被映射的記憶體空間映射到應用程式308中。
一旦已設置好至GPU 112的該存取,如上所述,在應用程式308的命令之下,客GPU驅動器310可藉由操縱關聯於該被分配的通道之該組控制暫存器316而直接存取GPU 112。更特定而言,客GPU驅動器310存在於記憶體的一個區域(在此稱之為「命令緩衝器」),具有要被傳送至GPU 112的命令。然後客GPU驅動器310程式化被映射到可由客虛擬機器204存取的該記憶體空間中的該組控制暫存器316來指明該已存在的命令緩衝器之開始與結束的記憶體位址。一旦該結束記憶體位址被程式化到該組控制暫存器中時,GPU 112自動地開始提取包括在該命令緩衝器中的該等命令來執行。重要地是,在此階段不會執行捕捉或模擬作業。
請回頭參照GPU模擬模組304,如上所述,其可模擬GPU 112的某些部份,例如組態暫存器、周邊組件互連快速(PCIe,“Peripheral Component Interconnect Express”)匯流排暫存器、事件/中斷。客虛擬機器204,更特定而言為客GPU驅動器310,其經由GPU模擬模組304存取那些模擬資源,而不直接存取GPU 112。關於由GPU 112引發的事件,例如通道錯誤與完成通知,客GPU驅動器310對GPU模擬模組304指明給客GPU 驅動器310該等將要註冊的事件。每次GPU 112引發一事件時,GPU模擬模組304決定一客虛擬機器204是否已經對於該特定事件進行註冊。如果是,GPU模擬模組304轉送一通知給包括在客虛擬機器204中的客GPU驅動器310來指明該事件被引發。此外,GPU模擬模組304接收由於關聯於一特定通道的GPU命令處理所造成的錯誤事件。然後GPU模擬模組304決定該通道被分配的客虛擬機器204,並轉送該錯誤事件至該客虛擬機器204。
此外,GPU模擬模組304在當該等位址被重新映射或破壞時,追蹤GPU虛擬位址的狀態。當所有至一釘住的客頁面之GPU參照已經被覆寫或破壞時,該客頁面被解除釘住。另外,GPU模擬模組304包括針對一給定客虛擬機器204保留電腦系統100內之資源的規定,使得可以避免未預期的分配失敗。最後,GPU模擬模組304藉由在暫停時儲存GPU虛擬位址映射與GPU通道的該狀態至系統記憶體104或外部儲存器(例如系統碟114),而在回復時恢復該狀態,即可支援暫停與回復一客虛擬機器204,其可能在一不同的實體系統上或在一不同的GPU上。在暫停該虛擬機器之後,GPU模擬模組304釋放GPU資源,例如被分配的通道,並解除釘住任何被釘住的虛擬機器頁面。在恢復時,GPU模擬模組304釘住並轉譯所有被映射的虛擬機器位址,並重新產生該等GPU虛擬映射。
當產生圖形像框做顯示時,客虛擬機器204在假設整個顯示器110被分配給客虛擬機器204之下產生圖形像框。因此,由包括在客虛擬機器204中一顯示驅動器(未示出)所傳送的顯示命令被顯示器模擬模組305捕捉。該等被捕捉的顯示命令使用GPU 112來轉譯以根據顯示器110至客虛擬機器204的實際分配來模擬顯示像框的構成、比例調整及其它處理。
此外,主控資源管理員306亦橫跨多個客虛擬機器204來區隔資源,例如記憶體。該等資源被靜態或動態地區隔,且被 指定與保護給一單一客虛擬機器204,然後提供直接存取(經由記憶體位址)回到客虛擬機器204來使用。這種資源,就像是通道一樣,即可用於由客GPU驅動器310之直接受保護的存取。
第四圖為根據本發明一具體實施例中第二圖之特許虛擬機器202與客虛擬機器204和第一圖的該GPU之間該等互動的概念圖。
為了存取被模擬的資源,例如GPU組態暫存器,在互動402時,客GPU驅動器310傳送一要求至GPU模擬模組304。GPU模擬模組304與GPU 112進行通訊,其係在收到該要求時或在之前,以取得關聯於被模擬資源的該相關資料。回應於該要求,GPU模擬模組304傳送該相關資料至客GPU驅動器310。
為了設置存取至該GPU來執行命令,在互動404時,客GPU驅動器310傳送一存取要求至代理人資源管理員312。在互動406時,代理人資源管理員312轉送該要求至主控資源管理員306。在作業408,主控資源管理員306分配關聯於GPU 112的至少一GPU通道至客GPU驅動器310。該分配可以動態完成,或可被靜態地預先決定。主控資源管理員306通知GPU模擬模組304該通道分配。在作業410,GPU模擬模組304即將關聯於該等被分配通道的該組通道控制暫存器映射到可由包括客GPU驅動器310的客虛擬機器204存取的記憶體空間中。然後客GPU驅動器310在作業412中,以如上述之方式經由該組通道控制暫存器直接存取GPU 112。
為了註冊由GPU 112引發的事件,由客GPU驅動器310傳送的事件註冊之該要求被導引到GPU模擬模組304。GPU模擬模組304維持追蹤客GPU驅動器310已經註冊的任何事件。當GPU模擬模組304自GPU 112收到客GPU驅動器310已經註冊的一事件通知時,GPU模擬模組304轉送該事件通 知至客GPU驅動器310。
第五圖為根據本發明一具體實施例中用於使得該客虛擬機器以一半虛擬化方式存取該GPU的方法步驟之流程圖。雖然該等方法步驟係配合第一圖到第三圖之該等系統做說明,本技術專業人士將可瞭解到設置成以任何順序執行該等方法步驟的任何系統皆在本發明之範疇內。
方法500開始於步驟502,其中代理人資源管理員312自客GPU驅動器310接收一要求來存取到關聯於GPU 112的一模擬暫存器。在步驟504,代理人資源管理員308經由主控資源管理員306傳送該要求至GPU模擬模組304。在步驟506,GPU模擬模組304經由主控資源管理員306與代理人資源管理員312傳送關聯於該模擬的暫存器之資料至客GPU驅動器310。
在步驟508,代理人資源管理員312自客GPU驅動器310接收一要求來設置存取至GPU 112來執行命令。在步驟510,代理人資源管理員312經由一遠端程序呼叫轉送該要求至主控資源管理員306。在步驟512,主控資源管理員306分配關聯於GPU 112的至少一GPU通道至客GPU驅動器310。然後主控資源管理員306通知GPU模擬模組304該通道分配。在步驟514,GPU模擬模組304將關聯於該等被分配的通道之該組通道控制暫存器映射到可由包括客GPU驅動器310的客虛擬機器204存取的記憶體空間中。在步驟516,代理人資源管理員312指明給客GPU驅動器310以前述的方式在作業412中,經由該組通道控制暫存器GPU 112可被直接存取而不需要系統100內任何其它組件的介入。
依此方式,在一客虛擬機器中執行的一客GPU驅動器310能夠直接控制GPU 112之該等處理能力之至少一部份。具有這種直接存取能夠增加一系統的效能,其中在當虛擬層206在設置對於該等客虛擬機器之存取而執行最小干預時,多個客虛 擬機器要競爭來存取至GPU 112。此外,因為客GPU驅動器310能夠直接傳送命令至GPU 112,命令轉譯的數量及當在一虛擬化環境中支援不同類型的GPU驅動器所引發的相容性問題皆可大為減少。
此處所述之該等多種具體實施例可以利用多種牽涉到儲存在電腦系統中的資料之電腦可實作的作業。例如,這些作業能需要實體個體之實體操縱,其通常但非必要地,這些個體可採取電子或磁性信號的型式,其中它們或其表示皆能夠被儲存、轉移、結合、比較或另外地操縱。另外,這些操縱通常稱之為像是產生、辨識、決定或比較。此處所述形成本發明之一或多個具體實施例之一部份的任何作業皆可為有用的機器作業。此外,本發明之一或多種具體實施例亦關連於用於執行這些作業的一種裝置或一種設備。該設備可為了特定需要的目的而特別地建構,或該設備可為一泛用型電腦,其由儲存在該電腦中的一電腦程式選擇性地啟動或設置。特別是,多種泛用型機器可利用根據此處之教示寫成的電腦程式來使用,或其更為方便地建構一更為特殊化的設備來執行所需要的作業。
此處所述之該等多種具體實施例可利用其它電腦系統組態來實施,其中包括掌上型裝置、微處理器系統,微處理器為主或可程式化消費性電子產品、迷你級電腦、大型電腦及類似者。
1.本發明之一或多種具體實施例可實作成一或多個電腦程式,或做為實施在一或多個電腦可讀取媒體上的電腦程式模組。該術語電腦可讀取媒體代表可以儲存資料的任何資料儲存裝置,其在之後可被輸入到一電腦系統,電腦可讀取媒體可以基於任何既有或後續開發出的技術來以能夠將電腦程式可由一電腦讀取的方式來進行實施。一電腦可讀取媒體之示例包括一硬碟機、網路附加儲存器(NAS,“Network Attached Storage”)、唯讀記憶體、隨機存取記憶體(例如一快閃記憶體裝 置)、一光碟(CD,“Compact Discs”)-唯讀記憶光碟(CD-ROM,“Compact Disc Read-Only Memory”)、一可錄光碟(CD-R,“Compact Disc-Recordable”)、或一可多次讀寫光碟(CD-RW,“Compact Disc Rewritable”)、一數位多工碟片(DVD,“Digital Versatile Disc”)、一磁帶或其它光學與非光學資料儲存裝置。該電腦可讀取媒體亦可分佈在一連接網路的電腦系統上,所以該電腦可讀取碼以一分散方式儲存及執行。
雖然本發明之一或多種具體實施例已經以某種詳細程度做說明來提供清楚的瞭解,將可瞭解到某些改變與修改皆可在該等申請專利範圍的範疇之內進行。因此,該等所述之具體實施例應視為例示性而非限制性,且該等申請專利範圍之該範疇並不限於此處所提出的細節,但可在該等申請專利範圍之範疇及同等者之內進行修正。在該等申請專利範圍中,元件及/或步驟並未暗指有任何特定的操作順序,除了在該等申請專利範圍中有明確地陳述。
根據該等多種具體實施例的虛擬化系統可實作成主機式具體實施例、非主機式具體實施例,或可想像實作成刻意在這兩者之間模糊化其區別的具體實施例。另外,多項虛擬化作業可整體或部份地實作在硬體中。例如,一種硬體實作可以利用一檢查表來修改儲存存取要求來確保非碟片資料。
無關於虛擬化的程度,許多變化、修改、加入及改善皆有可能。因此該虛擬化軟體可包括執行虛擬化功能的一主機、一主控台或客作業系統之組件。複數個實例被提供為此處所述之組件、作業或結構做為一單一實例。最後,多種組件、作業及資料儲存之間的界限並無特定,而特定作業係例示在特定例示性組態之內容當中。其可想像有其它功能性的分配,且皆落在本發明之範疇內。概言之,在示例性組態中呈現為獨立組件的結構與功能性可被實作成一組合的結構或組件。同樣地,呈現為一單一組件的結構與功能性可被實作成獨立的組件。這些與 其它變化、修改、加入與改善皆落在該等附帶申請專利範圍的範疇之內。
100‧‧‧電腦系統
102‧‧‧中央處理單元
104‧‧‧系統記憶體
105‧‧‧記憶體橋接器
106‧‧‧通訊路徑
107‧‧‧輸入/輸出橋接器
108‧‧‧輸入裝置
110‧‧‧顯示器
112‧‧‧圖形處理單元
113‧‧‧通訊路徑,匯流排
114‧‧‧系統碟
116‧‧‧交換器
118‧‧‧網路轉接器
120,121‧‧‧嵌入卡
202‧‧‧特許虛擬機器
204‧‧‧客虛擬機器,平行處理記憶體
206‧‧‧虛擬化層
208‧‧‧超管理器
210‧‧‧硬體虛擬化模組
212‧‧‧輸入/輸出記憶體管理單元
302‧‧‧硬體模擬軟體
304‧‧‧圖形處理單元模擬 模組
305‧‧‧顯示器模擬模組
306‧‧‧主控資源管理員
308‧‧‧應用程式
310‧‧‧客圖形處理單元驅動器
311‧‧‧應用程式介面
312‧‧‧代理人資源管理員
316‧‧‧控制暫存器
402-406‧‧‧互動
408-412‧‧‧作業
所以,可以詳細瞭解本發明上述特徵之方式當中,本發明之一更為特定的說明簡述如上,其可藉由參照具體實施例來進行,其中一些例示於所附圖式中。但是應要注意到,該等附屬圖式僅例示本發明的典型具體實施例,因此其並非要做為本發明之範疇的限制,其可允許其它同等有效的具體實施例。
第一圖例示設置成實作本發明一或多種態樣之電腦系統的方塊圖;第二圖為例示根據本發明一具體實施例在第一圖的該電腦系統中執行的一虛擬化運算環境之方塊圖;第三圖為根據本發明一具體實施例中第二圖的該特許虛擬機器與該客虛擬機器的細部圖示;第四圖為根據本發明一具體實施例中第二圖之該特許虛擬機器與該客虛擬機器和第一圖的該GPU之間該等互動的概念圖;以及第五A圖與第五B圖為根據本發明一具體實施例中用於使得該客虛擬機器以一半虛擬化方式存取該GPU的方法步驟之流程圖。
202‧‧‧特許虛擬機器
204‧‧‧客虛擬機器,平行處理記憶體
206‧‧‧虛擬化層
302‧‧‧硬體模擬軟體
304‧‧‧圖形處理單元模擬模組
305‧‧‧顯示器模擬模組
306‧‧‧主控資源管理員
308‧‧‧應用程式
310‧‧‧客圖形處理單元驅動器
311‧‧‧應用程式介面
312‧‧‧代理人資源管理員
316‧‧‧控制暫存器
104‧‧‧系統記憶體
112‧‧‧圖形處理單元

Claims (10)

  1. 一種電腦系統,其包含:一主要處理單元;一次級處理單元,其耦合至該主要處理單元,並可經由複數條通道存取;複數個客虛擬機器,其在該主要處理單元上執行,其中每一客虛擬機器包括關聯於該次級處理單元的一驅動器;以及一特許虛擬機器,其在該主要處理單元上執行,且設置成將包括在該等複數條通道的一不同組合的通道分配給包括在該等複數個客虛擬機器中該等驅動器之每一驅動器,其中分配給包括在一第一客虛擬機器中的一第一驅動器之一第一組通道使得該第一驅動器可存取該次級處理單元,而不會與包括在該等客虛擬機器中該等其它驅動器之任何驅動器有衝突並受其保護。
  2. 如申請專利範圍第1項之電腦系統,其中每一客虛擬機器包括一代理人資源管理員,其設置成經由遠端程序呼叫與該特許虛擬機器進行通訊。
  3. 如申請專利範圍第2項之電腦系統,其中該第一客虛擬機器包括一第一代理人資源管理員,其設置成:傳送一要求至該特許虛擬機器來針對該第一驅動器設置存取至該次級處理單元,以及自該特許虛擬機器接收一通訊,該等第一組通道已經被分配給該第一驅動器,其中該特許虛擬機器將關聯於該等第一組通道的一或多個控制暫存器映射到可由該第一驅動器存取的一記憶體空間的一部份當中,其中每一控制暫存器係關聯於在該等第一組通道中一不同通道,且在該等第一組通道中每一通道基於關聯於該通道的該相關聯的控制暫存器之該等內容而出現命令。
  4. 如申請專利範圍第3項之電腦系統,其中該第一驅動器藉由將一或多個命令寫入到一命令緩衝器,並在關聯於包括在該組通道中一第一通道的一通道控制暫存器中提供關聯於該命令緩衝器的至少一第一記憶體位址來存取該次級處理單元。
  5. 如申請專利範圍第2項之電腦系統,其中該特許虛擬機器包括一模擬軟體模組,其設置成模擬該次級處理單元的一部份,且該代理人資源管理員被設置成:導引一要求由該第一驅動器至該模擬軟體模組來存取該次級處理單元的該部份,以及回應於該要求,自該模擬軟體模組傳送資料至該第一驅動器。
  6. 如申請專利範圍第2項之電腦系統,其中該特許虛擬機器包括一模擬軟體模組,其在每次由該次級處理單元引發一事件時被通知,且該第一代理人資源管理員被設置成:導引以註冊由該次級處理單元引發的一第一事件的一要求至該模擬軟體模組,以及當該第一事件被該次級處理單元引發時,自該模擬軟體模組傳送一通知至該第一驅動器。
  7. 如申請專利範圍第1項之電腦系統,進一步包含一顯示器,其中該等客虛擬機器之每一客虛擬機器包括一顯示驅動器,其設置成繪製顯示像框到該顯示器上。
  8. 如申請專利範圍第7項之電腦系統,其中該特許虛擬機器包括一模擬軟體模組,其設置成捕捉由關連於繪製一第一顯示像框到該顯示器上而包括在該第一客虛擬機器內的一第一顯示驅動器所傳送的一顯示命令。
  9. 如申請專利範圍第2項之電腦系統,其中該特許虛擬機器包括一模擬軟體模組,其在每次關聯於包括在該等複數條通道中該等通道之任何一通道發生錯誤時由該次級處理單元通知。
  10. 如申請專利範圍第1項之電腦系統,其中該特許虛擬機器設置成當該第一客虛擬機器終止時自該第一驅動器解除分配該等第一組通道。
TW101137297A 2011-10-10 2012-10-09 半虛擬化的虛擬圖形處理單元 TWI498824B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/270,082 US10310879B2 (en) 2011-10-10 2011-10-10 Paravirtualized virtual GPU

Publications (2)

Publication Number Publication Date
TW201331844A true TW201331844A (zh) 2013-08-01
TWI498824B TWI498824B (zh) 2015-09-01

Family

ID=47909093

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101137297A TWI498824B (zh) 2011-10-10 2012-10-09 半虛擬化的虛擬圖形處理單元

Country Status (4)

Country Link
US (1) US10310879B2 (zh)
CN (1) CN103034524B (zh)
DE (1) DE102012218379B4 (zh)
TW (1) TWI498824B (zh)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US9342920B1 (en) * 2011-11-15 2016-05-17 Intrinsic Medical Imaging, LLC Volume rendering using scalable GPU-based cloud computing
CN105830026B (zh) * 2013-11-27 2020-09-15 英特尔公司 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法
WO2015100681A1 (zh) * 2013-12-31 2015-07-09 华为技术有限公司 Gpu虚拟化的实现方法及相关装置和系统
US20150278512A1 (en) 2014-03-28 2015-10-01 Intel Corporation Virtualization based intra-block workload isolation
GB2525003B (en) * 2014-04-09 2021-06-09 Advanced Risc Mach Ltd Data Processing Systems
EP3218803B1 (en) * 2014-11-12 2021-01-06 Intel Corporation Live migration of virtual machines from/to host computers with graphics virtualization
CN105988874B (zh) 2015-02-10 2020-08-28 阿里巴巴集团控股有限公司 资源处理方法及装置
US9766918B2 (en) * 2015-02-23 2017-09-19 Red Hat Israel, Ltd. Virtual system device identification using GPU to host bridge mapping
US20180033116A1 (en) * 2015-03-18 2018-02-01 Intel Corporation Apparatus and method for software-agnostic multi-gpu processing
US9875047B2 (en) 2015-05-27 2018-01-23 Red Hat Israel, Ltd. Exit-less host memory locking in a virtualized environment
US9753861B2 (en) 2015-05-27 2017-09-05 Red Hat Israel, Ltd Exit-less movement of guest memory assigned to a device in a virtualized environment
CN114546594A (zh) 2015-05-29 2022-05-27 英特尔公司 对图形处理单元资源的容器访问
US9996494B2 (en) * 2015-09-03 2018-06-12 Red Hat Israel, Ltd. Asynchronous mapping of hot-plugged device associated with virtual machine
CN105786589A (zh) * 2016-02-26 2016-07-20 成都赫尔墨斯科技有限公司 一种云渲染系统、服务器及方法
US20180007302A1 (en) * 2016-07-01 2018-01-04 Google Inc. Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
KR102202258B1 (ko) 2016-09-05 2021-01-13 후아웨이 테크놀러지 컴퍼니 리미티드 가상 머신을 위한 그래픽처리장치의 할당
CN109983438B (zh) * 2016-12-22 2024-02-02 英特尔公司 使用直接存储器访问(dma)重新映射来加速半虚拟化网络接口
US10380039B2 (en) * 2017-04-07 2019-08-13 Intel Corporation Apparatus and method for memory management in a graphics processing environment
CN107193650B (zh) * 2017-04-17 2021-01-19 北京奇虎科技有限公司 一种在分布式集群中调度显卡资源的方法和装置
US10241823B2 (en) * 2017-05-31 2019-03-26 Red Hat Israel, Ltd. Migrating a virtual machine in response to identifying an unsupported virtual hardware component
GB2565770B (en) * 2017-08-15 2019-09-18 Advanced Risc Mach Ltd Data processing systems
CN110389825B (zh) * 2018-04-20 2023-08-04 伊姆西Ip控股有限责任公司 管理专用处理资源的方法、设备和计算机程序产品
CN109284172A (zh) * 2018-09-20 2019-01-29 贵州华芯通半导体技术有限公司 虚拟化环境下的通路资源管理方法、系统和虚拟机管理器
US11347531B2 (en) * 2018-10-31 2022-05-31 The Boeing Company Generalized virtualization platform for systems using hardware abstraction software layers
US10795718B2 (en) * 2019-02-08 2020-10-06 Microsoft Technology Licensing, Llc Updating hardware with reduced virtual machine downtime
US20200409732A1 (en) * 2019-06-26 2020-12-31 Ati Technologies Ulc Sharing multimedia physical functions in a virtualized environment on a processing unit
CN113467970B (zh) * 2021-06-25 2023-09-26 阿里巴巴新加坡控股有限公司 云计算系统中的跨安全区域的资源访问方法及电子设备
CN115988218B (zh) * 2023-03-14 2023-06-09 摩尔线程智能科技(北京)有限责任公司 一种虚拟化视频编解码系统、电子设备和存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7434166B2 (en) * 2003-06-03 2008-10-07 Harman International Industries Incorporated Wireless presentation system
US7757231B2 (en) * 2004-12-10 2010-07-13 Intel Corporation System and method to deprivilege components of a virtual machine monitor
US8274518B2 (en) * 2004-12-30 2012-09-25 Microsoft Corporation Systems and methods for virtualizing graphics subsystems
JP4733399B2 (ja) * 2005-01-28 2011-07-27 株式会社日立製作所 計算機システム、計算機、ストレージ装置及び管理端末
US7616207B1 (en) * 2005-04-25 2009-11-10 Nvidia Corporation Graphics processing system including at least three bus devices
US8031198B1 (en) 2006-10-31 2011-10-04 Nvidia Corporation Apparatus and method for servicing multiple graphics processing channels
TW201007574A (en) * 2008-08-13 2010-02-16 Inventec Corp Internet server system and method of constructing and starting a virtual machine
US20100115510A1 (en) 2008-11-03 2010-05-06 Dell Products, Lp Virtual graphics device and methods thereof
US20100262722A1 (en) 2009-04-10 2010-10-14 Christophe Vauthier Dynamic Assignment of Graphics Processing Unit to a Virtual Machine
US8910153B2 (en) 2009-07-13 2014-12-09 Hewlett-Packard Development Company, L. P. Managing virtualized accelerators using admission control, load balancing and scheduling
US8629878B2 (en) 2009-08-26 2014-01-14 Red Hat, Inc. Extension to a hypervisor that utilizes graphics hardware on a host
WO2011032114A1 (en) 2009-09-11 2011-03-17 Citrix Systems, Inc. Remote rendering of three-dimensional images using virtual machines
US8850426B2 (en) * 2009-12-13 2014-09-30 International Business Machines Corporation Managing remote deployment of a virtual machine and service request to be processed by the virtual machines based on network bandwith and storage connectivity
CN102971740B (zh) * 2010-07-01 2016-01-27 惠普发展公司,有限责任合伙企业 计算设备上的用于多个环境的用户管理框架
US8484405B2 (en) * 2010-07-13 2013-07-09 Vmware, Inc. Memory compression policies
US8970603B2 (en) * 2010-09-30 2015-03-03 Microsoft Technology Licensing, Llc Dynamic virtual device failure recovery
CN102147722B (zh) 2011-04-08 2016-01-20 深圳中微电科技有限公司 实现中央处理器和图形处理器功能的多线程处理器及方法
US9841985B2 (en) * 2011-04-12 2017-12-12 Red Hat Israel, Ltd. Storage block deallocation in virtual environments
US8484392B2 (en) * 2011-05-31 2013-07-09 Oracle International Corporation Method and system for infiniband host channel adaptor quality of service

Also Published As

Publication number Publication date
CN103034524B (zh) 2016-05-04
CN103034524A (zh) 2013-04-10
DE102012218379A1 (de) 2013-04-11
TWI498824B (zh) 2015-09-01
US10310879B2 (en) 2019-06-04
DE102012218379B4 (de) 2014-05-15
US20130091500A1 (en) 2013-04-11

Similar Documents

Publication Publication Date Title
TWI498824B (zh) 半虛擬化的虛擬圖形處理單元
US11681639B2 (en) Direct access to a hardware device for virtual machines of a virtualized computer system
TWI599955B (zh) 經虛擬化之智慧型裝置的直接共享方法及設備
US8464259B2 (en) Migrating virtual machines configured with direct access device drivers
JP5608243B2 (ja) 仮想化環境においてi/o処理を行う方法および装置
US7467381B2 (en) Resource partitioning and direct access utilizing hardware support for virtualization
WO2018119951A1 (zh) Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品
US7853744B2 (en) Handling interrupts when virtual machines have direct access to a hardware device
KR102047558B1 (ko) 가상 디스크 저장 기술
US7644407B2 (en) Method, apparatus and system for seamlessly sharing a graphics device amongst virtual machines
US20120054740A1 (en) Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
JP2015500524A (ja) 効率的なメモリ及びリソース管理
US20180074956A1 (en) Method, apparatus, and electronic device for modifying memory data of a virtual machine
US8880582B2 (en) User access to a partitionable server
CN116685947A (zh) 虚拟功能资源的基于硬件的保护
CN112486632A (zh) 一种面向k8s的用户态虚拟设备驱动框架
Lee VAR: Vulkan API Remoting for GPU-accelerated Rendering and Computation in Virtual Machines