專(zhuān)利名稱(chēng):用于虛擬化圖形子系統(tǒng)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于虛擬化計(jì)算設(shè)備的圖形子系統(tǒng)的系統(tǒng)、裝置、方法、用戶界面、協(xié)議和應(yīng)用程序編程接口(API),尤其涉及提供與兼容性、安全性和數(shù)字權(quán)限管理有關(guān)的益處的虛擬化的圖形體系結(jié)構(gòu)。
背景技術(shù):
作為關(guān)于現(xiàn)代圖形管道的狀態(tài)的背景,圖形子系統(tǒng)一般與主計(jì)算機(jī)協(xié)作以獨(dú)立執(zhí)行執(zhí)行某些專(zhuān)門(mén)任務(wù),例如相對(duì)而言需要大量原始計(jì)算能力的任務(wù),諸如準(zhǔn)備應(yīng)用程序的輸出以在監(jiān)視器、打印機(jī)或其它設(shè)備上顯示。例如,為創(chuàng)建3-D計(jì)算機(jī)圖形表示,要描繪的對(duì)象被表示為計(jì)算機(jī)內(nèi)的數(shù)學(xué)模型,這尤其適用于圖形子系統(tǒng)的圖形處理單元(GPU)的數(shù)學(xué)密集型處理。例如,3-D模型可由坐標(biāo)系統(tǒng)內(nèi)的幾何點(diǎn)組成,該坐標(biāo)系統(tǒng)由x、y和z軸構(gòu)成,例如分別對(duì)應(yīng)于寬度、高度和深度。對(duì)象由稱(chēng)為頂點(diǎn)的一系列點(diǎn)定義。點(diǎn)或頂點(diǎn)的位置由其x、y和z坐標(biāo)(或其它坐標(biāo)系統(tǒng))來(lái)定義。在圖形術(shù)語(yǔ)中,一個(gè)頂點(diǎn)是一個(gè)點(diǎn),兩個(gè)頂點(diǎn)定義一條線或線段,而三個(gè)頂點(diǎn)定義了三角形,所有這些都是“凸緣”。當(dāng)鏈接三個(gè)或更多的點(diǎn)時(shí),形成多邊形,其中三角形是最簡(jiǎn)單的多邊形,它可用于逼近對(duì)象的3-D幾何結(jié)構(gòu)并向3-D幾何結(jié)構(gòu)應(yīng)用圖形數(shù)據(jù)來(lái)創(chuàng)建各種藝術(shù)和真實(shí)效果以及色彩變換。圖形管道可使用其各種計(jì)算子單元來(lái)非??焖偾矣行У靥幚眄旤c(diǎn)和其它數(shù)據(jù)流,以最終在2-D顯示空間中表示非常復(fù)雜的3-D對(duì)象。
由此,諸如在屏幕上呈現(xiàn)和顯示三維(3-D)圖形等某些任務(wù)通常涉及非常適用于由圖形子系統(tǒng)來(lái)實(shí)現(xiàn)的許多統(tǒng)計(jì)和計(jì)算。在簡(jiǎn)單的圖形系統(tǒng)中,這一計(jì)算依照中央處理單元(CPU)和圖形處理單元(GPU)的某一級(jí)別的協(xié)作或共享處理而發(fā)生。在一個(gè)示例性情形中,在處理了指令且CPU中發(fā)生了某些初始計(jì)算之后,將定義要呈現(xiàn)的對(duì)象的一組坐標(biāo)點(diǎn)或頂點(diǎn)儲(chǔ)存在視頻存儲(chǔ)器中以供圖形管道中的GPU在將來(lái)使用。例如,如果數(shù)據(jù)是3-D圖形數(shù)據(jù),則鑲嵌器可依照預(yù)定的算法將圖形數(shù)據(jù)分解成簡(jiǎn)單的多邊形,這是被稱(chēng)為鑲嵌的過(guò)程,該預(yù)定算法被設(shè)計(jì)成有效覆蓋要呈現(xiàn)的對(duì)象的表面。當(dāng)前,在大多數(shù)圖形管道中,數(shù)據(jù)然后可由GPU的一個(gè)或多個(gè)計(jì)算子單元,如過(guò)程著色器來(lái)操作,取決于傳送到GPU的指令,該子單元與視頻存儲(chǔ)器,即幀緩沖器協(xié)作以依照數(shù)據(jù)的工作指令來(lái)處理數(shù)據(jù),并在適當(dāng)?shù)闹甘鞠聦?shù)據(jù)輸出到例如顯示器或打印機(jī)設(shè)備。
如圖1所示,對(duì)于具有圖形協(xié)處理系統(tǒng)的計(jì)算系統(tǒng),計(jì)算系統(tǒng)在主機(jī)CPU和圖形硬件之間劃分。CPU便于請(qǐng)求使用圖形API的應(yīng)用程序和服務(wù)做出對(duì)圖形API的調(diào)用。常規(guī)上,應(yīng)用程序和驅(qū)動(dòng)程序位于CPU側(cè),而來(lái)自那些源的信息作為工作項(xiàng)被發(fā)送到圖形管道,諸如在監(jiān)視器上顯示數(shù)據(jù)。首先,將依照API由CPU分組的信息從CPU發(fā)送到GPU。然后,來(lái)自應(yīng)用程序的信息在存儲(chǔ)器中等待,直到它由GPU的計(jì)算子單元(諸如當(dāng)處理3-D圖形數(shù)據(jù)時(shí)則為頂點(diǎn)著色器)調(diào)度和處理。在頂點(diǎn)著色器完成其操作之后,信息通常通過(guò)特殊的數(shù)據(jù)路徑從頂點(diǎn)著色器輸出到像素著色器,直到它由像素著色器訪問(wèn)以供進(jìn)一步的處理。在像素著色器執(zhí)行了其操作之后,該信息被放置在幀緩沖器中以被掃描輸出到顯示器,或被發(fā)送回主機(jī)以供進(jìn)一步的操作。
在當(dāng)今的圖形體系結(jié)構(gòu)中,術(shù)語(yǔ)“幀緩沖器”一般指用于光柵化和/或數(shù)—模轉(zhuǎn)換器(DAC)輸出處理的任何存儲(chǔ)器(一般包括視頻存儲(chǔ)器用于與GPU互操作)。在這一點(diǎn)上,盡管術(shù)語(yǔ)光柵化有時(shí)更一般地使用,然而結(jié)合圖形管道中的像素處理或設(shè)置引擎處理執(zhí)行的處理一般被稱(chēng)為光柵化。另一方面,掃描輸出或DAC輸出是基于幀緩沖器的內(nèi)容將信號(hào)發(fā)送到監(jiān)視器或LCD的過(guò)程。
由于隱含的任務(wù)和計(jì)算資源的規(guī)范,計(jì)算機(jī)系統(tǒng)的圖形子系統(tǒng)通常用于在顯示屏幕上顯示圖形對(duì)象。三維(3-D)計(jì)算機(jī)圖形的目的一般是在計(jì)算機(jī)屏幕上創(chuàng)建實(shí)際以三維表示一個(gè)或多個(gè)對(duì)象的二維(2-D)圖像。實(shí)際上,對(duì)象占據(jù)具有真實(shí)高度、真實(shí)寬度和真實(shí)深度的三個(gè)維度。照片是3-D空間的2-D表示的一個(gè)示例。3-D計(jì)算機(jī)圖形一般與照片相似,因?yàn)樗鼈兌荚谟?jì)算機(jī)屏幕的2-D空間上表示3-D世界,不同之處在于底層圖像一般是用3-D幾何結(jié)構(gòu)和表面紋理來(lái)建模的。
用3-D計(jì)算機(jī)圖形創(chuàng)建的圖像在各種各樣應(yīng)用程序中使用,從視頻娛樂(lè)游戲到飛機(jī)模擬器,到以真實(shí)的方式描繪個(gè)人對(duì)給定時(shí)間點(diǎn)的場(chǎng)景的視野。3-D計(jì)算機(jī)圖形的公知示例包括諸如Terminator II、Jurassic Park、Toy Story等好萊塢影片中的特殊效果。在過(guò)去幾年中遇到尤其大量的增長(zhǎng)的一個(gè)行業(yè)是計(jì)算機(jī)游戲行業(yè),且當(dāng)代的計(jì)算機(jī)游戲以不斷增長(zhǎng)的方式來(lái)應(yīng)用3-D圖形技術(shù)。同時(shí),游戲的速度也被驅(qū)動(dòng)得越來(lái)越快。這一組合刺激了對(duì)在相對(duì)廉價(jià)的系統(tǒng)中迅速且靈活地呈現(xiàn)3-D圖像的真實(shí)需求。
然而,依照這些與圖形子系統(tǒng)相關(guān)聯(lián)的迅速移動(dòng)的趨勢(shì)線,兼容性、安全性和權(quán)限管理相應(yīng)地也演變?yōu)閱?wèn)題。當(dāng)每新的一代GPU和相關(guān)聯(lián)的硬件代替了前一代時(shí),除硬件之外,到管道的接口(例如,DirectX8、DirectX9、GDI、GDI+等)也必需進(jìn)化,且如果期望它們處理對(duì)“舊”接口的調(diào)用,則需要編寫(xiě)確保對(duì)較舊的硬件的支持的單獨(dú)代碼。在幾代之后,任何一個(gè)特定操作系統(tǒng)的圖形接口代碼保持可管理的可能性遞減,且由于不兼容的函數(shù)調(diào)用而引起的處理中的錯(cuò)誤的可能性隨著兼容性代碼扇出的效果變得根深蒂固而遞增。另一問(wèn)題是圖形接口代碼的完全獨(dú)立的“變形”由于不同操作系統(tǒng)或平臺(tái)(Macintosh、Linux、Windows等)或甚至是包括在同一平臺(tái)上的不同變形(例如,OpenGL、GDI+、DirectX等)而擴(kuò)展。由此,仍存在這樣的問(wèn)題,其中,不同版本的操作系統(tǒng)、圖形接口和相關(guān)聯(lián)的硬件可能不能都是共同支持的,且這些問(wèn)題隨著時(shí)間的推移變得越來(lái)越復(fù)雜。期望減輕這一問(wèn)題而不修改向任何特定操作系統(tǒng)或接口集提供的核心代碼。
對(duì)于同一背景,對(duì)圖形管道解決安全性和內(nèi)容保護(hù)/數(shù)字權(quán)限管理(DRM)的問(wèn)題變得更復(fù)雜。對(duì)于不同的操作系統(tǒng)、接口和硬件,沒(méi)有跨所有已知管道實(shí)施數(shù)據(jù)安全性或?qū)嵤﹥?nèi)容/數(shù)字權(quán)限管理?xiàng)l件的保護(hù)的公共機(jī)制。由此,需要一種用于與圖形管道無(wú)關(guān)地工作的、解決數(shù)據(jù)安全和/或DRM的問(wèn)題的公共方法或?qū)印?br>
由此,期望的是通過(guò)提供虛擬機(jī)作為主機(jī)處理器和CPU之間的交互層,來(lái)虛擬化計(jì)算機(jī)系統(tǒng)的圖形管道。還期望的是實(shí)現(xiàn)克服當(dāng)使用各種版本的操作系統(tǒng)或接口或GPU的各種體系結(jié)構(gòu)時(shí)遇到的當(dāng)前的兼容性、安全性和內(nèi)容保護(hù)/DRM問(wèn)題的系統(tǒng)和方法。
發(fā)明內(nèi)容
考慮本領(lǐng)域的上述和其它缺點(diǎn),本發(fā)明提供了用于向圖形硬件空間應(yīng)用虛擬機(jī)的系統(tǒng)和方法。在本發(fā)明的各實(shí)施例中,盡管監(jiān)管代碼運(yùn)行在GPU上,然而實(shí)際的圖形工作項(xiàng)直接運(yùn)行在圖形硬件上。在一個(gè)非限制的實(shí)施例中,監(jiān)管代碼被結(jié)構(gòu)化為圖形虛擬機(jī)監(jiān)控程序。
使用虛擬機(jī)監(jiān)控程序(VMM)技術(shù),在單獨(dú)的虛擬機(jī)中與諸如新版本操作系統(tǒng)(OS)等第二OS同時(shí)運(yùn)行諸如原始OS版本等第一OS,從而保持了應(yīng)用程序兼容性。在一個(gè)實(shí)施例中,應(yīng)用于主機(jī)處理器的VMM技術(shù)擴(kuò)展到圖形處理單元(GPU),以允許硬件訪問(wèn)圖形加速器,從而確保傳統(tǒng)應(yīng)用程序以全部的性能操作。本發(fā)明也提供了在不同的VM中運(yùn)行多個(gè)應(yīng)用程序的同時(shí)使得用戶體驗(yàn)表面上無(wú)縫的方法。在本發(fā)明的其它方面,通過(guò)采用VMM技術(shù),擴(kuò)展了本發(fā)明的虛擬化圖形體系結(jié)構(gòu),以提供可信的服務(wù)和內(nèi)容保護(hù)。
下文將描述本發(fā)明的其它優(yōu)點(diǎn)和特征。
依照本發(fā)明用于虛擬化GPU的系統(tǒng)和方法將參考附圖來(lái)進(jìn)一步描述,附圖中圖1是示出圖形管道的現(xiàn)有技術(shù)實(shí)現(xiàn)的框圖;圖2A是示出用于計(jì)算機(jī)系統(tǒng)中的仿真操作環(huán)境的硬件和軟件體系結(jié)構(gòu)的邏輯分層的框圖;圖2B是示出虛擬化計(jì)算系統(tǒng)的框圖,其中仿真是由主機(jī)操作系統(tǒng)(直接或通過(guò)系統(tǒng)管理程序)來(lái)執(zhí)行的;圖2C是示出另一虛擬化計(jì)算系統(tǒng)的框圖,其中仿真是由與主機(jī)操作系統(tǒng)并排運(yùn)行的虛擬機(jī)監(jiān)控程序執(zhí)行的;圖3A示出了用于向圖形硬件空間應(yīng)用虛擬機(jī)的第一非限制體系結(jié)構(gòu),其中,監(jiān)管代碼運(yùn)行在CPU上,但圖形工作項(xiàng)直接由圖形硬件處理;圖3B示出了依照本發(fā)明被提供來(lái)虛擬化圖形管道的另一示例性非限制體系結(jié)構(gòu);圖4A依照本發(fā)明示出了用于“一次顯示單個(gè)桌面”的實(shí)施例;圖4B依照本發(fā)明示出了另一“窗口中的桌面”實(shí)施例,其中,所有的桌面可被同時(shí)顯示;圖4C依照本發(fā)明示出了用于混和可信和非可信應(yīng)用程序數(shù)據(jù)的示例性體系結(jié)構(gòu);圖4D示出了可信部分的擴(kuò)展,以包括媒體互操作性網(wǎng)關(guān),作為內(nèi)容的單獨(dú)保護(hù)層;
圖4E示出了示例性交互,其中在主機(jī)OS上執(zhí)行的客機(jī)OS傳統(tǒng)應(yīng)用程序與客機(jī)OS的傳統(tǒng)服務(wù)組件交互以仿真?zhèn)鹘y(tǒng)行為;圖5是示出依照按本發(fā)明提供的虛擬化圖形體系結(jié)構(gòu)的一個(gè)或多個(gè)實(shí)施例處理圖形數(shù)據(jù)的一個(gè)示例性非限制序列的流程圖;圖6A是示出具有其中可實(shí)現(xiàn)本發(fā)明的各種計(jì)算設(shè)備的示例性網(wǎng)絡(luò)環(huán)境的框圖;圖6B是示出其中可實(shí)現(xiàn)本發(fā)明的示例性非限制計(jì)算設(shè)備的框圖。
具體實(shí)施例方式
綜述如上所述,本發(fā)明提供了用于向圖形硬件空間應(yīng)用虛擬機(jī)的系統(tǒng)和方法。在本發(fā)明的各實(shí)施例中,盡管諸如圖形虛擬機(jī)監(jiān)控程序等監(jiān)管代碼運(yùn)行在CPU上,然而實(shí)際的圖形工作項(xiàng)直接運(yùn)行在圖形硬件上。
在本發(fā)明的一個(gè)非限制方面,提供了用于將圖形硬件功能分成特許和非特許操作以及用于有效地虛擬化特許操作,并同時(shí)維持無(wú)縫的用戶體驗(yàn)的系統(tǒng)和方法。在本發(fā)明的另一非限制方面,實(shí)現(xiàn)了硬件中斷處理的有效虛擬化。在其它方面,本發(fā)明提供了仿真層中的資源管理能力,用于向分區(qū)分派諸如存儲(chǔ)器、處理周期、屏幕實(shí)際狀況等預(yù)先固定的分配,和/或用于依照系統(tǒng)的跨應(yīng)用程序和跨平臺(tái)參數(shù)/需求來(lái)動(dòng)態(tài)地分派這些資源。
該體系結(jié)構(gòu)的另一有益的結(jié)果是本發(fā)明允許虛擬分區(qū)直接訪問(wèn)圖形硬件,而無(wú)需改變客機(jī)操作系統(tǒng)或應(yīng)用程序。許多應(yīng)用也從本發(fā)明的基本體系結(jié)構(gòu)中導(dǎo)出,例如,傳統(tǒng)代碼可使用傳統(tǒng)操作系統(tǒng)的實(shí)例保留在舊操作系統(tǒng)中,以執(zhí)行依賴(lài)于傳統(tǒng)代碼的應(yīng)用程序。另一示例是構(gòu)建可信和非可信服務(wù)的概念,它進(jìn)而可用于支持可信圖形輸出或內(nèi)容保護(hù)技術(shù)。
依照本發(fā)明提供的其它系統(tǒng)和方法涉及用戶體驗(yàn)。采用多個(gè)分區(qū),由本發(fā)明提供的一種用戶體驗(yàn)是“窗口中的桌面”方法,其中,對(duì)每一客機(jī)操作系統(tǒng)顯示的桌面被重定向到顯示設(shè)備(或在多個(gè)監(jiān)視器的情況下是多個(gè)顯示設(shè)備,有時(shí)候被稱(chēng)為“多監(jiān)視器”上的窗口(或替換的桌面視圖。在其它實(shí)施例中,本發(fā)明啟用了允許來(lái)自不同客機(jī)操作系統(tǒng)的窗口混和在單個(gè)同一的顯示中的用戶體驗(yàn),由此標(biāo)識(shí)了與任何特定的窗口相關(guān)聯(lián)的“像素”。在一個(gè)實(shí)施例中,本發(fā)明通過(guò)向客機(jī)操作系統(tǒng)添加“助手程序”來(lái)標(biāo)識(shí)各窗口的各部分,實(shí)現(xiàn)了標(biāo)識(shí)像素與其窗口的關(guān)聯(lián)。在其它實(shí)施例中,本發(fā)明允許與客機(jī)“窗口管理器”交互,以確保主桌面中的未遮蔽窗口在虛擬客機(jī)操作系統(tǒng)桌面中也是未遮蔽的,使得它們可在主桌面中提取和顯示。在其它實(shí)施例提供了圖形硬件支持,以部分或全部地幫助標(biāo)識(shí)來(lái)自不同窗口的像素的存儲(chǔ)器位置。
本發(fā)明也包括提供附加圖形硬件支持來(lái)幫助管理虛擬桌面上的窗口的實(shí)施例。盡管有未來(lái)的操作系統(tǒng)可添加支持來(lái)使得該任務(wù)更容易的區(qū)域,然而概念是啟用標(biāo)識(shí)來(lái)自不同客機(jī)操作系統(tǒng)的各個(gè)窗口的框架,并使該數(shù)據(jù)對(duì)組成多個(gè)來(lái)源的非統(tǒng)一演示服務(wù)(有時(shí)候也稱(chēng)為桌面合成引擎)可用。該引擎能夠訪問(wèn)來(lái)自多個(gè)客機(jī)的圖形存儲(chǔ)器狀態(tài),而客機(jī)一般不能看見(jiàn)彼此的函數(shù)調(diào)用和活動(dòng)。
啟用顯示輸出相對(duì)于各自客機(jī)OS的內(nèi)容的復(fù)雜分層合成效果的一種方法是使演示引擎從不同的客機(jī)OS中“拉”出窗口內(nèi)容,以構(gòu)建合成桌面。一個(gè)替換方法是允許客機(jī)OS直接向單個(gè)主桌面呈現(xiàn),即,向該存儲(chǔ)器呈現(xiàn),但使用特殊的硬件支持來(lái)約束客機(jī)OS能夠繪制的桌面部分。例如,可使用類(lèi)似于用于硬件窗口裁剪的機(jī)制的單獨(dú)的特許機(jī)制來(lái)控制可允許的區(qū)域,在該裁剪機(jī)制中,矩形或位圖的列表定義了指示哪些像素可寫(xiě)的掩碼??蓪⑦@一方法實(shí)現(xiàn)為“推”操作,其中,客機(jī)OS直接向桌面繪制,且演示引擎控制對(duì)每一客機(jī)OS可寫(xiě)的區(qū)域在哪里。
在各實(shí)施例中,本發(fā)明提供了用于標(biāo)識(shí)和定位來(lái)自由第一OS呈現(xiàn)的窗口和由第二OS呈現(xiàn)的窗口的像素,并以某種用于顯示的方式每次一個(gè)或組合在一起來(lái)呈現(xiàn)窗口的系統(tǒng)和方法。本發(fā)明也包括用于向第二OS分配和分派諸如視頻或系統(tǒng)存儲(chǔ)器等物理資源,使得所分派的資源直接可被第二OS訪問(wèn),且未分派的資源不可被第二OS訪問(wèn)的系統(tǒng)和方法。本發(fā)明還提供了用于截取和有效地仿真特許操作的系統(tǒng)和方法。
下文將描述本發(fā)明的其它更詳細(xì)方面,但是首先,以下描述提供了用于虛擬機(jī)和相關(guān)聯(lián)的術(shù)語(yǔ)的綜述和某些公共詞匯,因?yàn)閷?duì)于操作系統(tǒng)和主機(jī)處理器(“CPU”)虛擬化技術(shù),必須知道這些術(shù)語(yǔ)。通過(guò)這樣做,闡明了一組詞匯,本領(lǐng)域的普通技術(shù)人員會(huì)發(fā)現(xiàn)該組詞匯對(duì)于以下依照本發(fā)明用于提供計(jì)算系統(tǒng)的圖形子系統(tǒng)側(cè)的仿真能力的裝置、系統(tǒng)和方法的描述是有用的。
虛擬機(jī)綜述計(jì)算機(jī)包括被設(shè)計(jì)成執(zhí)行一組特定的系統(tǒng)指令的通用中央處理單元(CPU)或“處理器”。具有類(lèi)似的體系結(jié)構(gòu)或設(shè)計(jì)規(guī)范的一組處理器被認(rèn)為是同一處理器家族的成員。當(dāng)前的處理器家族的示例包括由國(guó)際商業(yè)機(jī)器(IBM)公司或亞利桑那州菲尼克斯市的摩托羅拉公司生產(chǎn)的Motorola 680X0處理器家族;由加利福尼亞州桑尼維爾市的英特爾公司生產(chǎn)的Intel 80X86處理器家族;以及由摩托羅拉公司生產(chǎn)的并在加利福尼亞州庫(kù)珀蒂諾市的蘋(píng)果計(jì)算機(jī)公司生產(chǎn)的計(jì)算機(jī)中使用的PowerPC處理器家族。盡管一組處理器由于其類(lèi)似的體系結(jié)構(gòu)和設(shè)計(jì)思想可以在同一家族中,然而處理器可依照其時(shí)鐘速度和其它性能參數(shù)而在家族中各不相同。
每一微處理器執(zhí)行對(duì)該處理器家族唯一的指令。處理器或處理器家族可執(zhí)行的共同的指令集被稱(chēng)為處理器的指令集。作為示例,由Intel 80X86處理器家族使用的指令集與由PowerPC處理器家族使用的指令集不兼容。Intel 80X86指令集基于復(fù)雜指令集計(jì)算機(jī)(CISC)格式。Motorola PowerPC指令集基于精簡(jiǎn)指令集計(jì)算機(jī)(RISC)格式。CISC處理器使用大量的指令,某些指令能夠執(zhí)行相當(dāng)復(fù)雜的功能,但是一般需要許多時(shí)鐘周期來(lái)執(zhí)行。RISC處理器使用了較少數(shù)量的可用指令來(lái)執(zhí)行以較高速率執(zhí)行的一組較簡(jiǎn)單的功能。
處理器家族在計(jì)算機(jī)系統(tǒng)之中的唯一性通常也導(dǎo)致計(jì)算機(jī)系統(tǒng)的硬件體系結(jié)構(gòu)的其它硬件之間的不兼容性。用來(lái)自Intel 80X86處理器家族的處理器制造的計(jì)算機(jī)系統(tǒng)將具有與用來(lái)自PowerPC處理器家族的處理器制造的計(jì)算機(jī)系統(tǒng)的硬件體系結(jié)構(gòu)不同的硬件體系結(jié)構(gòu)。由于處理器指令集和計(jì)算機(jī)系統(tǒng)的硬件體系結(jié)構(gòu)的唯一性,通常編寫(xiě)應(yīng)用軟件程序以在運(yùn)行特定操作系統(tǒng)的特定計(jì)算機(jī)系統(tǒng)上運(yùn)行。
一般而言,計(jì)算機(jī)制造商試圖通過(guò)使得更多而不是更少的應(yīng)用程序運(yùn)行在與計(jì)算機(jī)制造商的產(chǎn)品線相關(guān)聯(lián)的微處理器家族上來(lái)最大化其市場(chǎng)份額。為擴(kuò)展可運(yùn)行在計(jì)算機(jī)系統(tǒng)上的操作系統(tǒng)和應(yīng)用程序的數(shù)量,開(kāi)發(fā)了一種技術(shù)領(lǐng)域,其中,具有被稱(chēng)為主機(jī)的一種類(lèi)型的CPU的給定計(jì)算機(jī)將包括允許主計(jì)算機(jī)仿真被稱(chēng)為客機(jī)的不相關(guān)類(lèi)型CPU的指令的虛擬化器程序。由此,主計(jì)算機(jī)將執(zhí)行使得響應(yīng)于給定客機(jī)指令而調(diào)用一個(gè)或多個(gè)主機(jī)指令的應(yīng)用程序,并且以此方式,主計(jì)算機(jī)可運(yùn)行為其自己的硬件體系結(jié)構(gòu)設(shè)計(jì)的軟件和為具有不相關(guān)硬件體系結(jié)構(gòu)的計(jì)算機(jī)編寫(xiě)的軟件兩者。
作為一個(gè)更具體示例,例如,由蘋(píng)果計(jì)算機(jī)公司制造的計(jì)算機(jī)系統(tǒng)可運(yùn)行為基于PC的計(jì)算機(jī)系統(tǒng)編寫(xiě)的操作系統(tǒng)和程序。也可能使用虛擬化器程序以在單個(gè)CPU上并發(fā)地執(zhí)行多個(gè)不兼容的操作系統(tǒng)。在后一安排中,盡管每一操作系統(tǒng)彼此不兼容,但是虛擬化器程序可作為若干操作系統(tǒng)的每一個(gè)的主機(jī),并由此允許不兼容的操作系統(tǒng)并發(fā)地在同一主計(jì)算機(jī)系統(tǒng)上運(yùn)行。
當(dāng)在主計(jì)算機(jī)系統(tǒng)上仿真客計(jì)算機(jī)系統(tǒng)時(shí),客計(jì)算機(jī)系統(tǒng)被認(rèn)為是“虛擬機(jī)”,因?yàn)榭陀?jì)算機(jī)系統(tǒng)僅作為一個(gè)特定硬件體系結(jié)構(gòu)的操作的純軟件表示存在于主計(jì)算機(jī)系統(tǒng)中。術(shù)語(yǔ)虛擬化器、仿真器、直接執(zhí)行器、虛擬機(jī)和處理器仿真有時(shí)互換地使用,以表示使用本領(lǐng)域的技術(shù)人員已知和理解的一種或幾種方法來(lái)模擬或仿真整個(gè)計(jì)算機(jī)系統(tǒng)的硬件體系結(jié)構(gòu)的能力。此外,以任何形式對(duì)術(shù)語(yǔ)“仿真”的所有使用旨在傳達(dá)這一廣泛的意義,并非在虛擬機(jī)中的操作系統(tǒng)指令的仿真和直接執(zhí)行的指令執(zhí)行概念之間進(jìn)行區(qū)分。由此,例如,由加利福尼亞州圣馬特奧市的Connectix公司創(chuàng)建的Virtual PC軟件“仿真”(通過(guò)指令執(zhí)行仿真和/或直接執(zhí)行)包括Intel 80X86Pentium處理器和各種主板組件和卡的整個(gè)計(jì)算機(jī),并且這些組件的操作在運(yùn)行在主機(jī)器上的虛擬機(jī)中“仿真”。在諸如具有PowerPC處理器的計(jì)算機(jī)系統(tǒng)等主計(jì)算機(jī)的操作系統(tǒng)軟件和硬件體系結(jié)構(gòu)上執(zhí)行的虛擬化程序器模擬了整個(gè)客計(jì)算機(jī)系統(tǒng)的操作。
虛擬化的一般情況允許一種處理器體系結(jié)構(gòu)運(yùn)行來(lái)自其它處理器體系結(jié)構(gòu)的OS和程序(例如,在x86Windows上運(yùn)行PowerPC Mac程序,反之亦然),但是一個(gè)重要的特殊情況是當(dāng)?shù)讓犹幚砥黧w系結(jié)構(gòu)相同(在x86上運(yùn)行各種版本的x86Linux或不同版本的x86Windows)的時(shí)候。在后一情況下,可能更有效地執(zhí)行客機(jī)OS及其應(yīng)用程序,因?yàn)榈讓又噶罴窍嗤?。在這一情況下,允許客機(jī)指令直接在處理器上執(zhí)行,而不會(huì)丟失控制或讓系統(tǒng)對(duì)攻擊開(kāi)放(即,客機(jī)OS被裝入沙箱)。如下文將詳細(xì)描述的,這是特許和非特許之間的分隔以及用于控制對(duì)存儲(chǔ)器的訪問(wèn)的技術(shù)起作用的情況。對(duì)于存在體系結(jié)構(gòu)失配(PowerPC<->x86)的虛擬化,可使用兩種方法逐條指令仿真(相對(duì)較慢)或從客機(jī)指令集轉(zhuǎn)換成本機(jī)指令集(更有效,但使用了轉(zhuǎn)換步驟)。如果使用指令集仿真,則可相對(duì)容易地使得環(huán)境健壯;然而,如果使用轉(zhuǎn)換,則它映射回到處理器體系結(jié)構(gòu)相同的特殊情況。
依照本發(fā)明,圖形平臺(tái)被虛擬化,且由此依照本發(fā)明應(yīng)用于圖形體系結(jié)構(gòu)的一個(gè)示例性情形將是使用NVidia硬件對(duì)ATI卡的仿真。對(duì)于圖形虛擬化情況,在各實(shí)施例中,本發(fā)明集中于來(lái)自同一圖形體系結(jié)構(gòu)的命令的直接執(zhí)行。在圖形上下文中,轉(zhuǎn)換的等效物不實(shí)際存在,或者相反,仿真或轉(zhuǎn)換等于同一事物。轉(zhuǎn)換對(duì)處理器工作,因?yàn)橐坏┐a被轉(zhuǎn)換,該代碼可被執(zhí)行多次,由此攤銷(xiāo)了轉(zhuǎn)換成本。然而,由于結(jié)構(gòu)化圖形應(yīng)用程序的方式,要轉(zhuǎn)換的程序的等效物(忽略著色器)不必要存在。相反,經(jīng)常再生成命令流(工作項(xiàng)列表),因此不必要有可攤銷(xiāo)轉(zhuǎn)換成本的任何重用。在一個(gè)更復(fù)雜的實(shí)施例中,可檢查工作項(xiàng)列表來(lái)確定它們是否匹配預(yù)先轉(zhuǎn)換的列表。
如在下文各實(shí)施例中描述的,依照本發(fā)明的各實(shí)施例,如果可維持系統(tǒng)的安全性,則虛擬化的同時(shí)執(zhí)行客機(jī)指令(或者來(lái)自轉(zhuǎn)換,或者由于包含了同一處理器體系結(jié)構(gòu))具有性能益處。由此,在各實(shí)施例中,本發(fā)明描述了用于控制客機(jī)對(duì)部分或全部底層物理資源(存儲(chǔ)器、設(shè)備等)的訪問(wèn)的系統(tǒng)和方法。
虛擬化器程序擔(dān)當(dāng)主機(jī)機(jī)器的硬件體系結(jié)構(gòu)和由運(yùn)行在仿真的環(huán)境中的軟件(例如,操作系統(tǒng)、應(yīng)用程序等)發(fā)送的指令之間的互換。該虛擬化器程序可以是主機(jī)操作系統(tǒng)(HOS),它是直接運(yùn)行在物理計(jì)算機(jī)硬件上的操作系統(tǒng)(并且可包括系統(tǒng)管理程序,將在下文詳細(xì)討論)。或者,仿真的環(huán)境也可以是虛擬機(jī)監(jiān)控程序(VMM),它是直接運(yùn)行在硬件之上,可能與主機(jī)操作系統(tǒng)并排運(yùn)行且結(jié)合主機(jī)操作系統(tǒng)工作的軟件層,并可通過(guò)展示與VMM正在虛擬化的硬件相同的接口來(lái)虛擬化主機(jī)機(jī)器的所有資源(以及某些虛擬資源)。該虛擬化使得虛擬化器(以及主計(jì)算機(jī)系統(tǒng)本身)能夠不被運(yùn)行在其上的操作系統(tǒng)層注意到。
由此,處理器仿真使客機(jī)操作系統(tǒng)能夠在由虛擬化器創(chuàng)建的虛擬機(jī)上執(zhí)行,該虛擬化器運(yùn)行在包括物理硬件和主機(jī)操作系統(tǒng)兩者的主計(jì)算機(jī)系統(tǒng)上。
從概念的觀點(diǎn)來(lái)看,計(jì)算機(jī)系統(tǒng)一般包括運(yùn)行在基本硬件層上的一個(gè)或多個(gè)軟件層。這一分層是為了抽象的原因而完成的。通過(guò)對(duì)給定的軟件層定義接口,該層可以由其上的其它層不同地實(shí)現(xiàn)。在設(shè)計(jì)良好的計(jì)算機(jī)系統(tǒng)中,每一層僅了解(并僅依賴(lài)于)直接在其下方的層。這允許替換層或“?!?多個(gè)相鄰的層),而不會(huì)負(fù)面地影響所述層或棧之上的層。例如,軟件應(yīng)用程序(較高層)通常依賴(lài)于操作系統(tǒng)的較低層(較低層)以將文件寫(xiě)入某一形式的永久存儲(chǔ)中,并且這些應(yīng)用程序無(wú)需理解將數(shù)據(jù)寫(xiě)入軟盤(pán)、硬盤(pán)驅(qū)動(dòng)器或網(wǎng)絡(luò)文件夾的區(qū)別。如果該較低層用用于寫(xiě)文件的新操作系統(tǒng)組件來(lái)替換,則較高層軟件應(yīng)用程序的操作保持不受影響。
分層軟件的靈活性允許虛擬機(jī)(VM)呈現(xiàn)虛擬硬件層,它實(shí)際上是另一軟件層。以此方式,VM可為其上的軟件層創(chuàng)建該軟件層正在其自己的專(zhuān)用計(jì)算機(jī)系統(tǒng)上運(yùn)行的假象,并且因此,VM可允許多個(gè)“客機(jī)系統(tǒng)”并發(fā)地運(yùn)行在單個(gè)“主機(jī)系統(tǒng)”上。這一抽象級(jí)別是由圖2A的圖示來(lái)表示的。
圖2A是表示用于計(jì)算機(jī)系統(tǒng)中仿真的操作系統(tǒng)的硬件和軟件體系結(jié)構(gòu)的邏輯分層的圖示。在圖中,仿真程序94直接或間接運(yùn)行在物理硬件體系結(jié)構(gòu)92上。仿真程序94可以是(a)與主機(jī)操作系統(tǒng)并排運(yùn)行的虛擬機(jī)監(jiān)控程序,(b)具有本機(jī)仿真能力的專(zhuān)門(mén)化的主機(jī)操作系統(tǒng),或者(c)具有系統(tǒng)管理程序組件的主機(jī)操作系統(tǒng),其中所述系統(tǒng)管理程序組件執(zhí)行所述仿真。仿真程序94仿真客機(jī)硬件體系結(jié)構(gòu)96(被示為虛線,以示出該組件是“虛擬機(jī)”的事實(shí),即,不實(shí)際存在而是相反由所述仿真程序94仿真的硬件)??蜋C(jī)操作系統(tǒng)98在所述客機(jī)硬件體系結(jié)構(gòu)96上執(zhí)行,且軟件應(yīng)用程序100在客機(jī)操作系統(tǒng)98上運(yùn)行。在圖2A的仿真操作環(huán)境中,并且由于仿真程序94的操作,即使軟件應(yīng)用程序100被設(shè)計(jì)成運(yùn)行在一般與主機(jī)操作系統(tǒng)和硬件體系結(jié)構(gòu)92不兼容的操作系統(tǒng)上,軟件應(yīng)用程序100也可在計(jì)算機(jī)系統(tǒng)90中運(yùn)行。
圖2B示出了包括直接運(yùn)行在物理計(jì)算機(jī)硬件102上的主機(jī)操作系統(tǒng)軟件層104的虛擬化計(jì)算系統(tǒng),其中主機(jī)操作系統(tǒng)(主機(jī)OS)104通過(guò)展現(xiàn)與主機(jī)OS正在仿真(或“虛擬化”)的硬件相同的接口提供對(duì)物理計(jì)算機(jī)硬件102的資源的訪問(wèn),這進(jìn)而使主機(jī)OS不被運(yùn)行在其上的操作系統(tǒng)層注意到。再一次,為了執(zhí)行仿真,主機(jī)操作系統(tǒng)102可以是具有本機(jī)仿真能力的特別設(shè)計(jì)的操作系統(tǒng),或者它可以是具有用于執(zhí)行仿真的合并的系統(tǒng)管理程序組件(未示出)的標(biāo)準(zhǔn)操作系統(tǒng)。
再次參考圖2B,在主機(jī)OS104上的是兩個(gè)虛擬機(jī)(VM)實(shí)現(xiàn),即VM A108,它可以是例如虛擬化的Intel386處理器;以及VM B110,它可以是例如Motorola680X0處理器家族之一的虛擬化版本。在每一VM108和110上的分別是客機(jī)操作系統(tǒng)(客機(jī)OS)A112和B114。運(yùn)行在客機(jī)OS A112上的是兩個(gè)應(yīng)用程序,即應(yīng)用程序A1116和應(yīng)用程序A2118,而運(yùn)行在客機(jī)OS B114上的是應(yīng)用程序B1120。
對(duì)于圖2B,重要的是注意,VMA108和VMB110(用虛線示出)是虛擬化的計(jì)算機(jī)硬件表示,它們僅作為軟件構(gòu)造存在,并且由于專(zhuān)門(mén)仿真軟件的執(zhí)行而變得可能,這些專(zhuān)門(mén)仿真軟件不僅分別向客機(jī)OS A112和客機(jī)OS B114呈現(xiàn)了VMA108和VM B110,而且還執(zhí)行客機(jī)OS A112和客機(jī)OS B114間接與真實(shí)的物理計(jì)算機(jī)硬件102交互所必需的所有軟件步驟。
圖2C示出了另一虛擬化的計(jì)算系統(tǒng),其中,仿真由與主機(jī)操作系統(tǒng)104″并排運(yùn)行的虛擬機(jī)監(jiān)控程序(VMM)104′執(zhí)行。對(duì)于某些實(shí)施例,VMM可以是運(yùn)行在主機(jī)操作系統(tǒng)104上并僅通過(guò)所述主機(jī)操作系統(tǒng)104與計(jì)算機(jī)硬件交互的應(yīng)用程序。在其它實(shí)施例中,如圖2C所示,VMM可以改為包括部分獨(dú)立軟件系統(tǒng),它在某一級(jí)別通過(guò)主機(jī)操作系統(tǒng)104間接與計(jì)算機(jī)硬件102交互,而在其它級(jí)別,VMM直接與計(jì)算機(jī)硬件102交互(類(lèi)似于主機(jī)操作系統(tǒng)直接與計(jì)算機(jī)硬件交互的方式)。在另外的實(shí)施例中,VMM可包括完全獨(dú)立的軟件系統(tǒng),它在所有級(jí)別都直接與計(jì)算機(jī)硬件102交互(類(lèi)似于主機(jī)操作系統(tǒng)直接與計(jì)算機(jī)硬件交互的方式),而不利用主機(jī)操作系統(tǒng)104(盡管在協(xié)調(diào)使用所述計(jì)算機(jī)硬件102和避免沖突等的范圍內(nèi)仍與所述主機(jī)操作系統(tǒng)104交互)。
用于實(shí)現(xiàn)虛擬機(jī)的所有這些變體都被預(yù)期形成此處所描述的本發(fā)明的替換實(shí)施例,并且此處沒(méi)有內(nèi)容應(yīng)當(dāng)被解釋為將本發(fā)明限于特定的仿真實(shí)施例。另外,對(duì)應(yīng)用程序116、118和120之間分別通過(guò)VM A108和/或VM B110的交互(假定在硬件仿真的情形中)的任何參考應(yīng)當(dāng)被解釋為實(shí)際上是應(yīng)用程序116、118和120與創(chuàng)建虛擬化的虛擬化器之間的交互。同樣,對(duì)應(yīng)用程序VM A108和/或VM B110與主機(jī)操作系統(tǒng)104和/或計(jì)算機(jī)硬件102之間的交互(假定直接或間接在計(jì)算機(jī)硬件102上執(zhí)行計(jì)算機(jī)指令)的任何參考應(yīng)當(dāng)被解釋為實(shí)際上是創(chuàng)建虛擬化的虛擬化器與主機(jī)操作系統(tǒng)104和/或計(jì)算機(jī)硬件102之間在適當(dāng)時(shí)的交互。
用于虛擬化GPU和圖形管道的系統(tǒng)和方法如所述的,本發(fā)明提供了用于向圖形硬件空間應(yīng)用虛擬機(jī)的系統(tǒng)和方法,由此,監(jiān)管代碼運(yùn)行在CPU上,而圖形工作項(xiàng)直接由圖形硬件處理。圖3A示出了第一非限制體系結(jié)構(gòu),它示出了某些通用概念。例如,如圖所示,在計(jì)算設(shè)備的圖形硬件302的上方分層了虛擬機(jī)監(jiān)控程序304。以非限制的方式,該實(shí)施例類(lèi)似于客機(jī)OS來(lái)對(duì)待主機(jī)OS,因?yàn)槠涿恳粋€(gè)都接收虛擬機(jī)。運(yùn)行應(yīng)用程序H1和應(yīng)用程序H2的主機(jī)OS310由主機(jī)虛擬機(jī)308主存。運(yùn)行應(yīng)用程序A1的客機(jī)OS A330由虛擬機(jī)A328主存。運(yùn)行應(yīng)用程序B1的客機(jī)OS B340由虛擬機(jī)B338主存。在一個(gè)非限制實(shí)施例中,監(jiān)管代碼被結(jié)構(gòu)化為圖形虛擬機(jī)監(jiān)控程序。
本發(fā)明的目標(biāo)是在較新的操作系統(tǒng)中提供對(duì)舊圖形軟件的連續(xù)支持,并且本發(fā)明的各虛擬化體系結(jié)構(gòu)實(shí)現(xiàn)了該目標(biāo)。將舊功能帶到新操作系統(tǒng)中的解決方案僅僅復(fù)雜化了新的操作系統(tǒng),這是依照本發(fā)明的體系結(jié)構(gòu)要避免的結(jié)果。依照本發(fā)明提供的解決方案包括與新系統(tǒng)一起運(yùn)行舊操作系統(tǒng)的虛擬版本,并且僅在舊操作系統(tǒng)實(shí)例中支持舊圖形軟件。這利用了上文中所描述的虛擬機(jī)和虛擬機(jī)監(jiān)控程序的概念,并且在如Virtual PC和VMware等市場(chǎng)上可購(gòu)買(mǎi)的產(chǎn)品中使用。然而,在這些基于PC的體系結(jié)構(gòu)中,虛擬操作系統(tǒng)“分區(qū)”中的圖形軟件通常被仿真,并且比原始的非虛擬化實(shí)現(xiàn)慢得多地執(zhí)行。由此,依照本發(fā)明,允許圖形軟件棧在舊(即,客機(jī))操作系統(tǒng)下運(yùn)行時(shí)繼續(xù)能夠直接訪問(wèn)底層圖形硬件。這類(lèi)似于被稱(chēng)為類(lèi)型II虛擬機(jī)監(jiān)控程序的東西,其中客機(jī)操作系統(tǒng)可直接運(yùn)行在處理器上,而無(wú)需由虛擬機(jī)監(jiān)控程序的昂貴仿真。
圖形硬件中需要支持以允許多個(gè)操作系統(tǒng)分區(qū)在不為彼此所知且不知道圖形硬件被虛擬化的情況下在圖形硬件上運(yùn)行。由此,依照本發(fā)明的實(shí)施例,一種圖形虛擬機(jī)監(jiān)控程序管理資源,并控制哪一分區(qū)在圖形硬件上執(zhí)行。使用本發(fā)明,多個(gè)客機(jī)操作系統(tǒng)可并行地運(yùn)行,且每一個(gè)都具有對(duì)圖形硬件的(幾乎)全速的直接訪問(wèn)。某些客機(jī)可以是運(yùn)行較舊軟件的傳統(tǒng)操作系統(tǒng),而其它客機(jī)可完成其它特定的任務(wù)。
本發(fā)明的執(zhí)行產(chǎn)生了提供安全處理的實(shí)施例,其中安全處理可以在“主機(jī)”或“客機(jī)”操作系統(tǒng)的任一個(gè)中運(yùn)行。依照本發(fā)明實(shí)現(xiàn)該目的是圖形硬件的健壯和安全虛擬化的有利效果,使得客機(jī)操作系統(tǒng)不能彼此干擾。如果客機(jī)操作系統(tǒng)不能彼此干擾,則消除了不同客機(jī)操作系統(tǒng)上不為用戶所知地操作的欺詐性軟件的可能性。系統(tǒng)將虛擬機(jī)監(jiān)控程序處理為可信基或“可信內(nèi)核”。在本發(fā)明的各實(shí)施例中,可信基可被擴(kuò)展成另一客機(jī)(或主機(jī))操作系統(tǒng),以提供附加的可信圖形服務(wù)(而非將所有的服務(wù)都放在虛擬機(jī)監(jiān)控程序或內(nèi)核中)。這些服務(wù)可包括例如用安全或可信窗口管理器或桌面合成引擎對(duì)顯示器上什么可見(jiàn)的控制。這允許應(yīng)用程序的混合在可信和非可信操作系統(tǒng)分區(qū)中運(yùn)行,具有通過(guò)單個(gè)(或多個(gè))物理圖形設(shè)備的統(tǒng)一輸出。
安全基可以依照本發(fā)明進(jìn)一步擴(kuò)展以提供用于啟用內(nèi)容保護(hù)的更健壯的系統(tǒng),例如用于支持附加到文檔、視頻、音頻等的數(shù)字權(quán)限。這一系統(tǒng)充分利用了在可信虛擬機(jī)監(jiān)控程序和可信分區(qū)中操作的可信服務(wù)來(lái)實(shí)施數(shù)字權(quán)限。然而,回放應(yīng)用程序中的用戶界面和其它功能(媒體庫(kù)管理、播放列表等)可被分離,并運(yùn)行在與可信分區(qū)中的安全服務(wù)通信的不可信分區(qū)中。
當(dāng)顧客遷移到新的操作系統(tǒng)和新的操作系統(tǒng)版本時(shí),通過(guò)堅(jiān)持不懈地保存過(guò)時(shí)的軟件界面和行為(需要開(kāi)發(fā)周期中日益增長(zhǎng)的損失),從根本上保證了兼容性。設(shè)計(jì)和實(shí)現(xiàn)復(fù)雜性增加,且無(wú)意破壞傳統(tǒng)行為的風(fēng)險(xiǎn)貫穿整個(gè)開(kāi)發(fā)周期始終存在。因此,本發(fā)明提出了一種替換的開(kāi)發(fā)策略,其中,可從新開(kāi)發(fā)中在戰(zhàn)略上且安全地挑出傳統(tǒng)行為,同時(shí)仍保護(hù)顧客的投資。
使用虛擬機(jī)監(jiān)控程序(VMM)技術(shù)在單獨(dú)的虛擬機(jī)(VM)中與新OS同時(shí)運(yùn)行原始OS版本保持了應(yīng)用程序兼容性。將主機(jī)機(jī)器的傳統(tǒng)VMM技術(shù)擴(kuò)展到圖形處理單元(GPU),以允許對(duì)圖形加速器的硬件訪問(wèn),從而確保傳統(tǒng)應(yīng)用程序以完全的性能操作。本發(fā)明也提供了在不同VM中運(yùn)行多個(gè)應(yīng)用程序的同時(shí)使用戶體驗(yàn)表面上無(wú)縫的方法。在本發(fā)明的其它方面,通過(guò)采用VMM技術(shù),擴(kuò)展了本發(fā)明的虛擬化圖形體系結(jié)構(gòu),以提供可信服務(wù)和內(nèi)容保護(hù)/數(shù)字權(quán)限管理。
長(zhǎng)期的軟件成功不可避免地導(dǎo)致傳統(tǒng)的軟件界面和行為。新軟件革新和向后兼容性的對(duì)立要求導(dǎo)致更復(fù)雜且耗時(shí)的軟件設(shè)計(jì)周期。通過(guò)丟棄傳統(tǒng)的選擇位來(lái)流線化日益增長(zhǎng)的復(fù)雜性的嘗試使用了更多資源來(lái)評(píng)估決策,如果做出了錯(cuò)誤的決策將會(huì)增加風(fēng)險(xiǎn),且總是提供了邊際減緩。最終結(jié)果是核心技術(shù)中對(duì)革新和遞送的緩慢步伐,且注意力集中在不會(huì)干擾現(xiàn)狀的革新上。
一種替換方法是通過(guò)推進(jìn)操作系統(tǒng)軟件的較舊版本,同時(shí)保持它處于新開(kāi)發(fā)之外,來(lái)包含該較舊版本。由此,本發(fā)明使用了虛擬機(jī)監(jiān)控程序在單獨(dú)的虛擬機(jī)中與最新的OS版本同時(shí)運(yùn)行前一OS版本,同時(shí)提供了引人注目的用戶體驗(yàn),其中,使用較舊版本接口的應(yīng)用程序無(wú)縫或幾乎無(wú)縫地在為其設(shè)計(jì)這些應(yīng)用程序的同一環(huán)境中運(yùn)行,且以同樣的方式來(lái)表現(xiàn)。
在陳述本發(fā)明的各實(shí)施例之前,一個(gè)示例將是有益的。由此,假定對(duì)于OS的第二版本,即OS_B,期望它沒(méi)有在OS的第一版本,即OS_A中支持的某一圖形API集。然而,目標(biāo)是同時(shí)運(yùn)行OS_B和OS_A,即,使用OS-A圖形界面的應(yīng)用程序在OS_A虛擬“視圖”中運(yùn)行,而新的應(yīng)用程序在OS_B視圖中運(yùn)行,它們都具有同樣“良好”的用戶體驗(yàn)。定義什么構(gòu)成良好用戶體驗(yàn)是有些模糊的,但是某些基本規(guī)則可以不同地包括(A)當(dāng)使用任一OS視圖時(shí)無(wú)縫的用戶輸入(鍵盤(pán)、鼠標(biāo)等)以及應(yīng)用程序輸出(顯示器、打印機(jī)、多媒體等),(B)極少或沒(méi)有可感知的性能差異。可應(yīng)用的一個(gè)度量是運(yùn)行在OS_A視圖中的任何OS_A應(yīng)用程序的性能應(yīng)當(dāng)在沒(méi)有虛擬機(jī)監(jiān)控程序的OS的本機(jī)第一版本上運(yùn)行的同一應(yīng)用程序的5%之內(nèi),以及(C)OS_A虛擬視圖應(yīng)當(dāng)使用用于OS的第一版本的未修改的軟件。這是合乎需要的,因?yàn)橐坏┐蜷_(kāi)門(mén)路以允許對(duì)客機(jī)操作系統(tǒng)的改變,破壞兼容性的風(fēng)險(xiǎn)會(huì)通過(guò)背景技術(shù)中所描述的扇出重新顯現(xiàn)。放松這一要求的一種方法是通過(guò)允許附加助手應(yīng)用程序在未修改的客機(jī)OS下運(yùn)行以便于無(wú)縫操作。
提供用戶體驗(yàn)中的最小性能降級(jí)的一個(gè)問(wèn)題是提供圖形呈現(xiàn)服務(wù)的硬件加速。對(duì)于如圖形設(shè)備接口(GDI)等API,仿真軟件中的整個(gè)??赡苁菍?shí)用的,但是對(duì)于依賴(lài)于硬件加速的較新的API,性能降級(jí)可能是不可接受的。一個(gè)可能性是例如使用公知的圖形硬件設(shè)備的低級(jí)硬件接口的軟件仿真/俘獲將圖形處理請(qǐng)求從客機(jī)OS重定向到主機(jī)OS。
盡管這一傳統(tǒng)方法對(duì)于具有高級(jí)抽象(對(duì)每一請(qǐng)求有大量工作)或簡(jiǎn)單設(shè)備(例如,串行端口)的設(shè)備是成功的,但是對(duì)于現(xiàn)代的圖形硬件它是不實(shí)用的。在這一級(jí)別上俘獲請(qǐng)求一般效率太低(圖形硬件被設(shè)計(jì)成接受1GB/s以上的輸入數(shù)據(jù)),并且現(xiàn)代圖形硬件一般太復(fù)雜,以致于無(wú)法如實(shí)地在這一細(xì)節(jié)級(jí)別上進(jìn)行仿真(可以回想,現(xiàn)代圖形設(shè)備具有~2億個(gè)晶體管)。同時(shí),這一方法對(duì)于具有少于1千萬(wàn)個(gè)晶體管的設(shè)備以及對(duì)于圖形上較不密集的應(yīng)用程序可能是不實(shí)用的,但是即使在這些情況下,也不能提供所需的性能程度。
另一個(gè)選擇是在圖形協(xié)議流中的較高(設(shè)備無(wú)關(guān))點(diǎn)截聽(tīng)圖形協(xié)議流,,并將其重定向到主機(jī)OS。盡管這通過(guò)仿真復(fù)雜硬件消除了該問(wèn)題,但是如果包含高帶寬協(xié)議流,則會(huì)導(dǎo)致嚴(yán)重的性能問(wèn)題。可能導(dǎo)致的另一個(gè)問(wèn)題涉及協(xié)議流在沒(méi)有對(duì)客機(jī)OS的顯著改變的情況下不受截聽(tīng)的作用的情況。一種方法可以是用協(xié)議占位程序替換包含圖形API的系統(tǒng)動(dòng)態(tài)鏈接庫(kù)(DLL),以重定向到客機(jī)OS,盡管當(dāng)用于管理原始API中的狀態(tài)的方法未考慮這一方法而設(shè)計(jì)時(shí),該方法仍有嚴(yán)重的問(wèn)題。盡管被設(shè)計(jì)成遠(yuǎn)程執(zhí)行(“遠(yuǎn)程化”)的API可能具有可用于實(shí)現(xiàn)這一目標(biāo)的合理行為,但是并非所有的圖形和媒體API都是考慮了這一解決方案來(lái)設(shè)計(jì)的。再一次,該方法要求修改(替換)系統(tǒng)級(jí)組件,并由此引入了兼容性的風(fēng)險(xiǎn)。
本發(fā)明的各實(shí)施例的方法是將問(wèn)題推到硬件中,并繼續(xù)允許客機(jī)OS具有令人想起用于CPU的VMM技術(shù)的直接硬件訪問(wèn)。當(dāng)有效地實(shí)現(xiàn)時(shí),該技術(shù)有若干優(yōu)點(diǎn)。第一個(gè)優(yōu)點(diǎn)是消除了對(duì)客機(jī)OS做出改變的需求。第二個(gè)優(yōu)點(diǎn)是如同客機(jī)OS在硬件上本機(jī)地運(yùn)行一樣或高度相似的性能級(jí)別。應(yīng)當(dāng)注意,該模式允許傳統(tǒng)OS支持較新的圖形硬件,只要圖形硬件銷(xiāo)售商繼續(xù)運(yùn)送對(duì)傳統(tǒng)OS上新硬件的驅(qū)動(dòng)程序支持。由此,在本發(fā)明的各種虛擬化體系結(jié)構(gòu)中,構(gòu)建了可虛擬化的圖形硬件,并結(jié)構(gòu)化主機(jī)OS和VMM以有效地充分利用硬件,并且虛擬化了演示(顯示),使得它可被集成到合成桌面中。
因此,本發(fā)明允許每一VM對(duì)管道的端對(duì)端虛擬化訪問(wèn)圖形呈現(xiàn)資源、在GPU上創(chuàng)建VMM環(huán)境。具體地,這包括為多個(gè)圖形客戶機(jī)有效地虛擬化GPU的概念。在各實(shí)施例中,本發(fā)明的虛擬化體系結(jié)構(gòu)符合以下要求的一個(gè)或多個(gè)明確定義的執(zhí)行狀態(tài)(上下文)、低等待時(shí)間上下文切換支持、受保護(hù)的虛擬地址空間、需求分頁(yè)存儲(chǔ)器管理、以及特許執(zhí)行模式。這些要求用于提供多個(gè)客戶機(jī)(應(yīng)用程序)之中對(duì)GPU硬件資源的有效的、安全的和健壯的共享。
為簡(jiǎn)化虛擬化討論,總結(jié)依照本發(fā)明構(gòu)想的虛擬化支持的程度是有幫助的。最簡(jiǎn)單的類(lèi)推是應(yīng)當(dāng)能找到在現(xiàn)代CPU中找到的大致相同的GPU共享等級(jí),用于在多個(gè)客戶機(jī)(應(yīng)用程序)之中共享。這是GPU進(jìn)展的自然結(jié)果,它是應(yīng)當(dāng)在多個(gè)獨(dú)立的客戶機(jī)之間有效地共享的強(qiáng)大計(jì)算資源。與CPU的一個(gè)不同之處在于GPU是由運(yùn)行在CPU而非GPU上的可執(zhí)行代碼來(lái)管理的。相反,在某些驅(qū)動(dòng)程序模型中,內(nèi)核圖形子系統(tǒng)擔(dān)當(dāng)微型執(zhí)行器,它提供了調(diào)度和存儲(chǔ)器管理服務(wù),以及對(duì)諸如視頻顯示配置、電源管理等全局資源的控制。該微型執(zhí)行器獨(dú)立于內(nèi)核執(zhí)行器操作,從而使得其自己的具有算法和策略的調(diào)度和存儲(chǔ)器管理決策被調(diào)整到GPU客戶機(jī)的要求。
一旦滿足了虛擬化要求,可能允許客戶機(jī)驅(qū)動(dòng)程序直接訪問(wèn)GPU硬件。規(guī)則類(lèi)似于用于虛擬化其它內(nèi)核功能的那些規(guī)則,即,主存的驅(qū)動(dòng)程序應(yīng)當(dāng)不能夠檢測(cè)它正在VMM上運(yùn)行,且它應(yīng)當(dāng)不能夠繞過(guò)由VMM在適當(dāng)?shù)奈恢梅胖玫娜魏伪Wo(hù)機(jī)制。為本討論的目的,假設(shè)GPU VMM被嵌入在內(nèi)核VMM中,且對(duì)于所有的實(shí)用目的作為內(nèi)核VMM中的驅(qū)動(dòng)程序操作。圖形VMM可包括設(shè)備無(wú)關(guān)部分和設(shè)備相關(guān)部分(后者是由圖形硬件制造商提供的)。
圖3B示出了依照本發(fā)明被提供來(lái)虛擬化圖形管道的另一示例性非限制體系結(jié)構(gòu)。虛擬機(jī)監(jiān)控程序304包括組件圖形VMM,它依照本發(fā)明處理圖形功能和管理。具有主機(jī)圖形驅(qū)動(dòng)程序HGF的主機(jī)OS、具有圖形驅(qū)動(dòng)程序AGD的客機(jī)OS A以及具有圖形驅(qū)動(dòng)程序BGD的客機(jī)OS B的任一個(gè)可通過(guò)VMM304與圖形VMM交互。
由于使用VMM的動(dòng)機(jī)之一是效率,因此直接實(shí)現(xiàn)具有硬件支持的類(lèi)型II圖形VMM是有意義的。提供高級(jí)顯示驅(qū)動(dòng)程序模型(DDM)增加了對(duì)訪問(wèn)控制的虛擬地址空間、預(yù)占和特許操作的硬件支持。對(duì)于有效的VMM支持的一個(gè)嚴(yán)峻考驗(yàn)是在圖形VMM之上運(yùn)行現(xiàn)有的高級(jí)DDM驅(qū)動(dòng)程序而不改變?cè)擈?qū)動(dòng)程序。這意味著初始化卡、設(shè)置頁(yè)表、程序顯示控制器、設(shè)置PCI空隙、操縱被解釋為物理地址的輸入等的圖形子系統(tǒng)內(nèi)核操作應(yīng)當(dāng)生成對(duì)VMM的俘獲以供有效的解釋。中斷應(yīng)當(dāng)可由VMM截取并轉(zhuǎn)發(fā)到適當(dāng)?shù)?客機(jī))驅(qū)動(dòng)程序。諸如呈現(xiàn)操作等高頻非特許操作應(yīng)當(dāng)可由圖形硬件執(zhí)行而無(wú)需VMM的介入。
高級(jí)驅(qū)動(dòng)程序模型硬件支持多個(gè)執(zhí)行上下文,其每一個(gè)具有獨(dú)立的虛擬地址空間和輸入隊(duì)列(環(huán)形緩沖區(qū)),用于管理命令流的輸入DMA緩沖區(qū)。局部和系統(tǒng)物理存儲(chǔ)器資源通過(guò)將頁(yè)表?xiàng)l目初始化為指向物理地址而被映射到上下文的虛擬地址空間。命令流操作的完成使用存儲(chǔ)器寫(xiě)(柵欄)和中斷來(lái)發(fā)信號(hào)通知。
用于管理存儲(chǔ)器保護(hù)的一種方法是劃分本地圖形存儲(chǔ)器物理地址空間,并向每一虛擬機(jī)(客機(jī)OS)分配固定的連續(xù)分區(qū)。位于該分配外的存儲(chǔ)器對(duì)虛擬機(jī)是不可見(jiàn)的。這一機(jī)制可使用通過(guò)由圖形VMM編程的基本和有限的寄存器的簡(jiǎn)單間接級(jí)別來(lái)實(shí)現(xiàn)。這可能要求控制對(duì)驅(qū)動(dòng)程序可見(jiàn)的(由VMM俘獲的讀)PCI總線配置寄存器的內(nèi)容。在這一存儲(chǔ)器管理方案中,每一客機(jī)看到對(duì)客機(jī)生存周期固定的存儲(chǔ)器分配。這消除了對(duì)VMM俘獲頁(yè)表操作(可能是頻繁的)需求,因?yàn)閷?duì)硬件可見(jiàn)的物理地址空間的窗口由VMM仔細(xì)地控制。這是實(shí)現(xiàn)虛擬化存儲(chǔ)器支持的合理的第一種方法,因?yàn)樗筕MM位于詳細(xì)的存儲(chǔ)器管理之外,同時(shí)可論證地提供了對(duì)存儲(chǔ)器資源的效率較低的利用。
可以更長(zhǎng)期地構(gòu)想使VMM更多地牽涉在詳細(xì)的存儲(chǔ)器管理操作中。這部分將變得更復(fù)雜,因?yàn)橛沈?qū)動(dòng)程序用于對(duì)頁(yè)表?xiàng)l目編程的操作要由VMM俘獲。取決于分頁(yè)的性能目標(biāo),硬件設(shè)計(jì)可能需要被更仔細(xì)地設(shè)計(jì)以改進(jìn)檢測(cè)和仿真這些操作的效率。例如,設(shè)計(jì)頁(yè)映射操作(命令)可能是有益的,使得多個(gè)映射可被指定為一個(gè)組,且它們可被容易地識(shí)別并解碼為圖形VMM中的一組。這最小化了通過(guò)VMM的俘獲的數(shù)量。同樣,VMM可使用客機(jī)分區(qū)中(可信)服務(wù)來(lái)支持對(duì)后備存儲(chǔ)(除客機(jī)DDM驅(qū)動(dòng)程序所實(shí)現(xiàn)的之外的另一級(jí)后備存儲(chǔ))的分頁(yè)操作。盡管這一模式更復(fù)雜,然而它允許每一客機(jī)利用所有的硬件存儲(chǔ)器資源。
結(jié)合本發(fā)明的這些實(shí)施例所描述的方法包含了對(duì)軟件虛擬化的頁(yè)表的使用。對(duì)軟件虛擬化頁(yè)表的一種替換方法是在圖形硬件中添加另一組特許頁(yè)表,即另一間接級(jí)別,以供VMM直接使用。這是對(duì)固定分區(qū)所描述的基本和有限的寄存器方法的推廣,從而允許VMM在頁(yè)級(jí)粒度上控制圖形硬件的物理資源視圖。
至今為止討論的存儲(chǔ)器管理集中于管理本地圖形存儲(chǔ)器到圖形上下文的映射。在將系統(tǒng)存儲(chǔ)器頁(yè)到硬件的映射中也有類(lèi)似的要求,因?yàn)檫@些也使用物理存儲(chǔ)器地址。處理器VMM管理物理存儲(chǔ)器的方式進(jìn)入到構(gòu)想中。一般地,小心地管理使用物理地址的設(shè)備,以便對(duì)它們的映射保持完全的控制。再一次,通過(guò)添加圖形硬件控制來(lái)限制可用系統(tǒng)存儲(chǔ)器的窗口,可擴(kuò)展為視頻存儲(chǔ)器提議的簡(jiǎn)單的固定分區(qū)方案,以對(duì)系統(tǒng)存儲(chǔ)器工作。然而,如果處理器VMM在服務(wù)對(duì)客機(jī)的分配操作時(shí)分配了非連續(xù)的物理存儲(chǔ)器,則它是不適用的。這意味著必需對(duì)系統(tǒng)存儲(chǔ)器資源實(shí)現(xiàn)用于詳細(xì)存儲(chǔ)器管理的更復(fù)雜方案(建議同時(shí)完成本地圖形存儲(chǔ)器解決方案)??赡苡商幚砥鱒MM做出的關(guān)于管理需要被仔細(xì)檢查的物理存儲(chǔ)器和可能的與圖形VMM的交互的某些額外假設(shè)。
為允許更有效地處理中斷,可將中斷類(lèi)型劃分成需要由VMM處理的中斷和不需要由VMM處理的中斷。后一類(lèi)別可包括命令完成等,并且這些可直接由客機(jī)驅(qū)動(dòng)程序來(lái)處理。
其它主要管理類(lèi)別是對(duì)處理資源的調(diào)度。高級(jí)驅(qū)動(dòng)程序模型支持上下文預(yù)占,因此最簡(jiǎn)單的管理模型使VMM分配時(shí)間片給分區(qū),從而預(yù)占了來(lái)自當(dāng)前運(yùn)行分區(qū)的當(dāng)前運(yùn)行的圖形上下文?,F(xiàn)有的高級(jí)驅(qū)動(dòng)程序模型在指定要運(yùn)行的新的上下文列表時(shí)使用雙重緩沖運(yùn)行列表。存在不會(huì)有一個(gè)以上未完成運(yùn)行列表的假設(shè)。虛擬化調(diào)度模型要求某些修改,以使VMM能夠更容易地在運(yùn)行列表邊界處切換分區(qū),并進(jìn)一步確保當(dāng)做出到新分區(qū)的轉(zhuǎn)移時(shí)上下文狀態(tài)被保存在舊分區(qū)中并從新分區(qū)中恢復(fù)(例如,在上下文保存和恢復(fù)期間的適當(dāng)時(shí)刻映射適當(dāng)分區(qū)的存儲(chǔ)器資源)。再一次,存在對(duì)要考慮的處理器VMM調(diào)度程序的假設(shè)和與它的交互。
可實(shí)現(xiàn)一種更詳細(xì)的調(diào)度方案,其中圖形VMM更多地認(rèn)識(shí)到不同上下文的工作負(fù)載和優(yōu)先級(jí)。這一信息可對(duì)處理器VMM可用,以做出更智能的調(diào)度決策。關(guān)于圖形VMM是否可從與處理器VMM正在執(zhí)行的不同分區(qū)中執(zhí)行上下文存在某些有趣的設(shè)計(jì)問(wèn)題。在分區(qū)之間轉(zhuǎn)移時(shí),可能并且有可能必須允許某些重疊來(lái)最大化硬件利用。然而,它的確需要對(duì)在轉(zhuǎn)移期間如何管理和映射資源的更仔細(xì)的考慮。
對(duì)于虛擬化演示和交互,在第一實(shí)施例中,一旦虛擬化了圖形硬件,則每一客機(jī)創(chuàng)建其自己的桌面,并將窗口從客機(jī)應(yīng)用程序呈現(xiàn)到該桌面。這一客機(jī)桌面儲(chǔ)存在邏輯圖形存儲(chǔ)器中,并且在正常的環(huán)境中被掃描輸出到顯示設(shè)備(CRT或平板顯示器)。在虛擬化的環(huán)境中,多個(gè)客機(jī)桌面的內(nèi)容被收集在一起并顯示在單個(gè)顯示器上。有若干種方法來(lái)創(chuàng)建這一顯示,包括對(duì)多個(gè)虛擬桌面的供應(yīng)(每次一個(gè)桌面)、在其自己的窗口或單個(gè)統(tǒng)一桌面中對(duì)桌面的供應(yīng)。
在第一實(shí)施例中,單個(gè)客機(jī)桌面被選為“當(dāng)前”桌面并被顯示。使用某一UI控件,用戶可在不同的客機(jī)之間進(jìn)行選擇,但是每次僅顯示一個(gè)。這一方法是最簡(jiǎn)單的,因?yàn)橹恍栾@示各個(gè)客機(jī)桌面圖像。實(shí)際上,UI控件確定了允許哪一客機(jī)設(shè)置顯示器控制器的掃描輸出寄存器。
圖4A示出了“一次顯示單個(gè)桌面”的實(shí)施例??梢钥吹?,每一虛擬機(jī)在本地圖形存儲(chǔ)器中接收其自己的桌面空間,其中每一空間彼此獨(dú)立,由此僅由用戶選中的“活動(dòng)”桌面被掃描輸出到顯示器。由此,客機(jī)能夠光柵化其各自的工作項(xiàng),并使它們?cè)诖鎯?chǔ)器中的某一地方,且演示引擎能夠控制顯示哪一存儲(chǔ)器(包含光柵化的位),這可能包含調(diào)整內(nèi)容大小或移動(dòng)內(nèi)容的附加光柵化處理。
按照定義,第一實(shí)施例不允許多個(gè)桌面同時(shí)可見(jiàn)(盡管在多監(jiān)視器配置中,不同的顯示器控制器可顯示來(lái)自不同客機(jī)的桌面而非來(lái)自同一客機(jī)的所有桌面)。一種替換方法是第二實(shí)施例,其中在主機(jī)桌面上的單獨(dú)的容器窗口中顯示各個(gè)桌面。這使用了要運(yùn)行在主機(jī)上的服務(wù),該服務(wù)能夠訪問(wèn)每一客機(jī)桌面的內(nèi)容。該服務(wù)執(zhí)行一合成操作,以使用客機(jī)桌面作為輸入來(lái)構(gòu)造主機(jī)桌面。對(duì)每一客機(jī)桌面使用代理窗口,從而控制了桌面的大小和位置??蜋C(jī)桌面的內(nèi)容可通過(guò)截取對(duì)該桌面的顯示器控制器設(shè)置的改變(使用它們來(lái)確定存儲(chǔ)器地址、維度和其它參數(shù))直接從視頻存儲(chǔ)器內(nèi)容中獲取。以與使用桌面合成引擎(DCE)構(gòu)造典型桌面幾乎相同的方式來(lái)構(gòu)造合成主機(jī)桌面,也使用了硬件圖形加速。該第二實(shí)施例可與第一實(shí)施例組合,以支持具有客機(jī)桌面的單個(gè)直接視圖的模式,或在單獨(dú)的窗口中具有多個(gè)桌面的合成視圖的模式。
圖4B示出了替換的“窗口中的桌面”實(shí)施例,由此所有桌面可由演示引擎考慮遮蔽來(lái)同時(shí)顯示。例如,主機(jī)桌面可默認(rèn)地為顯示器上的背景桌面窗口,而各自顯示在其自己的容器窗口中的客機(jī)桌面接收背景桌面窗口上的顯示上的單獨(dú)窗口。
該第二實(shí)施例在同步客機(jī)桌面的窗口的位置和大小時(shí)開(kāi)始引入具有輸入坐標(biāo)的某些復(fù)雜因素。由于窗口是在主機(jī)容器窗口中對(duì)客機(jī)桌面操作的,因此這些交互被俘獲并被發(fā)送到客機(jī)用于處理??蜋C(jī),例如其窗口管理器更新客機(jī)桌面,并且在主機(jī)桌面中反映新的窗口位置,如同它被重建一樣。這一類(lèi)型的輸入坐標(biāo)已在實(shí)現(xiàn)“窗口中的桌面”的其它虛擬化產(chǎn)品中解決,并且應(yīng)當(dāng)通過(guò)虛擬化圖形硬件而不受影響。
第二實(shí)施例是顯著的改進(jìn),但是對(duì)于混和來(lái)自多個(gè)客機(jī)桌面的窗口仍是合乎需要的,即,隱藏了存在客機(jī)桌面的事實(shí)。該問(wèn)題相當(dāng)于在每一客機(jī)桌面中定位各個(gè)窗口內(nèi)容,但是比定位桌面內(nèi)容更難,因?yàn)楦鱾€(gè)窗口信息不能容易地從發(fā)送到圖形硬件的數(shù)據(jù)流中截取。然而,如果有目的地違反關(guān)于修改客機(jī)操作系統(tǒng)的規(guī)則,則可能添加某些掛鉤以協(xié)助為標(biāo)識(shí)各個(gè)窗口的像素(存儲(chǔ)器位置)。此處存在可采取的幾種不同的方法。
一種方法是保持客機(jī)桌面中的窗口平鋪(不重疊),使得整個(gè)內(nèi)容總是可用,同時(shí)維護(hù)了關(guān)于客機(jī)桌面中的每一窗口的大小和位置的信息,以供主機(jī)窗口管理器/合成引擎使用。該方法涉及維護(hù)兩組獨(dú)立的窗口信息虛擬信息(主機(jī)桌面中)和客機(jī)桌面中的物理位置。它也復(fù)雜化了輸入坐標(biāo),因?yàn)椴倏v虛擬窗口的操縱可以影響或不影響物理窗口(例如,如果虛擬窗口被遮蔽,則收回客機(jī)桌面中的實(shí)際狀況可能是有益的)。虛擬窗口內(nèi)的交互被轉(zhuǎn)換成對(duì)物理窗口適當(dāng)?shù)慕换?這可以與輸入坐標(biāo)的偏移量一樣簡(jiǎn)單)。
一種替換方法是將客機(jī)桌面窗口重定向到更容易管理的存儲(chǔ)器。這類(lèi)似于對(duì)圖形設(shè)備接口(GDI)完成的重定向,其中對(duì)每一窗口維護(hù)單獨(dú)的“后備緩沖區(qū)”。使這些后備緩沖區(qū)的內(nèi)容對(duì)主機(jī)窗口管理器/合成引擎可用。然后,當(dāng)用戶與虛擬窗口的內(nèi)容交互時(shí),執(zhí)行虛擬輸入坐標(biāo)和物理輸入坐標(biāo)之間的類(lèi)似映射。
采用某些遠(yuǎn)見(jiàn)和計(jì)劃,可能勾畫(huà)出未來(lái)的操作系統(tǒng)以在操作系統(tǒng)作為客機(jī)運(yùn)行時(shí)更好地促進(jìn)這類(lèi)截取。每一客機(jī)桌面中的外殼的處置(它們是否以及何時(shí)停止以從用戶的觀點(diǎn)退出)、外殼擴(kuò)展處理、開(kāi)始菜單選項(xiàng)、應(yīng)用程序快捷方式、剪貼板等被合并到統(tǒng)一的桌面視圖中。這些是可解決的問(wèn)題,但是涉及理解關(guān)于每一客機(jī)中的對(duì)應(yīng)實(shí)現(xiàn)以及可能(靜態(tài)地)提取該信息并將其合并在一起來(lái)產(chǎn)生統(tǒng)一視圖的更多細(xì)節(jié)的理解。對(duì)于支持統(tǒng)一的可訪問(wèn)性,產(chǎn)生類(lèi)似的問(wèn)題。
在提供多客機(jī)系統(tǒng)的其它部分,例如存儲(chǔ)、安裝的應(yīng)用程序、聯(lián)網(wǎng)等的無(wú)縫視圖時(shí)存在類(lèi)似的問(wèn)題。將多個(gè)客機(jī)展現(xiàn)為具有獨(dú)立指紋的窗口化桌面的臨時(shí)策略允許集中在構(gòu)建健壯的虛擬化基礎(chǔ)結(jié)構(gòu)的任務(wù)上。同時(shí)可能解決某些其它特征,諸如對(duì)數(shù)字權(quán)限管理的可信處理和內(nèi)容保護(hù)。
作為安全(可信)圖形處理的基礎(chǔ),上述虛擬化圖形系統(tǒng)與用于使用虛擬機(jī)進(jìn)行安全處理的其它模型相一致。虛擬化圖形環(huán)境的特征容易地允許可信和不可信處理的混合以可靠的方式用完全的性能出現(xiàn)在同一系統(tǒng)上。這一模型要求圖形VMM健壯地認(rèn)證并用程序引導(dǎo)圖形設(shè)備。當(dāng)然,它依賴(lài)于其它可信組件來(lái)安全地用程序引導(dǎo)圖形VMM。由于虛擬化環(huán)境健壯地彼此保護(hù)了多個(gè)客機(jī)和主機(jī)分區(qū),可能構(gòu)建可完成可信圖形處理的可信分區(qū)。如果窗口管理器和合成引擎作為可信分區(qū)中的服務(wù)運(yùn)行,則它們可以使用先前描述的演示方法用可靠的方式混和可信和非可信應(yīng)用程序數(shù)據(jù)。
圖4C示出了依照本發(fā)明用于混和可信和非可信應(yīng)用程序數(shù)據(jù)的示例性體系結(jié)構(gòu)。如所描述的,類(lèi)似于具有圖形驅(qū)動(dòng)程序HGD的主機(jī)OS H,可信OS T作為具有圖形驅(qū)動(dòng)程序TGD的可信分區(qū)來(lái)提供??尚臤S T包括窗口管理器或窗口合成器,它是可從圖形VMM代碼中取出關(guān)于對(duì)存儲(chǔ)的任何限制以及在由圖形管道呈現(xiàn)之前對(duì)可信數(shù)據(jù)和非可信數(shù)據(jù)的呈現(xiàn)的輸入的組件。
可信服務(wù)需要對(duì)單獨(dú)的客機(jī)桌面顯示數(shù)據(jù)的訪問(wèn),但是這一信息不被合成服務(wù)解釋為控制數(shù)據(jù)。它被用作呈現(xiàn)輸入,因此沒(méi)有來(lái)自共享數(shù)據(jù)的內(nèi)容的攻擊的風(fēng)險(xiǎn)。如果圖形硬件被正確地虛擬化,則沒(méi)有一個(gè)分區(qū)中的代碼攻擊另一分區(qū)中的代碼的風(fēng)險(xiǎn)??蜋C(jī)驅(qū)動(dòng)程序不能控制硬件也不能與其它客機(jī)交互。運(yùn)行在圖形硬件內(nèi)的應(yīng)用程序代碼不能與同一客機(jī)分區(qū)內(nèi)的其它應(yīng)用程序交互,更不用說(shuō)其它客機(jī)分區(qū)。
本發(fā)明的虛擬化支持并不消除對(duì)硬件認(rèn)證、顯示輸出的健壯控制或其它要求的需求,這些要求確保單個(gè)可信分區(qū)能夠可靠地向顯示設(shè)備傳遞顯示數(shù)據(jù);但是它的確允許多個(gè)分區(qū)健壯地共享圖形硬件而只有極少的性能影響。
依照本發(fā)明,對(duì)于處理和顯示過(guò)程中對(duì)內(nèi)容保護(hù)的基礎(chǔ),對(duì)全運(yùn)動(dòng)視頻數(shù)據(jù)實(shí)施數(shù)字權(quán)限當(dāng)前是使用“受保護(hù)的視頻路徑”保護(hù)內(nèi)容來(lái)實(shí)現(xiàn)的。受保護(hù)的視頻路徑集成了以下方法中的若干種,以提供對(duì)從源設(shè)備到顯示設(shè)備的視頻數(shù)據(jù)的安全傳輸和處理(1)內(nèi)核環(huán)境被硬化以禁止內(nèi)核調(diào)試程序等,并且當(dāng)正在播放受保護(hù)內(nèi)容時(shí)僅允許可信組件在內(nèi)核模式(“環(huán)0”)中操作;(2)處理受保護(hù)內(nèi)容的用戶模式進(jìn)程被進(jìn)一步硬化以免遭外來(lái)攻擊(受保護(hù)環(huán)境)。在系統(tǒng)或圖形存儲(chǔ)器中展示(或從中顯示)的視頻數(shù)據(jù)不能從其它進(jìn)程訪問(wèn);(3)通過(guò)用戶可訪問(wèn)總線發(fā)送的視頻數(shù)據(jù)被加密;(4)必須證明圖形驅(qū)動(dòng)程序來(lái)播放受保護(hù)內(nèi)容,且它進(jìn)而確認(rèn)圖形硬件對(duì)于受保護(hù)內(nèi)容是有效的同步;以及(5)顯示輸出保護(hù)由圖形硬件(Macrovision、CGSM-A、HDCP)支持,并可由媒體播放子系統(tǒng)健壯地操縱。
依照本發(fā)明,機(jī)制(1)和(2)可用更一般的安全計(jì)算基礎(chǔ)來(lái)替換。這一安全計(jì)算基礎(chǔ)應(yīng)當(dāng)進(jìn)一步防止通過(guò)使得不可能破壞安全程序引導(dǎo)進(jìn)程經(jīng)由虛擬化技術(shù)來(lái)繞過(guò)。機(jī)制(3)和(5)仍是需要的,以繼續(xù)提供當(dāng)視頻數(shù)據(jù)從系統(tǒng)存儲(chǔ)器通過(guò)圖形硬件移動(dòng)到顯示器時(shí)的安全處理和傳輸。本發(fā)明的圖形硬件虛擬化方法不替換任何特定圖形路徑相關(guān)的內(nèi)容保護(hù)方法;相反,它們擔(dān)當(dāng)用于構(gòu)建可信圖形服務(wù)的基礎(chǔ)。這些可信服務(wù)可被擴(kuò)展以包括受保護(hù)媒體處理組件(媒體互操作性網(wǎng)關(guān),或簡(jiǎn)稱(chēng)MIG),并在“安全”可信的分區(qū)而非敵對(duì)的客機(jī)分區(qū)中運(yùn)行它們?,F(xiàn)有的受保護(hù)視頻基礎(chǔ)結(jié)構(gòu)已經(jīng)將受保護(hù)處理(權(quán)限協(xié)商、策略、解碼、解密)從未受保護(hù)處理(回放應(yīng)用程序GUI等)中分離開(kāi)來(lái)。這一分離保持了虛擬化環(huán)境中的完整,其中受保護(hù)組件在可信分區(qū)(不同的[更好的]受保護(hù)環(huán)境)中執(zhí)行,而未受保護(hù)的組件保留在非可信客機(jī)分區(qū)中。
圖4D示出了結(jié)合圖4C開(kāi)發(fā)的可信分區(qū)T的概念的擴(kuò)展,以包括媒體互操作性網(wǎng)關(guān)MIG,作為用于由在客機(jī)OS A上執(zhí)行的媒體播放器應(yīng)用程序呈現(xiàn)的內(nèi)容的單獨(dú)保護(hù)層。
以Virtual PC產(chǎn)品能夠運(yùn)行大量OS的同一方法,本發(fā)明的虛擬化圖形環(huán)境能夠支持預(yù)定數(shù)量的操作系統(tǒng)或版本的驅(qū)動(dòng)程序/驅(qū)動(dòng)程序模型。
每一操作系統(tǒng)的成功是由它可以運(yùn)行的應(yīng)用程序的寬度和那些應(yīng)用程序的效率來(lái)測(cè)量的。通過(guò)無(wú)情地消除修改客機(jī)操作系統(tǒng)的強(qiáng)烈愿望,應(yīng)當(dāng)能夠在虛擬化操作系統(tǒng)下運(yùn)行任何本機(jī)執(zhí)行的操作系統(tǒng)下運(yùn)行的應(yīng)用程序??赡艽嬖诓町惖牡胤皆谟谌绾螌?duì)資源進(jìn)行分區(qū)。例如,如果僅使資源的一個(gè)子集(邏輯圖形存儲(chǔ)器的一部分)對(duì)分區(qū)可用,則應(yīng)用程序也可能無(wú)法操作。在未來(lái)的操作系統(tǒng)中,當(dāng)“一階”虛擬化(用于在多個(gè)應(yīng)用程序之間共享的資源的虛擬化)變得標(biāo)準(zhǔn)時(shí),這將不是問(wèn)題。
轉(zhuǎn)向完全虛擬化的圖形硬件的啟發(fā)是對(duì)于要免于傳統(tǒng)代碼問(wèn)題而仍提供用于繼續(xù)的應(yīng)用程序兼容性的實(shí)用路徑的軟件公司的。作為一種邊緣效應(yīng),本發(fā)明也提供用于可信圖形處理和內(nèi)容保護(hù)的卓越環(huán)境。
成功的這一第二個(gè)度量意味著前進(jìn)的應(yīng)用程序必須停止使用傳統(tǒng)代碼并且也前進(jìn)。對(duì)于大型的應(yīng)用程序代碼基,這可能是極其困難的。例如,如果諸如微軟的Office代碼基等隨著OS版本而進(jìn)展的傳統(tǒng)應(yīng)用程序代碼基不可避免地依賴(lài)于OS,則可能無(wú)法使GDI軟件如傳統(tǒng)代碼那樣留在后方。在這些情況下,可能有可以探究的混合模型。例如,客機(jī)操作系統(tǒng)可被視為通用服務(wù)提供者。再一次使用GDI作為示例,傳統(tǒng)操作系統(tǒng)可以被認(rèn)為是提供GDI呈現(xiàn)服務(wù)。應(yīng)用程序使用利用該服務(wù)的類(lèi)似遠(yuǎn)程的機(jī)制。這一情況下的目標(biāo)不必要是運(yùn)行應(yīng)用程序而沒(méi)有任何代碼改變,而是相反,做出允許應(yīng)用程序繼續(xù)使用傳統(tǒng)GDI代碼作為跨分區(qū)服務(wù)同時(shí)爭(zhēng)取時(shí)間來(lái)完全從API中轉(zhuǎn)移出來(lái)的最小改變。
圖4E示出了一個(gè)示例性交互,其中在主機(jī)OS H上執(zhí)行的客機(jī)OS A傳統(tǒng)應(yīng)用程序與客機(jī)OS A的傳統(tǒng)服務(wù)組件交互以仍然從主機(jī)OS H的觀點(diǎn)仿真?zhèn)鹘y(tǒng)行為。
圖5示出了一個(gè)示例性序列,其中,依照此處所示出或描述的任何虛擬化體系結(jié)構(gòu),在客機(jī)OS上執(zhí)行的應(yīng)用程序發(fā)出包含圖形子系統(tǒng)資源的命令。在500,在客機(jī)OS上執(zhí)行的應(yīng)用程序輸出圖形工作項(xiàng)(例如,在屏幕上坐標(biāo)“x,y”處繪制藍(lán)色的圓)。在510,客機(jī)OS處理該請(qǐng)求,將其發(fā)送到圖形工作隊(duì)列和相關(guān)聯(lián)的調(diào)度程序。在520,當(dāng)圖形工作項(xiàng)準(zhǔn)備好(已調(diào)度)時(shí),圖形驅(qū)動(dòng)程序?qū)⒅赶蛟搱D形工作項(xiàng)的指針數(shù)據(jù)傳遞到硬件。在530,如果圖形工作項(xiàng)是特許操作,則圖形VMM基于策略(客機(jī)OS與主機(jī)OS的關(guān)系、存儲(chǔ)器策略、命令類(lèi)型等等)接收并處理該工作請(qǐng)求。如果圖形工作項(xiàng)不是特許的,則改為在540,圖形硬件直接處理該請(qǐng)求。
由此,本發(fā)明將處理器硬件虛擬化到圖形加速器,目的是向運(yùn)行在虛擬化環(huán)境中的多個(gè)客機(jī)操作系統(tǒng)提供高性能的呈現(xiàn)。這一環(huán)境可用于有效地解決若干問(wèn)題(A)消除新操作系統(tǒng)開(kāi)發(fā)中的傳統(tǒng)代碼,同時(shí)通過(guò)在虛擬機(jī)環(huán)境中執(zhí)行傳統(tǒng)操作系統(tǒng)中的傳統(tǒng)應(yīng)用程序來(lái)保持應(yīng)用程序兼容性;(B)提供在同一虛擬化環(huán)境中安全地混合可信和非可信處理的基礎(chǔ)結(jié)構(gòu);以及(C)充分利用可信環(huán)境來(lái)提供用于數(shù)字權(quán)限管理的內(nèi)容保護(hù)。
示例性聯(lián)網(wǎng)和分布式環(huán)境本領(lǐng)域的普通技術(shù)人員可以理解,本發(fā)明可以結(jié)合任何計(jì)算機(jī)或其它客戶機(jī)或服務(wù)器設(shè)備來(lái)實(shí)現(xiàn),這些設(shè)備可以作為計(jì)算機(jī)網(wǎng)絡(luò)的一部分來(lái)部署,或部署在分布式計(jì)算環(huán)境中。在這一點(diǎn)上,本發(fā)明涉及具有任何數(shù)量的存儲(chǔ)器或存儲(chǔ)單元,以及跨任何數(shù)量的存儲(chǔ)單元或卷發(fā)生的任何數(shù)量的應(yīng)用程序和進(jìn)程的任何計(jì)算機(jī)系統(tǒng)或環(huán)境,它可用于依照本發(fā)明虛擬化圖形管道。本發(fā)明可應(yīng)用于具有服務(wù)器計(jì)算機(jī)和客戶機(jī)計(jì)算機(jī)的環(huán)境中,這些計(jì)算機(jī)部署在網(wǎng)絡(luò)環(huán)境或分布式計(jì)算環(huán)境中,具有遠(yuǎn)程或本地存儲(chǔ)。本發(fā)明也可應(yīng)用于具有用于生成、接收和發(fā)送關(guān)于遠(yuǎn)程或本地服務(wù)的信息的編程語(yǔ)言功能、解釋和執(zhí)行能力的獨(dú)立計(jì)算設(shè)備。在游戲環(huán)境中,圖形管道尤其與在網(wǎng)絡(luò)或分布式計(jì)算環(huán)境中操作的那些計(jì)算設(shè)備有關(guān),且因此依照本發(fā)明的圖形管道虛擬化可以用極大的效率應(yīng)用于這些環(huán)境。
分布式計(jì)算通過(guò)計(jì)算設(shè)備和系統(tǒng)之間的交換提供了計(jì)算機(jī)資源和服務(wù)的共享。這些資源和服務(wù)包括信息交換、高速緩存存儲(chǔ)和文件的磁盤(pán)存儲(chǔ)。分布式計(jì)算利用了網(wǎng)絡(luò)連通性,從而允許客戶機(jī)充分利用其集體的能力來(lái)使整個(gè)企業(yè)獲益。在這一點(diǎn)上,各種設(shè)備可具有包含本發(fā)明的圖形處理的應(yīng)用程序、對(duì)象或資源。
圖6A提供了一個(gè)示例性聯(lián)網(wǎng)或分布式計(jì)算環(huán)境的示意圖。該分布式計(jì)算環(huán)境包括計(jì)算對(duì)象10a、10b等,以及計(jì)算對(duì)象或設(shè)備610a、610b、610c等。這些對(duì)象可包括程序、方法、數(shù)據(jù)存儲(chǔ)、可編程邏輯等。對(duì)象可包括諸如PDA、音頻/視頻設(shè)備、MP3播放器、個(gè)人計(jì)算機(jī)等相同或不同設(shè)備的各部分。每一對(duì)象可通過(guò)通信網(wǎng)絡(luò)14彼此通信。該網(wǎng)絡(luò)本身可包括向圖6A的系統(tǒng)提供服務(wù)的其它計(jì)算對(duì)象和計(jì)算設(shè)備,并且本身可表示多個(gè)互連的網(wǎng)絡(luò)。依照本發(fā)明的一方面,每一對(duì)象10a、10b等或610a、610b、610c等可包含利用API或其它對(duì)象、軟件、固件和/或硬件來(lái)請(qǐng)求對(duì)本發(fā)明的圖形虛擬化處理的使用的應(yīng)用程序。
可以理解,諸如610c等對(duì)象可被主存在另一計(jì)算設(shè)備10a、10b等或610a、610b等上。由此,盡管所描述的物理環(huán)境可將連接的設(shè)備示為計(jì)算機(jī),然而這一圖示僅是示例性的,且物理環(huán)境可選地可被描繪或描述為包括諸如PDA、電視機(jī)、MP3播放器等各種數(shù)字設(shè)備、諸如接口、COM對(duì)象等軟件對(duì)象。
存在支持分布式計(jì)算環(huán)境的各種系統(tǒng)、組件和網(wǎng)絡(luò)配置。例如,計(jì)算系統(tǒng)可以由有線或無(wú)線系統(tǒng)、局域網(wǎng)或廣域網(wǎng)連接在一起。當(dāng)前,許多網(wǎng)絡(luò)耦合到因特網(wǎng),因特網(wǎng)提供了用于廣泛分布的計(jì)算的基礎(chǔ)結(jié)構(gòu)并包含許多不同的網(wǎng)絡(luò)。這些基礎(chǔ)結(jié)構(gòu)中的任一個(gè)可以用于與本發(fā)明的圖形硬件虛擬化處理關(guān)聯(lián)做出的示例性通信。
在家庭聯(lián)網(wǎng)環(huán)境中,有至少四種完全不同的網(wǎng)絡(luò)傳輸媒體,它們每一個(gè)可支持唯一的協(xié)議,諸如輸電線、數(shù)據(jù)(無(wú)線和有線)、語(yǔ)音(例如,電話)和娛樂(lè)媒體。諸如燈開(kāi)關(guān)和電器等大多數(shù)家庭控制設(shè)備可使用輸電線用于連通性。數(shù)據(jù)服務(wù)可作為寬帶(例如,DSL或線纜調(diào)制解調(diào)器)進(jìn)入家庭,并可在家庭內(nèi)使用無(wú)線(例如,HomeRF或802.11B)或有線(例如,家庭PNA、Cat5、以太網(wǎng)甚至輸電線)連接來(lái)訪問(wèn)。語(yǔ)音話務(wù)可作為有線(例如,Cat3)或無(wú)線(例如,蜂窩電話)進(jìn)入家庭,并可使用Cat3布線在家庭內(nèi)分布。娛樂(lè)媒體或其它圖形數(shù)據(jù)可通過(guò)衛(wèi)星或電纜進(jìn)入家庭,并且通常使用同軸電纜在家庭內(nèi)分布。IEEE 1394和DVI也是用于媒體設(shè)備集群的數(shù)字互連。所有這些網(wǎng)絡(luò)環(huán)境以及可作為協(xié)議標(biāo)準(zhǔn)顯現(xiàn)的其它環(huán)境可被互連以形成可通過(guò)因特網(wǎng)連接到外部世界的網(wǎng)絡(luò),如內(nèi)聯(lián)網(wǎng)。簡(jiǎn)言之,存在各種不同種類(lèi)的源用于數(shù)據(jù)的存儲(chǔ)和傳輸,并且因此,進(jìn)一步地計(jì)算設(shè)備會(huì)要求共享數(shù)據(jù)的方式,諸如與程序?qū)ο箨P(guān)聯(lián)地訪問(wèn)或利用數(shù)據(jù),該程序?qū)ο罄昧艘勒毡景l(fā)明的虛擬化圖形服務(wù)。
因特網(wǎng)一般指利用計(jì)算聯(lián)網(wǎng)領(lǐng)域中公知的TCP/IP協(xié)議套件的網(wǎng)絡(luò)和網(wǎng)關(guān)的集合。TCP/IP是“傳輸控制協(xié)議/網(wǎng)際協(xié)議”的縮寫(xiě)。因特網(wǎng)可以被描述為由執(zhí)行允許用戶通過(guò)網(wǎng)絡(luò)交互和共享信息的聯(lián)網(wǎng)協(xié)議的計(jì)算機(jī)互連的地理上分布的遠(yuǎn)程計(jì)算機(jī)網(wǎng)絡(luò)的系統(tǒng)。由于這一廣泛分布的信息共享,諸如因特網(wǎng)等遠(yuǎn)程網(wǎng)絡(luò)迄今一般已進(jìn)展成一種開(kāi)放系統(tǒng),開(kāi)發(fā)者可對(duì)其設(shè)計(jì)軟件應(yīng)用程序來(lái)執(zhí)行專(zhuān)門(mén)的操作或服務(wù),本質(zhì)上是沒(méi)有限制的。
由此,網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)啟用了大量的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),諸如客戶機(jī)/服務(wù)器、對(duì)等或混合體系結(jié)構(gòu)。“客戶機(jī)”是使用不相關(guān)的另一類(lèi)或組的服務(wù)的一類(lèi)或組的成員。由此,在計(jì)算中,客戶機(jī)是請(qǐng)求由另一程序提供的服務(wù)的進(jìn)程,即粗略地為一組指令或任務(wù)。客戶機(jī)進(jìn)程利用所請(qǐng)求的服務(wù),而無(wú)需“知道”關(guān)于其它程序或該服務(wù)本身的任何工作細(xì)節(jié)。在客戶機(jī)/服務(wù)器體系結(jié)構(gòu)中,尤其是在聯(lián)網(wǎng)系統(tǒng)中,客戶機(jī)通常是訪問(wèn)由另一計(jì)算機(jī),如服務(wù)器提供的共享網(wǎng)絡(luò)資源的計(jì)算機(jī)。在圖6A的示例中,計(jì)算機(jī)610a、610b等可以被認(rèn)為是客戶機(jī),而計(jì)算機(jī)10a、10b等可以被認(rèn)為是服務(wù)器,其中服務(wù)器10a、10b等維護(hù)然后被復(fù)制到客戶機(jī)計(jì)算機(jī)610a、610b等的數(shù)據(jù),盡管任何計(jì)算機(jī)可被認(rèn)為是客戶機(jī)、服務(wù)器或兩者,取決于環(huán)境。這些計(jì)算設(shè)備的任一個(gè)可以處理數(shù)據(jù)或請(qǐng)求可包含本發(fā)明的虛擬化圖形體系結(jié)構(gòu)的實(shí)現(xiàn)的服務(wù)或任務(wù)。
服務(wù)器通常是可通過(guò)諸如因特網(wǎng)等遠(yuǎn)程或本地網(wǎng)絡(luò)訪問(wèn)的遠(yuǎn)程計(jì)算機(jī)系統(tǒng)??蛻魴C(jī)進(jìn)程可以在第一計(jì)算機(jī)系統(tǒng)中是活動(dòng)的,而服務(wù)器進(jìn)程可以在第二計(jì)算機(jī)系統(tǒng)中是活動(dòng)的,它們通過(guò)通信介質(zhì)彼此通信,從而提供了分布式功能并允許多個(gè)客戶機(jī)利用服務(wù)器的信息收集能力。依照本發(fā)明的虛擬化體系結(jié)構(gòu)的使用來(lái)利用的任何軟件對(duì)象可以跨多個(gè)計(jì)算設(shè)備或?qū)ο蠓植肌?br>
客戶機(jī)和服務(wù)器利用由協(xié)議層提供的功能來(lái)彼此通信。例如,超文本傳輸協(xié)議(HTTP)是一種用于萬(wàn)維網(wǎng)(WWW)或“Web”的公共協(xié)議。通常,諸如網(wǎng)際協(xié)議(IP)地址等計(jì)算機(jī)網(wǎng)絡(luò)地址或諸如統(tǒng)一資源定位符(URL)等其它引用可用于彼此標(biāo)識(shí)服務(wù)器或客戶機(jī)計(jì)算機(jī)。網(wǎng)絡(luò)地址可被稱(chēng)為URL地址。通信可通過(guò)通信介質(zhì)來(lái)提供,例如,客戶機(jī)和服務(wù)器可通過(guò)用于高容量通信的TCP/IP連接而彼此耦合。
由此,圖6A示出了其中可采用本發(fā)明的一個(gè)示例性聯(lián)網(wǎng)或分布式環(huán)境,其中,服務(wù)器通過(guò)網(wǎng)絡(luò)/總線與客戶機(jī)計(jì)算機(jī)通信。更詳細(xì)地,依照本發(fā)明,多個(gè)服務(wù)器10a、10b等通過(guò)通信網(wǎng)絡(luò)/總線14互連,通信網(wǎng)絡(luò)/總線14可以是LAN、WAN、內(nèi)聯(lián)網(wǎng)、因特網(wǎng)等,具有多個(gè)客戶機(jī)或遠(yuǎn)程計(jì)算設(shè)備610a、610b、610c、610d、610e等,諸如便攜式計(jì)算機(jī)、手持式計(jì)算機(jī)、瘦客戶機(jī)、聯(lián)網(wǎng)電器、或諸如VCR、TV、烤箱、燈、加熱器等其它設(shè)備。由此,可以構(gòu)想本發(fā)明可應(yīng)用于任何計(jì)算設(shè)備,對(duì)于這些計(jì)算設(shè)備期望實(shí)現(xiàn)依照本發(fā)明的客機(jī)圖形接口和操作系統(tǒng)。
在其中通信網(wǎng)絡(luò)/總線14是因特網(wǎng)的網(wǎng)絡(luò)環(huán)境中,例如,服務(wù)器10a、10b等可以是Web服務(wù)器,客戶機(jī)610a、610b、610c、610d、610e等通過(guò)諸如HTTP等多種已知協(xié)議中的任一種與它們進(jìn)行通信。服務(wù)器10a、10b等也可擔(dān)當(dāng)客戶機(jī)610a、610b、610c、610d、610e等,這可以是分布式計(jì)算環(huán)境的特征。
在適當(dāng)時(shí),通信可以是有線或無(wú)線的??蛻魴C(jī)設(shè)備610a、610b、610c、610d、610e等可以通過(guò)通信網(wǎng)絡(luò)/總線14通信或不通信,并且可具有與其相關(guān)聯(lián)的獨(dú)立通信。例如,在TV或VCR的情況下,可以有或沒(méi)有控制它們的聯(lián)網(wǎng)方面。每一客戶機(jī)計(jì)算機(jī)610a、610b、610c、610d、610e等以及服務(wù)器計(jì)算機(jī)10a、10b等可以配備各種應(yīng)用程序模塊或?qū)ο?35,并可具有對(duì)各種類(lèi)型的存儲(chǔ)元件或?qū)ο蟮倪B接或訪問(wèn),文件或數(shù)據(jù)流可被儲(chǔ)存在這些存儲(chǔ)元件或?qū)ο笊?,或者文件或?shù)據(jù)流可被下載、發(fā)送或遷移到這些存儲(chǔ)元件或?qū)ο笊?。一個(gè)或多個(gè)計(jì)算機(jī)10a、10b、610a、610b等的任一個(gè)可負(fù)責(zé)維護(hù)和更新數(shù)據(jù)庫(kù)20或其它存儲(chǔ)元件,諸如用于儲(chǔ)存依照本發(fā)明處理的數(shù)據(jù)的數(shù)據(jù)庫(kù)或存儲(chǔ)器20。由此,本發(fā)明可在具有客戶機(jī)計(jì)算機(jī)610a、610b等的計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境中使用,這些客戶機(jī)計(jì)算機(jī)可訪問(wèn)計(jì)算機(jī)網(wǎng)絡(luò)/總線14和服務(wù)器計(jì)算機(jī)10a、10b等并與其交互,這些服務(wù)器可與客戶機(jī)計(jì)算機(jī)610a、610b等以及其它相似的設(shè)備和數(shù)據(jù)庫(kù)20交互。
示例性計(jì)算設(shè)備圖6B和以下討論旨在提供可結(jié)合其實(shí)現(xiàn)本發(fā)明的合適的計(jì)算環(huán)境的簡(jiǎn)要概括描述。然而,應(yīng)當(dāng)理解,所有類(lèi)型的手持式、便攜式或其它計(jì)算設(shè)備和計(jì)算對(duì)象都被構(gòu)想為用于本發(fā)明,即計(jì)算環(huán)境中存在GPU的任何地方。盡管下文描述了通用計(jì)算機(jī),但這只是一個(gè)示例,本發(fā)明可以用具有網(wǎng)絡(luò)/總線互操作性和交互的瘦客戶機(jī)來(lái)實(shí)現(xiàn)。由此,本發(fā)明可以在網(wǎng)絡(luò)化主存服務(wù)的環(huán)境中實(shí)現(xiàn),在這一環(huán)境中僅包含了極少或最少的客戶機(jī)資源,例如其中客戶機(jī)設(shè)備僅擔(dān)當(dāng)諸如放置在電器中的對(duì)象等到網(wǎng)絡(luò)/總線的接口的聯(lián)網(wǎng)環(huán)境。本質(zhì)上,可儲(chǔ)存數(shù)據(jù)或可從其檢索數(shù)據(jù)或?qū)?shù)據(jù)發(fā)送到另一計(jì)算機(jī)的任何地方都是用于依照本發(fā)明的圖形虛擬化技術(shù)的操作的期望或合適的環(huán)境。
盡管并非所需,但本發(fā)明可全部或部分地通過(guò)操作系統(tǒng)來(lái)實(shí)現(xiàn),操作系統(tǒng)由設(shè)備或?qū)ο蟮姆?wù)開(kāi)發(fā)者使用,和/或包括在結(jié)合本發(fā)明的虛擬化圖形管道操作的應(yīng)用軟件中。軟件可以在諸如程序模塊等由諸如客戶機(jī)工作站、服務(wù)器或其它設(shè)備等一個(gè)或多個(gè)計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的通用上下文中描述。一般而言,程序模塊包括例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等,它們執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類(lèi)型。通常,程序模塊的功能可如各種實(shí)施例中所需的組合或分布。此外,本領(lǐng)域的技術(shù)人員可以理解,本發(fā)明可以用其它計(jì)算機(jī)系統(tǒng)配置和協(xié)議來(lái)實(shí)踐。適用于本發(fā)明的其它公知的計(jì)算系統(tǒng)、環(huán)境和/或配置包括,但不限于,個(gè)人計(jì)算機(jī)(PC)、自動(dòng)售貨機(jī)、服務(wù)器計(jì)算機(jī)、手持式或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程消費(fèi)者電子設(shè)備、網(wǎng)絡(luò)PC、電器、燈、環(huán)境控制元件、小型機(jī)、大型機(jī)等等。本發(fā)明也可以在分布式計(jì)算環(huán)境中實(shí)踐,其中,任務(wù)由通過(guò)通信網(wǎng)絡(luò)/總線或其它數(shù)據(jù)傳輸介質(zhì)連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)器存儲(chǔ)設(shè)備的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中,且客戶機(jī)節(jié)點(diǎn)可進(jìn)而作為服務(wù)器節(jié)點(diǎn)來(lái)運(yùn)作。
由此,圖6B示出了其中可實(shí)現(xiàn)本發(fā)明的一個(gè)合適的計(jì)算系統(tǒng)環(huán)境600的示例,盡管如上文清晰地指出的,計(jì)算系統(tǒng)環(huán)境600僅是合適的計(jì)算環(huán)境的一個(gè)示例,并非對(duì)本發(fā)明的使用范圍或功能提出任何局限。也不應(yīng)將計(jì)算環(huán)境600解釋為對(duì)示例性操作環(huán)境600中示出的任一組件或其組合具有任何依賴(lài)或需求。
參考圖6B,用于實(shí)現(xiàn)本發(fā)明的示例性系統(tǒng)包括計(jì)算機(jī)610形式的通用計(jì)算設(shè)備。計(jì)算機(jī)610的組件可包括,但不限于,處理單元620、系統(tǒng)存儲(chǔ)器630以及將包括系統(tǒng)存儲(chǔ)器的各類(lèi)系統(tǒng)組件耦合至處理單元620的系統(tǒng)總線621。系統(tǒng)總線621可以是若干種總線結(jié)構(gòu)類(lèi)型的任一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線以及使用各類(lèi)總線體系結(jié)構(gòu)的局部總線。作為示例而非局限,這類(lèi)體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)ISA(EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總線、外圍部件互連(PCI)總線(也稱(chēng)為Mezzanine總線)以及PCI Express(PCIe)。
計(jì)算機(jī)610通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是可由計(jì)算機(jī)610訪問(wèn)的任一可讀介質(zhì),包括易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。作為示例而非局限,計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于儲(chǔ)存諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任一方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性,可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于,RAM、ROM、EEPROM、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(pán)(DVD)或其它光盤(pán)存儲(chǔ)、磁盒、磁帶、磁盤(pán)存儲(chǔ)或其它磁存儲(chǔ)設(shè)備、或可以用來(lái)儲(chǔ)存所期望的信息并可由計(jì)算機(jī)610訪問(wèn)的任一其它介質(zhì)。通信介質(zhì)通常具體化為諸如載波或其它傳輸機(jī)制的已調(diào)制數(shù)據(jù)信號(hào)中的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任一信息傳送介質(zhì)。術(shù)語(yǔ)“已調(diào)制數(shù)據(jù)信號(hào)”指以對(duì)信號(hào)中的信息進(jìn)行編碼的方式設(shè)置或改變其一個(gè)或多個(gè)特征的信號(hào)。作為示例而非局限,通信介質(zhì)包括有線介質(zhì),如有線網(wǎng)絡(luò)或直接連線連接,以及無(wú)線介質(zhì),如聲學(xué)、RF、紅外和其它無(wú)線介質(zhì)。上述任一的組合也應(yīng)當(dāng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲(chǔ)器630包括易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì),如只讀存儲(chǔ)器(ROM)631和隨機(jī)存取存儲(chǔ)器(RAM)632。基本輸入/輸出系統(tǒng)633(BIOS)包括如在啟動(dòng)時(shí)幫助在計(jì)算機(jī)610內(nèi)的元件之間傳輸信息的基本例程,通常儲(chǔ)存在ROM631中。RAM632通常包含處理單元620立即可訪問(wèn)和/或者當(dāng)前正在操作的數(shù)據(jù)和/或程序模塊。作為示例而非局限,圖6B示出了操作系統(tǒng)634、應(yīng)用程序635、其它程序模塊636和程序數(shù)據(jù)637。
計(jì)算機(jī)610也可包括其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。僅作示例,圖6B示出了對(duì)不可移動(dòng)、非易失性磁介質(zhì)進(jìn)行讀寫(xiě)的硬盤(pán)驅(qū)動(dòng)器641、對(duì)可移動(dòng)、非易失性磁盤(pán)652進(jìn)行讀寫(xiě)的磁盤(pán)驅(qū)動(dòng)器651以及對(duì)可移動(dòng)、非易失性光盤(pán)656,如CD ROM或其它光介質(zhì)進(jìn)行讀寫(xiě)的光盤(pán)驅(qū)動(dòng)器655??梢栽谑纠圆僮鳝h(huán)境中使用的其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于,磁帶盒、閃存卡、數(shù)字多功能盤(pán)、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等等。硬盤(pán)驅(qū)動(dòng)器641通常通過(guò)不可移動(dòng)存儲(chǔ)器接口,如接口640連接到系統(tǒng)總線621,磁盤(pán)驅(qū)動(dòng)器651和光盤(pán)驅(qū)動(dòng)器655通常通過(guò)可移動(dòng)存儲(chǔ)器接口,如接口650連接到系統(tǒng)總線621。
上文討論并在圖6B示出的驅(qū)動(dòng)器及其關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī)610提供了計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲(chǔ)。例如,在圖6B中,示出硬盤(pán)驅(qū)動(dòng)器641儲(chǔ)存操作系統(tǒng)644、應(yīng)用程序645、其它程序模塊646和程序數(shù)據(jù)647。注意,這些組件可以與操作系統(tǒng)634、應(yīng)用程序635、其它程序模塊636和程序數(shù)據(jù)637相同,也可以與它們不同。這里對(duì)操作系統(tǒng)644、應(yīng)用程序645、其它程序模塊646和程序數(shù)據(jù)647給予不同的標(biāo)號(hào)來(lái)說(shuō)明至少它們是不同的副本。用戶可以通過(guò)輸入設(shè)備,如鍵盤(pán)662和定位設(shè)備661(通常指鼠標(biāo)、跟蹤球或觸摸板)向計(jì)算機(jī)610輸入命令和信息。其它輸入設(shè)備(未示出)可包括麥克風(fēng)、操縱桿、游戲墊、圓盤(pán)式衛(wèi)星天線、掃描儀等等。這些和其它輸入設(shè)備通常通過(guò)耦合至系統(tǒng)總線621的用戶輸入接口660連接至處理單元620,但是也可以通過(guò)其它接口和總線結(jié)構(gòu)連接,如并行端口、游戲端口或通用串行總線(USB)。這些是可由本發(fā)明的體系結(jié)構(gòu)虛擬化的種類(lèi)的結(jié)構(gòu)。諸如由Northbridge實(shí)現(xiàn)的接口之一等圖形接口682也可被連接到系統(tǒng)總線621。Northbridge是與CPU或主機(jī)處理單元620通信的芯片組,并承擔(dān)諸如PCI、PCIe和加速圖形端口(AGP)通信等通信的責(zé)任。本發(fā)明構(gòu)想了集成的(在Northbridge內(nèi))和離散的(在Northbridge外)圖形實(shí)現(xiàn)。一個(gè)或多個(gè)圖形處理單元(GPU)684可與圖形接口682通信。在這一點(diǎn)上,GPU 684一般包括諸如寄存器存儲(chǔ)等片上存儲(chǔ),且GPU684與視頻存儲(chǔ)器686通信。然而,GPU684僅是協(xié)處理器的一個(gè)示例,且因此各種協(xié)處理設(shè)備可被包括在計(jì)算機(jī)610中,并且可包括各種過(guò)程著色器,諸如像素和頂點(diǎn)著色器。監(jiān)視器691或其它類(lèi)型的顯示設(shè)備也通過(guò)接口,如視頻接口690連接至系統(tǒng)總線626,并由此與視頻存儲(chǔ)器686通信。除監(jiān)視器691之外,計(jì)算機(jī)也可包括其它外圍輸出設(shè)備,如揚(yáng)聲器697和打印機(jī)696,它們通過(guò)輸出外圍接口695連接。
計(jì)算機(jī)610可以使用到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),如遠(yuǎn)程計(jì)算機(jī)680的邏輯連接在網(wǎng)絡(luò)化或分布式環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)680可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它普通網(wǎng)絡(luò)節(jié)點(diǎn),并通常包括許多或所有以上相對(duì)于計(jì)算機(jī)610所描述的元件,盡管在圖6B中僅示出了存儲(chǔ)器存儲(chǔ)設(shè)備681。圖6B描述的邏輯連接包括局域網(wǎng)(LAN)671和廣域網(wǎng)(WAN)673,但也可包括其它網(wǎng)絡(luò)/總線。這類(lèi)網(wǎng)絡(luò)環(huán)境常見(jiàn)于家庭、辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)以及因特網(wǎng)。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)610通過(guò)網(wǎng)絡(luò)接口或適配器670連接至LAN671。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)610一般可包括調(diào)制解調(diào)器672或用于通過(guò)WAN673,如因特網(wǎng)建立通信的其它裝置。調(diào)制解調(diào)器672可以是內(nèi)置或外置的,通過(guò)用戶輸入接口660或其它適當(dāng)?shù)臋C(jī)制連接至系統(tǒng)總線621。在網(wǎng)絡(luò)化環(huán)境中,相對(duì)于計(jì)算機(jī)610所描述的程序模塊或其部分可儲(chǔ)存在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。作為示例而非局限,圖6B示出了遠(yuǎn)程應(yīng)用程序685駐留在存儲(chǔ)器設(shè)備681上??梢岳斫?,示出的網(wǎng)絡(luò)連接是示例性的,也可以使用在計(jì)算機(jī)之間建立通信鏈路的其它手段。
可以有多種方式來(lái)實(shí)現(xiàn)本發(fā)明,例如適當(dāng)?shù)腁PI、工具箱、驅(qū)動(dòng)程序代碼、操作系統(tǒng)、控件、獨(dú)立或可下載軟件對(duì)象等等,它們使得應(yīng)用程序和服務(wù)能夠使用本發(fā)明的虛擬化體系結(jié)構(gòu)、系統(tǒng)和方法。本發(fā)明從API(或其它軟件對(duì)象)的觀點(diǎn)以及接收依照本發(fā)明的任一上述技術(shù)的軟件或硬件對(duì)象構(gòu)想了本發(fā)明的使用。由此,此處所描述的本發(fā)明的各種實(shí)現(xiàn)可具有完全硬件、部分硬件和部分軟件以及完全軟件的方面。
如上所述,盡管本發(fā)明的示例性實(shí)施例是結(jié)合各種計(jì)算設(shè)備和網(wǎng)絡(luò)體系結(jié)構(gòu)來(lái)描述的,然而基本概念可應(yīng)用于其中期望采用GPU的任何計(jì)算設(shè)備或系統(tǒng)。例如,本發(fā)明的各種算法和硬件實(shí)現(xiàn)可以應(yīng)用于計(jì)算設(shè)備的操作系統(tǒng),該操作系統(tǒng)作為設(shè)備上的單獨(dú)對(duì)象、作為另一對(duì)象的一部分、作為可重用控件、作為可從服務(wù)器下載的對(duì)象、作為設(shè)備或?qū)ο笈c網(wǎng)絡(luò)之間的“中間人”、作為分布式對(duì)象、作為硬件、在存儲(chǔ)器中、上述任一個(gè)的組合等來(lái)提供。本領(lǐng)域的普通技術(shù)人員可以理解,存在多種提供對(duì)象代碼和命名法的方式來(lái)實(shí)現(xiàn)本發(fā)明的各實(shí)施例所實(shí)現(xiàn)的相同、相似或等效功能。
如上所述,此處所描述的各種技術(shù)可結(jié)合硬件或軟件來(lái)實(shí)現(xiàn),或在適當(dāng)時(shí)以?xún)烧叩慕M合來(lái)實(shí)現(xiàn)。由此,本發(fā)明的方法和裝置或其某些方面或部分,可采用包含在諸如軟盤(pán)、CD-ROM、硬盤(pán)或任何其它機(jī)器可讀存儲(chǔ)介質(zhì)等有形介質(zhì)中的程序代碼(即,指令)的形式,其中,當(dāng)程序代碼被加載到諸如計(jì)算機(jī)等機(jī)器中并由其執(zhí)行時(shí),該機(jī)器變?yōu)橛糜趯?shí)施本發(fā)明的裝置。在可編程計(jì)算機(jī)上的程序代碼執(zhí)行的情況下,計(jì)算設(shè)備一般包括處理器、處理器可讀的存儲(chǔ)介質(zhì)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備以及至少一個(gè)輸出設(shè)備。例如,可通過(guò)使用數(shù)據(jù)處理API、可重用控件等來(lái)實(shí)現(xiàn)或利用本發(fā)明的GPU虛擬化技術(shù)的一個(gè)或多個(gè)程序較佳地用高級(jí)過(guò)程語(yǔ)言或面向?qū)ο蟮木幊陶Z(yǔ)言來(lái)實(shí)現(xiàn),以與計(jì)算機(jī)系統(tǒng)通信。然而,如有需要,程序可以用匯編語(yǔ)言或機(jī)器語(yǔ)言來(lái)實(shí)現(xiàn)。在任何情況下,語(yǔ)言可以是已編譯或已解釋語(yǔ)言,并與硬件實(shí)現(xiàn)相組合。
本發(fā)明的方法和裝置也可通過(guò)以程序代碼的形式實(shí)施的通信來(lái)實(shí)現(xiàn),該程序代碼通過(guò)某一傳輸介質(zhì)來(lái)發(fā)送,如通過(guò)電線或電纜、通過(guò)光纖或通過(guò)任一其它形式的傳輸,其中,當(dāng)程序代碼由諸如EPROM、門(mén)陣列、可編程邏輯器件(PLD)、客戶機(jī)計(jì)算機(jī)等的機(jī)器接收被裝載到其中由其執(zhí)行時(shí),該機(jī)器變?yōu)橛糜趯?shí)施本發(fā)明的裝置。當(dāng)在通用處理器上實(shí)現(xiàn)時(shí),程序代碼與處理器相結(jié)合,以提供用于調(diào)用本發(fā)明的功能的唯一裝置。另外,用于本發(fā)明的任何存儲(chǔ)技術(shù)可以不變地為硬件和軟件的組合。
盡管本發(fā)明是結(jié)合各附圖的較佳實(shí)施例來(lái)描述的,但是可以理解,可使用其它類(lèi)似的實(shí)施例或可以對(duì)所描述的實(shí)施例做出修改和添加來(lái)執(zhí)行本發(fā)明的相同功能,而不偏離本發(fā)明的。例如,盡管本發(fā)明的示例性網(wǎng)絡(luò)環(huán)境是在諸如對(duì)等聯(lián)網(wǎng)環(huán)境等聯(lián)網(wǎng)環(huán)境的上下文中描述的,然而本領(lǐng)域的技術(shù)人員可以認(rèn)識(shí)到,本發(fā)明不限于此,并且本發(fā)明申請(qǐng)中所描述的方法可應(yīng)用于任何計(jì)算設(shè)備或環(huán)境,諸如游戲控制臺(tái)、手持式計(jì)算機(jī)、便攜式計(jì)算機(jī)等,無(wú)論它們是有線還是無(wú)線的,并且這些方法可應(yīng)用于通過(guò)通信網(wǎng)絡(luò)連接并在網(wǎng)絡(luò)上交互的任何數(shù)量的這樣的計(jì)算設(shè)備。此外,應(yīng)當(dāng)強(qiáng)調(diào),構(gòu)想了各種計(jì)算機(jī)平臺(tái),包括手持式設(shè)備操作系統(tǒng)和其它應(yīng)用程序?qū)S貌僮飨到y(tǒng),尤其是當(dāng)無(wú)線聯(lián)網(wǎng)設(shè)備的數(shù)量持續(xù)增長(zhǎng)的時(shí)候。
盡管示例性實(shí)施例涉及在圖形管道的上下文中利用本發(fā)明,然而本發(fā)明不限于此,而是相反,也可以被實(shí)現(xiàn)以虛擬化為其它原因與主處理器協(xié)作的第二專(zhuān)用處理單元。此外,本發(fā)明構(gòu)想了OS的同一版本或發(fā)行版本的多個(gè)實(shí)例在依照本發(fā)明的單獨(dú)虛擬機(jī)中操作的情形。可以理解,本發(fā)明的虛擬化與對(duì)其使用GPU的操作無(wú)關(guān)。也可以預(yù)期本發(fā)明適用于所有的GPU體系結(jié)構(gòu),包括但不限于多個(gè)GPU實(shí)現(xiàn),以及提供對(duì)單個(gè)GPU接口的假象的多GPU實(shí)施例。此外,本發(fā)明可以在多個(gè)處理芯片或設(shè)備中或跨多個(gè)處理芯片或設(shè)備來(lái)實(shí)現(xiàn),并且存儲(chǔ)可以類(lèi)似地跨多個(gè)設(shè)備來(lái)實(shí)現(xiàn)。因此,本發(fā)明不應(yīng)限于任何單個(gè)實(shí)施例,而是相反,應(yīng)當(dāng)依照所附權(quán)利要求書(shū)的寬度和范圍來(lái)解釋。
權(quán)利要求
1.一種用于在具有第一操作系統(tǒng)和第二操作系統(tǒng)的計(jì)算系統(tǒng)中處理圖形數(shù)據(jù)的方法,所述第一操作系統(tǒng)主存在第一虛擬機(jī)中,所述第二操作系統(tǒng)主存在第二虛擬機(jī)中,所述方法包括接收要由所述計(jì)算系統(tǒng)的圖形子系統(tǒng)的圖形處理單元(GPU)執(zhí)行的一個(gè)或多個(gè)工作項(xiàng),其中,所述一個(gè)或多個(gè)工作項(xiàng)是由所述第一虛擬機(jī)或所述第二虛擬機(jī)發(fā)起的;以及用所述GPU處理所述一個(gè)或多個(gè)工作項(xiàng),而無(wú)論所述一個(gè)或多個(gè)工作項(xiàng)是基于來(lái)自所述第一操作系統(tǒng)的接口還是基于來(lái)自所述第二操作系統(tǒng)的接口。
2.如權(quán)利要求1所述的方法,其特征在于,還包括由啟用所述第一和第二虛擬機(jī)的虛擬機(jī)監(jiān)控程序組件的圖形虛擬機(jī)監(jiān)控程序組件處理所述一個(gè)或多個(gè)工作項(xiàng)。
3.如權(quán)利要求2所述的方法,其特征在于,所述處理包括分配至少一個(gè)物理資源,包括用于所述一個(gè)或多個(gè)工作項(xiàng)的系統(tǒng)存儲(chǔ)器或視頻存儲(chǔ)器中的至少一個(gè)。
4.如權(quán)利要求3所述的方法,其特征在于,所述分配至少一個(gè)物理資源包括分配用于由在所述第一虛擬機(jī)或所述第二虛擬機(jī)的任一個(gè)上執(zhí)行的獨(dú)立應(yīng)用程序發(fā)起的工作項(xiàng)的視頻存儲(chǔ)器空間或系統(tǒng)存儲(chǔ)器空間的獨(dú)立的至少一個(gè)。
5.如權(quán)利要求2所述的方法,其特征在于,所述處理包括確定所述一個(gè)或多個(gè)工作項(xiàng)是特許還是非特許的,并對(duì)處理特許和非特許工作項(xiàng)應(yīng)用不同的規(guī)則組。
6.如權(quán)利要求1所述的方法,其特征在于,還包括從由啟用所述第一和第二虛擬機(jī)的虛擬機(jī)監(jiān)控程序組件創(chuàng)建的可信代碼基合成所述一個(gè)或多個(gè)工作項(xiàng)的輸出的顯示。
7.如權(quán)利要求1所述的方法,其特征在于,還包括處理在所述第一虛擬機(jī)中執(zhí)行的不可信應(yīng)用程序的輸出,包括利用在所述第二機(jī)器中執(zhí)行的至少一個(gè)可信服務(wù)來(lái)保護(hù)所述輸出。
8.一種包括用于依照如權(quán)利要求1所述的方法執(zhí)行通信的計(jì)算機(jī)可執(zhí)行指令的應(yīng)用程序編程接口。
9.一種包括被改編成適合執(zhí)行如權(quán)利要求1所述的方法的功能組件的圖形處理單元。
10.一種包括用于執(zhí)行如權(quán)利要求1所述的方法的計(jì)算設(shè)備。
11.一種用于在具有操作系統(tǒng)的第一版本和所述操作系統(tǒng)的第二版本的計(jì)算系統(tǒng)中處理圖形數(shù)據(jù)的方法,所述操作系統(tǒng)的第一版本由虛擬機(jī)監(jiān)控程序組件主存在第一虛擬機(jī)中,所述操作系統(tǒng)的第二版本由所述虛擬機(jī)監(jiān)控程序組件主存在第二虛擬機(jī)中,所述方法包括從所述第一虛擬機(jī)或第二虛擬機(jī)接收要由所述計(jì)算系統(tǒng)的圖形子系統(tǒng)的圖形處理單元(GPU)執(zhí)行的一個(gè)或多個(gè)工作項(xiàng),其中,所述工作項(xiàng)的至少一個(gè)包括特許命令;由所述虛擬機(jī)監(jiān)控程序組件發(fā)現(xiàn)所述特許命令;以及基于至少一個(gè)預(yù)定義的策略仿真所述至少一個(gè)工作項(xiàng)的特許命令。
12.如權(quán)利要求11所述的方法,其特征在于,還包括與所述虛擬機(jī)監(jiān)控程序組件的圖形虛擬機(jī)監(jiān)控程序組件通信,其中,所述圖形虛擬機(jī)監(jiān)控程序組件代表所述第一虛擬機(jī)和所述第二虛擬機(jī)兩者處理具有特許GPU命令的工作項(xiàng)。
13.一種包括用于依照如權(quán)利要求1所述的方法執(zhí)行通信的計(jì)算機(jī)可執(zhí)行指令的應(yīng)用程序編程接口。
14.一種包括被改編成適合執(zhí)行如權(quán)利要求11所述的方法的功能組件的圖形處理單元。
15.一種包括用于執(zhí)行如權(quán)利要求11所述的方法的裝置的計(jì)算設(shè)備。
16.一種計(jì)算設(shè)備,包括在所述計(jì)算設(shè)備的一個(gè)或多個(gè)虛擬機(jī)上執(zhí)行的第一應(yīng)用程序和第二應(yīng)用程序;虛擬機(jī)監(jiān)控程序組件,除非被授權(quán),否則所述虛擬機(jī)監(jiān)控程序組件不允許來(lái)自所述第一應(yīng)用程序的圖形接口調(diào)用與未對(duì)所述第一應(yīng)用程序授權(quán)的任何物理資源交互。
17.如權(quán)利要求16所述的計(jì)算設(shè)備,其特征在于,所述虛擬機(jī)監(jiān)控程序組件不允許來(lái)自所述第一應(yīng)用程序的圖形接口調(diào)用改編或讀取與所述第二應(yīng)用程序相關(guān)聯(lián)的系統(tǒng)存儲(chǔ)器或本地存儲(chǔ)器。
18.如權(quán)利要求16所述的計(jì)算設(shè)備,其特征在于,所述虛擬機(jī)監(jiān)控程序組件包括可信代碼基,用于分別基于來(lái)自所述第一應(yīng)用程序和所述第二應(yīng)用程序的輸出呈現(xiàn)顯示窗口。
19.如權(quán)利要求18所述的計(jì)算設(shè)備,其特征在于,所述第一應(yīng)用程序在具有與其相關(guān)聯(lián)的第一桌面的第一操作系統(tǒng)平臺(tái)上執(zhí)行,所述第二應(yīng)用程序在具有與其相關(guān)聯(lián)的第二桌面的第二操作系統(tǒng)平臺(tái)上執(zhí)行,并且所述由可信代碼基的呈現(xiàn)包括在第一顯示窗口中顯示所述第一桌面以及在第二顯示窗口中顯示所述第二桌面。
20.如權(quán)利要求18所述的計(jì)算設(shè)備,其特征在于,所述第一應(yīng)用程序在具有與其相關(guān)聯(lián)的第一桌面的第一操作系統(tǒng)平臺(tái)上執(zhí)行,所述第二應(yīng)用程序在具有與其相關(guān)聯(lián)的第一桌面的第二操作系統(tǒng)平臺(tái)上執(zhí)行,并且由所述可信代碼基的呈現(xiàn)包括在顯示器上呈現(xiàn)所述第一桌面或所述第二桌面的任一個(gè)。
全文摘要
提供了用于向圖形硬件應(yīng)用虛擬機(jī)的系統(tǒng)和方法。在本發(fā)明的各實(shí)施例中,盡管監(jiān)管代碼運(yùn)行在CPU上,實(shí)際圖形工作項(xiàng)直接運(yùn)行在圖形硬件上,且監(jiān)管代碼被結(jié)構(gòu)化為圖形虛擬機(jī)監(jiān)控程序。使用虛擬機(jī)監(jiān)控程序(VMM)技術(shù)在單獨(dú)的虛擬機(jī)(VM)中與諸如新版本操作系統(tǒng)(OS)等第二OS同時(shí)運(yùn)行諸如原始OS版本等第一OS,保持了應(yīng)用程序兼容性。應(yīng)用于主機(jī)處理器的VMM技術(shù)被擴(kuò)展到圖形處理單元(GPU),以允許硬件訪問(wèn)圖形加速器,從而確保傳統(tǒng)應(yīng)用程序以完全的性能操作。本發(fā)明也提供了當(dāng)在不同的VM中運(yùn)行多個(gè)應(yīng)用程序時(shí)使得用戶體驗(yàn)表面上無(wú)縫的方法。在本發(fā)明的其它方面,通過(guò)采用VMM技術(shù),本發(fā)明的虛擬化圖形體系結(jié)構(gòu)被擴(kuò)展以提供可信服務(wù)和內(nèi)容保護(hù)。
文檔編號(hào)G06F9/46GK1797345SQ20051012873
公開(kāi)日2006年7月5日 申請(qǐng)日期2005年11月30日 優(yōu)先權(quán)日2004年12月30日
發(fā)明者D·R·布萊斯 申請(qǐng)人:微軟公司