在圖形處理單元上虛擬機(jī)之間變化的制作方法
【專利摘要】一種用于在圖形處理單元(GPU)上虛擬機(jī)之間變化的方法包括:請求從具有第一全局上下文的第一虛擬機(jī)(VM)切換到具有第二全局上下文的第二VM;停止在所述第一VM中采取新的命令;保存所述第一全局上下文;和切換出所述第一VM。
【專利說明】在圖形處理單元上虛擬機(jī)之間變化
[0001]相關(guān)申請的交叉參考
[0002]本申請請求于2011年12月28日提出的美國非臨時(shí)申請序列號13/338,915的權(quán)益,所述申請的內(nèi)容據(jù)此以引用的方式并入本文,如同其完全在此闡述。
發(fā)明領(lǐng)域
[0003]本申請涉及基于硬件的虛擬設(shè)備和處理器。
[0004]發(fā)明背景
[0005]圖1是示例性設(shè)備100的框圖,其中一個(gè)或多個(gè)所公開的實(shí)施方案可在圖形處理單元(GPU)中實(shí)施。設(shè)備100例如可包括計(jì)算機(jī)、游戲設(shè)備、手持設(shè)備、機(jī)頂盒、電視機(jī)、移動(dòng)電話或平板計(jì)算機(jī)。設(shè)備100包括處理器102、儲存器104、存儲裝置106、一個(gè)或多個(gè)輸入設(shè)備108和一個(gè)或多個(gè)輸出設(shè)備110。設(shè)備100也可可選地包括輸入驅(qū)動(dòng)器112和輸出驅(qū)動(dòng)器114。應(yīng)理解,設(shè)備100可包括圖1中未示出的額外組件。
[0006]處理器102可包括中央處理單元(CPU)、GPU、位于同一芯片上的CPU和GPU(可被稱為加速處理單元(APU)),或一個(gè)或多個(gè)處理器核心,其中每個(gè)處理器核心可為CPU或GPU。儲存器104可與處理器102位于相同的芯片上,或可與處理器102分開設(shè)置。儲存器104可包括易失性或非易失性儲存器,例如,隨機(jī)存取儲存器(RAM)、動(dòng)態(tài)RAM或高速緩存。
[0007]存儲106可包括固定的或可移動(dòng)的存儲,例如,硬盤驅(qū)動(dòng)器、固態(tài)驅(qū)動(dòng)器、光盤,或閃存驅(qū)動(dòng)器。輸入設(shè)備108可包括鍵盤、小鍵盤、觸摸屏、觸摸板、檢測器、麥克風(fēng)、加速計(jì)、陀螺儀、生物特征掃描儀或網(wǎng)絡(luò)連接(例如,用于發(fā)送和/或接收無線IEEE802信號的無線局域網(wǎng)絡(luò)卡)。輸出設(shè)備110可包括顯示器、揚(yáng)聲器、打印機(jī)、觸覺反饋設(shè)備、一個(gè)或多個(gè)燈、天線或網(wǎng)絡(luò)連接(例如,用于發(fā)送和/或接收無線IEEE802信號的無線局域網(wǎng)絡(luò)卡)。
[0008]輸入驅(qū)動(dòng)器112與處理器102和輸入設(shè)備108進(jìn)行通信,并允許處理器102從輸入設(shè)備108接收輸入。輸出驅(qū)動(dòng)器114與處理器102和輸出設(shè)備110進(jìn)行通信,并允許處理器102發(fā)送輸出到輸出設(shè)備110。應(yīng)注意,輸入驅(qū)動(dòng)器112和輸出驅(qū)動(dòng)器114是可選組件,且設(shè)備100將以與不存在輸入驅(qū)動(dòng)器112和輸出驅(qū)動(dòng)器114相同的方式操作。
[0009]參看圖1A,圖1A示出本機(jī)(非虛擬)環(huán)境中的GPU上下文切換和層次,系統(tǒng)啟動(dòng)120使基本輸入輸出系統(tǒng)(視頻BIOS) 125建立初級全局上下文127。接著,或甚至與視頻BIOS啟動(dòng)同時(shí),操作系統(tǒng)(OS)啟動(dòng)130加載其基礎(chǔ)驅(qū)動(dòng)程序140,并建立全局上下文150。
[0010]一旦啟動(dòng)了系統(tǒng)和OS,在應(yīng)用程序啟動(dòng)160上,GPU用戶模式驅(qū)動(dòng)程序170開始,且這些驅(qū)動(dòng)程序驅(qū)動(dòng)一個(gè)或多個(gè)每個(gè)進(jìn)程上下文180。在多于一個(gè)每個(gè)進(jìn)程上下文180被激活的情況下,可在多個(gè)上下文之間切換。
[0011]圖1A表示在本機(jī)/非虛擬化環(huán)境中的GPU上下文管理方案。在這種環(huán)境下,每個(gè)進(jìn)程上下文180中每一個(gè)共享相同的、靜態(tài)的全局上下文和初級全局上下文-且這三個(gè)上下文中每一個(gè)在其較低水平上下文上逐步建立(每個(gè)進(jìn)程在全局上,全局在初級上)。全局上下文實(shí)例可包括GPU:環(huán)形緩沖區(qū)設(shè)置、儲存器光圈設(shè)置、頁表映射、固件和微碼版本和設(shè)置。取決于個(gè)人和OS和驅(qū)動(dòng)程序?qū)嵤┑奶厥庑?,全局上下文可能不同。[0012]虛擬機(jī)(VM)是在虛擬化環(huán)境中安裝在主機(jī)內(nèi)的隔離客戶操作系統(tǒng)。運(yùn)行一個(gè)或多個(gè)VM的虛擬化環(huán)境是在同一系統(tǒng)中同時(shí)或以時(shí)間片的方式運(yùn)行。在虛擬化環(huán)境中,存在某些挑戰(zhàn),例如在多個(gè)虛擬機(jī)之間切換,這會(huì)導(dǎo)致在其全局上下文中使用不同設(shè)置在不同VM之間切換。現(xiàn)有GPU上下文切換實(shí)施并不支持所述全局上下文切換機(jī)制。當(dāng)VM異步啟動(dòng)且每個(gè)VM的基礎(chǔ)驅(qū)動(dòng)程序試圖初始化其自身的全局上下文而不知道其它運(yùn)行的VM時(shí),可產(chǎn)生另一挑戰(zhàn)-這導(dǎo)致了基礎(chǔ)驅(qū)動(dòng)程序初始化摧毀其它VM的全局上下文(例如,新的代碼上傳覆蓋來自另一 VM的現(xiàn)有的運(yùn)行的微碼)?;谟布奶摂M設(shè)備中可產(chǎn)生其它的挑戰(zhàn),其中中央處理單元((PU或圖形處理單元(GPU))的物理性質(zhì)可能需要在所有VM之間共享。共享GPU的物理性質(zhì)和功能(例如,顯示鏈接和時(shí)序、DRAM接口、時(shí)鐘設(shè)定、過熱保護(hù)、PCIE接口、掛機(jī)檢測和硬件重置)可導(dǎo)致另一挑戰(zhàn),因?yàn)檫@些類型的物理功能不被設(shè)計(jì)為可在多個(gè)VM之間共享。
[0013]例如GPU的虛擬設(shè)備的純軟件實(shí)施提供有限的性能、特性集和安全性。另外,大量不同的虛擬化系統(tǒng)的實(shí)施和OS操作系統(tǒng)都需要特定的軟件開發(fā),這在經(jīng)濟(jì)上是不可擴(kuò)展的。
發(fā)明概要
[0014]一種用于在圖形處理單元(GPU)上虛擬機(jī)之間變化的方法包括:請求從具有第一全局上下文的第一虛擬機(jī)(VM)切換到具有第二全局上下文的第二 VM;停止在第一 VM中采取新的命令;保存第一全局上下文;和切換出第一 VM。
[0015]附圖簡述
[0016]可從通過舉例的方式結(jié)合附圖給出的以下描述中獲得更詳細(xì)的理解,在附圖中:
[0017]圖1是其中可實(shí)施一個(gè)或多個(gè)公開的實(shí)施方案的示例性設(shè)備的框圖。
[0018]圖1A示出本機(jī)環(huán)境中的上下文切換和層次。
[0019]圖2示出類似于圖1的基于硬件的VM系統(tǒng)。
[0020]圖3示出切換出VM的步驟。
[0021]圖4示出切換到VM的步驟。
[0022]圖5圖示了同步全局上下文切換的資源成本。
【具體實(shí)施方式】
[0023]基于硬件的虛擬化允許客戶VM表現(xiàn)得好像它們是在本機(jī)環(huán)境中,因?yàn)榭蛻鬙S和VM驅(qū)動(dòng)程序可能未意識到或極少意識到其VM狀態(tài)。硬件虛擬化也可能需要極少地修改OS和驅(qū)動(dòng)程序。因此,硬件虛擬化允許維護(hù)現(xiàn)有的軟件生態(tài)系統(tǒng)。
[0024]圖2示出類似于圖1A但具有兩個(gè)VM210、220的基于硬件的VM系統(tǒng)。建立初級上下文127的系統(tǒng)啟動(dòng)120和B10S125由CPU的管理程序進(jìn)行,所述管理程序是在虛擬化系統(tǒng)中管理VM210、220的基于軟件的實(shí)體。管理程序可控制主機(jī)處理器和資源,從而又分配所需的資源到每個(gè)VM210、220,并確保每個(gè)VM不擾亂其它VM。
[0025]每個(gè)VM210、220具有其自身的OS啟動(dòng)230a、230b,且各自的基礎(chǔ)驅(qū)動(dòng)程序240a、240b建立各自的全局上下文250a、250b。應(yīng)用程序啟動(dòng)160a、160b、用戶模式驅(qū)動(dòng)程序170a、170b,和上下文180a、180b在每個(gè)VM中與圖1相同。[0026]從VM1210切換到VM2220被稱為世界切換(world switch),但在每個(gè)VM中,步驟120中建立的某個(gè)全局初級上下文被共享,而其它建立的全局上下文250a、250b不同。應(yīng)理解,在這個(gè)系統(tǒng)中,每個(gè)VM210、220具有其自身的全局上下文250a、250b-且每個(gè)全局上下文在每個(gè)應(yīng)用程序的基礎(chǔ)上共享。在從VM1210世界切換到VM2220期間,可從GPU儲存器恢復(fù)全局上下文250b,而全局上下文250a被保存在相同(或不同)的基于硬件的GPU儲存器。
[0027]在GPU內(nèi),每個(gè)GPU IP模塊可定義其自身的全局上下文,其中設(shè)置由其各自的VM的基礎(chǔ)驅(qū)動(dòng)程序在VM初始化時(shí)進(jìn)行。這些設(shè)置可由VM內(nèi)所有應(yīng)用程序共享。例如多個(gè)VM共享的DRAM接口的物理資源和和性質(zhì)被在VM外部初始化,而不是被在全局上下文切換期間保存并恢復(fù)的全局上下文的部分。GPU IP模塊的實(shí)例包括圖形引擎、GPU計(jì)算單元、DMA引擎、視頻編碼器和視頻解碼器。
[0028]在這個(gè)基于硬件的VM實(shí)施方案中,可能有被定義如下的物理功能(PF)和虛擬功能(VF)。物理功能(PF)可能是全功能的快速功能,包括配置資源(例如,PC1-快速功能);虛擬功能(VF)是缺乏配置資源的“輕便”功能。在基于硬件的VM系統(tǒng)中,GPU可根據(jù)PCI快速標(biāo)準(zhǔn)公開I個(gè)PF。在本機(jī)環(huán)境中,PF可如正常情況般由驅(qū)動(dòng)程序使用;在虛擬環(huán)境中,PF可由管理程序或主機(jī)VM使用。另外,所有GPU寄存器可被映射到PF。
[0029]GPU可提供N個(gè)VF。在本機(jī)環(huán)境中,VF被禁用;在虛擬環(huán)境中,每個(gè)VM可能有一個(gè)VF,且VF可由管理程序被分配給VM。GPU寄存器的子集可被映射到共享單組物理存儲觸發(fā)器的每個(gè)VF。
[0030]全局上下文切換可涉及許多步驟,這取決于接入還是切換出VM。圖3示出在示例性實(shí)施方案中切換出VM的步驟。給出I個(gè)VM到I個(gè)VF或PF映射,從一個(gè)VM切換到另一個(gè)VM的行為等同于從一個(gè)VF或PF切換到另一個(gè)VF或PF的硬件實(shí)施。在全局上下文切換期間,管理程序使用PF配置空間寄存器來將GPU從一個(gè)VF切換到另一個(gè)VF,且切換信號被從一個(gè)總線接口(BIF)傳播到所有IP模塊或授權(quán)給所有IP模塊。在切換之前,管理程序必須將VM與VF斷開(如果先前被映射,就通過取消映射MMIO寄存器空間)并確保系統(tǒng)構(gòu)造中的任何待決活動(dòng)已被刷新到GPU。
[0031]在從BIF400接收到這個(gè)全局上下文換出信號(420)之后,每個(gè)涉及的IP模塊410可進(jìn)行以下任務(wù),不一定按此順序-或任何順序,因?yàn)橐恍┤蝿?wù)可同時(shí)進(jìn)行。首先,IP模塊410可停止采取來自軟件的命令(430)(所述“采取”可為避免將另外的命令發(fā)送到模塊410,或者,停止模塊410檢索或接收命令)。然后其排空內(nèi)部管道(440),包括允許管道中的命令完成處理和允許所得數(shù)據(jù)被刷新到儲存器,但不接受新的命令(參看步驟420),直至達(dá)到其閑置狀態(tài)。這樣做使得GPU不攜帶現(xiàn)有命令到新的VF/PF-且當(dāng)切換到下一 VF/PF時(shí)可接受新的全局上下文(參看圖4)。具有相互依存關(guān)系的IP可能需要協(xié)調(diào)狀態(tài)保存(例如,3D引擎和和儲存器控制器)。
[0032]一旦閑置,全局上下文可被保存到儲存器(450)。儲存器位置可被通過來自BIF的PF寄存器從管理程序通信。最后,每個(gè)IP模塊使用換出完成的指示來響應(yīng)BIF (460)。
[0033]一旦BIF收集所有換出完成響應(yīng),其向管理程序405發(fā)出全局上下文切換準(zhǔn)備470的信號。如果在某一時(shí)間段內(nèi)管理程序405未接收到準(zhǔn)備信號470(475),那么管理程序通過PF寄存器重置GPU (480)。否則,在接收到信號之后,管理程序在495結(jié)束換出順序。[0034]圖4描述切換到VF/PF的步驟。最初,PF寄存器指示全局上下文切換準(zhǔn)備(510)。然后,管理程序405設(shè)置BIF中的PF寄存器以切換到被分配給VM的另一 VF/PF (520),且切換信號可從BIF傳播到所有IP模塊(530)。
[0035]一旦IP模塊410接收了切換信號(530),每個(gè)IP模塊可從儲存器恢復(fù)以前保存的上下文(540)并開始運(yùn)行新的VM(550)。然后,IP模塊410用切換-完成信號560響應(yīng)于BIF400。BIF400向管理程序405發(fā)出全局上下文接入完成(565)的信號。
[0036]管理程序405同時(shí)檢查以查看切換完成信號是否已被接收(570),且如果未被接收,則重置GPU (580),否則,接入順序完成(590)。
[0037]某些性能后果可由這種設(shè)置造成。在全局上下文換出期間,可能有等待時(shí)間以供所有IP模塊排空和閑置。在全局上下文接入期間,雖然有可能在所有IP模塊為可運(yùn)行之前開始運(yùn)行IP模塊的子集,但是這由于它們之間的相互依存關(guān)系而可能難以實(shí)施。
[0038]理解排空和停止時(shí)間產(chǎn)生了性能、可用性、架空使用和響應(yīng)的概念。下面的公式顯示了人機(jī)交互(HCI)和GPU效率因數(shù)的實(shí)例:
[0039](I)HCI 響應(yīng)因數(shù):
[0040](N-1) X (T+V) <= IOOms 方程 I
[0041]⑵GPU效率因數(shù):
[0042](T-R)/(T+V) = (80%^ 90%) 方程 2
[0043]其中N是VM的數(shù)量,T是VM的活動(dòng)時(shí)間,V是切換開銷,且R是上下文恢復(fù)開銷。參看圖5對這些變量中的若干變量進(jìn)行最好的闡述。
[0044]圖5圖示了同步全局上下文切換的資源成本。在處于活躍狀態(tài)的VMa610與以閑置狀態(tài)開始的VMb620b之間的切換始于換出指令(630)。在這一點(diǎn)上,IP模塊640、650、660(在圖中稱為引擎)開始其關(guān)閉,其中每個(gè)IP模塊花費(fèi)不同的時(shí)間來達(dá)到閑置。如前所述,一旦每個(gè)IP模塊達(dá)到閑置(670),那么接入指令680在VMb620的空間中開始引擎,且一旦引擎都為活動(dòng)的690,VMb620就為可操作的。標(biāo)示為605的換出指令和接入指令670之間的時(shí)間是VM切換開銷“V”,同時(shí)在690完全操作的接入指令680到VMb620的時(shí)間是上下文恢復(fù)開銷R。
[0045]基于硬件的(例如基于GPU的)系統(tǒng)的一個(gè)實(shí)施方案將使IP模塊能夠異步執(zhí)行,其中多個(gè)IP模塊可在若干VF或PF上異步地運(yùn)行。在這個(gè)實(shí)施方案中,全局上下文可被內(nèi)部實(shí)例化,其中N個(gè)上下文用于N個(gè)運(yùn)行的VF或PF。這樣的實(shí)施方案可允許在沒有管理程序的活躍和定期切換指令的情況下進(jìn)行自主全局上下文切換,其中第二級調(diào)度(全局上下文)和運(yùn)行列表控制器(RLC)可采用來自管理程序的政策控制順序(例如優(yōu)先級和搶占)來負(fù)責(zé)GPU中的上下文切換。RLC可控制IP模塊/引擎并開始或停止單個(gè)引擎。在這個(gè)實(shí)施方案中,每個(gè)VM的全局上下文可被存儲并恢復(fù)在片上或儲存器中。這樣的實(shí)施方案中的另一特征在于某些服務(wù)IP模塊可維護(hù)多個(gè)全局同步上下文。例如,儲存器控制器可同時(shí)服務(wù)異步運(yùn)行不同的VF或PF的多個(gè)客戶端。應(yīng)理解,這樣的實(shí)施方案可消除后來停止的IP模塊的同步全局上下文切換開銷。儲存器控制器的客戶端將在內(nèi)部接口中向儲存器控制器指示VF/PF索引,從而允許儲存器控制器在服務(wù)于所述客戶端時(shí)應(yīng)用適當(dāng)?shù)娜稚舷挛摹?br>
[0046]異步儲存器訪問可產(chǎn)生可由管理程序來管理的調(diào)度困難。在CPU的異步訪問GPU儲存器上下文中的管理程序的調(diào)度功能可能受下列因素限制=(I)GPU儲存器被硬分區(qū),使得每個(gè)VM被分配IN空間;(2)GPU主機(jī)數(shù)據(jù)路徑是總是適用于所有VM的物理性質(zhì);且調(diào)酒孔(swizzle aperture)在VF之間被硬分區(qū)。然而,取代(I),另一實(shí)施方案將使用由管理程序管理的第二級儲存器轉(zhuǎn)換表來創(chuàng)建儲存器軟分區(qū)。第一級頁表可能已被VM使用。管理程序可能能夠在這個(gè)第二級上處理頁面錯(cuò)誤且也按需要映射物理頁面。這可最小化儲存器的限制,而具有一些額外的轉(zhuǎn)換開銷。
[0047]當(dāng)GPU運(yùn)行一個(gè)VM時(shí),CPU可異步運(yùn)行另一 VM。CPU和GPU之間的這個(gè)異步模式允許更好的性能,而不需要CPU和GPU等待彼此以同時(shí)切換到同一 VM。然而,這個(gè)模式暴露了一個(gè)問題=CPU可異步訪問未被虛擬化的GPU寄存器,意味著可能不是每個(gè)VF/PF都有GI3U寄存器的多個(gè)實(shí)例,這可導(dǎo)致區(qū)域(在芯片上占用更小的空間)保存在GPU上。這個(gè)異步儲存器訪問可產(chǎn)生可由管理程序來管理的調(diào)度困難。可提高性能的另一實(shí)施方案可涉及將MMIO寄存器移入儲存器。
[0048]在這樣的實(shí)施方案中,GPU可通過將環(huán)緩沖區(qū)指針寄存器移到儲存器位置(或如果它們在每個(gè)VF/PF被實(shí)例化,則被移到門鈴處)而將頻繁的MMIO寄存器訪問轉(zhuǎn)為儲存器訪問。此外,這個(gè)實(shí)施方案可通過將基于級別的中斷轉(zhuǎn)換成基于脈沖的中斷并將IH環(huán)指針移到儲存器位置來消除中斷相關(guān)的寄存器訪問。這可能會(huì)減少CPU的MMIO寄存器訪問并減少CPU頁面錯(cuò)誤。
[0049]在另一實(shí)施方案中,當(dāng)GPU運(yùn)行一個(gè)VM時(shí),CPU可異步運(yùn)行另一 VM。CPU和GPU之間的這個(gè)異步模式允許更好的性能,而不需要CPU和GPU等待彼此以同時(shí)切換到同一 VM。然而,這個(gè)模式公開了一個(gè)問題:CPU可異步訪問未被虛擬化的GPU寄存器,意味著可能不是每個(gè)VF/PF都有GPU寄存器的多個(gè)實(shí)例,這可導(dǎo)致區(qū)域(在芯片上占用更小的空間)保存在GPU上。
[0050]在CPU的異步訪問GPU寄存器上下文中的管理程序的調(diào)度功能可由下列因素來管理:(I)GPU寄存器由于較高的資源成本(芯片上占用的空間)而未被實(shí)例化;(2)CPU的儲存器映射的寄存器訪問受管理程序的限制,從而標(biāo)志CPU的虛擬儲存器頁面無效;(3)當(dāng)前不在GPU寄存器訪問上運(yùn)行的VM可導(dǎo)致CPU頁面錯(cuò)誤(確保CPU不訪問不在GPU上運(yùn)行的VM) ;(4)管理程序暫停在CPU核心上的產(chǎn)生故障的驅(qū)動(dòng)程序線程,直到產(chǎn)生故障的VM被調(diào)度以在GPU上運(yùn)行;(6)管理程序可將GPU切換成產(chǎn)生故障的VM以減少CPU對故障的等待;(7)管理程序可開始將VF中的所有虛擬寄存器BAR標(biāo)記為無效且僅當(dāng)允許CPU的寄存器訪問時(shí)映射MMIO儲存器,這減少了定期映射和取消映射CPU虛擬儲存器頁面的開銷。
[0051]GPU寄存器可在物理和虛擬功能(PF和VF)之間進(jìn)行分割,且寄存器請求可被轉(zhuǎn)發(fā)到系統(tǒng)寄存器總線管理器(SRBM,即芯片中的另一 IP模塊)。SRBM從CPU接收請求,其指示請求是針對PF寄存器還是VF寄存器。SRBM可用以過程過濾對例如儲存器控制器的物理功能的VF訪問,以阻止(適當(dāng)時(shí))對如儲存器控制器的共享資源的VM訪問。這使得一個(gè)VM的活動(dòng)與另一 VM隔離。
[0052]對于GPU PF寄存器基本訪問寄存器(BAR),所有麗IO寄存器可被訪問。在非虛擬化環(huán)境中,僅可啟用PF,但在虛擬化環(huán)境模式下,PF的MMIO寄存器BAR將完全由主機(jī)VM的GPU驅(qū)動(dòng)程序來訪問。類似地,對于PCI配置空間,在非虛擬化環(huán)境中,寄存器將由OS設(shè)置,但在虛擬模式下,管理程序控制對這個(gè)空間的訪問,從而潛在地將寄存器仿效回VM。
[0053]在GPU VF寄存器BAR內(nèi),麗IO寄存器的子集可被訪問。例如,VF可能不公開PHY寄存器,例如顯示時(shí)間控制、PCIE、DDR儲存器,且對剩余子集的訪問完全由客戶VM驅(qū)動(dòng)程序來訪問。對于PCI配置空間,虛擬寄存器BAR由VM OS公開并設(shè)置。
[0054]在另一實(shí)施方案中,在虛擬模式中可能也需要考慮中斷,且所述中斷將由中斷處理程序(IH) IP模塊來處理,所述中斷處理程序(IH) IP模塊從其客戶端(如圖形控制器、多媒體模塊、顯示控制器等)收集中斷請求。當(dāng)從在特定VF或PF下運(yùn)行的客戶端收集時(shí),IH模塊向軟件發(fā)出以下信號:中斷可從給定VF或PF獲得。IH被設(shè)計(jì)成允許其多個(gè)客戶端用內(nèi)部接口從不同的VF或PF請求中斷,以使中斷請求標(biāo)記有VF或PF的索引。如上所述,在VM模式下,IH將中斷分派到系統(tǒng)構(gòu)造,且基于其來源使中斷標(biāo)記有PF或VF標(biāo)記。平臺(管理程序或10MMU)將中斷轉(zhuǎn)發(fā)到合適的VM。在一個(gè)實(shí)施方案中,GPU驅(qū)動(dòng)一組本地顯示設(shè)備,例如顯示器。在這種情況下,GPU的顯示控制器在PF中不斷運(yùn)行。顯示控制器會(huì)經(jīng)常產(chǎn)生中斷,例如軟件的垂直同步信號。來自PF的這些類型的中斷(例如顯示中斷)會(huì)與來自另一 VF的中斷同時(shí)產(chǎn)生,其中圖形功能導(dǎo)致產(chǎn)生其它類型的中斷。
[0055]在另一實(shí)施方案中,在VM的數(shù)量大于VF的數(shù)量的實(shí)例中,管理程序可實(shí)施主動(dòng)傳呼系統(tǒng)。在這種情況下,管理程序可(I)在其時(shí)間片之后使用全局上下文換出順序?qū)F(xiàn)有VM切換出其VF ;⑵在VF的全局切換順序完成之后,收回現(xiàn)有VM的儲存器,(3)將現(xiàn)有VM與其VF斷開,在其時(shí)間片之前從系統(tǒng)儲存器傳呼傳入VM的儲存器,將傳入VM連接到空出的VF,和在空出的VF上運(yùn)行新的VM。這通過每個(gè)VF共享VM來允許更多VM在較少的VF上運(yùn)行。
[0056]在軟件中,管理程序可能沒有特定于硬件的驅(qū)動(dòng)程序。在這樣的實(shí)施方案中,管理程序可具有經(jīng)由PF對PCI配置寄存器的獨(dú)占訪問,這最小化管理程序中的特定于硬件的代碼。管理程序的責(zé)任可包括:GPU初始化、物理資源分配、啟用虛擬功能和將虛擬功能分配到相同的VM、上下文保存區(qū)域分配、調(diào)度全局上下文切換和CPU同步、GPU超時(shí)/重設(shè)管理,和儲存器管理/傳呼。
[0057]類似地,在軟件中,主機(jī)VM的角色可具有可選的特定于硬件的驅(qū)動(dòng)程序,且可通過例如顯示控制器或DRAM接口的PF具有對特權(quán)和物理硬件功能的獨(dú)占訪問。主機(jī)VM的責(zé)任可包括:在VM的數(shù)量大于VF的數(shù)量的情況下,管理本地連接的顯示器、桌面合成、儲存器傳呼。主機(jī)VM也可被授權(quán)有管理程序的GPU管理責(zé)任中的一些管理責(zé)任。當(dāng)在例如桌面合成和儲存器傳呼的PF中實(shí)施一些特征時(shí),主機(jī)VM可使用GPU來加速例如圖形引擎或DMA引擎。在這種情況下,PF將創(chuàng)建與對應(yīng)于正在運(yùn)行的VF的全局上下文共存的全局上下文中的一個(gè)。在這個(gè)實(shí)施方案中,PF將以時(shí)間片的方式與VF—起參與全局上下文切換。
[0058]應(yīng)理解,基于本文的公開內(nèi)容,許多變化都是可能的。雖然特征和元素在上文中以特定的組合進(jìn)行了描述,但是每個(gè)特征或元素可在沒有其它特征和元素的情況下單獨(dú)使用或者在有或沒有其它特征和元素的情況下組合使用。
[0059]提供的方法可在通用計(jì)算機(jī)、處理器或處理器內(nèi)核中實(shí)施。合適的處理器以舉例的方式包括通用處理器、專用處理器、傳統(tǒng)處理器、數(shù)字信號處理器(DSP)、多個(gè)微處理器、與DSP內(nèi)核結(jié)合的一個(gè)或多個(gè)微處理器、控制器、微控制器、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)電路、任何其它類型的集成電路(IC)和/或狀態(tài)機(jī)。所述處理器可通過使用已處理的硬件描述語言(HDL)指令和包括網(wǎng)表(所述指令能夠被存儲在計(jì)算機(jī)可讀介質(zhì)上)的其它中間數(shù)據(jù)的結(jié)果配置制造過程來制造。所述處理的結(jié)果可能是掩膜作品,所述掩膜作品然后被用于半導(dǎo)體制造過程中以制造實(shí)施本發(fā)明的方面的處理器。
[0060]本文提供的方法或流程圖可在并入非暫時(shí)性計(jì)算機(jī)可讀存儲介質(zhì)以供通用計(jì)算機(jī)或處理器執(zhí)行的計(jì)算機(jī)程序、軟件或固件中實(shí)施。計(jì)算機(jī)可讀存儲介質(zhì)的實(shí)例包括只讀儲存器(ROM)、隨機(jī)存取儲存器(RAM)、寄存器、高速緩存儲存器、半導(dǎo)體儲存設(shè)備、例如內(nèi)部硬盤和可移動(dòng)磁盤的磁介質(zhì)、磁-光介質(zhì),以及例如CD-ROM碟片和數(shù)字多功能光盤(DVD)的光學(xué)介質(zhì)。
【權(quán)利要求】
1.一種用于在圖形處理單元(GPU)上虛擬機(jī)之間變化的方法,其包括: 請求從具有第一全局上下文的第一虛擬機(jī)(VM)切換到具有第二全局上下文的第二VM ; 停止在所述第一 VM中采取新的命令; 保存所述第一全局上下文;和 切換出所述第一 VM。
2.如權(quán)利要求1所述的方法,其還包括:允許先前在所述第一VM中請求的命令完成處理。
3.如權(quán)利要求2所述的方法,其中所述命令在保存所述第一全局上下文之前完成處理。
4.如權(quán)利要求1所述的方法,其中所述第一全局上下文被保存到通過寄存器從總線接口(BIF)通信的儲存器位置。
5.如權(quán)利要求1所述的方法,其還包括:發(fā)出準(zhǔn)備切換出所述第一VM的指示信號。
6.如權(quán)利要求5所述的方法,其還包括:結(jié)束換出順序。
7.如權(quán)利要求1所述的方法,其還包括:從儲存器恢復(fù)所述第二VM的所述第二全局上下文。
8.如權(quán)利要求7所述的方法,其還包括:開始運(yùn)行所述第二VM。
9.如權(quán)利要求8所述的方法,其還包括:發(fā)出已完成從所述第一VM切換到所述第二 VM的信號。
10.如權(quán)利要求1所述的方法,其還包括:發(fā)出已完成從所述第一VM切換到所述第二VM的信號。
11.如權(quán)利要求1所述的方法,其中如果在時(shí)限內(nèi)未收到已完成從所述第一VM切換到所述第二 VM的信號,則重置所述GPU以在虛擬機(jī)之間進(jìn)行變化。
12.一種能夠在虛擬機(jī)之間進(jìn)行切換的GPU,其包括: 管理程序,其管理第一虛擬機(jī)(VM)和第二虛擬機(jī)(VM)的資源,其中所述第一虛擬機(jī)和第二虛擬機(jī)具有第一和第二全局上下文; 總線接口(BIF),其發(fā)送指示從所述第一 VM切換到所述第二VM的請求的全局上下文切換信號;和 IP模塊,其接收所述全局上下文切換并響應(yīng)于所述請求而停止采取進(jìn)一步的命令且將所述第一全局上下文保存到儲存器,其中所述IP模塊將準(zhǔn)備切換出所述VM信號的信號發(fā)送到所述BIF; 其中在從所述BIF接收到所述準(zhǔn)備切換出所述VM信號之后,所述管理程序切換出所述第一 VM。
13.如權(quán)利要求12所述的GPU,其中所述IP模塊允許先前在所述第一VM中請求的命令完成處理。
14.如權(quán)利要求13所述的GPU,其中所述命令在保存所述第一全局上下文之前完成處理。
15.如權(quán)利要求12所述的GPU,其中所述第一全局上下文被保存到通過寄存器從所述BIF通信的儲存器位置。
16.如權(quán)利要求12所述的GPU,其中所述管理程序結(jié)束換出順序。
17.如權(quán)利要求12所述的GPU,其中所述IP模塊從儲存器恢復(fù)所述第二VM的所述第二全局上下文。
18.如權(quán)利要求17所述的GPU,其中所述GPU開始運(yùn)行所述第二VM。
19.如權(quán)利要求18所述的GPU,其中所述IP模塊發(fā)出已完成從所述第一VM切換到所述第二 VM的信號。
20.如權(quán)利要求12所述的GPU,其中如果在時(shí)限內(nèi)未收到已完成從所述第一VM切換到所述第二 VM的信號,則重置所述GPU以在虛擬機(jī)之間進(jìn)行變化。
【文檔編號】G06T1/00GK104025050SQ201280065008
【公開日】2014年9月3日 申請日期:2012年12月28日 優(yōu)先權(quán)日:2011年12月28日
【發(fā)明者】貢顯·J·成, 安東尼奧·阿薩羅 申請人:Ati科技無限責(zé)任公司