用於圖形適配器的虛擬化的資源管理的製作方法
2023-06-14 13:19:36 1
專利名稱:用於圖形適配器的虛擬化的資源管理的製作方法
用於圖形適配器的虛擬化的資源管理版權通告和許可本專利文檔的公開的一部分可以包含以版權保護為依據的材料。版權所有者 不反對任何人對本專利文檔或本專利公開像出現在專利商標局專利文件或記錄中 一樣的複製,但是除此之外保留所有的版權。以下通告將適用於本文檔版權 2005,微軟公司。發明背景在典型的虛擬機環境中,多個虛擬機或"分區"運行在虛擬化軟體上。該軟 件則運行在硬體上。虛擬化軟體以允許多個分區運行在硬體上,每個分區具有其自 己的作業系統(OS)的方式來開放硬體。硬體由此被虛擬化軟體針對分區虛擬化。各個分區能夠運行不同的0S,諸如Windows、 Linux、 Solaris、 MacOS等。 這些OS可以彼此分隔開,使得如果一個分區中的一個OS毀壞,它將不會影響其 他分區中的其他OS。此外,允許多個OS在單個硬體但是不同的分區中運行使得 能夠方便地運行為不同版本或類型的OS開發的不同版本軟體。就運行在各個分區內的圖形程序而言,這種程序的圖形資源應該可以在各個 分區之間共享。圖形資源包括用於呈現場景的表面、紋理、頂點緩衝器(vertex buffer)、索引緩衝器等。應用程式需要創建、載入、複製和使用這些資源。例如, 在計算機生成的3-D圖像中紋理是產生真實感的強大工具。較早的計算機生成的 3-D圖像雖然一般在它們的時期是先進的,但是趨於具有發亮的塑料外觀。它們缺 少諸如磨損、裂紋、指紋、和煙燻等使得3-D對象具有真實視覺複雜性的印記。 一些程序支持擴展的紋理特徵集,從而使得開發者能夠方便地訪問先進的紋理技 術。作為另一示例,可以由一些界面表示的頂點緩存器是包含頂點數據的存儲緩 存器。頂點緩存器可以包含可以通過使用呈現方法呈現的任何頂點類型一變形的或 未變形的、亮的或不亮的。可以在頂點緩存器中處理頂點,用於執行諸如變形、點 亮或生成剪輯標記的操作。頂點緩衝器的靈活性使得它們成為重新使用變形幾何的 理想的分段點。當然,紋理和頂點緩衝器僅是圖形資源的兩個示例。如所述的,本文中構想表面、索引緩衝器和其他圖形資源,如本領域普通技術人員能夠容易地認 識到地。確保虛擬機環境中的各個分區能夠適當地訪問這種圖形資源中存在一個重 要的問題。發明內容提供了用於在虛擬機環境中的多個分區之間共享圖形適配器資源的各個機 制。在第一示例性機制中,使用圖形代理進程。位於第一分區中的該圖形代理進程 擁有真實的圖形適配器資源,並且它能夠經由虛擬圖形適配器將這些資源提交給第 二分區。圖形代理進程控制第二分區(或第三分區,在該情況下)所具有的對圖形 適配器計算資源的訪問時間。 一方面,圖形代理進程在設備場景中使用不僅能控制 分區間訪問時間也能夠控制分區內訪問時間的時間銀行。在第二示例性機制中,再一次圖形代理進程與回叫機制一起能夠同步各個分區的虛擬存儲器,使得這些分區能夠訪問同一真實物理存儲器,由此允許這種分區 共享存儲在真實物理存儲器中的基於圖形適配器存儲器的資源。然而,第一分區可以將圖形代理進程不僅用於同步,也用於處理第二分區中的頁面差錯。例如,如果 真實物理存儲器中的頁面已經被頁出(例如到盤上),而第二分區中的應用程式試 圖經由其虛擬存儲器訪問圖形適配器資源並發生了頁面差錯,那麼圖形代理進程能 夠頁入所請求的頁面,使得應用程式能夠訪問基於請求存儲器的圖形適配器資源。 最後,提供了允許在各個分區中創建多個視頻覆蓋圖的第三示例性機制。視 頻覆蓋圖不僅能用在上述的第一分區中,而且也能夠用在第二或第三分區中。該機制至少使用像素遮蓋圖(pixel shader)來完成該任務。提供該概述是為了以簡化的形式引入各種概念,這些概念會在以下具體實施 方式中作進一步的描述。本概述並不旨在標識所作權利要求的主題的關鍵特徵或必 要特徵,也不旨在用作協助確定所作權利要求的主題的範圍。
當結合附圖閱讀時,能更好地理解以上概述以及以下詳細描述。為了提供有 用的說明,示出了各個方面。然而,這些方面不限於所公開的特定方面。而是包括 以下示例性附圖圖1是示出用於計算機系統中虛擬化操作環境的硬體和軟體體系結構的邏輯 分層的框圖;圖2A是示出虛擬化計算系統的框圖,其中虛擬化由主存作業系統(直接或經 由管理程序)來執行;圖2B是示出替換的虛擬化計算系統的框圖,其中虛擬化由與主存作業系統並 行運行的虛擬機監視器來執行;圖3示出了允許通過將圖形適配器虛擬化到各個分區中來訪問圖形適配器資 源的圖形代理進程;圖4示出了使用像時間銀行的各種機制來控制對圖形適配器資源的訪問時間的圖形代理進程。圖5A和5B示出了允許在分區之間共享存儲器的高級機制; 圖6A、 6B、 6C、 6D、 6E、 6F、 6G和6H示出了允許在分區之間共享存儲器 的低級機制;圖7示出了覆蓋圖的高級概述;圖8示出了覆蓋圖和基本視頻表面是如何與圖形適配器交互的;以及圖9示出了如何向各個分區提供多個覆蓋圖。
具體實施方式
概述提供了在虛擬機環境中的多個分區之間共享圖形適配器資源的各種機制。一 種機制允許基於每個分區能夠從圖形代理進程獲取的訪問時間共享圖形適配器計 算資源。另一種使用圖形代理進程和回叫機制的機制能夠同步分區的虛擬存儲器, 使得任何選定的分區能夠經由其虛擬存儲器訪問存儲在真實存儲器中的基於圖形 適配器存儲器的資源。又一種機制允許多個分區具有僅使用單個真實圖形適配器資 源的視頻覆蓋圖。這些技術之前是對虛擬機的一般概述,用於為這些示教提供適當 的上下文。虛擬機圖1是示出用於計算機系統中虛擬化環境的硬體和軟體體系結構的邏輯分層的框圖。在附圖中,虛擬化程序110直接或間接地運行在物理硬體體系結構112 上。虛擬化程序110可以是與主存作業系統一起運行的虛擬機監視器,或者是具有 管理程序組件的主存作業系統,其中管理程序組件執行虛擬化。虛擬化程序110 虛擬化客戶硬體體系結構108 (用虛線示出,用於示出該組件是分區或"虛擬機" 的事實),即,實際上不存在而是由虛擬化程序110虛擬化的硬體。客戶作業系統106在客戶硬體體系結構108上執行,而軟體應用程式104在客戶作業系統106上 運行。在圖1的虛擬化操作環境中,即使軟體應用程式104被設計成在一般與主存 作業系統和硬體體系結構112不兼容的作業系統上運行,軟體應用程式104也可以 在計算機系統102中運行。圖2A示出了包含直接運行在物理計算機硬體202上的主存作業系統(主存 OS)軟體層204的虛擬化計算系統,其中主存OS 204通過暴露到分區A 208和B 210的接口以分別供作業系統212和214使用來提供對物理計算機硬體202的資源 的訪問。這使得主存OS 204能夠不被運行於其上的作業系統層212和214注意到。 同樣,為了執行虛擬化,主存OS204可以是特別設計的帶有固有虛擬化能力的操 作系統,或者它可以是具有結合的用於執行虛擬化的管理程序組件(未示出)的標 準作業系統。再次參考圖2A,上述主存OS 204具有兩個分區,分區A 208可以是例如虛 擬化Intel 386處理器,而分區B 210可以是例如Motorola 680X0族處理器之一的 虛擬化版本。在各個分區208和210內的分別是客戶作業系統(客戶OS) A 212 和B214。運行在客戶OSA212上的是兩個應用程式,應用程式Al 216和應用程 序A2 218,以及運行在客戶OS B 214上的是應用程式Bl 220。關於圖2A,重要的是注意到分區A 208和分區B214 (用虛線示出)是僅作 為軟體結構存在的虛擬化計算機硬體表示。這由於執行專門的虛擬化軟體不僅分別 向客戶OSA212和客戶OSB214示出分區A208和分區B210,而且也執行了客 戶OS A 212和客戶OS B 214與真實物理計算機硬體202間接交互所需的所有軟體 步驟,而成為可能。圖2B示出了替換的虛擬化計算系統,其中虛擬化是由與主存作業系統204" 一起運行的虛擬機監視器(VMM) 204'執行的。在某些情況下,VMM204'可以是 運行在主存作業系統204"上、以及僅通過主存作業系統204"與計算機硬體202交 互的應用程式。在其他情況下,如圖2B中所示,VMM 204'相反可以包括一個部 分獨立的軟體系統,它在某些層次上經由主存作業系統204"與計算機硬體202間 接交互,而在另一些層次上VMM204'與計算機硬體202直接交互(類似於主存操 作系統與計算機硬體直接交互的方式)。然而在其他情況下,VMM204'可以包括 一個完全獨立的軟體系統,它在所有層次上都與計算機硬體202直接交互(類似於 主存作業系統與計算機硬體直接交互的方式),而無需使用主存作業系統204"(雖 然仍與主存作業系統204"交互,以便於協調使用計算機硬體202和避免衝突等)。這些變體僅是示例性實現,此處的所有都不應該被解釋 為將本發明限制到任何特定的虛擬化方面。 用於圖形適配器的虛擬化的資源管理圖3示出了用於在虛擬機環境中在多個視頻客戶機分區(VCP)之間共享圖形適配器資源的機制。在圖3中,示出了管理程序302,管理程序302維護視頻服 務分區(VSP) 304和兩個VCP—VCP A 306和VCP B 308。這些分區304、 306 和308中的每一個具有運行在其中的某些相應作業系統,不管是Windows (XP、 NT、 ME、 2000、 98、 95等)還是Linux、 Unix、 MacOS、 IBM OS/2等。位於VSP 304中的圖形代理進程314擁有位於物理硬體312中的圖形適配器310。該圖形代 理進程314基於它擁有的真實圖形適配器310為分區創建虛擬圖形適配器。此外, 圖形適配器310被耦合到某些圖形適配器資源326,諸如視頻隨機存取存儲器 (VRAM)或僅僅是系統隨機存取存儲器(RAM)。圖形代理進程314可以向VSP 304提交虛擬圖形服務適配器324,雖然這不是 嚴格要求的,因為另一選擇是VSP 304中的其它應用程式通過使用由310的驅動 程序和VSP 304的OS提供的適配器共享機制以與進程314相同的方式使用相同的 圖形適配器310。然而,更重要的是圖形代理進程314向VCPA305和VCPV308 提交虛擬圖形適配器A320。這種虛擬圖形適配器允許應用程式在VCP中運行,以訪問它們可能需要的圖 形適配器資源326。例如,應用程式A316可以與虛擬圖形適配器A320通過接口 連接,並且通過圖形代理進程314最終訪問圖形適配器資源326。上述系統的眾多優點之一是不僅會將圖形適配器資源326提供給多個客戶機 分區,而且那些分區中的應用程式會受到有關它們對圖形適配器資源326的使用的 更大控制。例如,圖形代理進程314將能夠在示例性情況中實施更大的控制,在該 示例性情況中應用程式A 316試圖通過分配比如大量圖形表面來接管全部的整個 圖形適配器資源326。在該情況下,圖形代理進程314能夠確保應用程式B318不 急需圖形適配器資源326。當然這僅僅是一個典型的情況,以下討論其他情況。VSP 304運行圖形代理進程314,並且代理進程314為由諸如VCP A 306或 VCP B 308的任何視頻客戶機分區作出的與圖形有關的請求提供服務。代理進程 314管理由VCP請求的每次圖形資源分配,使得每個虛擬圖形適配器資源326 (與 諸如適配器A 320和適配器B 322的相應虛擬圖形適配器相關聯)在VCP看來總 是被分配的、活動的並且準備好由相應的圖形適配器使用。事實上,由圖形代理進程314管理的虛擬圖形資源可以是活動的或不活動的。如果虛擬圖形資源是活動 的,則意味著虛擬圖形資源當前與可以由虛擬圖形適配器使用的真實圖形資源相關 聯。如果虛擬圖形資源是非活動的,則意味著虛擬圖形資源不具有與可由虛擬圖形 適配器使用的相關聯真實圖形資源。然而,非活動圖形資源的內容存儲在系統存儲 器中,使得當圖形資源變成非活動時其狀態不會被丟失。此外,只要VCP使用非 活動虛擬圖形資源,資源就會被再次激活。有時非活動虛擬圖形資源的初始激活會失敗,因為虛擬圖形適配器會沒有創 建相關聯真實圖形資源的空間。在這種情況下,會通過去激活其他虛擬圖形資源直至有用於與當前使用的虛擬圖形資源相關聯的真實圖形資源的空間來為相關聯的 真實圖形資源創建空間。 I.處理器時間共享另一方面,至少在兩種情況下圖形適配器310和圖形適配器資源326會必須 在諸如VCP A 306和VCP B 308的分區之間共享。第一種情況是由圖形適配器310 通過接口連接的GPU (圖形處理單元)的時間共享,這在第一節中討論。第二種 情況是圖形適配器資源326的存儲器共享,這在本節之後的第二節中討論。圖4示出了典型的視頻服務分區(VSP) 402和典型的視頻客戶機分區(VCP) 404。在VSP 402中具有圖形代理進程406,該進程是與參考上述圖3討論的相同 的進程。圖形代理進程406具有在圖形代理進程406控制之下的客戶機分區場景 408。若干個圖形設備場景可以出現在VCP404中,因此有其中可執行應用程式的 每客戶機圖形設備場景(per-client-grphics-device -context)場景414。具體地,有 時間銀行416功能,即一種設備場景必須在GPU上執行多少時間的"銀行帳戶"。 時間銀行416與包含要執行命令的圖形命令隊列418相關聯,且時間銀行416控制 可執行命令的時間量。例如,典型的客戶機分區設備場景420可執行其命令418 長達時間銀行416允許的時間。此外,還有客戶機分區內GPU調度器412,用於 在諸如客戶機分區代理設備場景420的客戶機分區設備場景被允許執行圖形命令 時進行調度。客戶機分區代理設備場景420用作實際客戶機分區設備場景428的代 理。用於整個客戶機分區場景408的總時間銀行410確保特定的客戶機分區場景 (在該情況下為場景408)不會相對於其他客戶機分區場景無節制地挪用時間量用 於執行其命令。此外,圖形代理進程406還具有客戶機間分區GPU調度器422, 用於調度諸如VCP 404和某些其他VCP(未繪出)的不同客戶機分區以成比例地分散每個客戶機分區整體地將在GPU上接收的時間量。客戶機間分區圖形資源管理器422在可能運行於典型虛擬機環境中的各個VCP之間作出圖形資源的模擬成比 例分發。最後,用於圖形代理進程406的時間銀行425確保每個客戶機分區相對於 其他客戶機分區整體地接收成比例的GPU時間量。VCP404可以具有在VCP404中運行的某些典型進程(或應用程式)424。這 種進程424可以具有某些應用程式代碼430使用的圖形設備場景428。此外,VCP 404可以具有在VSP402中與圖形代理進程406通信的啟發(enlightened)圖形驅 動程序426。按照有關圖4的討論,為了共享GPU上的時間,圖形命令緩衝器的每個隊列 與它為之持有圖形命令的對應視頻客戶機分區相關聯。每次圖形命令緩衝器運行 時,就測量它用於執行的時間。圖形代理進程依照每個VCP的圖形優先級平衡給 與每個VCP的GPU時間。如果特定VCP生成使用異常長時間來執行的圖形命令 緩衝器,那麼來自該VCP的以後的命令緩衝器被分割成較小的命令緩衝器,以改 進調度的間隔大小。反之亦然一如果來自特定VCP的命令緩衝器使用異常短的時 間段來執行,那麼來自該VCP的以後的命令緩衝器被組合成較大的命令緩衝器。 命令緩衝器的分割和組合無需是通過其達到平衡的機制,相反它可以僅用於使用調 度間隔大小平衡效率。作為另一種選擇,可以直接使用VSP 402的圖形設備場景 優先化特徵,以便於對客戶機分區代理設備場景420分配適當的優先級。這樣,就 避免了對圖形代理進程406內的顯式時間銀行的需求。然而,另一方面,用於平衡GPU上的時間的一種機制如下所述(這是調度算 法的一個示例—也可以使用其他的)。每個VCP都具有一 "時間銀行",如以上 參考圖4所述,它開始是空的並可以持有GPU時間。只要命令緩衝器隊列為空, 時間銀行就被限制到特定的最大值。優選地,在它們的命令緩衝器隊列中具有命令 緩衝器的VPC在它們的時間銀行裡具有超過最大值的正時間。在調度器每次"滴 答(tick)"時,時間被添加到VCP的時間銀行中。調度器一次一個地旋轉通過 VPC,對具有正時間銀行值的分區執行命令緩衝(意味著它們也具有排隊的命令緩 衝器)。當特定VCP的輪次到來時,執行命令緩衝器,並且對每一個計時。用於執行 每個命令緩衝器所要用的時間被從該VPC的時間銀行減去,從而可能給該VPC帶 來負的時間銀行值。將繼續對該VPC執行命令緩衝器直至沒有該視頻客戶機分區 的更多的未決命令緩衝器,或者直至該視頻客戶機分區的時間銀行變成小於或等於零。由於對視頻服務分區中的圖形適配器的其他用戶可實施很少的控制,因此那些 用戶被忽略,並且那些其他用戶所使用的時間會被合理地隨機加於VPC的時間銀 行。當滴答發生並且時間被分配給各VPC時間銀行時,可用時間在能採用更多時 間的那些視頻客戶機分區之間分配(某些VPC可能不能採用更多的時間,因為它 們會達到它們的最大值)。分配時間的比例可以由優先級機制來確定。如果所有的VPC都達到了它們的時間最大值,那麼某些時間可能被分配成丟棄,因為沒有VPC 可以使用它。最大值防止在稍後的時間視頻VPC構成它們接著可用於未經檢査運行擴展時間段的大量的時間過剩。如以上在圖4中所示,上述時間銀行和命令緩衝器隊列可以是每視頻客戶機 分區,或者它可以是具有上述在VPC之間的時間分配以及在每個視頻客戶機分區 內的設備場景之間非常類似的子時間分配的兩級系統。VCP具有將看似真實圖形適配器的展示給視頻客戶機分區、並且與在視頻服務分區中運行的代理應用程式通信的虛擬圖形適配器驅動程序。視頻服務分區中的代理應用程式從視頻服務分區的角度看起來就是使用GPU的另一應用程式。同樣有趣的是注意在例如向VSP中的圖形代理應用程式報告表面或其他圖 形資源丟失的情況下,這種丟失會需要報告給VCP,因為可能已經導致了表面數 據不可避免的丟失,而在擁有虛擬表面的視頻客戶機分區中運行的應用程式接著會 負責處理表面丟失差錯(一些應用程式預期能夠處理的常規差錯)。 II.存儲器共享如上所述,至少有兩種情況涉及資源的共享。 一種情況涉及GPU時間的共享 (如上所述),而另一種涉及存儲器的共享。就第二種情況而言,存儲器資源的共 享需要圖形適配器資源的共享,諸如圖形適配器上的視頻存儲器或對於圖形適配器 可見(可能通過加速圖形埠孔和另一類孔)的系統存儲器。因此, 一方面,圖5A示出了用來允許各個VCP中的典型應用程式經由稱為 鎖定(Lock)和開鎖(Unlock)的API調用對來訪問包含在圖形資源中的數據的 機制。在VSP 502中運行的圖形代理進程506通信耦合到圖形運行時間514。圖形 代理進程506為來自在VCP 504中運行的某些應用程式516的鎖定和開鎖API提 供服務。這些API返回給應用程式516指向包含在圖形資源512中的數據的指針, 應用程式516接著可以使用該指針讀取或寫入包含在圖形資源516中的數據直至該 資源被開鎖。指針被VSP 502的運行時間程序514返回,它是指向圖形代理應用程式的虛擬地址空間的指針,如在以上附圖中所討論的。圖5B示出了 VSP和VCP中各個 地址空間之間的關係。圖形資源512是可訪問的,並且在被鎖定時在圖形代理應用 程序518的虛擬地址空間中不移動,但是用於保存基礎數據的物理地址520和526 會改變(在MSFT-4785/310782.01 "增強型頁表算法"中更詳細地討論虛擬分區 地址、物理分區地址、機器物理地址、分區頁表和影象頁表之間的關係)。因為對VCP 522中特定虛擬地址的訪問通常映射到VCP物理地址524,它又 映射到機器物理地址526,所以從VCP物理地址524到VSP物理地址520的映射 通常不予以考慮。如果在圖形資源被鎖定時VSP 502中的視頻存儲器管理器528 確定要改變保存圖形資源的物理頁面520和526,那麼對初始鎖定API調用的固定 映射設置會造成對要映射到錯誤的機器物理地址526的鎖定表面中的VCP虛擬地 址522的訪問。這會導致讀取不正確的數據被讀取、數據被寫入到錯誤的物理頁面 520和526、以及其他不期望的問題。同樣地,VSP 502上的視頻存儲器管理器528 能夠自由控制對組成展示給圖形代理進程508的虛擬地址範圍518的頁面的可訪問 性,以便於實現諸如寫入時複製(copy-on-write)或請求調頁調度等。為了解決上述情況,視頻存儲器管理器528揭示了回叫機制530。在用於存儲 鎖定圖形資源512的數據的物理頁面520和526被改變的任一時間、以及用於存儲 鎖定圖形資源512的數據的頁面的可訪問標記被改變的任一時間,都調用回叫機制 530。對VCP影象頁表(未繪出)和從VCP物理地址524到機器物理地址526的 映射作出類似改變以實現相同的訪問語義,並且能夠使用VCP虛擬地址522直接 訪問對應於適當VSP物理頁面520的機器物理頁面526。圖6A-6H示出了在物理頁面基礎虛擬頁面被到處移動和被頁出存儲器時所發 生事情的快照圖片。為了使得分區能夠有效地共享存儲器,必須在分區之間同步各 種類型的虛擬到物理存儲器映射。圖6A示出了 VSP 602中圖形代理應用程式的虛 擬地址空間。該地址空間對應於圖5中的空間518。地址空間602將604映射到可 能對應於圖5中的地址空間526的物理地址空間606 (經由分區物理地址空間、分 區頁表、影象頁面等,此處未作討論)。同樣地,圖形客戶機應用程式610的虛擬 地址空間可以將608映射到物理地址空間606。 VSP602中的圖形代理應用程式的 虛擬地址空間和VCP 610中的圖形客戶機應用程式的虛擬地址空間可以具有備用 鎖定圖形資源612和614的對應頁面的一些存儲器地址,使得圖形資源612和614 由相同的機器物理頁面來備用。圖6B示出在物理地址改變時發生了什麼以及映射604的至少之一必須如何被更新。因此,原始映射618 (虛線)必須被丟棄並由新的映射616 (粗線)代替, 因為包含在地址空間中的一些數據已經改變了位置。特別地,VCP到機器物理地 址映射之一,即映射620沒有被改變,這意味著當前VCP虛擬地址610不對應於 適當的物理地址。結果是它們也必須被改變。圖6C示出了將VCP虛擬地址610更新為機器物理地址606。因此,虛線箭頭 示出了舊映射620,而粗線箭頭示出了新的、經更新的映射622。因此此後,VSP 到機器物理地址映射604和VCP到機器物理映射608都被適當地更新和同步。圖 6D示出了用作兩個分區之間的存儲器共享的基礎的VSP和VCP之間的同步。圖6E示出了在圖形資源的一個頁面被頁出機器物理存儲器606時發生了什 麼。帶有斜線的頁面被頁出存儲器,並且過去的映射624不再有效。從VSP虛擬 地址的新映射626不再具有到機器物理存儲器606中的頁面的對應映射。沒有東西 可以從這種頁出的頁面讀取或寫入("NOrw")。接著,圖6F示出了從VCP虛擬地址608的映射必須與VSP虛擬地址映射604 同步。具體地,舊映射628不對應於已經被頁出的機器物理地址空間606頁面。相 反,新的映射不具有對應的機器物理頁面,並且因此沒有東西可以被讀出或寫入到 該頁面("NOrw")。圖6G示出了由於VCP中的應用程式試圖訪問已經被頁出物理存儲器的頁面 的頁面出錯的情況。因此,典型的應用程式試圖訪問VCP應用程式610的虛擬地 址空間中的頁面。由於該特定頁面已被頁出機器物理存儲器606,因此沒有對應的 虛擬到物理映射608 ( "NOrw")。結果是發生頁面出錯。當由於對映射到圖形 資源的虛擬地址的不允許訪問而在VCP中發生頁面出錯時,頁面出錯被轉發給 VSP存儲器管理器,如同在視頻服務分區內的圖形代理應用程式中發生了模擬出 錯一樣。這使得視頻服務分區中的視頻存儲器管理器能夠採取適當的行動來使得該 虛擬地址對試圖的訪問可用。如果訪問是真正的出錯(例如試圖寫入只讀表面), 那麼圖形代理應用程式沒有出錯,但該出錯被轉發回VCP並且給予("注射"入) 最初產生該錯誤的VCP應用程式。最後,圖6H示出了如何處理頁面出錯。被頁出物理存儲器的物理頁面被頁入 回存儲器。因此,舊映射629和630被新映射632和634代替。與以前一樣,首先 VSP虛擬地址602被映射到機器物理地址606,接著相關的VCP虛擬地址經由映 射608與該映射604同步。然而,這僅是示例性同步一其他類型的同步也可適用, 由此允許在不同分區之間的存儲器共享。III.視頻覆蓋圖
視頻覆蓋圖通常被用於顯示解壓縮的數字視頻內容。這種內容通常不被存儲
為紅、綠和藍數據(RGB),相反它通常被存儲為亮度和色度數據(YUV)。圖7 示出了不同於屏幕702上其餘的常規RGB數據,視頻覆蓋圖支持屏幕上YUV數 據在矩形704中的直接硬體支持顯示的概念。
此外,圖8示出了用於常規硬體支持的YUV視頻覆蓋圖的像素數據路徑。硬 件主RGB視頻表面802與硬體支持的YUV視頻覆蓋圖804 —起被提供給圖形適 配器806。主表面數據802和視頻覆蓋圖804 —起由圖形適配器806處理,接著從 圖形適配器806轉發給某些圖形顯示器808。
視頻覆蓋圖804被顯示為好像它們替代了基本的RGB數據802,但實際上基 本的RGB數據802未被影響。視頻覆蓋圖804通常支持視頻尺寸的硬體放大或縮 小。視頻覆蓋圖804通常可以在屏幕808上到處移動或調整大小。有時這種性能被 用於使得視頻覆蓋圖看起來似乎在使用RGB數據畫出的窗口內。當該視頻顯示窗 口僅僅部分可見時(可能由於另一窗口的覆蓋),稱為目標色度鍵(或源色度鍵) 的技術被用於使得僅在視頻顯示的可見部分上示出覆蓋圖。通常在圖形適配器硬體 中實現色度鍵技術。通常,視頻覆蓋圖的亮度、對比度和灰度校正以及其他參數可 以獨立於應用到常規RGB數據的對應參數來調整。
在這裡所講授的主題的一方面中,圖9示出了可以在同一圖形適配器910上 創建多個視頻覆蓋圖920和922,這意味著同時向每個VCP提供其自己的視頻覆 蓋圖。該任務通過創建模擬的視頻覆蓋圖920和922來完成。這些模擬的視頻覆蓋 圖在VCP 906和908看起來是硬體支持的視頻覆蓋圖。但實際上,它們是使用像 素遮蓋器916和帶有模擬視頻覆蓋圖表面的VCP主圖形輸出表面的最終合成步驟 來實現的。視頻覆蓋圖縮放、從YUV到RGB的轉換、色度鍵以及亮度/對比度/ 灰度調節使用像素遮蓋器來實現。通過使用多個單獨的表面或一表面翻轉鏈來模擬 視頻覆蓋圖的表面翻轉和定時語義(但是實際上不是硬體支持的視頻覆蓋圖)。可 任選地,最重要地、前景或可見的最大模擬覆蓋圖可以由真正硬體支持的視頻覆蓋 圖來備份。
例如,如果VCP寫入到YUV中的視頻覆蓋圖表面,那麼它使用較早描述的 表面共享機制來完成。如果使用覆蓋圖操作API來設置覆蓋圖的位置和/或大小, 那麼就保存該組信息的軌跡。當到了更新屏幕(下一刷新)的時間,就讀取所保存 的信息並使用像素遮蓋器,其中像素遮蓋器包含用於完成將Y、 U和V數據中的每一個放大到屏幕上目標RGB矩形的大小的紋理形成和過濾操作,以及使得目標
解析度YUV像素變成RGB格式的色彩空間轉換步驟(在該步驟中可以考慮灰度 和亮度設置)。從YUV到RGB的轉換和縮放步驟可以用任一順序完成,但是通 常在仍處於YUV色彩空間中時完成灰度和亮度操作。較佳地,像素遮蓋器程序是 用於生成表示目標覆蓋圖矩形的矩形區域的每個像素的較大遮蓋器程序的一部分。 該較大程序也會測試覆蓋圖目標矩形"之下"的主表面的每個像素的"目標"色彩, 並且僅當它匹配指定的RGB色彩時,它才會完成程序的其餘部分(縮放和色彩空 間轉換)。該像素遮蓋器程序無需用於先前己知在覆蓋圖目標矩形之外的像素。注 意,該實現導致不包括任何覆蓋圖像素的"源"主表面和具有覆蓋圖像素混入的"目 標"主表面。可以有目標主表面的兩個"雙緩衝"副本。"目標"主表面(意指其 組成雙緩衝表面之一)接著可以由視頻卡直接掃描到屏幕上(VM視圖的"全屏模 式"),或者可以被進一步合成到可以與其他窗口一起示出的"桌面視圖窗口"。 以上像素遮蓋器程序描述可以使用具有相同最終效果的一些不同順序變體來完成。 雖然結合本主題的優選方面描述了本發明,如各個附圖中所示,但是應該理 解也可以使用其他類似的方面,或者可以對所述方面作出修改和添加,用於執行本 主題相同的功能而不背離之。例如, 一方面,討論了圖形適配器的虛擬化的資源管 理。然而,本發明也期望所描述的這些內容的其他等價方面。因此,本發明不應該 限於任一單個方面,而是依照所附權利要求的廣度和範圍來解釋。
權利要求
1.一種具有計算機可執行指令的計算機可讀介質,這些指令用於提供用於在虛擬機環境中在多個分區之間共享圖形適配器資源的機制,包括向第一分區提供圖形適配器資源,其中所述圖形適配器資源是虛擬圖形資源;提供圖形代理進程,其中存儲在第二分區中的圖形代理進程擁有真實的圖形資源,其中所述虛擬圖形資源與所述真實圖形資源相關聯;以及提供與所述圖形代理進程相關聯的機制,用於控制所述第一分區所具有的對所述虛擬圖形資源的訪問時間量。
2. 如權利要求1所述的計算機可讀介質,其特徵在於,所述第二分區中的圖形代理進程與所述第一分區中的驅動程序通信,其中所述驅動程序允許所述第一分 區經由所述圖形代理進程訪問所述虛擬圖形資源。
3. 如權利要求1所述的計算機可讀介質,其特徵在於,所述第一分區所具有 的對所述虛擬圖形資源的訪問時間量是基於時間銀行的。
4. 如權利要求1所述的計算機可讀介質,其特徵在於,所述時間銀行控制所 述第一分區和所述第二分區之間對所述真實圖形資源的訪問時間。
5. 如權利要求1所述的計算機可讀介質,其特徵在於,所述時間銀行控制在 所述第二分區中第一代理圖形設備場景與第二代理圖形設備場景之間對所述真實 圖形資源的訪問時間。
6. 如權利要求1所述的計算機可讀介質,其特徵在於,所述第二分區在對所 述真實圖形資源訪問時執行排隊的命令。
7. —種具有計算機可執行指令的計算機可讀介質,這些指令用於提供用於在 虛擬機環境中在多個分區之間共享圖形適配器資源的機制,包括向第一分區提供圖形適配器資源,其中所述圖形適配器資源是虛擬圖形適配 器資源;提供圖形代理進程,其中存儲在第二分區中的圖形代理進程擁有真實的圖形 適配器資源,其中所述虛擬圖形適配器資源與所述真實圖形適配器資源相關聯;以 及提供與所述圖形代理進程相關聯的回叫機制,用於同步所述第一分區中的虛 擬存儲器映射和所述第二分區中的虛擬存儲器映射,其中所述第一分區和所述第二分區的每一個中的至少一個虛擬存儲器頁面被鎖定不被中央處理單元訪問,使得存 儲所述真實圖形適配器資源的真實物理存儲器中的頁面可以被頁入和頁出所述真 實物理存儲器,而所述第一和第二分區的每一個中的虛擬存儲器頁面數目在鎖定時 不改變。
8. 如權利要求7所述的計算機可讀介質,其特徵在於,所述回叫機制將所述 第一分區中虛擬存儲器的選定部分與所述第二分區中的虛擬存儲器的選定部分同 步。
9. 如權利要求7所述的計算機可讀介質,其特徵在於,當基礎真實物理存儲 器頁面被頁出所述真實物理存儲器時,所述圖形代理進程的頁入機制處理所述第一 分區中的頁面差錯。
10. 如權利要求9所述的計算機可讀介質,其特徵在於,所述第一分區中的對應虛擬頁面訪問並未駐留在所述真實物理存儲器中的虛擬頁面時,所述圖形代理 進程的頁入機制將已經被頁出所述真實物理存儲器的頁面頁入到所述真實物理存 儲器中。
11. 如權利要求7所述的計算機可讀介質,其特徵在於,運行時間程序提供 一應用程式接口,用於鎖定和解鎖所述第一分區中的圖形資源。
12. 如權利要求ll所述的計算機可讀介質,其特徵在於,所述第一分區中的 應用程式可鎖定和解鎖所述第一分區中的圖形資源。
13. 如權利要求7所述的計算機可讀介質,其特徵在於,所述第一分區中的 驅動程序與所述第二分區中的圖形代理進程通信,其中所述驅動程序和所述第二分 區中的圖形代理進程協作以允許所述第一分區訪問所述虛擬圖形適配器資源,並因 此訪問所述真實圖形適配器資源。
14. 一種具有計算機可讀指令的計算機可讀指令,這些指令用於在虛擬機環 境中提供圖形適配器資源,包括向所述虛擬機環境中的第一分區提供具有被存儲為亮度和色度數據的像素的 表面;以及向所述第一分區提供第二分區所擁有的像素遮蓋器的轉換功能,用於實現從 亮度和色度色彩空間數據到紅綠藍色彩空間數據的轉換。
15. 如權利要求14所述的計算機可讀介質,其特徵在於,所述亮度和色度數 據是視頻覆蓋圖。
16. 如權利要求15所述的計算機可讀介質,其特徵在於,所述視頻覆蓋圖支持在圖形顯示器上對所述亮度和色度數據的直接硬體支持顯示,而不使用顯式的像 素遮蓋圖來執行所述轉換。
17. 如權利要求16所述的計算機可讀介質,其特徵在於,所述覆蓋圖覆蓋所 述基礎主像素的紅、綠和藍數據的至少一部分。
18. 如權利要求16所述的計算機可讀介質,其特徵在於,所述覆蓋圖覆蓋所述紅、綠和藍數據的至少一部分,如同它代替了遮蓋圖下面的紅、綠和藍數據,但 同時不影響所述原始的基礎紅、綠和藍數據。
19. 如權利要求16所述的計算機可讀介質,其特徵在於,所述覆蓋圖的亮度、 對比度、灰度校正和其他相關的參數可以獨立於應用到所述紅、綠和藍數據的相應 參數來調節。
20. 如權利要求14所述的計算機可讀介質,其特徵在於,所述紅、綠和藍數 據與所述亮度和色度數據被提供給圖形適配器。
全文摘要
提供了在虛擬機環境中在多個分區之間共享圖形適配器資源的機制。第一種機制允許圖形適配器資源的共享,使得包含圖形代理進程的一個分區(視頻服務分區)能夠使用該圖形代理進程來向另一分區(視頻客戶機分區)提供圖形適配器資源。圖形代理進程控制任一給定分區對圖形適配器資源的訪問時間。一方面,它使用時間銀行來控制訪問時間,該時間銀行控制提供給視頻客戶機分區的視頻圖形適配器能夠訪問圖形適配器資源多久。第二種機制將該視頻客戶機分區內的虛擬存儲器與視頻服務分區內的虛擬存儲器同步。第三種機制允許使用基於像素遮蓋器的虛擬覆蓋圖機制的多個視頻客戶機分區覆蓋圖。
文檔編號G06F17/00GK101258484SQ200680032785
公開日2008年9月3日 申請日期2006年7月10日 優先權日2005年7月8日
發明者D·L·格林 申請人:微軟公司