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

用于虛擬化圖形子系統(tǒng)的系統(tǒng)和方法

文檔序號:6651240閱讀:225來源:國知局
專利名稱:用于虛擬化圖形子系統(tǒng)的系統(tǒng)和方法
技術(shù)領(lǐng)域
本發(fā)明涉及用于虛擬化計算設(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)一般與主計算機協(xié)作以獨立執(zhí)行執(zhí)行某些專門任務(wù),例如相對而言需要大量原始計算能力的任務(wù),諸如準備應(yīng)用程序的輸出以在監(jiān)視器、打印機或其它設(shè)備上顯示。例如,為創(chuàng)建3-D計算機圖形表示,要描繪的對象被表示為計算機內(nèi)的數(shù)學(xué)模型,這尤其適用于圖形子系統(tǒng)的圖形處理單元(GPU)的數(shù)學(xué)密集型處理。例如,3-D模型可由坐標系統(tǒng)內(nèi)的幾何點組成,該坐標系統(tǒng)由x、y和z軸構(gòu)成,例如分別對應(yīng)于寬度、高度和深度。對象由稱為頂點的一系列點定義。點或頂點的位置由其x、y和z坐標(或其它坐標系統(tǒng))來定義。在圖形術(shù)語中,一個頂點是一個點,兩個頂點定義一條線或線段,而三個頂點定義了三角形,所有這些都是“凸緣”。當鏈接三個或更多的點時,形成多邊形,其中三角形是最簡單的多邊形,它可用于逼近對象的3-D幾何結(jié)構(gòu)并向3-D幾何結(jié)構(gòu)應(yīng)用圖形數(shù)據(jù)來創(chuàng)建各種藝術(shù)和真實效果以及色彩變換。圖形管道可使用其各種計算子單元來非常快速且有效地處理頂點和其它數(shù)據(jù)流,以最終在2-D顯示空間中表示非常復(fù)雜的3-D對象。
由此,諸如在屏幕上呈現(xiàn)和顯示三維(3-D)圖形等某些任務(wù)通常涉及非常適用于由圖形子系統(tǒng)來實現(xiàn)的許多統(tǒng)計和計算。在簡單的圖形系統(tǒng)中,這一計算依照中央處理單元(CPU)和圖形處理單元(GPU)的某一級別的協(xié)作或共享處理而發(fā)生。在一個示例性情形中,在處理了指令且CPU中發(fā)生了某些初始計算之后,將定義要呈現(xiàn)的對象的一組坐標點或頂點儲存在視頻存儲器中以供圖形管道中的GPU在將來使用。例如,如果數(shù)據(jù)是3-D圖形數(shù)據(jù),則鑲嵌器可依照預(yù)定的算法將圖形數(shù)據(jù)分解成簡單的多邊形,這是被稱為鑲嵌的過程,該預(yù)定算法被設(shè)計成有效覆蓋要呈現(xiàn)的對象的表面。當前,在大多數(shù)圖形管道中,數(shù)據(jù)然后可由GPU的一個或多個計算子單元,如過程著色器來操作,取決于傳送到GPU的指令,該子單元與視頻存儲器,即幀緩沖器協(xié)作以依照數(shù)據(jù)的工作指令來處理數(shù)據(jù),并在適當?shù)闹甘鞠聦?shù)據(jù)輸出到例如顯示器或打印機設(shè)備。
如圖1所示,對于具有圖形協(xié)處理系統(tǒng)的計算系統(tǒng),計算系統(tǒng)在主機CPU和圖形硬件之間劃分。CPU便于請求使用圖形API的應(yīng)用程序和服務(wù)做出對圖形API的調(diào)用。常規(guī)上,應(yīng)用程序和驅(qū)動程序位于CPU側(cè),而來自那些源的信息作為工作項被發(fā)送到圖形管道,諸如在監(jiān)視器上顯示數(shù)據(jù)。首先,將依照API由CPU分組的信息從CPU發(fā)送到GPU。然后,來自應(yīng)用程序的信息在存儲器中等待,直到它由GPU的計算子單元(諸如當處理3-D圖形數(shù)據(jù)時則為頂點著色器)調(diào)度和處理。在頂點著色器完成其操作之后,信息通常通過特殊的數(shù)據(jù)路徑從頂點著色器輸出到像素著色器,直到它由像素著色器訪問以供進一步的處理。在像素著色器執(zhí)行了其操作之后,該信息被放置在幀緩沖器中以被掃描輸出到顯示器,或被發(fā)送回主機以供進一步的操作。
在當今的圖形體系結(jié)構(gòu)中,術(shù)語“幀緩沖器”一般指用于光柵化和/或數(shù)—模轉(zhuǎn)換器(DAC)輸出處理的任何存儲器(一般包括視頻存儲器用于與GPU互操作)。在這一點上,盡管術(shù)語光柵化有時更一般地使用,然而結(jié)合圖形管道中的像素處理或設(shè)置引擎處理執(zhí)行的處理一般被稱為光柵化。另一方面,掃描輸出或DAC輸出是基于幀緩沖器的內(nèi)容將信號發(fā)送到監(jiān)視器或LCD的過程。
由于隱含的任務(wù)和計算資源的規(guī)范,計算機系統(tǒng)的圖形子系統(tǒng)通常用于在顯示屏幕上顯示圖形對象。三維(3-D)計算機圖形的目的一般是在計算機屏幕上創(chuàng)建實際以三維表示一個或多個對象的二維(2-D)圖像。實際上,對象占據(jù)具有真實高度、真實寬度和真實深度的三個維度。照片是3-D空間的2-D表示的一個示例。3-D計算機圖形一般與照片相似,因為它們都在計算機屏幕的2-D空間上表示3-D世界,不同之處在于底層圖像一般是用3-D幾何結(jié)構(gòu)和表面紋理來建模的。
用3-D計算機圖形創(chuàng)建的圖像在各種各樣應(yīng)用程序中使用,從視頻娛樂游戲到飛機模擬器,到以真實的方式描繪個人對給定時間點的場景的視野。3-D計算機圖形的公知示例包括諸如Terminator II、Jurassic Park、Toy Story等好萊塢影片中的特殊效果。在過去幾年中遇到尤其大量的增長的一個行業(yè)是計算機游戲行業(yè),且當代的計算機游戲以不斷增長的方式來應(yīng)用3-D圖形技術(shù)。同時,游戲的速度也被驅(qū)動得越來越快。這一組合刺激了對在相對廉價的系統(tǒng)中迅速且靈活地呈現(xiàn)3-D圖像的真實需求。
然而,依照這些與圖形子系統(tǒng)相關(guān)聯(lián)的迅速移動的趨勢線,兼容性、安全性和權(quán)限管理相應(yīng)地也演變?yōu)閱栴}。當每新的一代GPU和相關(guān)聯(lián)的硬件代替了前一代時,除硬件之外,到管道的接口(例如,DirectX8、DirectX9、GDI、GDI+等)也必需進化,且如果期望它們處理對“舊”接口的調(diào)用,則需要編寫確保對較舊的硬件的支持的單獨代碼。在幾代之后,任何一個特定操作系統(tǒng)的圖形接口代碼保持可管理的可能性遞減,且由于不兼容的函數(shù)調(diào)用而引起的處理中的錯誤的可能性隨著兼容性代碼扇出的效果變得根深蒂固而遞增。另一問題是圖形接口代碼的完全獨立的“變形”由于不同操作系統(tǒng)或平臺(Macintosh、Linux、Windows等)或甚至是包括在同一平臺上的不同變形(例如,OpenGL、GDI+、DirectX等)而擴展。由此,仍存在這樣的問題,其中,不同版本的操作系統(tǒng)、圖形接口和相關(guān)聯(lián)的硬件可能不能都是共同支持的,且這些問題隨著時間的推移變得越來越復(fù)雜。期望減輕這一問題而不修改向任何特定操作系統(tǒng)或接口集提供的核心代碼。
對于同一背景,對圖形管道解決安全性和內(nèi)容保護/數(shù)字權(quán)限管理(DRM)的問題變得更復(fù)雜。對于不同的操作系統(tǒng)、接口和硬件,沒有跨所有已知管道實施數(shù)據(jù)安全性或?qū)嵤﹥?nèi)容/數(shù)字權(quán)限管理條件的保護的公共機制。由此,需要一種用于與圖形管道無關(guān)地工作的、解決數(shù)據(jù)安全和/或DRM的問題的公共方法或?qū)印?br> 由此,期望的是通過提供虛擬機作為主機處理器和CPU之間的交互層,來虛擬化計算機系統(tǒng)的圖形管道。還期望的是實現(xiàn)克服當使用各種版本的操作系統(tǒng)或接口或GPU的各種體系結(jié)構(gòu)時遇到的當前的兼容性、安全性和內(nèi)容保護/DRM問題的系統(tǒng)和方法。

發(fā)明內(nèi)容
考慮本領(lǐng)域的上述和其它缺點,本發(fā)明提供了用于向圖形硬件空間應(yīng)用虛擬機的系統(tǒng)和方法。在本發(fā)明的各實施例中,盡管監(jiān)管代碼運行在GPU上,然而實際的圖形工作項直接運行在圖形硬件上。在一個非限制的實施例中,監(jiān)管代碼被結(jié)構(gòu)化為圖形虛擬機監(jiān)控程序。
使用虛擬機監(jiān)控程序(VMM)技術(shù),在單獨的虛擬機中與諸如新版本操作系統(tǒng)(OS)等第二OS同時運行諸如原始OS版本等第一OS,從而保持了應(yīng)用程序兼容性。在一個實施例中,應(yīng)用于主機處理器的VMM技術(shù)擴展到圖形處理單元(GPU),以允許硬件訪問圖形加速器,從而確保傳統(tǒng)應(yīng)用程序以全部的性能操作。本發(fā)明也提供了在不同的VM中運行多個應(yīng)用程序的同時使得用戶體驗表面上無縫的方法。在本發(fā)明的其它方面,通過采用VMM技術(shù),擴展了本發(fā)明的虛擬化圖形體系結(jié)構(gòu),以提供可信的服務(wù)和內(nèi)容保護。
下文將描述本發(fā)明的其它優(yōu)點和特征。


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