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

用于不同種類處理單元的集中式設(shè)備虛擬化層的制作方法

文檔序號(hào):6384173閱讀:220來源:國知局
專利名稱:用于不同種類處理單元的集中式設(shè)備虛擬化層的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般地涉及設(shè)備虛擬化領(lǐng)域,且更特別地涉及用于不同種類處理單元的集中式設(shè)備虛擬化層。
背景技術(shù)
在常規(guī)的計(jì)算機(jī)系統(tǒng)中,中央處理單元(CPU)能執(zhí)行多個(gè)操作系統(tǒng)(OS)。已知為“管理程序(hypervisor)”的軟件程序通常用于協(xié)調(diào)不同OS的操作。管理程序管理從每個(gè)OS傳送到包括在計(jì)算機(jī)系統(tǒng)中的各種硬件設(shè)備的輸入/輸出(1/0)訪問操作(訪問)。這些硬件設(shè)備可以尤其包括存儲(chǔ)器模塊、計(jì)算機(jī)顯示器、硬盤驅(qū)動(dòng)器和CD-ROM驅(qū)動(dòng)器。管理程序允許每一個(gè)OS使用已知為“設(shè)備虛擬化”的技術(shù)訪問硬件設(shè)備,該技術(shù)可以用于創(chuàng)建硬件設(shè)備的虛擬例子。硬件設(shè)備可以通過“軟件虛擬化”和/或“硬件虛擬化”來虛擬化。當(dāng)實(shí)施軟件(SW)虛擬化時(shí),管理程序?qū)⒂布O(shè)備的資源分成多個(gè)“賓客物理資源”。然后每個(gè)賓客物理資源可以指派給特定OS。管理程序公布賓客物理資源給OS,使得當(dāng)OS試圖訪問與硬件設(shè)備相關(guān)的賓客物理資源時(shí),管理程序可以俘獲該訪問以確保在允許該OS訪問硬件設(shè)備之前將正確的場景裝載在硬件設(shè)備上。當(dāng)實(shí)施硬件(HW)虛擬化時(shí),每個(gè)硬件設(shè)備公布該HW設(shè)備的多個(gè)例子,使得將該硬件設(shè)備可用的全部數(shù)量的資源分配給每個(gè)例子。然后將那每個(gè)OS分配給其中一個(gè)例子。通過確定哪個(gè)OS可以訪問特定虛擬化的設(shè)備,管理程序成為了 OS之間的仲裁者。由于HW虛擬化在硬件上實(shí)施,因此管理程序可能不知道特定物理資源正在虛擬化。每個(gè)HW虛擬化的設(shè)備識(shí)別出與其他虛擬化的設(shè)備的沖突,并在對物理資源采取行動(dòng)之前解決這些沖突(例如通過恢復(fù)場景或者停頓該設(shè)備的虛擬化的例子中的一個(gè)或多個(gè))。當(dāng)單一處理器在單一管理程序的頂部執(zhí)行多個(gè)OS時(shí),SW虛擬化和HW虛擬化工作良好。但是,包括執(zhí)行多個(gè)OS的多個(gè)CPU的多個(gè)不同的處理器拓?fù)浣Y(jié)構(gòu)較不適應(yīng)SW虛擬化和/或HW虛擬化。例如,多CPU計(jì)算機(jī)系統(tǒng)可以包括若干CPU,每個(gè)CPU連接到相同的硬件設(shè)備的組。一些硬件設(shè)備不能在硬件或軟件中虛擬化,因此,計(jì)算機(jī)系統(tǒng)只包括對于不能由兩個(gè)CPU共享的硬件設(shè)備的一個(gè)資源。由于當(dāng)OS想要訪問未充分利用的SW虛擬化的硬件設(shè)備時(shí)會(huì)產(chǎn)生瓶頸,因此在多個(gè)CPU計(jì)算機(jī)系統(tǒng)中實(shí)施SW虛擬化也是有問題的。由于硬件設(shè)備的資源被分成賓客物理資源,因此每個(gè)OS只能利用硬件設(shè)備的總資源的一部分。當(dāng)只有一個(gè)OS試圖訪問硬件設(shè)備時(shí),該OS可能需要比由賓客物理資源分配的資源更多的資源。由于硬件設(shè)備的資源仍可用,因此產(chǎn)生了資源瓶頸,但是由于這些資源已經(jīng)分配給其他賓客物理資源,因此OS無法利用這些資源。
由于可能需要為在每個(gè)CPU上運(yùn)行的每個(gè)OS創(chuàng)建虛擬化的設(shè)備,因此在多CPU計(jì)算機(jī)系統(tǒng)中實(shí)施HW虛擬化也是有問題的。為每個(gè)硬件設(shè)備實(shí)施HW虛擬化會(huì)顯著增加在計(jì)算機(jī)系統(tǒng)中公布的資源,并迫使每個(gè)硬件設(shè)備為每個(gè)OS而被虛擬化,盡管特定OS可能不需要利用由特定硬件設(shè)備提供的資源。因此,現(xiàn)有技術(shù)中仍然需要在多CPU計(jì)算機(jī)系統(tǒng)中虛擬化硬件設(shè)備的改進(jìn)的技術(shù)。

發(fā)明內(nèi)容
本發(fā)明的實(shí)施例提供了用于提供操作系統(tǒng)訪問包括在計(jì)算機(jī)系統(tǒng)中的硬件設(shè)備的方法。該方法包括列舉包括在計(jì)算機(jī)系統(tǒng)中的一個(gè)或多個(gè)硬件設(shè)備和一個(gè)或多個(gè)虛擬化的設(shè)備,包括確定與第一硬件設(shè)備相關(guān)的資源分成賓客物理資源由此創(chuàng)建軟件(SW)虛擬化的設(shè)備,和確定與第二硬件設(shè)備相關(guān)的資源的多個(gè)例子由第二硬件設(shè)備公布由此創(chuàng)建硬件(HW)虛擬化的設(shè)備;產(chǎn)生指定在多個(gè)操作系統(tǒng)中的哪些操作系統(tǒng)允許訪問SW虛擬化的設(shè)備的第一允許列表;產(chǎn)生指定在多個(gè)操作系統(tǒng)中的哪些操作系統(tǒng)允許訪問HW虛擬化的設(shè)備的第二允許列表;產(chǎn)生第一組虛擬地址映射,該第一組虛擬地址映射的每個(gè)將與SW虛擬化的設(shè)備相關(guān)的第一地址空間映射到與包括在該第一允許列表中的每個(gè)操作系統(tǒng)相關(guān)的地址空間中;產(chǎn)生第二組虛擬地址映射,該第二組虛擬地址映射的每個(gè)將與HW虛擬化的設(shè)備相關(guān)的第二地址空間映射到與包括在該第二允許列表中的每個(gè)操作系統(tǒng)相關(guān)的地址空間中;和仲裁來自多個(gè)操作系統(tǒng)的每個(gè)的操作系統(tǒng)的訪問請求,包括允許包括在該第一允許列表中的該操作系統(tǒng)基于該第一組虛擬地址映射使用該SW虛擬化的設(shè)備實(shí)施訪問操作,和允許包括在該第二允許列表中的該操作系統(tǒng)基于該第二組虛擬地址映射使用該HW虛擬化的設(shè)備實(shí)施訪問操作。有利地,本發(fā)明的實(shí)施例將設(shè)備虛擬化延伸到包括多個(gè)CPU的計(jì)算機(jī)系統(tǒng)。⑶VL允許在每個(gè)CPU上執(zhí)行的OS訪問與計(jì)算機(jī)系統(tǒng)耦合的列舉的設(shè)備的公共庫。CDVL可以與SW虛擬化和HW虛擬化結(jié)合使用以將專門的虛擬化支持提供給需要該支持的OS。


為了詳細(xì)地理解本發(fā)明的上述特征,對于以上簡要說明的本發(fā)明,將參照實(shí)施例進(jìn)行更為具體的描述,其中對一些實(shí)施例在附圖中進(jìn)行了圖示。然而,需要注意的是,附圖只是圖示本發(fā)明的代表性實(shí)施例,因此不能認(rèn)為附圖限制了本發(fā)明的范圍,本發(fā)明可以允許其他同樣有效的實(shí)施例。圖1是圖示配置為實(shí)施本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)的框圖;圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的圖1中的計(jì)算機(jī)系統(tǒng)的并行處理子系統(tǒng)的框圖;圖3A是根據(jù)本發(fā)明一個(gè)實(shí)施例的在圖2的并行處理單元(PPU)之一中的通用處理簇(GPC)的框圖;圖3B是根據(jù)本發(fā)明一個(gè)實(shí)施例的在圖2中的并行處理單元之一中的分區(qū)單元的框圖;圖4A-4B是根據(jù)本發(fā)明各種實(shí)施例的配置為實(shí)施集中式設(shè)備虛擬化層(CDVL)的計(jì)算機(jī)系統(tǒng)的概念圖5是根據(jù)本發(fā)明一個(gè)實(shí)施例的配置為實(shí)施CDVL的多處理器計(jì)算機(jī)系統(tǒng)的概念圖;圖6是根據(jù)本發(fā)明一個(gè)實(shí)施例的在計(jì)算機(jī)系統(tǒng)上啟動(dòng)CDVL的方法步驟流程圖;和圖7是根據(jù)本發(fā)明一個(gè)實(shí)施例的在計(jì)算機(jī)系統(tǒng)上實(shí)施CDVL的方法步驟流程圖。
具體實(shí)施例方式在下文的描述中,給出了大量具體的細(xì)節(jié)以便提供對本發(fā)明更為徹底的理解。然而,對于本領(lǐng)域技術(shù)人員來說顯而易見的是,本發(fā)明可以無需一個(gè)或多個(gè)這些細(xì)節(jié)而得以實(shí)施。在其他的例子中,為了避免與本發(fā)明發(fā)生混淆,對于本領(lǐng)域公知的一些技術(shù)特征未進(jìn)行描述。系統(tǒng)概述圖1是圖示配置為實(shí)現(xiàn)本發(fā)明一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)100的框圖。計(jì)算機(jī)系統(tǒng)100包括中央處理單元(CPU) 102和系統(tǒng)存儲(chǔ)器104,二者通過存儲(chǔ)器橋105經(jīng)由總線路徑進(jìn)行通信。存儲(chǔ)器橋105可以如圖1所示集成到CPU 102中。作為替換,存儲(chǔ)器橋105可以是慣常設(shè)備例如北橋芯片,其通過總線連接到CPU 102。存儲(chǔ)器橋105通過通信路徑106 (例如HyperTransport (超傳輸)鏈路)與I/O (輸入/輸出)橋107相連接。I/O橋107例如可以是南橋芯片,其從一個(gè)或多個(gè)用戶輸入設(shè)備108 (例如鍵盤、鼠標(biāo))接收用戶輸入,并將該輸入通過路徑106和存儲(chǔ)器橋105轉(zhuǎn)發(fā)給CPU 102。并行處理子系統(tǒng)112通過總線或其他通信路徑113 (例如PCIExpress、加速圖形端口或超傳輸鏈路)與存儲(chǔ)器橋105相耦合;在一個(gè)實(shí)施例中,并行處理子系統(tǒng)112是將像素提供給顯示設(shè)備110 (例如傳統(tǒng)的CRT或基于IXD的顯示器)的圖形子系統(tǒng)。系統(tǒng)盤114同樣連接于I/O橋107。開關(guān)116提供了 I/O橋107和諸如網(wǎng)絡(luò)適配器118以及各種插卡120和121的其他部件之間的連接。包括USB或其他端口連接、CD驅(qū)動(dòng)器、DVD驅(qū)動(dòng)器、電影記錄設(shè)備等的其他部件(圖中沒有明確示出),也可以與I/O橋107相連接。將圖1中的各種部件相互連接的通信路徑可以用任何適用的協(xié)議來實(shí)現(xiàn),比如PCI (外設(shè)部件互連)、PCI Express (PC1-E)、AGP (加速圖形端口)、超傳輸或任何其他總線或點(diǎn)對點(diǎn)通信協(xié)議,并且不同設(shè)備之間的連接可以使用如本領(lǐng)域已知的不同協(xié)議。在一個(gè)實(shí)施例中,并行處理子系統(tǒng)112包括為圖形和視頻處理而優(yōu)化的電路,包括例如視頻輸出電路,并構(gòu)成了圖形處理單元(GPU)。在另一實(shí)施例中,并行處理子系統(tǒng)112包括為通用處理而優(yōu)化的電路,并保留了底層計(jì)算架構(gòu)的電路,本文將更加詳細(xì)地對此進(jìn)行描述。在另一實(shí)施例中,并行處理子系統(tǒng)112可以集成一個(gè)或多個(gè)其他系統(tǒng)元件,例如存儲(chǔ)器橋105、CPU 102和I/O橋107,以形成片上系統(tǒng)(SoC)??梢岳斫獾氖?,這里示出的系統(tǒng)只是示意性的,可以對其進(jìn)行變化和修改。包括橋的數(shù)量和排列的連接拓?fù)浣Y(jié)構(gòu)可以根據(jù)需要修改。例如,在一些實(shí)施例中,系統(tǒng)存儲(chǔ)器104直接與CPU 102相連接而不是通過橋相連接,其他設(shè)備通過存儲(chǔ)器橋105和CPU 102與系統(tǒng)存儲(chǔ)器104相通信。在其他可選擇的拓?fù)浣Y(jié)構(gòu)中,并行處理系統(tǒng)112與I/O橋107相連接或直接與CPU 102相連接,而不是和存儲(chǔ)器橋105相連接。在其他實(shí)施例中,CPU102、I/O橋107、并行處理子系統(tǒng)112和存儲(chǔ)器橋105的一個(gè)或多個(gè)被集成到一個(gè)或多個(gè)芯片上。這里示出的特定部件是任選的;例如,可以支持任意數(shù)量的插卡或外設(shè)。在一些實(shí)施例中,省去了開關(guān)116,網(wǎng)絡(luò)適配器118和插卡120、121直接和I/O橋107相連接。圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的并行處理子系統(tǒng)112。如圖所示,并行處理子系統(tǒng)112包括一個(gè)或多個(gè)并行處理單元(PPU) 202,每個(gè)并行處理單元都和本地并行處理(PP)存儲(chǔ)器204相耦合。通常,并行處理子系統(tǒng)包括U個(gè)PPU,其中U > I。(在這里,相似對象的多個(gè)例子用表明該對象的附圖標(biāo)記和表明該例子的括號(hào)里的數(shù)字(需要時(shí))來表示)。PPU 202和并行處理存儲(chǔ)器204可以使用例如可編程處理器、專用集成電路(ASIC)或存儲(chǔ)器設(shè)備的一個(gè)或多個(gè)集成電路設(shè)備,或以任何其他技術(shù)上可行的方式來實(shí)現(xiàn)。再次參考圖1,在一些實(shí)施例中,在并行處理子系統(tǒng)112中的一些或者全部的PPU202是具有渲染流水線的圖形處理器,其能被配置成進(jìn)行與下列情形有關(guān)的各種任務(wù)從通過CPU 102和/或系統(tǒng)存儲(chǔ)器104提供的圖形數(shù)據(jù)產(chǎn)生像素?cái)?shù)據(jù);與本地并行處理存儲(chǔ)器204 (其能被用作圖形存儲(chǔ)器,例如包括常規(guī)的幀緩沖器)交互以存儲(chǔ)并更新像素?cái)?shù)據(jù); 提供像素?cái)?shù)據(jù)給顯示設(shè)備110等。在一些實(shí)施例中,并行處理子系統(tǒng)112可包括作為圖形處理器工作的一個(gè)或多個(gè)PPU 202和用于通用計(jì)算的一個(gè)或多個(gè)其他PPU 202。并行處理單元可以是相同或不同的,且每個(gè)PPU 202可以有其自己專用的并行處理存儲(chǔ)器設(shè)備或沒有專用的并行處理存儲(chǔ)器設(shè)備。一個(gè)或多個(gè)PPU 202可以將數(shù)據(jù)輸出到顯示設(shè)備110,或者每個(gè)PPU 202可以將數(shù)據(jù)輸出到一個(gè)或多個(gè)顯示設(shè)備110。在操作中,CPU 102是計(jì)算機(jī)系統(tǒng)100的主處理器,其控制和協(xié)調(diào)其他系統(tǒng)部件的操作。特別是,CPU 102發(fā)出控制PPU 202操作的命令。在一些實(shí)施例中,CPU 102將對于每個(gè)PPU 202的命令流寫入到命令緩沖器(圖1和圖2中未明確地示出),該命令緩沖器可以位于系統(tǒng)存儲(chǔ)器104、并行處理存儲(chǔ)器204或是CPU 102和PPU 202都可以訪問的另一個(gè)存儲(chǔ)位置中。PPU 202從命令緩沖器中讀出命令流,并且隨后相對于CPU 102的操作異步地執(zhí)行命令。CPU 102也可以建立數(shù)據(jù)緩沖器,PPU 202可以響應(yīng)命令緩沖器中的命令讀取該數(shù)據(jù)緩沖器。每個(gè)命令和數(shù)據(jù)緩沖器可以由PPU 202的每個(gè)讀取?,F(xiàn)在返回參考圖2,每個(gè)PPU 202包括通過通信路徑113和計(jì)算機(jī)系統(tǒng)100的剩余部分通信的I/o (輸入/輸出)單元205,該通信路徑113與存儲(chǔ)器橋105相連接(或是在一個(gè)可選實(shí)施例中直接與CPU 102相連接)。PPU 202和計(jì)算機(jī)系統(tǒng)100的剩余部分的連接也可以變化。在一些實(shí)施例中,并行處理子系統(tǒng)112實(shí)現(xiàn)為插卡,其能插入到計(jì)算機(jī)系統(tǒng)100的擴(kuò)展槽中。在其他實(shí)施例中,PPU 202能和總線橋一起集成到單一芯片上,總線橋例如可以是存儲(chǔ)器橋105或I/O橋107。在另外其他實(shí)施例中,PI3U 202的一些或全部元件可以連同CPU 102—起集成到單一芯片上。在一個(gè)實(shí)施例中,通信路徑113是如本領(lǐng)域所已知的PC1-E鏈路,其中將專用通道分配給每個(gè)PPU 202。也可以使用其他通信路徑。I/O單元205產(chǎn)生數(shù)據(jù)包(或其他信號(hào))以在通信路徑113上傳送,并也接收所有來自通信路徑113的輸入包(或其他信號(hào)),并將輸入包引導(dǎo)至PPU 202的適當(dāng)?shù)牟考?。例如,和處理任?wù)有關(guān)的命令可以被引導(dǎo)至主機(jī)接口206,而和存儲(chǔ)器操作有關(guān)的命令(例如從并行處理存儲(chǔ)器204中讀取或向其寫入)可以被引導(dǎo)至存儲(chǔ)器交叉器(crossbar)單元210。主機(jī)接口 206讀取每個(gè)命令緩沖器,并將由命令緩沖器指定的工作輸出到前端212。每個(gè)PPU 202有利地實(shí)現(xiàn)高度并行處理架構(gòu)。如詳細(xì)示出的,PPU 202 (O)包括處理簇陣列230,處理簇陣列230包括數(shù)量為C的通用處理簇(GPC)208,其中C彡I。每個(gè)GPC 208能同時(shí)執(zhí)行大量(例如數(shù)百個(gè)或數(shù)千個(gè))線程,其中每個(gè)線程是程序的實(shí)例。在不同應(yīng)用中,不同的GPC 208可以被分配用以處理不同類型的程序或進(jìn)行不同類型的計(jì)算。例如,在圖形應(yīng)用中,第一組GPC 208可以分配為進(jìn)行鑲嵌操作并產(chǎn)生面片(patch)的圖元拓?fù)?,而第二組GPC 208可以分配為進(jìn)行鑲嵌著色以評價(jià)圖元拓?fù)涞拿嫫瑓?shù)并確定頂點(diǎn)位置和其他每個(gè)頂點(diǎn)的屬性。GPC 208的分配基于每個(gè)類型的程序或計(jì)算產(chǎn)生的工作量是可以變化的??蛇x擇地,GPC 208可以分配為使用時(shí)間片方案進(jìn)行處理任務(wù)以在不同處理任務(wù)之間轉(zhuǎn)換。GPC 208通過工作分配單元200接收將要執(zhí)行的處理任務(wù),該工作分配單元200從前端單元212接收限定了處理任務(wù)的命令。處理任務(wù)包括指向要處理的數(shù)據(jù)的指針,所述數(shù)據(jù)例如表面(面片)數(shù)據(jù)、圖元數(shù)據(jù)、頂點(diǎn)數(shù)據(jù)和/或像素?cái)?shù)據(jù),還有狀態(tài)參數(shù)和限定數(shù)據(jù)如何處理的命令(例如執(zhí)行什么程序)。工作分配單元200可以配置成取得對應(yīng)于該處理任務(wù)的指針,工作分配單元200可以從前端212接收指針,或者工作分配單元200可以直接從前端212接收數(shù)據(jù)。在一些實(shí)施例中,索引指明了陣列中數(shù)據(jù)的位置。前端212保證在命令緩沖器指定的處理啟動(dòng)前,GPC 208配置為有效狀態(tài)。工作分配單元200可以配置成以能將任務(wù)提供給多個(gè)GPC 208用于處理的頻率來輸出任務(wù)。在本發(fā)明的一些實(shí)施例中,部分GPC 208配置成進(jìn)行不同類型的處理。例如,第一部分可以配置成進(jìn)行頂點(diǎn)著色和拓?fù)浣Y(jié)構(gòu)生成,第二部分可以配置成進(jìn)行鑲嵌和幾何著色,以及第三部分可以配置成在屏幕空間上進(jìn)行像素著色以產(chǎn)生渲染的圖像。分配部分GPC208以進(jìn)行不同類的處理任務(wù)的能力有效地適應(yīng)了由那些不同類型的處理任務(wù)產(chǎn)生的數(shù)據(jù)的任意擴(kuò)展和縮減。GPC 208產(chǎn)生的中間數(shù)據(jù)可以被緩沖,以在下游GPC 208接收數(shù)據(jù)的速度落后于上游GPC 208產(chǎn)生數(shù)據(jù)的速度的情況下,允許中間數(shù)據(jù)在GPC 208之間以最少次數(shù)的停止來傳輸。存儲(chǔ)器接口 214可以被分區(qū)成D個(gè)存儲(chǔ)器分區(qū)單元,每個(gè)存儲(chǔ)器分區(qū)單元與并行處理存儲(chǔ)器204的一部分耦合,其中D > I。并行處理存儲(chǔ)器204的每部分通常包括一個(gè)或多個(gè)存儲(chǔ)器設(shè)備(例如DRAM 220)。本領(lǐng)域的普通技術(shù)人員可以理解的是,DRAM 220可以由其他合適的存儲(chǔ)設(shè)備代替并且通??梢允菓T常的設(shè)計(jì)。因此省略了詳細(xì)的描述。例如幀緩沖器或紋理貼圖的渲染目標(biāo)可以跨越DRAM 220而存儲(chǔ),從而允許了分區(qū)單元215將每個(gè)渲染目標(biāo)的部分并行寫入,以有效地使用并行處理存儲(chǔ)器204的可用帶寬。GPC 208的任何一個(gè)可以處理要寫入到并行處理存儲(chǔ)器204中的任何分區(qū)單元215中的數(shù)據(jù)。交叉器(crossbar)單元210配置為將每個(gè)GPC 208的輸出路由至任意分區(qū)單元214的輸入或另一 GPC 208以進(jìn)一步處理。GPC208通過交叉器單元210與存儲(chǔ)器接口214通信,以從各種外部存儲(chǔ)器設(shè)備中讀取或?qū)懭敫鞣N外部存儲(chǔ)器設(shè)備。在一個(gè)實(shí)施例中,交叉器單元210具有與存儲(chǔ)器接口 214的連接以與I/O單元205通信,交叉器單元210還具有和本地并行處理存儲(chǔ)器204的連接,因此使得不同GPC 208內(nèi)的處理內(nèi)核能與系統(tǒng)存儲(chǔ)器104或?qū)PU 202為非本地的其他存儲(chǔ)器通信。交叉器單元210可以使用虛擬通道以在GPC 208和分區(qū)單元215之間分開通信流。此外,GPC 208能被編程以執(zhí)行與廣泛多種應(yīng)用相關(guān)的處理任務(wù),所述應(yīng)用包括但不限于線性和非線性數(shù)據(jù)轉(zhuǎn)換、視頻和/或音頻數(shù)據(jù)的過濾、建模操作(例如,應(yīng)用物理法律來確定對象的位置、速度和其他屬性)、圖像渲染操作(例如,鑲嵌著色器、頂點(diǎn)著色器、幾何著色器和/或像素著色器程序)等等。PPU 202可以將數(shù)據(jù)從系統(tǒng)存儲(chǔ)器104和/或本地并行處理存儲(chǔ)器204傳輸?shù)絻?nèi)部(片上)存儲(chǔ)器,處理數(shù)據(jù),并將結(jié)果數(shù)據(jù)寫回到系統(tǒng)存儲(chǔ)器104和/或本地并行處理存儲(chǔ)器204中,其中這樣的數(shù)據(jù)能夠由包括CPU 102或另一并行處理子系統(tǒng)112的其他系統(tǒng)部件來訪問??梢詾镻PU 202提供任意數(shù)量的本地并行處理存儲(chǔ)器204,也包括沒有本地存儲(chǔ)器,并可以以任意組合使用本地存儲(chǔ)器和系統(tǒng)存儲(chǔ)器。例如,在統(tǒng)一存儲(chǔ)器架構(gòu)(UMA)的實(shí)施例中,PPU 202可以是圖形處理器。在這樣的實(shí)施例中,會(huì)提供極少或者不提供專用圖形(并行處理)存儲(chǔ)器,PPU202唯一地使用或幾乎唯一地使用系統(tǒng)存儲(chǔ)器。在UMA實(shí)施例·中,PPU 202可被集成到橋芯片或處理器芯片中,或者是提供為具有高速鏈路(例如PC1-E)的分立的芯片,該高速鏈路將PPU 202通過橋芯片或其他通信裝置與系統(tǒng)存儲(chǔ)器相連接。如上所述,并行處理子系統(tǒng)112中可以包括任意數(shù)量的PPU 202。例如,多個(gè)PPU202可以提供在單個(gè)的插卡上,或者多個(gè)插卡可以與通信路徑113相連,或者PPU 202的一個(gè)或多個(gè)可以集成到橋芯片中。多PPU系統(tǒng)中的PPU 202可以是彼此相同的,或者可以是彼此不同的。例如,不同的PPU 202可以具有不同數(shù)量的處理內(nèi)核、不同數(shù)量的本地并行處理存儲(chǔ)器等等。當(dāng)存在有多個(gè)PPU 202時(shí),那些PPU可以以高于單個(gè)PPU 202可能達(dá)到的吞吐量來并行操作以處理數(shù)據(jù)。包含有一個(gè)或多個(gè)PPU 202的系統(tǒng)可以以各種配置和形式因素實(shí)現(xiàn),包括臺(tái)式計(jì)算機(jī)、筆記本計(jì)算機(jī)、或是手持個(gè)人計(jì)算機(jī)、服務(wù)器、工作站、游戲控制臺(tái)、嵌入式系統(tǒng)等等。處理簇陣列概述圖3A是根據(jù)本發(fā)明一個(gè)實(shí)施例的在圖2的PPU 202之一中的GPC 208的框圖。每個(gè)GPC 208可以配置為并行執(zhí)行大量的線程,在此術(shù)語“線程”是指對一特定組的輸入數(shù)據(jù)執(zhí)行的特定程序的實(shí)例。在一些實(shí)施例中,單指令多數(shù)據(jù)(SIMD)指令發(fā)送技術(shù)被用于支持并行執(zhí)行大量線程,而不用提供多個(gè)獨(dú)立的指令單元。在其他實(shí)施例中,使用配置為向每個(gè)GPC 208中的一組處理引擎發(fā)送指令的共同指令單元,單指令多線程(SMT)技術(shù)被用來支持并行執(zhí)行大量大體同步的線程。不像SMD執(zhí)行方式中所有處理引擎通常執(zhí)行相同的指令,SIMT的執(zhí)行允許不同的線程通過給定的線程程序更加容易地沿著分散的執(zhí)行路徑。本領(lǐng)域的普通技術(shù)人員可以理解的是,SIMD處理方式代表了 SMT處理方式的功能性子集。在圖形應(yīng)用中,GPC 208可以被配置為實(shí)現(xiàn)圖元引擎以進(jìn)行屏幕空間圖形處理功能,其包括但不限于圖元建立、光柵化和z揀選(z culling)。圖元引擎從工作分配單元200接收處理任務(wù),當(dāng)處理任務(wù)不需要由圖元引擎實(shí)施的操作時(shí),處理任務(wù)通過圖元引擎?zhèn)魉偷搅魉€管理器305。GPC 208的操作通過流水線管理器305有利地控制,流水線管理器305將處理任務(wù)分配給流式多處理器(SPM) 310。流水線管理器305也可以配置為通過為SPM 310輸出的處理的數(shù)據(jù)指定目的地來控制工作分布交叉器330。在一個(gè)實(shí)施例中,每個(gè)GPC 208包括M個(gè)SPM 310,其中M彡1,每個(gè)SPM 310配置成處理一個(gè)或多個(gè)線程組。此外,每個(gè)SPM 310有利地包括可以流水線化的相同組的功能單元(例如算術(shù)邏輯單元等),允許新指令在前一指令完成之前被發(fā)送,這已在本領(lǐng)域中公知??梢蕴峁┕δ軉卧娜我饨M合。在一個(gè)實(shí)施例中,功能單元支持各種運(yùn)算,包括整數(shù)和浮點(diǎn)算術(shù)(例如加法和乘法)、比較運(yùn)算、布爾運(yùn)算(與、或、異或)、移位和各種代數(shù)函數(shù)(例如平面插值函數(shù)、三角算法函數(shù)、指數(shù)和對數(shù)函數(shù)等)計(jì)算;并且相同的功能單元硬件可以被調(diào)節(jié)為實(shí)施不同的運(yùn)算。傳送到特定GPC 208的系列指令構(gòu)成了已在本文前面定義的線程,且在SPM 310內(nèi)在并行處理引擎(未示出)上一定數(shù)量的同時(shí)執(zhí)行的線程的集合在本文中稱為“線程組”。如本文所使用的,“線程組”指的是對不同輸入數(shù)據(jù)同時(shí)執(zhí)行相同程序的一組線程,該組中的每個(gè)線程被分配給SPM310中的不同處理引擎。線程組可以包括比SPM 310中處理弓I擎數(shù)量少的線程,在這種情況中,在當(dāng)處理該線程組時(shí)的周期期間,一些處理引擎將是空閑的。線程組也可以包括比SPM 310中處理引擎數(shù)量多的線程,在這種情況中,處理將發(fā)生超過多個(gè)時(shí)鐘周期。由于每個(gè)SPM 310可以同時(shí)支持多達(dá)G個(gè)線程組,因此多達(dá)GxM個(gè)線程組可以在任何給定的時(shí)間在GPC208中執(zhí)行。另外,多個(gè)相關(guān)的線程組可以同時(shí)在SPM310中是活動(dòng)的(在不同的執(zhí)行階段)。這個(gè)線程組的集合在本文中稱為“合作線程陣列”(“CTA”)。特定CTA的大小等于m*k,其中k是在線程組中同時(shí)執(zhí)行的線程的數(shù)目且典型地是在SPM 310中并行處理引擎的數(shù)目的整數(shù)倍,m是在SPM 310中同時(shí)活動(dòng)的線程組的數(shù)目。CTA的大小通常由程序員和CTA可用的諸如存儲(chǔ)器或寄存器的硬件設(shè)備的數(shù)量確定。專用本地地址空間對每個(gè)線程是可用的,且共享的每CTA地址空間用于在CTA中的線程之間傳遞數(shù)據(jù)。存儲(chǔ)在每線程本地地址空間和每CTA地址空間中的數(shù)據(jù)存儲(chǔ)在LI高速緩存320中,且可以使用逐出策略來幫助將數(shù)據(jù)保持在LI高速緩存320中。每個(gè)SPM310使用在用于進(jìn)行裝載和存儲(chǔ)操作的相應(yīng)的LI高速緩存320中的空間。每個(gè)SPM 310也訪問所有GPC 208共享并可以用于在線程之間傳送數(shù)據(jù)的分區(qū)單元215中的L2高速緩存。最后,SPM 310也訪問片外“全局”存儲(chǔ)器,其可以包括例如并行處理存儲(chǔ)器204和/或系統(tǒng)存儲(chǔ)器104。L2高速緩存可以用于存儲(chǔ)寫入到全局存儲(chǔ)器中和從全局存儲(chǔ)器中讀取的數(shù)據(jù)??梢岳斫獾氖牵琍PU 202外部的任何存儲(chǔ)器都可以用作全局存儲(chǔ)器。在圖形應(yīng)用中,GPC 208可以配置為使得每個(gè)SPM 310和紋理單元315耦合以進(jìn)行紋理貼圖操作,例如確定紋理樣本的位置、讀取紋理數(shù)據(jù)和過濾紋理數(shù)據(jù)。紋理數(shù)據(jù)通過存儲(chǔ)器接口 214讀取并按照需要從L2高速緩存、并行處理存儲(chǔ)器204或者系統(tǒng)存儲(chǔ)器104中取得。紋理單元315可以配置為在內(nèi)部高速緩存中存儲(chǔ)紋理數(shù)據(jù)。在一些實(shí)施例中,紋理單元315與LI高速緩存320耦合且紋理數(shù)據(jù)存儲(chǔ)在LI高速緩存320中。每個(gè)SPM 310向工作分配交叉器330輸出已處理的任務(wù),以向另一 GPC 208提供該已處理的任務(wù)以做進(jìn)一步處理,或通過交叉器單元210將已處理的任務(wù)存儲(chǔ)在L2高速緩存、并行處理存儲(chǔ)器204或者系統(tǒng)存儲(chǔ)器104中。preROP (預(yù)先光柵操作器)325配置成從SPM 310中接收數(shù)據(jù),弓丨導(dǎo)數(shù)據(jù)至分區(qū)單元215內(nèi)的ROP單元,并進(jìn)行顏色混合的優(yōu)化,組織像素顏色數(shù)據(jù),并進(jìn)行地址轉(zhuǎn)換。可以理解的是,本文描述的內(nèi)核架構(gòu)是示意性的,可以做變化和改變。任意數(shù)量的處理引擎,例如圖元引擎304、SPM 310、紋理單元315或PreR0P325可以包括在GPC 208中。進(jìn)一步,雖然只示出了一個(gè)GPC 208,PPU 202可以包括任何數(shù)量的GPC 208,這些GPC 208功能上有利地彼此相似,使得執(zhí)行行為不取決于哪個(gè)GPC 208接收了特定處理任務(wù)。進(jìn)一步,每個(gè)GPC 208使用單獨(dú)的和不同的處理引擎、LI高速緩存320等相對另外的GPC 208有利地獨(dú)立地工作。圖3B是根據(jù)本發(fā)明一個(gè)實(shí)施例的圖2中PPU 202其中之一中的分區(qū)單元215的框圖。如圖所示,分區(qū)單元215包括L2高速緩存350、幀緩沖器(FB)355和光柵操作器(ROP)360。L2高速緩存350是配置為進(jìn)行從交叉器單元210和ROP 360接收的裝載和存儲(chǔ)操作的讀/寫高速緩存。讀取失誤和緊急回寫請求通過L2高速緩存350輸出到幀緩沖器355處理。臟(dirty)的更新也送到幀緩沖器355用于機(jī)會(huì)處理。幀緩沖器355直接與并行處理存儲(chǔ)器204接口,輸出讀取和寫入請求,并接收從并行處理存儲(chǔ)器204讀取的數(shù)據(jù)。在圖形應(yīng)用中,ROP 360是進(jìn)行光柵操作的處理單元,所述光柵操作例如模板、z測試、混合等,并將像素?cái)?shù)據(jù)輸出為處理的圖形數(shù)據(jù)以存儲(chǔ)在圖形存儲(chǔ)器中。在本發(fā)明的一些實(shí)施例中,ROP 360包括在每個(gè)GPC 208中,而不是在分區(qū)單元215中,像素的讀和寫請求通過交叉器單元210來傳送,而不是通過像素段數(shù)據(jù)。已處理的圖形數(shù)據(jù)可以顯示在顯示設(shè)備110上,或被路由以通過CPU102或通過并行處理子系統(tǒng)112中的處理實(shí)體之一來進(jìn)一步處理。每個(gè)分區(qū)單元215包括ROP 360以分配光柵操作的處理。在一些實(shí)施例中,ROP 360可以配置為壓縮寫到存儲(chǔ)器中的z或顏色數(shù)據(jù),并將從存儲(chǔ)器中讀取的z或顏色數(shù)據(jù)解壓縮。本領(lǐng)域的技術(shù)人員可以理解的是,圖1、2、3A和3B中描述的架構(gòu)決不限制本發(fā)明的范圍,本文中教導(dǎo)的技術(shù)可以在任何適合地配置的處理單元上實(shí)現(xiàn),該處理單元包括但不限于一個(gè)或多個(gè)CPU、一個(gè)或多個(gè)多內(nèi)核CPU、一個(gè)或多個(gè)PPU 202、一個(gè)或多個(gè)GPC 208、一個(gè)或多個(gè)圖形或?qū)S锰幚韱卧?,這些都不背離本發(fā)明的范圍。圖4A是根據(jù)本發(fā)明一個(gè)實(shí)施例的配置為實(shí)施集中式設(shè)備虛擬化層(CDVL)的計(jì)算機(jī)系統(tǒng)400的概念圖。如圖所示,計(jì)算機(jī)系統(tǒng)400包括多個(gè)操作系統(tǒng)(0S)402A-402N、管理程序404、中央處理單元(CPU) 406、圖形處理單元(GPU) 408、存儲(chǔ)器橋410、存儲(chǔ)器412、輸入/輸出(I/O)管理模塊414和外圍硬件設(shè)備416A-416N。I/O管理模塊414與外圍硬件設(shè)備416A-416N耦合且包括集中式設(shè)備虛擬化層(CDVL) 426和集成的硬件設(shè)備420A-420N。CPU 406,GPU 408、外圍硬件設(shè)備416A-416N和集成的硬件設(shè)備420A-420N的每個(gè)與存儲(chǔ)在存儲(chǔ)器414中的一個(gè)或多個(gè)驅(qū)動(dòng)器424相關(guān)。驅(qū)動(dòng)器424是軟件程序,其在由CPU 406或GPU408執(zhí)行時(shí)將程序指令轉(zhuǎn)換成不同類型的機(jī)器代碼。例如,CPU 406能執(zhí)行與GPU 408相關(guān)的驅(qū)動(dòng)器424以將程序指令轉(zhuǎn)換成對GPU 408是本地的機(jī)器代碼。CPU 406是計(jì)算機(jī)系統(tǒng)400的主處理器,并配置為執(zhí)行軟件程序以實(shí)施計(jì)算機(jī)系統(tǒng)400的各種功能。這些軟件程序包括OS 402A-402N、管理程序404和驅(qū)動(dòng)器424。OS402A-402N提供給用戶不同的計(jì)算環(huán)境,該不同的計(jì)算環(huán)境可以用于執(zhí)行與每個(gè)計(jì)算環(huán)境相關(guān)的應(yīng)用程序。例如,OS 402A可以是Wmdows XP,其是能提供給用戶訪問諸如MiGrosoft Office程序的操作系統(tǒng)。而OS 402B可以是作為文件轉(zhuǎn)移協(xié)議(FTP)服務(wù)器的基于UNIX的操作系統(tǒng)。管理程序404配置為協(xié)調(diào)不同的OS 402A-402N的操作以避免沖突,下面將更詳細(xì)地描述。驅(qū)動(dòng)器424可以允許OS 402A-402N和在OS 402A-402N上執(zhí)行的應(yīng)用程序訪問CPU 406的各種功能。0S402A-402N、管理程序404和驅(qū)動(dòng)器424可以存儲(chǔ)在存儲(chǔ)器412中或者作為替換可以存儲(chǔ)在外部存儲(chǔ)器單元(未示出)中。GPU 408是實(shí)施圖形處理操作以補(bǔ)充CPU 406的處理能力的協(xié)同處理器。GPU 408可以執(zhí)行配置GPU 408中的各種硬件部件(未示出)以實(shí)施不同處理任務(wù)的軟件程序。GPU408可以使用配置的硬件部件處理圖形數(shù)據(jù)。GPU 408可以訪問的諸如驅(qū)動(dòng)器424的軟件程序可以存儲(chǔ)在存儲(chǔ)器412中或者作為替換可以存儲(chǔ)在外部存儲(chǔ)器單元中。
CPU 406和GPU 408與存儲(chǔ)器橋410耦合。在一個(gè)實(shí)施例中,存儲(chǔ)器橋410是北橋芯片。存儲(chǔ)器橋410與存儲(chǔ)器412耦合。CPU 406和GPU 408通過存儲(chǔ)器橋412可以從存儲(chǔ)器412中讀取數(shù)據(jù)或者向存儲(chǔ)器412中寫數(shù)據(jù)。這個(gè)數(shù)據(jù)可以包括軟件程序,也可以包括諸如圖形數(shù)據(jù)的其他類型的數(shù)據(jù)。存儲(chǔ)器橋410與I/O管理模塊414耦合。I/O管理模塊414允許外圍硬件設(shè)備416A-416N和集成的硬件設(shè)備420A-420N可由CPU 406,GPU 408和由這些處理單元執(zhí)行的軟件程序來訪問。在一個(gè)實(shí)施例中,I/O管理模塊414是南橋芯片。外圍硬件設(shè)備416A-416N可以使用例如諸如通用串行總線(USB)連接器或火線連接器的連接器與I/O管理模塊414耦合。外圍設(shè)備416A-416N特別包括鍵盤、鼠標(biāo)、打印機(jī)、掃描儀、磁盤驅(qū)動(dòng)器、閃存驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器、麥克風(fēng)、揚(yáng)聲器、計(jì)算機(jī)顯示器、數(shù)字視頻攝像機(jī)或其他計(jì)算機(jī)系統(tǒng)。集成的硬件設(shè)備420A-420N位于存儲(chǔ)I/O管理模塊414和向計(jì)算機(jī)系統(tǒng)400提供各種系統(tǒng)功能的相同的芯片上。集成的硬件設(shè)備420A-420N特別包括實(shí)時(shí)時(shí)鐘、高級(jí)電源管理(APM)模塊、外圍部件接口( PCI)總線、PCI快速(PCIe )總線、直接存儲(chǔ)器訪問(DMA)控制器、中斷控制器、基板管理控制器、外圍高級(jí)技術(shù)接附(PATA)控制器、串行高級(jí)技術(shù)接附(SATA)控制器或非易失基本輸入/輸出系統(tǒng)(BIOS)存儲(chǔ)器。外圍硬件設(shè)備416A-416N和集成的硬件設(shè)備420A-420N (在此處共同地成為“硬件設(shè)備”)可以由OS 402A-402N通過存儲(chǔ)器橋410和I/O管理模塊414訪問。計(jì)算機(jī)系統(tǒng)400可以實(shí)施軟件(SW)虛擬化和/或硬件(HW)虛擬化以允許OS 402A-402N訪問硬件設(shè)備。圖4B是根據(jù)本發(fā)明一個(gè)實(shí)施例的配置為實(shí)施⑶VL 426的計(jì)算機(jī)系統(tǒng)401的概念圖。如圖所不,計(jì)算機(jī)系統(tǒng)401包括許多與圖4A中描述的計(jì)算機(jī)系統(tǒng)400相同的部件。計(jì)算機(jī)系統(tǒng)402額外包括外圍HW虛擬化的設(shè)備417A-417N和集成的HW虛擬化的設(shè)備421A-421N。當(dāng)對特定硬件設(shè)備實(shí)施SW虛擬化時(shí),管理程序404將與硬件設(shè)備相關(guān)的資源分成若干部分以產(chǎn)生SW虛擬化的設(shè)備422,其包括在管理程序404中。SW虛擬化的設(shè)備422的每個(gè)部分表示由正在被虛擬化的硬件設(shè)備提供的一些資源。然后管理程序404可以將SW虛擬化的設(shè)備422的不同部分分配給OS 402A-402N的每個(gè)。硬件設(shè)備可以通過公布該硬件設(shè)備的多個(gè)例子來實(shí)施HW虛擬化。外圍硬件設(shè)備416A-416N和/或集成的硬件設(shè)備420A-420N可以實(shí)施HW虛擬化。被虛擬化的每個(gè)外圍硬件設(shè)備由一組外圍HW虛擬化的設(shè)備417A-417N表示。被虛擬化的每個(gè)集成的硬件設(shè)備可以由一組集成的HW虛擬化的設(shè)備421A-421N表示。該組外圍HW虛擬化的設(shè)備417A-417N和該組集成的HW虛擬化的設(shè)備421A-421N(共同地成為“HW虛擬化的設(shè)備”)的每個(gè)表示正在被虛擬化的單個(gè)硬件設(shè)備的多個(gè)例子。管理程序404可以將正在被虛擬化的硬件設(shè)備的不同例子分配給每個(gè)OS 402A-402N。當(dāng)不同OS訪問每個(gè)HW虛擬化的設(shè)備時(shí),正在虛擬化的硬件設(shè)備在允許操作繼續(xù)之前解決在OS之間的沖突。外圍硬件設(shè)備416A-416N、外圍HW虛擬化的設(shè)備417A-417N、集成的硬件設(shè)備420A-420N、集成的HW虛擬化的設(shè)備421A-421N和SW虛擬化的設(shè)備422 (下文共同地稱為“列舉的設(shè)備”)提供了對計(jì)算機(jī)系統(tǒng)401和0S402A-402N的廣泛的補(bǔ)充功能。這些補(bǔ)充功能包括與每個(gè)硬件設(shè)備相關(guān)的功能,諸如打印、記錄聲音數(shù)據(jù)、從鼠標(biāo)接收位置輸入和其他功能。0S402A-402N通過向列舉的設(shè)備提交訪問請求來訪問這些功能。訪問請求指定了以列舉的設(shè)備來實(shí)施的不同訪問操作。訪問操作包括配置操作或存儲(chǔ)器映射的I/o (麗10)操作。配置操作對特定的任務(wù)配置列舉的設(shè)備。MMio操作以列舉的設(shè)備的指定的地址空間實(shí)施I/O操作。由OS 402A-402N傳送的訪問請求和相應(yīng)的訪問操作由CDVL 426管理。CDVL 426是配置為在OS 402A-402N中進(jìn)行仲裁和允許OS 402A-402N以列舉的設(shè)備實(shí)施訪問操作的功能單元。CDVL 426截獲由OS 402A-402N傳送的訪問請求。CDVL 426將由列舉的設(shè)備提供的資源分配給OS 402A-402N并運(yùn)行以避免在訪問列舉的設(shè)備的OS之間的沖突。⑶VL426也截獲由每個(gè)列舉的設(shè)備傳送的中斷并將中斷路由給OS。當(dāng)對特定的硬件設(shè)備實(shí)施HW虛擬化時(shí),⑶VL 426在OS和HW虛擬化的設(shè)備的每個(gè)例子之間協(xié)調(diào)訪問操作。然后正在虛擬化的硬件設(shè)備分配物理資源以避免在OS之間的沖突。當(dāng)對特定的硬件設(shè)備實(shí)施SW虛擬化時(shí),管理程序404截獲由OS 402A-402N向SW虛擬化的設(shè)備422做出的訪問請求。管理程序404將訪問請求傳送給⑶VL 426。然后⑶VL426協(xié)調(diào)對正在SW虛擬化的硬件設(shè)備的訪問操作。在一個(gè)實(shí)施例中,⑶VL 426實(shí)施為位于I/O管理模塊414中的硬件單元。在另一實(shí)施例中,CDVL 426實(shí)施為硬件和微控制器的組合。在又一實(shí)施例中,CDVL 426實(shí)施為存儲(chǔ)在與I/O管理模塊414相關(guān)的存儲(chǔ)器中的且由包括在I/O管理模塊414中的微控制器執(zhí)行的軟件程序??梢晕挥诖鎯?chǔ)器412中、外部存儲(chǔ)器單元中或I/O管理模塊414中的⑶VL建立文件428使得實(shí)施為軟件的⑶VL 426存儲(chǔ)在I/O管理模塊414。在又一實(shí)施例中,存儲(chǔ)器橋410和I/O管理模塊414集成在駐留在邊界430中的單一芯片上,且CDVL 426允許OS 402A-402N實(shí)施以存儲(chǔ)器412和GPU 408的訪問操作。在進(jìn)一步實(shí)施例中,存儲(chǔ)器橋410和I/O管理模塊414是分開的芯片且OS 402A-402N可以通過⑶VL 426只訪問硬件設(shè)備。⑶VL 426通過維持一個(gè)或多個(gè)允許列表以避免在OS 402A-402N之間的沖突。每個(gè)允許列表包括指示特定OS被允許訪問那些哪個(gè)列舉的設(shè)備的查找表。⑶VL 426基于與OS相關(guān)的允許列表允許對這些列舉的設(shè)備的訪問。在一個(gè)實(shí)施例中,允許列表由CDVL426產(chǎn)生,使得在特定時(shí)間只有一個(gè)OS被允許訪問特定的列舉的設(shè)備,因此避免了潛在的沖關(guān)。CDVL 426也產(chǎn)生將每個(gè)列舉的設(shè)備的地址空間映射到被允許使用該列舉的設(shè)備的OS的地址空間中的虛擬地址映射(VAM)。VAM允許將訪問請求路由給與列舉的設(shè)備相關(guān)的合適的地址,并還允許訪問操作在列舉的設(shè)備的有關(guān)地址空間中實(shí)施。另外,⑶VL 426產(chǎn)生中斷映射。⑶VL 426使用中斷映射將可以傳送自列舉的設(shè)備的中斷路由給被允許使用該列舉的設(shè)備的OS。在計(jì)算機(jī)系統(tǒng)400啟動(dòng)期間CDVL 426是激活的。CDVL 426識(shí)別0S402A-402N并列舉硬件設(shè)備和虛擬化的設(shè)備。⑶VL 426也產(chǎn)生允許列表,且如上所述可以產(chǎn)生VAM和/或中斷映射。一旦⑶VL 426啟動(dòng),OS 402A-402N可以訪問列舉的設(shè)備。VAM和中斷映射可以在設(shè)備列舉期間產(chǎn)生,或可替換地可以在當(dāng)允許列表更新時(shí)動(dòng)態(tài)地產(chǎn)生。例如,如果在計(jì)算機(jī)系統(tǒng)400的操作期間OS獲得了使用列舉的設(shè)備的許可,那么⑶VL 426可以動(dòng)態(tài)地產(chǎn)生與OS列舉的設(shè)備配對相關(guān)的VAM和中斷映射。當(dāng)OS將訪問請求傳送給列舉的設(shè)備之一時(shí),OS包括了在識(shí)別該OS的訪問請求中的標(biāo)記。當(dāng)⑶VL 426截獲訪問請求時(shí),⑶VL 426檢查該標(biāo)記并通過確定OS是否包括在與列舉的設(shè)備相關(guān)的允許列表中來確定OS是否被允許訪問列舉的設(shè)備。如果不允許OS使用列舉的設(shè)備,那么⑶VL 426通知管理程序404。然后管理程序404可以采取適當(dāng)?shù)拇胧┚芙^該訪問操作。如果允許OS使用列舉的設(shè)備,那么⑶VL 426檢查將列舉的設(shè)備的地址空間映射到OS的地址空間中的VAM。CDVL 426解析訪問請求并抽取指定了由OS請求的地址范圍的信息。CDVL 426確定所請求的地址是否被映射或者沒有映射。如果請求的地址中的一個(gè)或多個(gè)沒有被映射,那么⑶VL 426產(chǎn)生包括所請求的地址的新的地址映射。然后⑶VL 426將允許列舉的設(shè)備執(zhí)行由訪問請求指定的訪問操作的場景裝載到該列舉的設(shè)備。然后該列舉的設(shè)備可以聲明該訪問請求并執(zhí)行所請求的訪問操作。當(dāng)OS實(shí)施對列舉的設(shè)備的訪問操作時(shí),列舉的設(shè)備可以發(fā)出中斷。CDVL 426截獲這些中斷并使用中斷映射將這些中斷傳送給在OS的地址空間中的正確的地址。然后OS可以采取適當(dāng)?shù)牟襟E處理這些中斷。這些步驟可以包括將額外的訪問請求通過⑶VL 426傳送給列舉的設(shè)備。在計(jì)算機(jī)系統(tǒng)401的操作期間,額外的硬件設(shè)備可以接附到I/O管理模塊414。當(dāng)額外的硬件設(shè)備接附到I/O管理模塊414時(shí),CDVL 426列舉額外的硬件設(shè)備并確定OS402A-402N中的哪些被允許使用額外的硬件設(shè)備。然后⑶VL 426可以產(chǎn)生額外的VAM和額外的中斷映射,使得0S402A-402N可以訪問由額外的硬件設(shè)備提供的資源。⑶VL 426還配置為在計(jì)算機(jī)系統(tǒng)401的操作期間允許額外的CPU接附到存儲(chǔ)器橋410。額外的CPU可以執(zhí)行多個(gè)OS。每個(gè)CPU可以執(zhí)行不同的管理程序以管理由該CPU執(zhí)行的OS。這個(gè)配置在下面的圖5中描述。圖5是根據(jù)本發(fā)明一個(gè)實(shí)施例的配置為實(shí)施⑶VL 426的多處理器計(jì)算機(jī)系統(tǒng)500的概念圖。如圖所示,多處理器計(jì)算機(jī)系統(tǒng)500包括許多與圖4B中描述的計(jì)算機(jī)系統(tǒng)401相同的部件。另外,多處理器計(jì)算機(jī)系統(tǒng)500包括CPU 502、管理程序504、0S506A-506N、CPU512、管理程序514和OS 516A-516N。CPU 502和CPU 512是與圖4B中描述的CPU 406相似的并行處理單元。CPU 502和CPU 512可以執(zhí)行軟件程序以實(shí)施多處理器計(jì)算機(jī)系統(tǒng)500的功能。例如,CPU 502和CPU 512每個(gè)可以執(zhí)行一個(gè)或多個(gè)驅(qū)動(dòng)器424,這些驅(qū)動(dòng)器424在執(zhí)行時(shí)可以將程序指令轉(zhuǎn)換成分別對于CPU 502和CPU 512是本地的機(jī)器代碼。CPU 502執(zhí)行包括管理程序504和OS 506A-506N的軟件程序。管理程序504大致與管理程序404相似,且OS 506A-506N大致與OS 402A-402N相似。管理程序504配置為管理OS 506A-506N的操作。OS 506A-506N配置為通過存儲(chǔ)器橋410和I/O管理模塊414訪問硬件設(shè)備。當(dāng)硬件設(shè)備的一個(gè)或多個(gè)被執(zhí)行SW虛擬化時(shí),管理程序504包括可以由OS506A-506N訪問的一組或多組SW虛擬化的設(shè)備508。CPU 502可以執(zhí)行包括管理程序514和OS 516A-516N的軟件程序。管理程序514大致與管理程序504相似,且OS 516A-516N大致與OS 506A-506N相似。管理程序514配置為管理OS 516A-516N的操作,且當(dāng)硬件設(shè)備的一個(gè)或多個(gè)被執(zhí)行SW虛擬化時(shí),管理程序514可以包括一組或多組SW虛擬化的設(shè)備518。OS 506A-506N和OS 516A-516N通過將訪問請求分別通過管理程序508和管理程序518傳送可以訪問硬件設(shè)備。管理程序508和管理程序518將這些訪問請求路由給⑶VL426。⑶VL 426以與上面圖4B中描述的方式大致相同的方式運(yùn)行。因此,⑶VL 426維持了描述OS 506A-506N和/或OS516A-516N被允許訪問哪些硬件設(shè)備的允許列表。CDVL 426也為硬件設(shè)備和被允許使用那些硬件設(shè)備的OS 506A-506N和/或OS 516A-516N維持VAM和中斷映射。圖6是根據(jù)本發(fā)明一個(gè)實(shí)施例的在計(jì)算機(jī)系統(tǒng)上啟動(dòng)CDVL 426的方法步驟流程圖。本領(lǐng)域的技術(shù)人員將理解的是,盡管方法600結(jié)合圖1-5的系統(tǒng)描述,但是配置為以任何順序?qū)嵤┓椒ú襟E的任何系統(tǒng)都在本發(fā)明的范圍中。如圖所示,方法600開始于步驟602,其中裝載CDVL 426。當(dāng)CDVL 426實(shí)現(xiàn)為包括在I/O管理模塊414中的硬件單元時(shí),裝載⑶VL 426包括對⑶VL 426上電。當(dāng)⑶VL 426實(shí)現(xiàn)為軟件程序時(shí),裝載⑶VL 426包括使⑶VL426存儲(chǔ)在與I/O管理模塊414相關(guān)的存儲(chǔ)器單元中的⑶VL建立文件428。軟件實(shí)現(xiàn)的⑶VL 426由包括在計(jì)算機(jī)系統(tǒng)中的處理器或者包括在I/O管理模塊414中的微控制器執(zhí)行。在步驟604,⑶VL 426通過產(chǎn)生識(shí)別每個(gè)硬件設(shè)備和每個(gè)虛擬化的設(shè)備的設(shè)備列表來列舉硬件設(shè)備和虛擬化的設(shè)備。CDVL 426也可以包括與設(shè)備列表中的每個(gè)硬件設(shè)備和每個(gè)虛擬化的設(shè)備相關(guān)的特性。另外,CDVL 426可以檢查每個(gè)硬件設(shè)備和虛擬化的設(shè)備以確定可以用于訪問這些設(shè)備的每個(gè)的地址的范圍。這個(gè)信息可以包括在設(shè)備列表中。在步驟606,CDVL 426 產(chǎn)生指定了 OS 506A-506N 和 / 或 OS 516A-516N 中的哪些被允許訪問每個(gè)硬件設(shè)備和每個(gè)虛擬化的設(shè)備的允許列表。在一個(gè)實(shí)施例中,產(chǎn)生該允許列表使得阻止不同OS同時(shí)實(shí)施對相同的列舉的設(shè)備的訪問操作。在步驟608,⑶VL 426產(chǎn)生將每個(gè)硬件設(shè)備和每個(gè)虛擬化的設(shè)備的地址空間映射到被允許使用該列舉的設(shè)備的OS的地址空間中的VAM。在步驟610,⑶VL 426產(chǎn)生可以用于將每個(gè)列舉的設(shè)備的中斷路由到被允許使用該列舉的設(shè)備的OS的地址空間中的中斷映射。圖7是根據(jù)本發(fā)明一個(gè)實(shí)施例的在計(jì)算機(jī)系統(tǒng)上實(shí)施CDVL 426的方法步驟流程圖。本領(lǐng)域的技術(shù)人員將理解的是,盡管方法700結(jié)合圖1-5的系統(tǒng)描述,但是配置為以任何順序?qū)嵤┓椒ú襟E的任何系統(tǒng)都在本發(fā)明的范圍中。如圖所示,方法700開始于步驟702,其中⑶VL 426接收來自O(shè)S的訪問請求。OS可以是例如OS 402A-402N之一、OS 506A-506N之一、或者OS 516A-516N之一。訪問請求包括識(shí)別OS的標(biāo)記。訪問請求也包括OS想要訪問的列舉的設(shè)備、OS想要實(shí)施的訪問操作和OS想要訪問的地址。在步驟704,⑶VL 426確定是否允許OS訪問在訪問請求中指定的列舉的設(shè)備。⑶VL 426檢查與訪問請求相關(guān)的標(biāo)記以確定訪問請求接收自哪個(gè)OS。⑶VL 426也檢查訪問請求以確定請求哪個(gè)列舉的設(shè)備。然后CDVL 426訪問與請求的列舉的設(shè)備相關(guān)的允許列表。如上所述,允許列表指定了被允許使用該列舉的設(shè)備的OS。CDVL 426確定OS是否包括在允許列表中且因此OS是否被允許訪問請求的列舉的設(shè)備。如果OS沒有包括在允許列表中,那么不允許OS訪問該列舉的設(shè)備,方法進(jìn)行到步驟706。在步驟706,CDVL 426拒絕OS訪問列舉的設(shè)備,方法700終止。如果OS包括在允許列表中,那么方法700進(jìn)行到步驟708。在步驟708,⑶VL 426確定未映射的地址是否包括在訪問請求中。⑶VL 426檢查訪問請求以確定OS意圖訪問的地址。⑶VL 426也訪問與OS和列舉的設(shè)備相關(guān)的VAM。⑶VL 426將包括在訪問請求中的地址與VAM比較并確定是否所指定的地址中的任意一個(gè)都沒有包括在VAM中,這指示出這些地址是未映射的。如果訪問請求不包括未映射的地址(即在訪問請求中指定的地址全部都包括在VAM中),那么方法700進(jìn)行到步驟712。如果在訪問請求中指定的任意地址是未映射的,那么方法700進(jìn)行到步驟710。在步驟710,⑶VL 426通過將未映射的地址映射到列舉的設(shè)備的地址空間中來更新VAM。然后方法700進(jìn)行到步驟712。在步驟712,⑶VL 426允許對請求的列舉的設(shè)備的請求的訪問操作繼續(xù)。⑶VL426使用VAM通過將可以由OS傳送的配置操作和MMIO操作路由給在列舉的設(shè)備的地址空間中的合適的地址協(xié)調(diào)來訪問操作。⑶VL也使用中斷映射將列舉的設(shè)備產(chǎn)生的中斷路由給在OS的地址空間中的合適的地址。當(dāng)訪問操作完成時(shí),方法700終止??傊惺皆O(shè)備虛擬化層(CDVL)支持在多CPU計(jì)算機(jī)系統(tǒng)中的不同中央處理單元(CPU)上執(zhí)行的操作系統(tǒng)(OS)的設(shè)備虛擬化。⑶VL從將不同CPU與一個(gè)或多個(gè)列舉的設(shè)備連接的例如南橋(SB)芯片的輸入/輸出(I/O)管理模塊中運(yùn)行。列舉的設(shè)備包括硬件設(shè)備和虛擬化的設(shè)備。CDVL通過為每個(gè)列舉的設(shè)備產(chǎn)生包括可以訪問該列舉的設(shè)備的OS的允許列表持續(xù)追蹤哪些OS允許使用每個(gè)列舉的設(shè)備。當(dāng)允許OS使用列舉的設(shè)備時(shí),OS可以對列舉的設(shè)備實(shí)施訪問操作,這可以包括配置操作和/或存儲(chǔ)器映射的I/O操作。當(dāng)OS試圖訪問由特定列舉的設(shè)備提供的資源時(shí),OS產(chǎn)生包括識(shí)別OS的標(biāo)記的訪問請求。然后OS通過管理OS的管理程序?qū)⒃L問請求傳送給CDVL。CDVL檢查與訪問請求相關(guān)的標(biāo)記以確定是否允許OS訪問列舉的設(shè)備。如果OS試圖訪問不允許OS使用的列舉的設(shè)備,那么⑶VL通知與OS相關(guān)的管理程序。然后管理程序可以采取合適的步驟阻止OS訪問列舉的設(shè)備。⑶VL使用虛擬地址映射(VAM)將配置操作和/或麗IO操作發(fā)送給列舉的設(shè)備。VAM提供每個(gè)列舉的設(shè)備的地址空間到允許訪問該列舉的設(shè)備的OS的地址空間的映射。⑶VL可以在設(shè)備列舉期間或者運(yùn)行期間產(chǎn)生VAM。當(dāng)OS將訪問請求傳送給⑶VL且⑶VL準(zhǔn)許訪問請求時(shí),⑶VL檢查有關(guān)VAM以確保請求的地址已經(jīng)映射。如果請求的地址是未映射的,那么⑶VL可以產(chǎn)生新的VAM。⑶VL使用VAM將訪問請求發(fā)送給在列舉的設(shè)備上的正確的地址。CDVL也可以實(shí)施允許訪問繼續(xù)的其他行動(dòng),例如場景交換或設(shè)備停頓。CDVL通過將來自特定列舉的設(shè)備的中斷映射到可以訪問列舉的設(shè)備的OS中來處理列舉的設(shè)備中斷。如果列舉的設(shè)備發(fā)出中斷,那么⑶VL可以通過管理OS的管理程序?qū)⒅袛鄠魉徒o在OS地址空間中的有關(guān)地址。⑶VL可以在設(shè)備列舉期間或者當(dāng)列舉的設(shè)備允許改變時(shí)產(chǎn)生中斷映射。有利地,⑶VL將設(shè)備虛擬化延伸到了包括多個(gè)CPU的計(jì)算機(jī)系統(tǒng)中,⑶VL允許在每個(gè)CPU上執(zhí)行的OS訪問與計(jì)算機(jī)系統(tǒng)耦合的列舉的設(shè)備的公共庫。CDVL可以與SW虛擬化和HW虛擬化結(jié)合使用以將專門的虛擬化支持提供給需要該支持的OS。CDVL的另一優(yōu)點(diǎn)是,額外的CPU可以通過將額外的CPU耦合到存儲(chǔ)器橋而增加到計(jì)算機(jī)系統(tǒng)中。當(dāng)額外的CPU的每個(gè)執(zhí)行一個(gè)或多個(gè)OS時(shí),在與存儲(chǔ)器橋耦合的CPU上執(zhí)行的OS的每個(gè)可以通過CDVL訪問列舉的設(shè)備。本發(fā)明的一個(gè)實(shí)施例可以實(shí)施為與計(jì)算機(jī)系統(tǒng)使用的程序產(chǎn)品。程序產(chǎn)品的程序限定了實(shí)施例(包括本文描述的方法)的功能且能包含在各種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。圖示的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括但不限于(i)其上信息被永久存儲(chǔ)的不可寫存儲(chǔ)介質(zhì)(例如,計(jì)算機(jī)中的只讀存儲(chǔ)器設(shè)備,諸如由CD-ROM驅(qū)動(dòng)器可讀取的CD-ROM盤、閃存、ROM芯片或任何類型的固態(tài)非易失半導(dǎo)體存儲(chǔ)器);和(ii)其上存儲(chǔ)可改變信息的可寫存儲(chǔ)介質(zhì)(例如,軟盤驅(qū)動(dòng)器中的軟盤或硬盤驅(qū)動(dòng)器或任何類型的固態(tài)隨機(jī)存取半導(dǎo)體存儲(chǔ)器)。上面已經(jīng)參考特定實(shí)施例對本發(fā)明進(jìn)行了描述。但是,本領(lǐng)域的技術(shù)人員將理解的是,在不背離如所附的權(quán)利要求闡明的本發(fā)明的較寬的精神和范圍的情況下,可以對特定實(shí)施例作出各種修改和改變。因此前述的描述和附圖是示例性的而不是限制性的。
權(quán)利要求
1.一種用于管理包括多個(gè)中央處理單元(CPU)的系統(tǒng)中的一個(gè)或多個(gè)列舉的設(shè)備的方法,所述方法包括自多個(gè)操作系統(tǒng)中的操作系統(tǒng)接收訪問所述一個(gè)或多個(gè)列舉的設(shè)備中的列舉的設(shè)備的請求,所述操作系統(tǒng)與所述多個(gè)CPU中的第一 CPU相關(guān)聯(lián);確定允許所述操作系統(tǒng)訪問所述列舉的設(shè)備;確定與所述列舉的設(shè)備相關(guān)聯(lián)的位置是否映射到與所述操作系統(tǒng)相關(guān)的地址空間相應(yīng)的位置;以及如果與所述列舉的設(shè)備相關(guān)聯(lián)的所述位置映射,那么允許所述操作系統(tǒng)訪問所述列舉的設(shè)備;或者如果與所述列舉的設(shè)備相關(guān)聯(lián)的所述位置沒有映射,那么將與所述列舉的設(shè)備相關(guān)聯(lián)的所述位置映射到與所述操作系統(tǒng)相關(guān)的所述地址空間中;以及允許所述操作系統(tǒng)訪問所述列舉的設(shè)備。
2.根據(jù)權(quán)利要求I所述的方法,進(jìn)一步包括產(chǎn)生設(shè)備列表,所述設(shè)備列表配置為識(shí)別一個(gè)或多個(gè)硬件設(shè)備以及一個(gè)或多個(gè)虛擬化的設(shè)備。
3.根據(jù)權(quán)利要求2所述的方法,進(jìn)一步包括列舉設(shè)備,由此創(chuàng)建所述列舉的設(shè)備,包括在所述設(shè)備列表上創(chuàng)建識(shí)別所述列舉的設(shè)備為硬件設(shè)備或虛擬化的設(shè)備的對應(yīng)于所述列舉的設(shè)備的條目;為所述條目添加與所述列舉的設(shè)備相關(guān)聯(lián)的特性;以及為所述條目添加指定可用于訪問所述列舉的設(shè)備的地址的范圍的域。
4.根據(jù)權(quán)利要求I所述的方法,進(jìn)一步包括產(chǎn)生指定所述多個(gè)操作系統(tǒng)中的允許訪問所述列舉的設(shè)備的每個(gè)操作系統(tǒng)的允許列表。
5.根據(jù)權(quán)利要求4所述的方法,其中確定允許所述操作系統(tǒng)訪問所述列舉的設(shè)備包括訪問與所述列舉的設(shè)備相關(guān)聯(lián)的所述允許列表;以及確定所述操作系統(tǒng)包括在所述允許列表中。
6.根據(jù)權(quán)利要求I所述的方法,進(jìn)一步包括產(chǎn)生將所述列舉的設(shè)備的所述地址空間映射到所述多個(gè)操作系統(tǒng)中的允許訪問所述列舉的設(shè)備的每個(gè)操作系統(tǒng)的所述地址空間的虛擬地址映射。
7.根據(jù)權(quán)利要求6所述的方法,其中確定與所述列舉的設(shè)備相關(guān)聯(lián)的位置是否映射到與所述操作系統(tǒng)相關(guān)的地址空間相應(yīng)的位置包括檢查所述請求以確定所述操作系統(tǒng)意圖訪問的一個(gè)或多個(gè)地址;訪問與所述操作系統(tǒng)和所述列舉的設(shè)備相關(guān)聯(lián)的所述虛擬地址映射;比較包括在所述請求中的所述一個(gè)或多個(gè)地址和與所述虛擬地址映射相關(guān)聯(lián)的一個(gè)或多個(gè)地址;以及確定包括在所述請求中的所述一個(gè)或多個(gè)地址包括在與所述虛擬地址映射相關(guān)聯(lián)的所述一個(gè)或多個(gè)地址中。
8.根據(jù)權(quán)利要求I所述的方法,進(jìn)一步包括產(chǎn)生中斷映射,所述中斷映射配置為將與所述列舉的設(shè)備相關(guān)聯(lián)的中斷路由到所述多個(gè)操作系統(tǒng)中的允許訪問所述列舉的設(shè)備的每個(gè)操作系統(tǒng)的地址空間。
9.根據(jù)權(quán)利要求I所述的方法,其中所述請求指定將要對所述列舉的設(shè)備實(shí)施的訪問操作。
10.根據(jù)權(quán)利要求9所述的方法,其中所述訪問操作包括對特定的任務(wù)配置所述列舉的設(shè)備的配置操作。
11.根據(jù)權(quán)利要求9所述的方法,其中所述訪問操作包括以所述列舉的設(shè)備的指定的地址空間實(shí)施I/O操作的存儲(chǔ)器映射的輸入/輸出(麗10)操作。
12.根據(jù)權(quán)利要求I所述的方法,其中所述請求包括識(shí)別所述操作系統(tǒng)的標(biāo)記。
13.一種非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),其存儲(chǔ)指令,當(dāng)所述指令由處理單元執(zhí)行時(shí),使所述處理單元通過實(shí)施如下的步驟來管理包括多個(gè)中央處理單元(CPU)的系統(tǒng)中的一個(gè)或多個(gè)列舉的設(shè)備,所述步驟包括自多個(gè)操作系統(tǒng)中的操作系統(tǒng)接收訪問所述一個(gè)或多個(gè)列舉的設(shè)備中的列舉的設(shè)備的請求,所述操作系統(tǒng)與所述多個(gè)CPU中的第一 CPU相關(guān)聯(lián);確定允許所述操作系統(tǒng)訪問所述列舉的設(shè)備;確定與所述列舉的設(shè)備相關(guān)聯(lián)的位置是否映射到與所述操作系統(tǒng)相關(guān)的地址空間相應(yīng)的位置;以及如果與所述列舉的設(shè)備相關(guān)聯(lián)的所述位置映射,那么允許所述操作系統(tǒng)訪問所述列舉的設(shè)備;或者如果與所述列舉的設(shè)備相關(guān)聯(lián)的所述位置沒有映射,那么將與所述列舉的設(shè)備相關(guān)聯(lián)的所述位置映射到與所述操作系統(tǒng)相關(guān)的所述地址空間中;以及允許所述操作系統(tǒng)訪問所述列舉的設(shè)備。
14.根據(jù)權(quán)利要求13所述的計(jì)算機(jī)可讀介質(zhì),進(jìn)一步包括步驟產(chǎn)生設(shè)備列表,所述設(shè)備列表配置為識(shí)別一個(gè)或多個(gè)硬件設(shè)備以及一個(gè)或多個(gè)虛擬化的設(shè)備。
15.根據(jù)權(quán)利要求14所述的計(jì)算機(jī)可讀介質(zhì),進(jìn)一步包括步驟列舉設(shè)備,由此創(chuàng)建所述列舉的設(shè)備,包括在所述設(shè)備列表上創(chuàng)建識(shí)別所述列舉的設(shè)備為硬件設(shè)備或虛擬化的設(shè)備的對應(yīng)于所述列舉的設(shè)備的條目,;為所述條目添加與所述列舉的設(shè)備相關(guān)聯(lián)的特性;以及為所述條目添加指定可用于訪問所述列舉的設(shè)備的地址的范圍的域。
16.根據(jù)權(quán)利要求13所述的計(jì)算機(jī)可讀介質(zhì),進(jìn)一步包括步驟產(chǎn)生指定所述多個(gè)操作系統(tǒng)中的允許訪問所述列舉的設(shè)備的每個(gè)操作系統(tǒng)的允許列表。
17.根據(jù)權(quán)利要求16所述的計(jì)算機(jī)可讀介質(zhì),其中確定允許所述操作系統(tǒng)訪問所述列舉的設(shè)備包括步驟訪問與所述列舉的設(shè)備相關(guān)聯(lián)的所述允許列表;以及確定所述操作系統(tǒng)包括在所述允許列表中。
18.根據(jù)權(quán)利要求13所述的計(jì)算機(jī)可讀介質(zhì),進(jìn)一步包括步驟產(chǎn)生將所述列舉的設(shè)備的所述地址空間映射到所述多個(gè)操作系統(tǒng)中的允許訪問所述列舉的設(shè)備的每個(gè)操作系統(tǒng)的所述地址空間的虛擬地址映射。
19.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)可讀介質(zhì),其中確定與所述列舉的設(shè)備相關(guān)聯(lián)的位置是否映射到具有與所述操作系統(tǒng)相關(guān)的地址空間相應(yīng)的位置包括步驟檢查所述請求以確定所述操作系統(tǒng)意圖訪問的一個(gè)或多個(gè)地址;訪問與所述操作系統(tǒng)和所述列舉的設(shè)備相關(guān)聯(lián)的所述虛擬地址映射;比較包括在所述請求中的所述一個(gè)或多個(gè)地址和與所述虛擬地址映射相關(guān)聯(lián)的一個(gè)或多個(gè)地址;以及確定包括在所述請求中的所述一個(gè)或多個(gè)地址包括在與所述虛擬地址映射相關(guān)聯(lián)的所述一個(gè)或多個(gè)地址中。
20.一種計(jì)算設(shè)備,包括處理單元;存儲(chǔ)器,所述存儲(chǔ)器耦合至所述處理單元并且存儲(chǔ)集中式設(shè)備虛擬化層(CDVL),所述集中式設(shè)備虛擬化層配置為使所述處理單元通過實(shí)施如下的步驟管理包括多個(gè)中央處理單元(CPU)的系統(tǒng)中的一個(gè)或多個(gè)列舉的設(shè)備,所述步驟包括自多個(gè)操作系統(tǒng)中的操作系統(tǒng)接收訪問所述一個(gè)或多個(gè)列舉的設(shè)備中的列舉的設(shè)備的請求,所述操作系統(tǒng)與所述多個(gè)CPU中的第一 CPU相關(guān)聯(lián);確定允許所述操作系統(tǒng)訪問所述列舉的設(shè)備;確定與所述列舉的設(shè)備相關(guān)聯(lián)的位置是否映射到與所述操作系統(tǒng)相關(guān)的地址空間相應(yīng)的位置;以及如果與所述列舉的設(shè)備相關(guān)聯(lián)的所述位置映射,那么允許所述操作系統(tǒng)訪問所述列舉的設(shè)備;或者如果與所述列舉的設(shè)備相關(guān)聯(lián)的所述位置沒有映射,那么將與所述列舉的設(shè)備相關(guān)聯(lián)的所述位置映射到與所述操作系統(tǒng)相關(guān)的所述地址空間中;以及允許所述操作系統(tǒng)訪問所述列舉的設(shè)備。
全文摘要
用于不同種類處理單元的集中式設(shè)備虛擬化層,提供操作系統(tǒng)訪問設(shè)備的方法,包括列舉硬件設(shè)備和虛擬化的設(shè)備,其中與第一硬件設(shè)備相關(guān)的資源分成賓客物理資源以創(chuàng)建軟件虛擬化的設(shè)備,和發(fā)布與第二硬件設(shè)備相關(guān)的資源的多個(gè)例子以創(chuàng)建硬件虛擬化的設(shè)備。產(chǎn)生第一和第二允許列表以指定哪些操作系統(tǒng)分別允許訪問軟件虛擬化的設(shè)備和硬件虛擬化的設(shè)備。產(chǎn)生第一和第二組虛擬化的設(shè)備,其中每組將與軟件虛擬化的設(shè)備或硬件虛擬化的設(shè)備相關(guān)的地址空間映射到與包括在相應(yīng)的允許列表中的每個(gè)操作系統(tǒng)相關(guān)的地址空間中。該方法進(jìn)一步包括基于允許列表和虛擬地址映射仲裁來自多個(gè)操作系統(tǒng)的每個(gè)的訪問請求。
文檔編號(hào)G06F9/455GK102981892SQ20121054023
公開日2013年3月20日 申請日期2009年12月8日 優(yōu)先權(quán)日2008年12月8日
發(fā)明者布雷德·W·施麥爾, 邁克爾·布賴恩·考克斯 申請人:輝達(dá)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
朝阳县| 台中县| 东山县| 洞头县| 自治县| 册亨县| 桓仁| 洪洞县| 磐安县| 论坛| 沾益县| 衡南县| 尼木县| 鄂托克前旗| 凌源市| 内江市| 湖北省| 辽宁省| 沽源县| 张家港市| 屏南县| 徐州市| 无锡市| 萝北县| 农安县| 武隆县| 柏乡县| 永州市| 平潭县| 恭城| 蕉岭县| 突泉县| 古蔺县| 泰兴市| 台江县| 西平县| 文安县| 正定县| 乐东| 孝义市| 平定县|