TWI718210B - 用於智慧型資源提供之設備、方法及系統 - Google Patents

用於智慧型資源提供之設備、方法及系統 Download PDF

Info

Publication number
TWI718210B
TWI718210B TW105138088A TW105138088A TWI718210B TW I718210 B TWI718210 B TW I718210B TW 105138088 A TW105138088 A TW 105138088A TW 105138088 A TW105138088 A TW 105138088A TW I718210 B TWI718210 B TW I718210B
Authority
TW
Taiwan
Prior art keywords
shadow
gpu
graphics
memory
context
Prior art date
Application number
TW105138088A
Other languages
English (en)
Other versions
TW201724011A (zh
Inventor
呂志遠
田昆
Original Assignee
美商英特爾公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商英特爾公司 filed Critical 美商英特爾公司
Publication of TW201724011A publication Critical patent/TW201724011A/zh
Application granted granted Critical
Publication of TWI718210B publication Critical patent/TWI718210B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Security & Cryptography (AREA)
  • Image Generation (AREA)

Abstract

本發明描述一種用於針對影子結構的智慧型資源提供之設備及方法。舉例而言,一種設備之一個實施例包含:圖形處理單元(GPU),其用以處理圖形命令且回應地在一圖形記憶體位址空間中表現複數個影像圖框;影子結構管理邏輯,其用以在該圖形記憶體位址空間中保留一或多個影子槽,在該一或多個影子槽中將儲存不同GPU脈絡之影子事例;及該影子結構管理邏輯,其用以實施用於投影(shadowing)該等影子槽中之GPU脈絡的一部分投影策略,該部分投影策略係基於該等GPU脈絡之頁面的特性。

Description

用於智慧型資源提供之設備、方法及系統
本發明大體上係關於電腦處理器之領域。更特定言之,本發明係關於一種用於針對影子結構的智慧型資源提供之設備及方法。
最近在圖形處理器單元(GPU)虛擬化中已發生快速進步。經虛擬化圖形處理環境用於(例如)媒體雲端、遠端工作站/桌上型電腦、可互換式虛擬儀器(IVI)、豐富型用戶端虛擬化(僅舉幾個例子)中。某些架構透過截獲與模仿(trap-and-emulation)來執行完全GPU虛擬化以模仿完全特徵化虛擬GPU(vGPU),同時仍藉由遞通效能臨界圖形記憶體資源來提供接近原生效能。
隨著伺服器中之GPU支援3D、媒體及GPGPU工作負載的重要性增加,GPU虛擬化正變得愈來愈普遍。如何虛擬化自虛擬機(VM)之GPU記憶體存取為關鍵設計因素中之一者。GPU具有其自有圖形記憶體:專用視訊記憶體或共用系統記憶體。當系統記憶體用於圖形時,需要將客體實體位址(GPA)轉譯至主機實體位址(HPA),之後由硬體存取。
存在用以針對GPU進行轉譯之各種途徑。一些實施方案運用硬體支援來執行轉譯,但可將GPU僅遞通至一個VM。另一解決方案為建構用於轉譯之影子結構的軟體途徑。舉例而言,在諸如上文所提及之完全GPU虛擬化解決方案的一些架構中實施影子頁面資料表,此可支援多個VM以共用一實體GPU。
依據本發明之一實施例,係特地提出一種設備,其包含:圖形處理單元(GPU),其用以處理圖形命令且回應地在一圖形記憶體位址空間中表現複數個影像圖框;影子結構管理邏輯,其用以在該圖形記憶體位址空間中保留一或多個影子槽,在該一或多個影子槽中將儲存不同GPU脈絡之影子事例;及該影子結構管理邏輯,其用以實施用於投影(shadowing)該等影子槽中之GPU脈絡的一部分投影策略,該部分投影策略係基於該等GPU脈絡之頁面的特性。
100:處理系統
102、200、1030:處理器
104:快取記憶體
106:暫存器檔案
107、202A、202N:處理器核心
108、208、300、500、800、1032、1210:圖形處理器
109:指令集
110:處理器匯流排
112:外部圖形處理器
116:記憶體控制器集線器
120:記憶體
121:指令
122:資料
124:資料儲存裝置
126:無線收發器
128:韌體介面
130:輸入輸出(I/O)控制器集線器
134:網路控制器
140:舊版輸入輸出(I/O)控制器
142、1225:通用串列匯流排(USB)控制器
144:鍵盤與滑鼠
146:音訊控制器
204A、204N:內部快取記憶體單元
206:共用快取記憶體單元
210:系統代理核心
211、302、843:顯示控制器
212、502、802:環形互連件
213:輸入輸出(I/O)連結
214:整合式記憶體控制器
216:匯流排控制器單元
218:高效能嵌入式記憶體模組
304:區塊影像傳送(BLIT)引擎
306:視訊編解碼器引擎
310、410:圖形處理引擎(GPE)
312、412、922:三維(3D)管線
314:記憶體介面
315:三維(3D)/媒體子系統
316、416、830、924:媒體管線
320、1245:顯示裝置
403、503、803:命令串流器
414:執行單元陣列
430:取樣引擎
432:去雜訊/解交錯模組
434:運動估計引擎
436:影像縮放及濾波模組
444、614、856:資料埠
504:管線前端
530:視訊品質引擎(VQE)
533:多格式編碼/解碼(MFX)
534、834:視訊前端
536:幾何管線
537、837:媒體引擎
550A、550N:第一子核心
552A、552N、562A、562N、608A、608B、852A、852B:執行單元
554A、554N:媒體/紋理取樣器
560A、560N:第二子核心
564A、564N、610、854:取樣器
570A、570N:共用資源
580A、580N:圖形核心
600、850:執行緒執行邏輯
602:像素著色器
604、831:執行緒分派器
606:指令快取記憶體
612:資料快取記憶體
700、900:圖形處理器指令格式
710:原生128位元格式
712:指令作業碼
713:索引欄位
714:指令控制欄位
716:執行大小欄位
718:目的地
720:源運算元src0
722:源運算元src1
724:源運算元SRC2
726:存取/定址模式資訊
730:64位元壓縮指令格式
740:作業碼解碼
742:移動及邏輯作業碼群組
744:流動控制指令群組
746:雜項指令群組
748:平行數學指令群組
750:向量數學群組
805:頂點提取器
807:頂點著色器
811:可規劃殼著色器
813:鑲嵌器
817:可規劃域著色器
819:幾何著色器
820:圖形管線
823:串流輸出單元
829:剪輯器
840、1304:顯示引擎
841:二維(2D)引擎
851:層級1(L1)快取記憶體
858:紋理/取樣器快取記憶體
870:表現輸出管線
873:光柵處理器及深度測試組件
875:層級3(L3)快取記憶體
877:像素操作組件
878:表現快取記憶體
879:深度快取記憶體
902:目標用戶端
904:命令操作碼(作業碼)
905:子作業碼
906:資料欄位
908:命令大小
910:圖形處理器命令序列
912:管線清空命令
913:管線選擇命令
914:管線控制命令
916:傳回緩衝器狀態命令
920:管線判定
930:三維(3D)管線狀態
932:三維(3D)基元
934:執行
940:媒體管線狀態
942:媒體物件命令
944:執行命令
1000:資料處理系統
1010:三維(3D)圖形應用程式
1012:著色器指令
1014:可執行指令
1016:圖形物件
1020:作業系統
1024:前端著色器編譯器
1026:使用者模式圖形驅動器
1027:後端著色器編譯器
1028:作業系統核心程式模式功能
1029:核心程式模式圖形驅動器
1034:一般用途處理器核心
1050、1310:系統記憶體
1100:IP核心開發系統
1110:軟體模擬
1115:暫存器傳送層級(RTL)設計
1120:硬體模型
1130:設計設施
1140:非依電性記憶體
1150:有線連接
1160:無線連接
1165:第三方製造設施
1200:系統單晶片積體電路
1205:應用程式處理器
1215:影像處理器
1220:視訊處理器
1230:UART控制器
1235:SPI/SDIO控制器
1240:I2S/I2C控制器
1250:高清晰度多媒體介面(HDMI)控制器
1255:行動行業處理器介面(MIPI)顯示介面
1260:快閃記憶體子系統
1265:記憶體控制器
1270:嵌入式安全引擎
1300、1920:圖形處理單元(GPU)
1302:表現引擎
1320、1400:中央處理單元(CPU)
1306:圖形處理單元(GPU)頁面資料表
1312:命令緩衝器
1314:圖框緩衝器
1410、1910:超管理器
1411:虛擬化虛設常式模組
1412:具特殊權限的虛擬記憶體管理單元(PVMMU)
1414:延伸型頁面資料表(EPT)
1416:中央處理單元(CPU)排程器
1420:具特殊權限的虛擬機(VM)
1422:虛擬化中繼程序
1424、1960A、1960B:虛擬GPU(vGPU)
1426、1912:圖形處理單元(GPU)排程器
1428:原生圖形驅動器
1431、1432、1930、1940:虛擬機(VM)
1501、1601:客體視圖
1502、1602:主機視圖
1701、1702:按虛擬機(VM)影子本端頁面資料表
1703:共用影子全域頁面資料表
1710:4KB系統記憶體
1801:第一層級頁面目錄項目(PDE)
1802:第二層級頁面資料表項目(PTE)
1803、1804:影子本端頁面資料表
1900:圖形虛擬化架構
1914:影子全域圖形轉譯表(SGGTT)佇列
1916:工作負載佇列
1918:命令剖析器
1922:三維(3D)表現引擎
1924:位塊傳送器表現引擎
1926:視訊命令串流器(VCS)表現引擎
1928:視訊增強型命令串流器(VECS)表現引擎
1932、1942:三維(3D)工作負載
1934、1944:媒體工作負載
1950:圖形轉譯表
1952:上部記憶體空間
1954:下部記憶體空間
2020:圖形處理單元(GPU)引擎
2021、2102、2202:圖形記憶體位址空間
2022、2203:影子脈絡
2023、2205:客體脈絡
2100:影子結構管理邏輯
2101、2201:影子槽
2104:備份儲存區
2301、2302、2303、2401、2401a、2401b、2401c、2402、2402a、2402b、2403、2403a、2403b、2404、2404a、2404b:步驟
可自結合以下圖式之以下詳細描述獲得對本發明之較佳理解,在圖式中:圖1為具備具有一或多個處理器核心及圖形處理器之處理器的電腦系統之實施例的方塊圖;圖2為具有一或多個處理器核心、整合式記憶體控制器及整合式圖形處理器之處理器之一個實施例的方塊圖;圖3為可為慎密圖形處理單元或可為與複數個處理核 心整合之圖形處理器的圖形處理器之一個實施例的方塊圖;圖4為用於圖形處理器之圖形處理引擎之實施例的方塊圖;圖5為圖形處理器之另一實施例的方塊圖;圖6為包括處理元件陣列之執行緒執行邏輯的方塊圖;圖7說明根據一實施例之圖形處理器執行單元指令格式;圖8為包括圖形管線、媒體管線、顯示引擎、執行緒執行邏輯及表現輸出管線之圖形處理器之另一實施例的方塊圖;圖9A為說明根據一實施例之圖形處理器命令格式的方塊圖;圖9B為說明根據一實施例之圖形處理器命令序列的方塊圖;圖10說明根據一實施例的用於資料處理系統之例示性圖形軟體架構;圖11說明根據一實施例的可用以製造積體電路以執行操作之例示性IP核心開發系統;圖12說明根據一實施例的可使用一或多個IP核心而製造之例示性系統單晶片積體電路;圖13說明例示性圖形處理系統;圖14說明用於完全圖形虛擬化之例示性架構;圖15說明用於系統記憶體空間之例示性客體視圖及主 機視圖;圖16說明用於利用佔用之系統記憶體空間的例示性客體視圖及主機視圖;圖17說明一組例示性客體頁面資料表及影子全域頁面資料表;圖18說明一組例示性客體PDE及PTE以及影子PDE及PTE;圖19說明包括虛擬圖形處理單元(vGPU)之例示性經虛擬化圖形處理架構;圖20說明例示性圖形記憶體位址空間;圖21說明影子槽至影子脈絡之例示性映射;圖22說明展示影子槽至影子脈絡及客體脈絡之映射的另一實施例;圖23說明根據本發明之一個實施例的方法;圖24說明根據本發明之一個實施例的更詳細方法。
在以下描述中,出於解釋之目的,闡述眾多特定細節以便提供對下文所描述的本發明之實施例的透徹理解。然而,對於熟習此項技術者而言將顯而易見,可在無此等特定細節中之一些細節的情況下實踐本發明之實施例。在其他情況下,以方塊圖形式展示熟知的結構及裝置以避免混淆本發明之實施例的基本原理。
例示性圖形處理器架構及資料類型
系統概觀
圖1為根據一實施例之處理系統100的方塊圖。在各種實施例中,系統100包括一或多個處理器102及一或多個圖形處理器108,且可為單處理器桌上型系統、多處理器工作站系統,或具有大量處理器102或處理器核心107之伺服器系統。在一個實施例中,系統100為併入於用於行動、手持型或嵌入式裝置中之系統單晶片(SoC)積體電路內的處理平台。
系統100之實施例可包括以下各者或併入於以下各者內:基於伺服器之博弈平台、遊戲主控台(包括遊戲及媒體主控台)、行動博弈主控台、手持型遊戲主控台,或線上遊戲主控台。在一些實施例中,系統100為行動電話、智慧型電話、平板計算裝置,或行動網際網路裝置。資料處理系統100亦可包括諸如以下各者之可穿戴式裝置、與該可穿戴式裝置耦接或整合於該可穿戴式裝置內:智慧型手錶可穿戴式裝置、智慧型護目鏡裝置、擴增實境裝置,或虛擬實境裝置。在一些實施例中,資料處理系統100為具有一或多個處理器102及由一或多個圖形處理器108產生之圖形介面的電視或機上盒裝置。
在一些實施例中,一或多個處理器102各自包括用以處理指令之一或多個處理器核心107,該等指令在被執行時執行用於系統及使用者軟體之操作。在一些實施例中,一或多個處理器核心107中之每一者經組配以處理特定指令集109。在一些實施例中,指令集109可促進複雜指令集計算(CISC)、精簡指令集計算(RISC),或經由超 長指令字(VLIW)之計算。多個處理器核心107可各自處理一不同指令集109,其可包括用以促進其他指令集之模仿的指令。處理器核心107亦可包括其他處理裝置,諸如數位信號處理器(DSP)。
在一些實施例中,處理器102包括快取記憶體104。取決於架構,處理器102可具有單一內部快取記憶體或多個內部快取記憶層級。在一些實施例中,快取記憶體共用於處理器102之各種組件之間。在一些實施例中,處理器102亦使用外部快取記憶體(例如,層級3(L3)快取記憶體或最後層級快取記憶體(LLC))(未圖示),其可使用已知快取一致性技術而共用於處理器核心107之間。暫存器檔案106另外包括於處理器102中,處理器102可包括用於儲存不同類型之資料的不同類型之暫存器(例如,整數暫存器、浮點暫存器、狀態暫存器,及指令指標暫存器)。一些暫存器可為一般用途暫存器,而其他暫存器可特定於處理器102之設計。
在一些實施例中,處理器102耦接至處理器匯流排110以在系統100中之處理器102與其他組件之間傳輸諸如位址、資料或控制信號之通訊信號。在一個實施例中,系統100使用例示性「集線器」系統架構,包括記憶體控制器集線器116及輸入輸出(I/O)控制器集線器130。記憶體控制器集線器116促進系統100之記憶體裝置與其他組件之間的通訊,而I/O控制器集線器(ICH)130提供經由本端I/O匯流排而至I/O裝置之連接。在一個實施例中, 記憶體控制器集線器116之邏輯整合於處理器內。
記憶體裝置120可為動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體元件、相變記憶體裝置,或具有合適效能以充當程序記憶體之某一其他記憶體裝置。在一個實施例中,記憶體裝置120可作為用於系統100之系統記憶體而操作,以在一或多個處理器102執行應用程式或程序時儲存資料122及指令121以供使用。記憶體控制器集線器116亦與選用外部圖形處理器112耦接,外部圖形處理器112可與處理器102中之一或多個圖形處理器108通訊以執行圖形及媒體操作。
在一些實施例中,ICH 130使周邊裝置能夠經由高速I/O匯流排而連接至記憶體120及處理器102。I/O周邊裝置包括但不限於音訊控制器146、韌體介面128、無線收發器126(例如,Wi-Fi、藍芽)、資料儲存裝置124(例如,硬碟機、快閃記憶體等等),及用於將舊版(例如,個人系統2(PS/2))裝置耦接至系統之舊版I/O控制器140。一或多個通用串列匯流排(USB)控制器142連接輸入裝置,諸如鍵盤與滑鼠144之組合。網路控制器134亦可耦接至ICH 130。在一些實施例中,高效能網路控制器(未圖示)耦接至處理器匯流排110。應瞭解,所展示之系統100係例示性的而非限制性的,此係因為亦可使用被不同地組配的其他類型之資料處理系統。舉例而言,I/O控制器集線器130可整合於一或多個處理器102內,或記憶體控制器集線 器116及I/O控制器集線器130可整合至慎密外部圖形處理器(諸如外部圖形處理器112)中。
圖2為具有一或多個處理器核心202A至202N、整合式記憶體控制器214及整合式圖形處理器208之處理器200之實施例的方塊圖。與本文中之任何其他圖之元件具有相同參考編號(或名稱)的圖2之彼等元件可以相似於本文中在別處所描述之方式的任何方式而操作或運行,但並不限於此類情形。處理器200可包括高達且包括由虛線方框表示之額外核心202N的額外核心。處理器核心202A至202N中之每一者包括一或多個內部快取記憶體單元204A至204N。在一些實施例中,每一處理器核心亦能夠存取一或多個共用經快取單元206。
內部快取記憶體單元204A至204N及共用快取記憶體單元206表示處理器200內之快取記憶體階層。快取記憶體階層可包括每一處理器核心內之至少一個指令及資料快取記憶體層級,及一或多個共用中間層級快取記憶體層級,諸如層級2(L2)、層級3(L3)、層級4(L4)或其他快取記憶體層級,其中在外部記憶體之前的最高快取記憶體層級被分類為LLC。在一些實施例中,快取一致性邏輯維持各種快取記憶體單元206及204A至204N之間的一致性。
在一些實施例中,處理器200亦可包括一組一或多個匯流排控制器單元216,及系統代理核心210。一或多個匯流排控制器單元216管理一組周邊匯流排,諸如 一或多個周邊組件互連匯流排(例如,PCI、快速PCI)。系統代理核心210提供用於各種處理器組件之管理功能性。在一些實施例中,系統代理核心210包括一或多個整合式記憶體控制器214以管理對各種外部記憶體裝置(未圖示)之存取。
在一些實施例中,處理器核心202A至202N中之一或多者包括針對同時多執行緒處理之支援。在此類實施例中,系統代理核心210包括用於在多緒執行處理期間協調及操作核心202A至202N之組件。系統代理核心210可另外包括功率控制單元(PCU),其包括用以調節處理器核心202A至202N及圖形處理器208之功率狀態的邏輯及組件。
在一些實施例中,處理器200另外包括用以執行圖形處理操作之圖形處理器208。在一些實施例中,圖形處理器208與該組共用快取記憶體單元206及包括一或多個整合式記憶體控制器214之系統代理核心210耦接。在一些實施例中,顯示控制器211與圖形處理器208耦接以將圖形處理器輸出驅動至一或多個經耦接顯示器。在一些實施例中,顯示控制器211可為經由至少一個互連件而與圖形處理器耦接之單獨模組,或可整合於圖形處理器208或系統代理核心210內。
在一些實施例中,基於環形之互連件212用以耦接處理器200之內部組件。然而,可使用替代性互連單元,諸如點對點互連件、切換式互連件,或其他技術, 包括此項技術中所熟知之技術。在一些實施例中,圖形處理器208經由I/O連結213而與環形互連件212耦接。
例示性I/O連結213表示多種I/O互連件中之至少一者,包括促進各種處理器組件與高效能嵌入式記憶體模組218(諸如eDRAM模組)之間的通訊之封裝體上I/O互連件。在一些實施例中,處理器核心202至202N中之每一者及圖形處理器208將嵌入式記憶體模組218用作共用最後層級快取記憶體。
在一些實施例中,處理器核心202A至202N為執行同一指令集架構之均質核心。在另一實施例中,處理器核心202A至202N在指令集架構(ISA)方面係異質的,其中處理器核心202A至202N中之一或多者執行第一指令集,而其他核心中之至少一者執行第一指令集之子集或不同指令集。在一個實施例中,處理器核心202A至202N在微架構方面係異質的,其中具有相對較高功率消耗之一或多個核心與具有較低功率消耗之一或多個電力核心耦接。另外,處理器200可實施於一或多個晶片上或實施為具有所繪示組件(除了其他組件以外)之SoC積體電路。
圖3為圖形處理器300之方塊圖,圖形處理器300可為離散圖形處理單元,或可為與複數個處理核心整合之圖形處理器。在一些實施例中,圖形處理器經由記憶體映射I/O介面而與圖形處理器上之暫存器及與置放至處理器記憶體中之命令通訊。在一些實施例中,圖形處理器300包括用以存取記憶體之記憶體介面314。記憶體介面 314可為至本端記憶體、一或多個內部快取記憶體、一或多個共用外部快取記憶體及/或至系統記憶體之介面。
在一些實施例中,圖形處理器300亦包括用以將顯示輸出資料驅動至顯示裝置320之顯示控制器302。顯示控制器302包括用於針對多個視訊或使用者介面元件層之顯示及組成物之一或多個重疊平面的硬體。在一些實施例中,圖形處理器300包括視訊編解碼器引擎306以將媒體編碼為一或多個媒體編碼格式、自一或多個媒體編碼格式解碼媒體或在一或多個媒體編碼格式之間轉碼媒體,該一或多個媒體編碼格式包括但不限於:動畫專家群(MPEG)格式,諸如MPEG-2;進階視訊編碼(AVC)格式,諸如H.264/MPEG-4 AVC,以及美國電影與電視工程師學會(SMPTE)421M/VC-1;及聯合攝影專家群(JPEG)格式,諸如JPEG及運動JPEG(MJPEG)格式。
在一些實施例中,圖形處理器300包括區塊影像傳送(BLIT)引擎304以執行包括(例如)位元邊界區塊傳送之二維(2D)光柵處理器操作。然而,在一個實施例中,使用圖形處理引擎(GPE)310之一或多個組件來執行2D圖形操作。在一些實施例中,圖形處理引擎310為用於執行圖形操作(包括三維(3D)圖形操作及媒體操作)之計算引擎。
在一些實施例中,GPE 310包括用於執行3D操作(諸如使用對3D基元形狀(例如,矩形、三角形等等)起作用之處理功能來表現三維影像及場景)之3D管線 312。3D管線312包括可規劃及固定功能元件,其執行元件內之各種任務及/或將執行執行緒繁衍至3D/媒體子系統315。儘管3D管線312可用以執行媒體操作,但GPE 310之實施例亦包括特定地用以執行諸如視訊後處理及影像增強之媒體操作的媒體管線316。
在一些實施例中,媒體管線316包括代替或代表視訊編解碼器引擎306的用以執行一或多個特殊化媒體操作(諸如視訊解碼加速、視訊解交錯,及視訊編碼加速)之固定功能或可規劃邏輯單元。在一些實施例中,媒體管線316另外包括用以繁衍用於執行於3D/媒體子系統315上之執行緒的執行緒繁衍單元。經繁衍執行緒執行用於包括於3D/媒體子系統315中之一或多個圖形執行單元上之媒體操作的計算。
在一些實施例中,3D/媒體子系統315包括用於執行由3D管線312及媒體管線316繁衍之執行緒的邏輯。在一個實施例中,管線將執行緒執行請求發送至3D/媒體子系統315,3D/媒體子系統315包括用於仲裁各種請求且將各種請求分派至可用執行緒執行資源之執行緒分派邏輯。執行資源包括用以處理3D及媒體執行緒之圖形執行單元陣列。在一些實施例中,3D/媒體子系統315包括用於執行緒指令及資料之一或多個內部快取記憶體。在一些實施例中,子系統亦包括共用記憶體(包括暫存器及可定址記憶體)以在執行緒之間共用資料且儲存輸出資料。
3D/媒體處理
圖4為根據一些實施例之圖形處理器之圖形處理引擎410的方塊圖。在一個實施例中,GPE 410為圖3所展示之GPE 310的版本。與本文中之任何其他圖之元件具有相同參考編號(或名稱)的圖4之元件可以相似於本文中在別處所描述之方式的任何方式而操作或運行,但並不限於此類情形。
在一些實施例中,GPE 410與命令串流器403耦接,命令串流器403將命令串流提供至GPE 3D管線412及媒體管線416。在一些實施例中,命令串流器403耦接至記憶體,記憶體可為系統記憶體,或內部快取記憶體及共用快取記憶體中之一或多者。在一些實施例中,命令串流器403自記憶體接收命令且將命令發送至3D管線412及/或媒體管線416。命令為自環形緩衝器提取之指示詞,環形緩衝器儲存用於3D管線412及媒體管線416之命令。在一個實施例中,環形緩衝器可另外包括儲存多個命令之批次的批次命令緩衝器。3D管線412及媒體管線416藉由經由各別管線內之邏輯來執行操作或藉由將一或多個執行執行緒分派至執行單元陣列414而處理命令。在一些實施例中,執行單元陣列414係可縮放的,使得該陣列包括基於GPE 410之目標功率及效能位準之可變數目個執行單元。
在一些實施例中,取樣引擎430與記憶體(例如,快取記憶體或系統記憶體)及執行單元陣列414耦接。在一些實施例中,取樣引擎430提供用於執行單元陣列414 之記憶體存取機制,其允許執行陣列414自記憶體讀取圖形及媒體資料。在一些實施例中,取樣引擎430包括用以執行用於媒體之特殊化影像取樣操作的邏輯。
在一些實施例中,取樣引擎430中之特殊化媒體取樣邏輯包括去雜訊/解交錯模組432、運動估計模組434,及影像縮放及濾波模組436。在一些實施例中,去雜訊/解交錯模組432包括用以對經解碼視訊資料執行去雜訊或解交錯演算法中之一或多者的邏輯。解交錯邏輯將經交錯視訊內容之交替欄位組合成單一視訊圖框。去雜訊邏輯自視訊及影像資料縮減或移除資料雜訊。在一些實施例中,去雜訊邏輯及解交錯邏輯係運動調適性的,且基於在視訊資料中偵測之運動量來使用空間或時間濾波。在一些實施例中,去雜訊/解交錯模組432包括專用運動偵測邏輯(例如,在運動估計引擎434內)。
在一些實施例中,運動估計引擎434藉由對視訊資料執行諸如運動向量估計及預測之視訊加速功能來提供用於視訊操作之硬體加速。運動估計引擎判定描述連續視訊圖框之間的影像資料之變換的運動向量。在一些實施例中,圖形處理器媒體編解碼器使用視訊運動估計引擎434以對巨集區塊層級處之視訊執行操作,該等操作原本可能在計算上過於密集而無法運用一般用途處理器來執行。在一些實施例中,運動估計引擎434通常可用於圖形處理器組件,以輔助對視訊資料內之運動之方向或量值為敏感或調適性的視訊解碼及處理功能。
在一些實施例中,影像縮放及濾波模組436執行影像處理操作以增強經產生影像及視訊之視覺品質。在一些實施例中,縮放及濾波模組436在取樣操作期間處理影像及視訊資料,之後將資料提供至執行單元陣列414。
在一些實施例中,GPE 410包括資料埠444,資料埠444將用於圖形子系統之額外機制提供至存取記憶體。在一些實施例中,資料埠444促進用於包括表現目標寫入、常數緩衝器讀取、暫時記憶體空間讀取/寫入及媒體表面存取之操作的記憶體存取。在一些實施例中,資料埠444包括用以快取對記憶體之存取的快取記憶體空間。快取記憶體可為單一資料快取記憶體或被分離成用於經由資料埠來存取記憶體之多個子系統的多個快取記憶體(例如,表現緩衝器快取記憶體、常數緩衝器快取記憶體等等)。在一些實施例中,執行於執行單元陣列414中之執行單元上的執行緒藉由經由耦接GPE 410之子系統中之每一者的資料散佈互連件來交換訊息而與資料埠通訊。
執行單元
圖5為圖形處理器500之另一實施例的方塊圖。與本文中之任何其他圖之元件具有相同參考編號(或名稱)的圖5之元件可以相似於本文中在別處所描述之方式的任何方式而操作或運行,但並不限於此類情形。
在一些實施例中,圖形處理器500包括環形互連件502、管線前端504、媒體引擎537,及圖形核心580A至580N。在一些實施例中,環形互連件502將圖形處理器 耦接至其他處理單元,包括其他圖形處理器或一或多個一般用途處理器核心。在一些實施例中,圖形處理器為整合於多核心處理系統內之許多處理器中之一者。
在一些實施例中,圖形處理器500經由環形互連件502來接收命令之批次。傳入命令係由管線前端504中之命令串流器503解譯。在一些實施例中,圖形處理器500包括可縮放執行邏輯以經由圖形核心580A至580N來執行3D幾何處理及媒體處理。對於3D幾何處理命令,命令串流器503將命令供應至幾何管線536。對於至少一些媒體處理命令,命令串流器503將命令供應至視訊前端534,視訊前端534與媒體引擎537耦接。在一些實施例中,媒體引擎537包括用於視訊之視訊品質引擎(VQE)530,及用以提供硬體加速媒體資料編碼及解碼之影像後處理及多格式編碼/解碼(MFX)533引擎。在一些實施例中,幾何管線536及媒體引擎537各自產生用於由至少一個圖形核心580A提供之執行緒執行資源的執行執行緒。
在一些實施例中,圖形處理器500包括以模組化核心580A至580N(有時被稱作核心片斷)為特徵之可縮放執行緒執行資源,每一模組化核心具有多個子核心550A至550N、560A至560N(有時被稱作核心子片斷)。在一些實施例中,圖形處理器500可具有任何數目個圖形核心580A至580N。在一些實施例中,圖形處理器500包括具有至少第一子核心550A及第二核心子核心560A之圖形核心580A。在其他實施例中,圖形處理器為具有單一子核 心(例如,550A)之低功率處理器。在一些實施例中,圖形處理器500包括多個圖形核心580A至580N,每一圖形核心包括一組第一子核心550A至550N及一組第二子核心560A至560N。該組第一子核心550A至550N中之每一子核心包括至少第一組執行單元552A至552N及媒體/紋理取樣器554A至554N。該組第二子核心560A至560N中之每一子核心包括至少第二組執行單元562A至562N及取樣器564A至564N。在一些實施例中,每一子核心550A至550N、560A至560N共用一組共用資源570A至570N。在一些實施例中,共用資源包括共用快取記憶體及像素操作邏輯。其他共用資源亦可包括於圖形處理器之各種實施例中。
圖6說明包括GPE之一些實施例中使用之處理元件陣列的執行緒執行邏輯600。與本文中之任何其他圖之元件具有相同參考編號(或名稱)的圖6之元件可以相似於本文中在別處所描述之方式的任何方式而操作或運行,但並不限於此類情形。
在一些實施例中,執行緒執行邏輯600包括像素著色器602、執行緒分派器604、指令快取記憶體606、包括複數個執行單元608A至608N之可縮放執行單元陣列、取樣器610、資料快取記憶體612,及資料埠614。在一個實施例中,所包括之組件係經由連結至該等組件中之每一者的互連網狀架構而互連。在一些實施例中,執行緒執行邏輯600包括透過指令快取記憶體606、資料埠614、 取樣器610及執行單元陣列608A至608N中之一或多者而至記憶體(諸如系統記憶體或快取記憶體)之一或多個連接。在一些實施例中,每一執行單元(例如,608A)為能夠執行多個同步執行緒且針對每一執行緒並行地處理多個資料元素之個別向量處理器。在一些實施例中,執行單元陣列608A至608N包括任何數目個個別執行單元。
在一些實施例中,執行單元陣列608A至608N主要用以執行「著色器」程式。在一些實施例中,陣列608A至608N中之執行單元執行包括針對許多標準3D圖形著色器指令之原生支援的指令集,使得以最小轉譯來執行來自圖形程式庫(例如,Direct 3D及OpenGL)之著色器程式。執行單元支援頂點及幾何處理(例如,頂點程式、幾何程式、頂點著色器)、像素處理(例如,像素著色器、片段著色器)及一般用途處理(例如,計算及媒體著色器)。
執行單元陣列608A至608N中之每一執行單元對資料元素陣列進行操作。資料元素之數目為「執行大小」,或用於指令之通道之數目。執行通道為用於指令內之資料元素存取、遮罩及流動控制的邏輯執行單元。通道之數目可獨立於用於特定圖形處理器之實體算術邏輯單元(ALU)或浮點單元(FPU)之數目。在一些實施例中,執行單元608A至608N支援整數及浮點資料類型。
執行單元指令集包括單指令多重資料(SIMD)指令。可將各種資料元素作為封裝資料類型而儲存於暫存器中,且執行單元將基於各種元素之資料大小來處 理該等元素。舉例而言,當對256位元寬向量進行操作時,將該向量之256個位元儲存於暫存器中,且執行單元按四個單獨64位元封裝資料元素(四倍字(QW)大小資料元素)、八個單獨32位元封裝資料元素(雙字(DW)大小資料元素)、十六個單獨16位元封裝資料元素(字(W)大小資料元素)或三十二個單獨8位元資料元素(位元組(B)大小資料元素)形式對該向量進行操作。然而,不同向量寬度及暫存器大小係可能的。
將一或多個內部指令快取記憶體(例如,606)包括於執行緒執行邏輯600中以快取用於執行單元之執行緒指令。在一些實施例中,包括一或多個資料快取記憶體(例如,612)以在執行緒執行期間快取執行緒資料。在一些實施例中,包括取樣器610以提供用於3D操作之紋理取樣及用於媒體操作之媒體取樣。在一些實施例中,取樣器610包括特殊化紋理或媒體取樣功能性以在取樣程序期間處理紋理或媒體資料,之後將經取樣資料提供至執行單元。
在執行期間,圖形及媒體管線經由執行緒繁衍及分派邏輯而將執行緒起始請求發送至執行緒執行邏輯600。在一些實施例中,執行緒執行邏輯600包括本端執行緒分派器604,其仲裁來自圖形及媒體管線之執行緒起始請求,且在一或多個執行單元608A至608N上將經請求執行緒執行個體化。舉例而言,幾何管線(例如,圖5之536)將頂點處理、鑲嵌或幾何處理執行緒分派至執行緒執行邏 輯600(圖6)。在一些實施例中,執行緒分派器604亦可處理來自執行著色器程式之執行階段執行緒繁衍請求。
一旦已將幾何物件群組處理及光柵化成像素資料,就調用像素著色器602以進一步計算輸出資訊且致使結果寫入至輸出表面(例如,色彩緩衝器、深度緩衝器、樣板緩衝器等等)。在一些實施例中,像素著色器602計算待橫越經光柵化物件而內插之各種頂點屬性之值。在一些實施例中,像素著色器602接著執行應用程式設計介面(API)供應像素著色器程式。為了執行像素著色器程式,像素著色器602經由執行緒分派器604而將執行緒分派至執行單元(例如,608A)。在一些實施例中,像素著色器602使用取樣器610中之紋理取樣邏輯以存取儲存於記憶體中之紋理映像中的紋理資料。對紋理資料及輸入幾何資料之算術運算計算用於每一幾何片段之像素色彩資料,或捨棄一或多個像素免於進一步處理。
在一些實施例中,資料埠614提供用於使執行緒執行邏輯600將經處理資料輸出至記憶體以供在圖形處理器輸出管線上處理之記憶體存取機制。在一些實施例中,資料埠614包括或耦接至一或多個快取記憶體(例如,資料快取記憶體612)以經由資料埠來快取用於記憶體存取之資料。
圖7為說明根據一些實施例之圖形處理器指令格式700的方塊圖。在一或多個實施例中,圖形處理器執行單元支援具有呈多個格式之指令的指令集。實線方框 說明通常包括於執行單元指令中之分量,而虛線包括為選用的或僅包括於指令之子集中的分量。在一些實施例中,所描述及說明之指令格式700為巨集指令,此在於其為供應至執行單元之指令,與一旦處理指令就由指令解碼引起之微操作相反。
在一些實施例中,圖形處理器執行單元原生地支援呈128位元格式710之指令。64位元壓縮指令格式730可用於基於經選擇指令、指令選項及運算元之數目的一些指令。原生128位元格式710提供對所有指令選項之存取,而一些選項及操作限定於64位元格式730中。可用於64位元格式730中之原生指令按實施例而變化。在一些實施例中,使用索引欄位713中之一組索引值來部分地壓縮指令。執行單元硬體參考基於索引值之一組壓縮資料表,且使用壓縮資料表輸出以重新建構呈128位元格式710之原生指令。
對於每一格式,指令作業碼712定義執行單元將執行之操作。執行單元橫越每一運算元之多個資料元素並行地執行每一指令。舉例而言,回應於加法指令,執行單元橫越表示紋理元素或像元之每一色彩通道執行同時加法運算。按預設,執行單元橫越運算元之所有資料通道執行每一指令。在一些實施例中,指令控制欄位714使能夠控制某些執行選項,諸如通道選擇(例如,預測)及資料通道次序(例如,拌和)。對於128位元指令710,執行大小欄位716限制將並行地執行之資料通道之數目。在一些實 施例中,執行大小欄位716不可用於64位元壓縮指令格式730。
一些執行單元指令具有高達三個運算元,包括兩個源運算元src0 722、src1 722,及一個目的地718。在一些實施例中,執行單元支援雙目的地指令,其中暗示目的地中之一者。資料操縱指令可具有第三源運算元(例如,SRC2 724),其中指令作業碼712判定源運算元之數目。指令之最後源運算元可為與指令一起傳遞之立即(例如,經硬編碼)值。
在一些實施例中,128位元指令格式710包括指定(例如)使用直接暫存器定址模式抑或間接暫存器定址模式之存取/定址模式資訊726。當使用直接暫存器定址模式時,直接由指令710中之位元提供一或多個運算元之暫存器位址。
在一些實施例中,128位元指令格式710包括存取/定址模式欄位726,其指定用於指令之定址模式及/或存取模式。在一個實施例中,存取模式用以定義用於指令之資料存取對準。一些實施例支援包括16位元組對準存取模式及1位元組對準存取模式之存取模式,其中存取模式之位元組對準判定指令運算元之存取對準。舉例而言,當在第一模式中時,指令710可將位元組對準定址用於源及目的地運算元,且當在第二模式中時,指令710可將16位元組對準定址用於所有源及目的地運算元。
在一個實施例中,存取/定址模式欄位726之 定址模式部分判定指令將使用直接定址抑或間接定址。當使用直接暫存器定址模式時,指令710中之位元直接提供一或多個運算元之暫存器位址。當使用間接暫存器定址模式時,可基於指令中之位址暫存器值及位址立即欄位來計算一或多個運算元之暫存器位址。
在一些實施例中,基於作業碼712位元欄位而將指令分組以簡化作業碼解碼740。對於8位元作業碼,位元4、5及6允許執行單元判定作業碼之類型。所展示之精確作業碼分組僅僅為實例。在一些實施例中,移動及邏輯作業碼群組742包括資料移動及邏輯指令(例如,移動(mov)、比較(cmp))。在一些實施例中,移動及邏輯群組742共用五個最高有效位元(MSB),其中移動(mov)指令呈0000xxxxb之形式且邏輯指令呈0001xxxxb之形式。流動控制指令群組744(例如,呼叫、跳躍(jmp))包括呈0010xxxxb(例如,0x20)之形式的指令。雜項指令群組746包括指令之混合,包括呈0011xxxxb(例如,0x30)之形式的同步指令(例如,等待、發送)。平行數學指令群組748包括呈0100xxxxb(例如,0x40)之形式的逐分量算術指令(例如,加法、乘法(mul))。平行數學群組748橫越資料通道並行地執行算術運算。向量數學群組750包括呈0101xxxxb(例如,0x50)之形式的算術指令(例如,dp4)。向量數學群組對向量運算元執行諸如內積計算之算術。
圖形管線
圖8為圖形處理器800之另一實施例的方塊 圖。與本文中之任何其他圖之元件具有相同參考編號(或名稱)的圖8之元件可以相似於本文中在別處所描述之方式的任何方式而操作或運行,但並不限於此類情形。
在一些實施例中,圖形處理器800包括圖形管線820、媒體管線830、顯示引擎840、執行緒執行邏輯850,及表現輸出管線870。在一些實施例中,圖形處理器800為包括一或多個一般用途處理核心之多核心處理系統內的圖形處理器。圖形處理器係藉由至一或多個控制暫存器(未圖示)之暫存器寫入而控制,或藉由經由環形互連件802發行至圖形處理器800之命令而控制。在一些實施例中,環形互連件802將圖形處理器800耦接至其他處理組件,諸如其他圖形處理器或一般用途處理器。來自環形互連件802之命令係由命令串流器803解譯,命令串流器803將指令供應至圖形管線820或媒體管線830之個別組件。
在一些實施例中,命令串流器803指導頂點提取器805之操作,頂點提取器805自記憶體讀取頂點資料且執行由命令串流器803提供之頂點處理命令。在一些實施例中,頂點提取器805將頂點資料提供至頂點著色器807,頂點著色器807對每一頂點執行座標空間變換及照明操作。在一些實施例中,頂點提取器805及頂點著色器807藉由經由執行緒分派器831而將執行執行緒分派至執行單元852A、852B來執行頂點處理指令。
在一些實施例中,執行單元852A、852B為具有用於執行圖形及媒體操作之指令集的向量處理器陣 列。在一些實施例中,執行單元852A、852B具有經附接之L1快取記憶體851,L1快取記憶體851對於每一陣列係特定的或共用於該等陣列之間。快取記憶體可經組配為資料快取記憶體、指令快取記憶體,或經分割以在不同分割區中含有資料及指令之單一快取記憶體。
在一些實施例中,圖形管線820包括用以執行3D物件之硬體加速鑲嵌的鑲嵌組件。在一些實施例中,可規劃殼著色器811組配鑲嵌操作。可規劃域著色器817提供鑲嵌輸出之後端評估。鑲嵌器813在殼著色器811之指導下進行操作,且含有特殊目的邏輯以基於作為輸入而提供至圖形管線820之粗糙幾何模型來產生一組詳細幾何物件。在一些實施例中,若未使用鑲嵌,則可繞過鑲嵌組件811、813、817。
在一些實施例中,完整幾何物件可由幾何著色器819經由分派至執行單元852A、852B之一或多個執行緒而處理,或可直接進行至剪輯器829。在一些實施例中,幾何著色器對整個幾何物件進行操作,而非如在圖形管線之先前階段中對頂點或頂點之插接線進行操作。若停用鑲嵌,則幾何著色器819自頂點著色器807接收輸入。在一些實施例中,若停用鑲嵌單元,則幾何著色器819可由幾何著色器程式規劃以執行幾何鑲嵌。
在光柵化之前,剪輯器829處理頂點資料。剪輯器829可為固定功能剪輯器或具有剪輯及幾何著色器功能之可規劃剪輯器。在一些實施例中,表現輸出管線870 中之光柵處理器及深度測試組件873分派像素著色器以將幾何物件轉換成其每像素表示。在一些實施例中,像素著色器邏輯包括於執行緒執行邏輯850中。在一些實施例中,應用程式可繞過光柵處理器873且經由串流輸出單元823來存取未經光柵化之頂點資料。
圖形處理器800具有互連匯流排、互連網狀架構,或允許資料及訊息在處理器之主要組件之間傳遞的某一其他互連機構。在一些實施例中,執行單元852A、852B及關聯快取記憶體851、紋理及媒體取樣器854及紋理/取樣器快取記憶體858經由資料埠856而互連以執行記憶體存取且與處理器之表現輸出管線組件通訊。在一些實施例中,取樣器854、快取記憶體851、858及執行單元852A、852B各自具有單獨記憶體存取路徑。
在一些實施例中,表現輸出管線870含有將基於頂點之物件轉換成關聯之基於像素之表示的光柵處理器及深度測試組件873。在一些實施例中,光柵處理器邏輯包括用以執行固定功能三角形及線光柵化之開窗器/遮罩器單元。關聯表現快取記憶體878及深度快取記憶體879亦可用於一些實施例中。像素操作組件877對資料執行基於像素之操作,但在一些情況下,與2D操作相關聯之像素操作(例如,運用調合之位元區塊影像傳送)係由2D引擎841執行,或在顯示時間由使用重疊顯示平面之顯示控制器843取代。在一些實施例中,共用L3快取記憶體875可用於所有圖形組件,從而允許在不使用主系統記憶體的情 況下共用資料。
在一些實施例中,圖形處理器媒體管線830包括媒體引擎837及視訊前端834。在一些實施例中,視訊前端834自命令串流器803接收管線命令。在一些實施例中,媒體管線830包括單獨命令串流器。在一些實施例中,視訊前端834處理媒體命令,之後將命令發送至媒體引擎837。在一些實施例中,媒體引擎337包括執行緒繁衍功能性以繁衍執行緒以供經由執行緒分派器831而分派至執行緒執行邏輯850。
在一些實施例中,圖形處理器800包括顯示引擎840。在一些實施例中,顯示引擎840在處理器800外部,且經由環形互連件802或某一其他互連匯流排或網狀架構而與圖形處理器耦接。在一些實施例中,顯示引擎840包括2D引擎841及顯示控制器843。在一些實施例中,顯示引擎840含有能夠獨立於3D管線而操作之特殊目的邏輯。在一些實施例中,顯示控制器843與顯示裝置(未圖示)耦接,該顯示裝置可為系統整合式顯示裝置(如在膝上型電腦中),或經由顯示裝置連接器而附接之外部顯示裝置。
在一些實施例中,圖形管線820及媒體管線830可經組配以基於多個圖形及媒體規劃介面來執行操作,且並不特定於任一個應用程式設計介面(API)。在一些實施例中,用於圖形處理器之驅動器軟體將特定於特定圖形或媒體程式庫之API呼叫轉譯成可由圖形處理器處理之命令。在一些實施例中,針對來自Khronos Group之開 放圖形程式庫(OpenGL)及開放計算語言(OpenCL)、來自Microsoft Corporation之Direct3D程式庫提供支援,或可對OpenGL及D3D兩者提供支援。亦可針對開放源電腦視覺程式庫(OpenCV)提供支援。若可進行自具有相容3D管線之未來API之管線至圖形處理器之管線的映射,則亦將支援該未來API。
圖形管線規劃
圖9A為說明根據一些實施例之圖形處理器命令格式900的方塊圖。圖9B為說明根據一實施例之圖形處理器命令序列910的方塊圖。圖9A中之實線方框說明通常包括於圖形命令中之分量,而虛線包括為選用的或僅包括於圖形命令之子集中的分量。圖9A之例示性圖形處理器命令格式900包括用以識別命令之目標用戶端902、命令操作碼(作業碼)904及用於命令之相關資料906的資料欄位。子作業碼905及命令大小908亦包括於一些命令中。
在一些實施例中,用戶端902指定處理命令資料之圖形裝置的用戶端單元。在一些實施例中,圖形處理器命令剖析器檢驗每一命令之用戶端欄位以調節命令之進一步處理且將命令資料路由至適當用戶端單元。在一些實施例中,圖形處理器用戶端單元包括記憶體介面單元、表現單元、2D單元、3D單元,及媒體單元。每一用戶端單元具有處理命令之對應處理管線。一旦用戶端單元接收到命令,用戶端單元就讀取作業碼904且在存在子作業碼905的情況下讀取子作業碼905以判定待執行之操作。用戶 端單元使用資料欄位906中之資訊來執行命令。對於一些命令,明確命令大小908被期望為指定命令之大小。在一些實施例中,命令剖析器基於命令作業碼而自動地判定命令中之至少一些的大小。在一些實施例中,命令係經由雙字之倍數而對準。
圖9B中之流程圖展示例示性圖形處理器命令序列910。在一些實施例中,以圖形處理器之實施例為特徵的資料處理系統之軟體或韌體使用所展示之命令序列之版本以設置、執行及終止一組圖形操作。僅出於實例之目的而展示及描述樣本命令序列,此係因為實施例並不限於此等特定命令或此命令序列。此外,可作為命令序列中之命令之批次而發行命令,使得圖形處理器將至少部分同時地處理命令序列。
在一些實施例中,圖形處理器命令序列910可開始於管線清空命令912致使任何作用中圖形管線完成用於該管線之當前未決命令。在一些實施例中,3D管線922及媒體管線924不會同時地操作。執行管線清空以致使作用中圖形管線完成任何未決命令。回應於管線清空,用於圖形處理器之命令剖析器將暫停命令處理,直至作用中繪圖引擎完成未決操作且相關讀取快取記憶體無效為止。視情況,可將表現快取記憶體中被標記為「已變更」之任何資料清空至記憶體。在一些實施例中,管線清空命令912可用於管線同步或在將圖形處理器置於低功率狀態之前使用。
在一些實施例中,管線選擇命令913在命令序列需要圖形處理器以在管線之間明確地切換時使用。在一些實施例中,管線選擇命令913在發行管線命令之前在執行脈絡內僅被需要一次,除非該脈絡將發行用於兩個管線之命令。在一些實施例中,在管線經由管線選擇命令913而切換之前立即需要管線清空命令912。
在一些實施例中,管線控制命令914組配用於操作之圖形管線,且用以規劃3D管線922及媒體管線924。在一些實施例中,管線控制命令914組配用於主動管線之管線狀態。在一個實施例中,管線控制命令914用於管線同步,且在處理命令之批次之前自作用中管線內之一或多個快取記憶體清除資料。
在一些實施例中,傳回緩衝器狀態命令916用以組配用於各別管線之一組傳回緩衝器以寫入資料。一些管線操作需要分配、選擇或組配一或多個傳回緩衝器,操作在處理期間將中間資料寫入至該一或多個傳回緩衝器中。在一些實施例中,圖形處理器亦使用一或多個傳回緩衝器以儲存輸出資料且執行跨執行緒通訊。在一些實施例中,傳回緩衝器狀態916包括選擇待用於一組管線操作之傳回緩衝器之大小及數目。
命令序列中之剩餘命令基於用於操作之作用中管線而不同。基於管線判定920,使命令序列適應開始於3D管線狀態930之3D管線922,或開始於媒體管線狀態940之媒體管線924。
用於3D管線狀態930之命令包括用於以下各者之3D狀態設定命令:頂點緩衝器狀態、頂點元素狀態、恆定色彩狀態、深度緩衝器狀態,及將在處理3D基元命令之前組配之其他狀態變數。至少部分地基於使用中之特定3D API來判定此等命令之值。在一些實施例中,若將不使用某些管線元件,則3D管線狀態930命令亦能夠選擇性地停用或繞過彼等元件。
在一些實施例中,3D基元932命令用以提交待由3D管線處理之3D基元。經由3D基元932命令而傳遞至圖形處理器之命令及關聯參數被轉遞至圖形管線中之頂點提取功能。頂點提取功能使用3D基元932命令資料以產生頂點資料結構。頂點資料結構儲存於一或多個傳回緩衝器中。在一些實施例中,3D基元932命令用以經由頂點著色器而對3D基元執行頂點操作。為了處理頂點著色器,3D管線922將著色器執行執行緒分派至圖形處理器執行單元。
在一些實施例中,3D管線922係經由執行934命令或事件而觸發。在一些實施例中,暫存器寫入觸發命令執行。在一些實施例中,執行係經由命令序列中之「移至(go)」或「突跳(kick)」命令而觸發。在一個實施例中,命令執行係使用管線同步命令而觸發以透過圖形管線來清空命令序列。3D管線將執行用於3D基元之幾何處理。一旦操作完成,就將所得幾何物件光柵化且像素引擎將所得像素染色。對於彼等操作,亦可包括用以控制像素 著色及像素後端操作之額外命令。
在一些實施例中,圖形處理器命令序列910在執行媒體操作時遵循媒體管線924路徑。一般而言,用於媒體管線924之特定使用及規劃方式取決於待執行之媒體或計算操作。可在媒體解碼期間將特定媒體解碼操作卸載至媒體管線。在一些實施例中,亦可繞過媒體管線且可使用由一或多個一般用途處理核心提供之資源來整體地或部分地執行媒體解碼。在一個實施例中,媒體管線亦包括用於一般用途圖形處理器單元(GPGPU)操作之元件,其中圖形處理器用以使用不與圖形基元之表現明確地相關的計算著色器程式來執行SIMD向量操作。
在一些實施例中,以與3D管線922相似之方式組配媒體管線924。將一組媒體管線狀態命令940以一命令佇列分派或置放至媒體物件命令942之前。在一些實施例中,媒體管線狀態命令940包括用以組配將用以處理媒體物件之媒體管線元件的資料。此資料包括用以組配媒體管線內之視訊解碼及視訊編碼邏輯的資料,諸如編碼或解碼格式。在一些實施例中,媒體管線狀態命令940亦支援使用指向含有狀態設定之批次之「間接」狀態元素的一或多個指標。
在一些實施例中,媒體物件命令942將指標供應至媒體物件以供媒體管線處理。媒體物件包括含有待處理視訊資料之記憶體緩衝器。在一些實施例中,所有媒體管線狀態必須在發行媒體物件命令942之前有效。一旦 管線狀態被組配且媒體物件命令942被排入佇列,就經由執行命令944或等效執行事件(例如,暫存器寫入)來觸發媒體管線924。來自媒體管線924之輸出可接著藉由3D管線922或媒體管線924所提供之操作進行後處理。在一些實施例中,以與媒體操作相似之方式組配及執行GPGPU操作。
圖形軟體架構
圖10說明根據一些實施例的用於資料處理系統1000之例示性圖形軟體架構。在一些實施例中,軟體架構包括3D圖形應用程式1010、作業系統1020,及至少一個處理器1030。在一些實施例中,處理器1030包括圖形處理器1032,及一或多個一般用途處理器核心1034。圖形應用程式1010及作業系統1020各自在資料處理系統之系統記憶體1050中執行。
在一些實施例中,3D圖形應用程式1010含有包括著色器指令1012之一或多個著色器程式。著色器語言指令可呈高階著色器語言,諸如高階著色器語言(HLSL)或OpenGL著色器語言(GLSL)。該應用程式亦包括呈適合於由一般用途處理器核心1034執行之機器語言的可執行指令1014。該應用程式亦包括由頂點資料定義之圖形物件1016。
在一些實施例中,作業系統1020為來自Microsoft Corporation之Microsoft® Windows®作業系統、專屬類UNIX作業系統,或使用Linux核心程式之變體的開放源類UNIX作業系統。當Direct3D API在使用中 時,作業系統1020使用前端著色器編譯器1024以呈HLSL之任何著色器指令1012編譯成較低階著色器語言。編譯可為剛好及時(just-in-time;JIT)編譯,或應用程式可執行著色器預編譯。在一些實施例中,在3D圖形應用程式1010之編譯期間將高階著色器編譯成低階著色器。
在一些實施例中,使用者模式圖形驅動器1026含有後端著色器編譯器1027以將著色器指令1012轉換成硬體特定表示。當OpenGL API在使用中時,將呈GLSL高階語言之著色器指令1012傳遞至使用者模式圖形驅動器1026以供編譯。在一些實施例中,使用者模式圖形驅動器1026使用作業系統核心程式模式功能1028以與核心程式模式圖形驅動器1029通訊。在一些實施例中,核心程式模式圖形驅動器1029與圖形處理器1032通訊以分派命令及指令。
IP核心實施方案
至少一個實施例之一或多個態樣可由儲存於機器可讀媒體上之代表性程式碼實施,該機器可讀媒體表示及/或定義諸如處理器之積體電路內的邏輯。舉例而言,機器可讀媒體可包括表示處理器內之各種邏輯的指令。當由機器讀取時,指令可致使機器製造用以執行本文中所描述之技術的邏輯。被稱為「IP核心」之此類表示為用於可作為描述積體電路之結構之硬體模型而儲存於有形機器可讀媒體上之積體電路的可再用邏輯單元。可將硬體模型供應至各種客戶或製造設施,其載入關於製造積體電 路之製造機器的硬體模型。可製造積體電路,使得該電路執行與本文中所描述之實施例中之任一者相關聯地所描述的操作。
圖11為說明根據一實施例的可用以製造積體電路以執行操作之IP核心開發系統1100的方塊圖。IP核心開發系統1100可用以產生可併入至較大設計中或用以建構整個積體電路(例如,SOC積體電路)之模組化可再用設計。設計設施1130可以高階程式設計語言(例如,C/C++)產生IP核心設計之軟體模擬1110。軟體模擬1110可用以設計、測試及校核IP核心之行為。可接著自模擬模型1100建立或合成暫存器傳送層級(RTL)設計。RTL設計1115為模型化硬體暫存器之間的數位信號之流動的積體電路之行為之抽象化,該等硬體暫存器包括使用經模型化數位信號所執行之關聯邏輯。除了RTL設計1115以外,亦可建立、設計或合成邏輯層級或電晶體層級處之較低層級設計。因此,初始設計及模擬之特定細節可變化。
RTL設計1115或等效者可進一步由設計設施合成至硬體模型1120中,硬體模型1120可呈硬體描述語言(HDL),或實體設計資料之某一其他表示。可進一步模擬或測試HDL以校核IP核心設計。可儲存IP核心設計以供遞送至使用非依電性記憶體1140(例如,硬碟、快閃記憶體,或任何非依電性儲存媒體)之第三方製造設施1165。替代地,可在有線連接1150或無線連接1160上傳輸(例如,經由網際網路)IP核心設計。製造設施1165可接著製 造至少部分地基於IP核心設計之積體電路。所製造之積體電路可經組配以根據本文中所描述之至少一個實施例來執行操作。
圖12為說明根據一實施例的可使用一或多個IP核心而製造之例示性系統單晶片積體電路1200的方塊圖。例示性積體電路包括一或多個應用程式處理器1205(例如,CPU)、至少一個圖形處理器1210,且可另外包括影像處理器1215及/或視訊處理器1220,該等處理器中之任一者可為來自同一或多個不同設計設施之模組化IP核心。積體電路包括周邊或匯流排邏輯,包括USB控制器1225、UART控制器1230、SPI/SDIO控制器1235,及I2S/I2C控制器1240。另外,積體電路可包括耦接至高清晰度多媒體介面(HDMI)控制器1250及行動行業處理器介面(MIPI)顯示介面1255中之一或多者的顯示裝置1245。可由包括快閃記憶體及快閃記憶體控制器之快閃記憶體子系統1260提供儲存體。可經由記憶體控制器1265提供記憶體介面以用於存取SDRAM或SRAM記憶體裝置。一些積體電路另外包括嵌入式安全引擎1270。
另外,其他邏輯及電路可包括於積體電路1200之處理器中,包括額外圖形處理器/核心、周邊介面控制器,或一般用途處理器核心。
例示性圖形虛擬化架構
本發明之一些實施例實施於利用完全圖形處理器單元(GPU)虛擬化之平台上。因而,下文提供在本 發明之一個實施例中所使用之GPU虛擬化技術的概觀,繼之以用於型樣驅動頁面資料表投影之設備及方法的詳細描述。
本發明之一個實施例使用在客體中執行原生圖形驅動器之完全GPU虛擬化環境,及達成良好效能、可縮放性及客體間安全隔離兩者之介導性遞通。此實施例向可直接存取效能臨界資源而在大多數狀況下無來自超管理器之干預的每一虛擬機(VM)呈現虛擬完全成熟GPU,同時以最少成本截獲與模仿來自客體之具特殊權限的操作。在一個實施例中,向每一VM呈現具有完全GPU特徵之虛擬GPU(vGPU)。VM可直接存取效能臨界資源,而在大多數狀況下無來自超管理器之干預,同時截獲與模仿來自客體之具特殊權限的操作以提供VM間安全隔離。按配量來切換vGPU脈絡,以在多個VM之間共用實體GPU。
圖13說明可供實施本發明之實施例的高階系統架構,其包括圖形處理單元(GPU)1300、中央處理單元(CPU)1320,及共用於GPU 1300與CPU 1320之間的系統記憶體1310。表現引擎1302自系統記憶體1310中之命令緩衝器1312提取GPU命令,以使用各種不同特徵來加速圖形表現。顯示引擎1304自圖框緩衝器1314提取像素資料,且接著將像素資料發送至外部監視器以供顯示。
所說明之架構抽象化應用於大多數現代GPU,但可在如何實施圖形記憶體方面不同。某些架構將系統記憶體1310用作圖形記憶體,而其他GPU可使用晶粒 上記憶體。可藉由GPU頁面資料表1306將系統記憶體1310映射至多個虛擬位址空間中。
透過全域頁面資料表來映射被稱為全域圖形記憶體之2GB全域虛擬位址空間,其係自GPU 1300及CPU 1320兩者可存取。以多個2GB本端虛擬位址空間之形式支援本端圖形記憶體空間,但其僅限於透過本端頁面資料表而自表現引擎1302存取。全域圖形記憶體主要為圖框緩衝器1314,而且充當命令緩衝器1312。當硬體加速正在進展中時對本端圖形記憶體進行大資料存取。相似頁面資料表機制係由具有晶粒上記憶體之GPU使用。
在一個實施例中,CPU 1320在生產者-消費者模型中透過圖13所展示之GPU特定命令來規劃GPU 1300。圖形驅動器根據高階規劃API(比如OpenGL及DirectX)而將GPU命令規劃至命令緩衝器1312中,包括主要緩衝器及批次緩衝器。GPU 1300接著提取及執行命令。主要緩衝器(環形緩衝器)可將其他批次緩衝器鏈接在一起。術語「主要緩衝器」及「環形緩衝器」可在下文中互換地使用。批次緩衝器用以輸送每規劃模型大部分命令(高達約98%)。暫存器元組(頭部、尾部)用以控制環形緩衝器。在一個實施例中,CPU 1320藉由更新尾部將命令提交至GPU 1300,而GPU 1300自頭部提取命令,且接著在命令已完成執行之後藉由更新頭部來告知CPU 1320。
如所提及,本發明之一個實施例實施於具有介導性遞通之完全GPU虛擬化平台中。因而,向每一VM 呈現完全成熟GPU以在VM內部執行原生圖形驅動器。然而,挑戰在以下三方面係顯著的:(1)在虛擬化整個精密現代GPU時之複雜度、(2)歸因於共用GPU之多個VM的效能,及(3)在無任何危害的情況下的VM間安全隔離。
圖14說明根據本發明之一個實施例的GPU虛擬化架構,其包括在GPU 1400上執行之超管理器1410、具特殊權限的虛擬機(VM)1420,及一或多個使用者VM 1431至1432。在超管理器1410中執行之虛擬化虛設常式模組1411延伸記憶體管理以包括用於使用者VM 1431至1432之延伸型頁面資料表(EPT)1414及用於具特殊權限的VM 1420之具特殊權限的虛擬記憶體管理單元(PVMMU)1412,以實施截獲與遞通策略。在一個實施例中,每一VM 1420、1431至1432執行可直接存取圖框緩衝器及命令緩衝器之效能臨界資源的原生圖形驅動器1428,其中資源分割係如下文所描述。為了保護具特殊權限的資源,亦即,I/O暫存器及PTE,截獲來自使用者VM 1431至1332及具特殊權限的VM 1420中之圖形驅動器1428的對應存取,且將其轉遞至具特殊權限的VM 1420中之虛擬化中繼程序1422以供模仿。在一個實施例中,虛擬化中繼程序1422使用超級呼叫以如所說明而存取實體GPU 1400。
此外,在一個實施例中,虛擬化中繼程序1422實施GPU排程器1426,GPU排程器1426與超管理器1410中之CPU排程器1416同時地執行,以在VM 1431至 1432之間共用實體GPU 1400。一個實施例使用實體GPU 1400以直接執行自VM提交之所有命令,因此其避免模仿表現引擎之複雜度,此在GPU內為最複雜部分。同時,圖框緩衝器及命令緩衝器兩者之資源遞通最小化超管理器1410對CPU存取之干預,而GPU排程器1426向每一VM保證用於直接GPU執行之配量。因此,當在多個VM之間共用GPU時,所說明之實施例達成良好效能。
在一個實施例中,虛擬化虛設常式1411選擇性地截獲或遞通某些GPU資源之客體存取。虛擬化虛設常式1411操縱EPT 1414項目以選擇性地向使用者VM 1431至1432呈現或隱藏特定位址範圍,而使用針對具特殊權限的VM 1420之PVMMU 1412中的PTE之保留位元,以選擇性地截獲或遞通對特定位址範圍之客體存取。在兩種狀況下,截獲周邊輸入/輸出(PIO)存取。將所有經截獲存取轉遞至虛擬化中繼程序1422以供模仿,而虛擬化中繼程序1411使用超級呼叫以存取實體GPU 1400。
如所提及,在一個實施例中,虛擬化中繼程序1422模仿虛擬GPU(vGPU)1424以用於具特殊權限的資源存取,且在vGPU 1424之間進行脈絡切換。同時,具特殊權限的VM 1420圖形驅動器1428用以初始化實體裝置且管理功率。一個實施例藉由將虛擬化中繼程序1422實施為具特殊權限的VM 1420中之核心程式模組來採取彈性釋放模型,以易化虛擬化中繼程序1422與超管理器1410之間的繫結。
經由CPU排程器1416及GPU排程器1426來實施分隔CPU/GPU排程機制。之所以進行此情形係因為GPU脈絡切換之成本可比CPU脈絡切換之成本高1000倍(例如,約700μs相對於約300ns)。此外,在電腦系統中,CPU核心之數目很可能不同於GPU核心之數目。因此,在一個實施例中,與現有CPU排程器1416分離地實施GPU排程器1426。分隔排程機制導致需要同時地存取來自CPU及GPU兩者之資源。舉例而言,當CPU存取VM1 1431之圖形記憶體時,GPU可同時地存取VM2 1432之圖形記憶體。
如上文所論述,在一個實施例中,在每一VM 1420、1431至1432內部執行原生圖形驅動器1428,此直接存取效能臨界資源之部分,其中具特殊權限的操作係由虛擬化中繼程序1422模仿。分隔排程機制導致下文所描述之資源分割設計。為了較佳地支援資源分割,一個實施例保留記憶體映射I/O(MMIO)暫存器窗(有時被稱作「virt_info」),以將資源分割資訊輸送至VM。
在一個實施例中,已將virt_info之位置及定義作為虛擬化延伸而推送至硬體規格,因此,圖形驅動器1428原生地處置該延伸,且未來GPU代出於回溯相容性而遵循該規格。
儘管在圖14中被說明為單獨組件,但在一個實施例中,包括虛擬化中繼程序1422(及其vGPU執行個體1424及GPU排程器1426)之具特殊權限的VM 1420在超管理器1410內實施為模組。
在一個實施例中,虛擬化中繼程序1422藉由截獲與模仿具特殊權限的操作來管理所有VM之vGPU 1424。虛擬化中繼程序1422處置實體GPU中斷,且可產生對指定VM 1431至1432之虛擬中斷。舉例而言,命令執行之實體完成中斷可觸發遞送至表現擁有者之虛擬完成中斷。按語義模仿vGPU執行個體的想法係簡單的;然而,實施方案涉及大工程努力及對GPU 1400之深度理解。舉例而言,大約700個I/O暫存器可由某些圖形驅動器存取。
在一個實施例中,GPU排程器1426實施粗糙粒度服務品質(QoS)策略。可選擇特定時間配量作為用於使每一VM 1431至1432共用GPU 1400資源之時間片斷。舉例而言,在一個實施例中,選擇16ms之時間配量作為排程時間片斷,此係因為此值引起對影像改變之低人類感知能力。亦選擇此類相對大配量,此係因為GPU脈絡切換之成本比CPU脈絡切換之成本高1000倍,因此,其無法與CPU排程器1416中之時間片斷一樣小。連續地將來自VM 1431至1432之命令提交至GPU 1400,直至客體/VM在其時間片斷外執行為止。在一個實施例中,GPU排程器1426等待客體環形緩衝器在切換之前變得空閒,此係因為當今大多數GPU為非先占式的,此可影響公平性。為了最小化等待額外負擔,可藉由追蹤命令提交以保證堆積命令在任何時間在某一限度內來實施粗糙粒度流動控制機制。因此,相比於大配量,經分配時間片斷與執行時間之間的時間漂移相對小,因此達成粗糙粒度QoS策略。
在一個實施例中,在表現脈絡切換時,當在vGPU 1424之間切換表現引擎時,保存及還原內部管線狀態及I/O暫存器狀態且執行快取/TLB清空。內部管線狀態對CPU不可見,但可透過GPU命令而保存及還原。可透過對表現脈絡中之暫存器清單的讀取/寫入來達成保存/還原I/O暫存器狀態。必須在表現脈絡切換時使用命令來清空包括於現代GPU中以加速資料存取及位址轉譯之內部快取記憶體及轉譯後援緩衝器(TLB),以保證隔離及正確性。在一個實施例中用以切換脈絡之步驟為:1)保存當前I/O狀態;2)清空當前脈絡;3)使用額外命令以保存當前脈絡;4)使用額外命令以還原新脈絡;及5)還原新脈絡之I/O狀態。
如所提及,一個實施例使用專用環形緩衝器以攜載額外GPU命令。可出於效能而再使用(經稽核)客體環形緩衝器,但直接將命令插入至客體環形緩衝器中並不安全,此係因為CPU可繼續將更多命令排入佇列,從而導致經覆寫內容。為了避免競爭條件,一個實施例自客體環形緩衝器切換至其自有專用環形緩衝器。在脈絡切換結束時,此實施例自專用環形緩衝器切換至新VM之客體環形緩衝器。
一個實施例再使用具特殊權限的VM 1420圖形驅動器以初始化顯示引擎,且接著管理顯示引擎以展示不同VM圖框緩衝器。
當兩個vGPU 1424具有相同解析度時,僅切 換圖框緩衝器位置。對於不同解析度,具特殊權限的VM可使用硬體純量(現代GPU中之常見特徵)以自動地按比例放大及縮小解析度。兩種技術僅僅花費數毫秒。在許多狀況下,諸如當VM未展示於實體顯示器上時(例如,當其代管於遠端伺服器上時)可不需要顯示管理。
圖14所說明,一個實施例遞通對圖框緩衝器及命令緩衝器之存取以加速來自VM 1431至1432之效能臨界操作。對於全域圖形記憶體空間(大小為2GB),可使用圖形記憶體資源分割及位址空間佔用技術。對於本端圖形記憶體空間(各自亦具有2GB之大小),歸因於本端圖形記憶體僅可由GPU 1400存取,可透過表現脈絡切換來實施按VM本端圖形記憶體。
如所提及,一個實施例在VM 1431至1432之間分割全域圖形記憶體。如上文所解釋,分隔CPU/GPU排程機制要求不同VM之全域圖形記憶體可由CPU及GPU同時地存取,因此,每一VM必須在任何時間被呈現其自有資源,從而導致用於全域圖形記憶體之資源分割途徑,如圖15所說明。詳言之,圖15展示用於VM1及VM2之圖形記憶體的客體視圖1501,及對應主機視圖1502。
資源分割揭露引起關注的問題:客體及主機現在具有全域圖形記憶體之不一致視圖。客體圖形驅動器1428未意識到分割,此係假定獨佔式擁有權:全域圖形記憶體自位址零開始為連續的。對於任何圖形位址,在由CPU及GPU存取之前,一個實施例在主機視圖1502與客體 視圖1501之間轉譯。其因此引發更多複雜度及額外負擔,諸如對命令緩衝器之額外存取(通常被映射為非可快取且因此在存取時慢速)。
一個實施例使用被稱為「位址空間佔用」之技術以消除位址轉譯額外負擔。圖16中說明一實例,其展示用於VM1及VM2之客體視圖1601及用於記憶體分割之主機視圖1602。一個實施例透過virt_info MMIO窗將分割資訊曝露至VM圖形驅動器1428。圖形驅動器1428之一個實施例將其他VM之區域標記為「已佔用」,且根據其圖形記憶體分配來保留該等區域。就此設計而言,全域圖形記憶體空間之客體視圖1601與如所說明之主機視圖1602確切地相同,且經驅動器規劃位址(使用客體實體位址)可直接由硬體使用。位址空間佔用不同於傳統記憶體佔用技術。關於已佔用頁面之數目,記憶體佔用係用於記憶體使用控制,而位址空間佔用係用以佔用特殊記憶體位址範圍。
位址空間佔用之另一益處為客體命令緩衝器可直接用於直接GPU執行,而無任何位址轉譯額外負擔。除了提供效能保證以外,此亦藉由消除針對影子命令緩衝器之需要來顯著地簡化實施方案。然而,此類方案可易遭受安全違反。在一個實施例中,藉由稽核及保護命令緩衝器免於惡意攻擊而運用智慧型投影來解決此問題,如下文所論述。
在一個實施例中,准許每一VM獨自地使用 完全本端圖形記憶體空間,相似於CPU上之虛擬位址空間。本端圖形記憶體空間僅對GPU 1400中之表現引擎可見。因此,由VM 1431至1432規劃之任何有效本端圖形記憶體位址可由GPU 1400直接使用。虛擬化中繼程序1420在切換表現擁有權時在VM 1431至1432之間切換本端圖形記憶體空間。
圖17所說明,在一個實施例中,運用共用影子全域頁面資料表1703及按VM影子本端頁面資料表1701至1702來虛擬化GPU頁面資料表。詳言之,為了達成資源分割及位址空間佔用,一個實施例實施用於所有VM 1431至1432之共用影子全域頁面資料表1703。每一VM具有其自有客體全域頁面資料表1701(VM1)及1702(VM2),其係自圖形記憶體頁碼轉譯至客體記憶體頁碼(GPN)。影子全域頁面資料表1703接著自圖形記憶體頁碼轉譯至主機記憶體頁碼(HPN)。共用影子全域頁面資料表1703維持用於所有VM之轉譯,以同時地支援自CPU及GPU之同時存取。因此,此實施例藉由截獲客體PTE更新來實施單一共用影子全域頁面資料表1703,如圖17所說明。在一個實施例中,全域頁面資料表1703在MMIO空間中具有512K個PTE項目,其各自指向4KB系統記憶體1710頁面,從而建立2GB全域圖形記憶體空間。一個實施例在更新影子PTE項目之前根據位址空間佔用資訊來稽核客體PTE值。
在一個實施例中,為了支援本端圖形記憶體 存取之遞通,實施按VM影子本端頁面資料表。本端圖形記憶體僅可自表現引擎存取。如圖18所說明,本端頁面資料表為包含頁面目錄資料表1801及頁面資料表1802之兩層級分頁結構。位於全域頁面資料表中之第一層級頁面目錄項目(PDE)1801在系統記憶體中指向第二層級頁面資料表項目(PTE)1802。因此,透過包含影子頁面目錄項目資料表1803及影子頁面資料表1804之共用影子全域頁面資料表的實施方案來截獲與模仿對PDE之客體存取。對於每一VM,一個實施例寫入保護客體PTE頁面之清單,如同傳統影子頁面資料表途徑。在一個實施例中,虛擬化中繼程序1422在寫入保護頁面錯誤時使影子頁面資料表1803至1804與客體頁面資料表1801至1802同步,且在表現脈絡切換時切換影子本端頁面資料表1803至1804。
遞通對於效能係極大的,但其必須在一個實施例中出於安全隔離而滿足以下準則。首先,必須禁止VM映射未經授權圖形記憶體頁面。其次,必須驗證由VM規劃之所有GPU暫存器及命令以僅含有經授權圖形記憶體位址。最後,此實施例需要定址拒絕服務攻擊,舉例而言,VM可有意地觸發大量GPU當機。
在一個實施例中,在虛擬化中繼程序1422之控制下截獲與模仿對具特殊權限的I/O暫存器及PTE之CPU存取。因此,惡意VM可既不直接改變實體GPU脈絡,亦不映射未經授權圖形記憶體。對圖框緩衝器及命令緩衝器之CPU存取在一個實施例中亦由EPT保護。
另一方面,一個實施例再使用客體命令緩衝器,以供GPU出於效能而直接執行,如上文所提及,但其可違反隔離。舉例而言,惡意命令可含有未經授權圖形記憶體位址。可運用如下文所詳述之智慧型投影來處理此問題。
一個實施例執行GPU存取之隔離。詳言之,此實施例在暫存器及命令中稽核圖形記憶體位址,之後由GPU使用該等位址。此可在截獲與模仿暫存器存取時及在命令提交時予以實施。
一個實施例使用在現代GPU中廣泛地支援之裝置重設特徵以緩解拒絕服務攻擊。GPU如此複雜,使得應用程式可造成GPU出於許多原因而當機。因此,現代GPU支援裝置重設以動態地復原GPU,而不需要將整個系統重新開機。一個實施例使用此能力以自多種GPU當機復原,該等GPU當機係由來自VM 1431至1432之有問題的命令造成。同時,在偵測到實體GPU當機後,此實施例亦藉由自執行佇列移除所有VM來模仿GPU當機事件,從而允許每一VM相應地偵測及復原。可針對每一VM 1431至1432維持臨限值,且若GPU當機之數目超過臨限值,則VM會損毀。
平衡效能及安全性對於完全GPU虛擬化具挑戰性。為了保證沒有來自GPU之未經授權位址參考,一個實施例在命令提交時稽核客體命令緩衝器。然而,在提交命令時之時間與實際上執行命令時之時間之間存在一 窗,因此,惡意VM可藉由修改彼窗內之命令來破壞隔離。在一個實施例中,可應用投影機制,諸如影子頁面資料表。然而,其最初經設計用於客體內容被頻繁地修改且可引起顯著效能額外負擔及額外複雜度之狀況。
命令緩衝器之規劃模型實際上不同於頁面資料表之規劃模型。首先,主要緩衝器(被結構化為環形緩衝器)被靜態地分配有有限頁碼(例如,32個頁面或16個頁面),且在一個實施例中不允許對經提交環形命令(自頭部至尾部)之修改。可足夠有效率的是僅將經提交命令複製至影子緩衝器。其次,按需求而分配批次緩衝器頁面,且將其鏈接至環形緩衝器中。一旦提交批次緩衝器頁面,其就將不大可能被存取直至頁面被淘汰為止。可出於此類單次使用而避免影子緩衝器。
一個實施例藉由利用不同緩衝器之特定規劃模型來實施智慧型投影機制,其中對於不同緩衝器具有不同保護方案。舉例而言,可將寫入保護應用於批次緩衝器,批次緩衝器不大可能被修改(因此寫入模仿成本極其有限),且可將遲緩投影應用於環形緩衝器,環形緩衝器之大小較小且可以最少成本自客體緩衝器複製至影子緩衝器。
一個實施例使用遲緩投影方案以在環形緩衝器上關閉攻擊窗。此實施例可建立單獨環形緩衝器(被稱作影子環形緩衝器)以輸送經提交至GPU之實際命令。在稽核客體經提交命令之後,按需求而將該等命令自客體環形緩衝器複製至影子環形緩衝器。
應注意,此處僅投影經提交至GPU之命令。客體存取保持遞通至客體環形緩衝器,而無超管理器1410干預。當客體提交新命令時,影子緩衝器遲緩地與客體緩衝器同步。影子緩衝器對VM不可見,因此不存在惡意VM攻擊之機會。
在一個實施例中,寫入保護批次緩衝器頁面,且在提交至GPU以供執行之前稽核命令,以關閉攻擊窗。按需求而按頁面應用寫入保護,且在此頁面中之命令的執行由GPU完成之後移除寫入保護,此完成係藉由追蹤環形頭部之前進而被偵測。對經提交命令之修改為按規格的圖形規劃模型之違反,因此,對經提交命令之任何客體修改被視為導致VM之終止的攻擊。同時,命令緩衝器使用可不頁面對準,且客體可使用用於新命令之自由子頁面空間。
一個實施例追蹤每一批次緩衝器頁面之已使用及未使用空間,且出於正確性而模仿對經保護頁面之未使用空間的客體寫入。遲緩投影對於環形緩衝器工作良好。其引發每秒9K個命令複製之平均數目,此對於現代多GHz CPU為小成本。同時,寫入保護對於批次緩衝器工作良好,此在一個實施方案中以平均每秒僅約560次截獲與模仿來保護約1700個頁面。
在一個實施例中,引入額外最佳化以縮減截獲頻率,其中對原生圖形驅動器進行微小修改。根據硬體規格,圖形驅動器必須在存取某些MMIO暫存器時使用特 殊規劃型樣,同時具有高達7個額外MMIO暫存器存取,以防止GPU進入電力節省模式。其不在原生世界中引發明顯成本,但其可在本文中所描述之實施例中歸因於誘發性介導額外負擔而變成大效能挑戰。GPU功率管理設計之一個實施例提供最佳化之機會。具有言之,一個實施例依賴於具特殊權限的VM 1420以管理實體GPU功率,同時停用客體功率管理。基於此情形,可在原生圖形驅動器1428在經虛擬化環境中執行時最佳化原生圖形驅動器1428以跳過額外MMIO暫存器存取。在一個實施例中,此最佳化平均將截獲頻率縮減60%。
在一個實施例中,圖形驅動器1428藉由virt_info MMIO窗(上文所論述)中之資訊來識別其在原生環境抑或虛擬化環境中。可將virt_info之定義推送至GPU硬體規格中,因此,未來原生圖形驅動器及未來GPU代可遵循回溯相容性。
本文中所描述之基本原理及架構可實施於各種不同GPU上。圖框緩衝器、命令緩衝器、I/O暫存器及頁面資料表之概念全部在現代GPU中抽象化得極好。一些GPU可使用晶粒上圖形記憶體;然而,本文中所描述之圖形記憶體資源分割及位址空間佔用機制亦服從彼等GPU。此外,對於不同GPU而一般化用於頁面資料表及命令緩衝器兩者之投影機制。GPU排程器1426為一般的,而特定脈絡切換序列可不同。
此外,本文中所描述之核心組件為超管理器 不可知的。儘管一個實施方案係關於類型1超管理器,但此等技術可易於延伸至類型2超管理器,諸如基於核心程式之虛擬機(KVM),具有鉤點以代管MMIO存取(例如,使用Linux圖形驅動器)。舉例而言,吾人可在主機圖形驅動器中暫存I/O存取介面上之回呼,因此,虛擬化中繼程序1424可攔截及模仿對具特殊權限的GPU資源之主機驅動器存取。
儘管分割圖形記憶體資源可限制可縮放性,但可以兩個正交方式解決此問題。一個方式係藉由運用額外驅動器合作來實施動態資源佔用機制而較佳地使用現有圖形記憶體,以在vGPU之間共用圖形記憶體。另一方式係藉由在未來代GPU中添加更多圖形記憶體來增加可用圖形記憶體資源。
完全GPU虛擬化之一個額外挑戰為不同圖形引擎(諸如3D、位塊傳送器(blitter)及媒體)之相依性。圖形驅動器可使用旗號命令以使共用資料結構在引擎之間同步,而可不先占旗號命令。其接著引起引擎間相依性之問題,且導致成組排程策略以始終一起排程所有引擎;然而,其影響共用效率。可在稽核命令緩衝器時透過建構引擎間相依性圖形而運用組合按引擎排程與成組排程兩者之混合式方案來處理此限制。GPU排程器1426接著可根據相依性圖形而動態地選擇按引擎排程及成組排程策略。
圖19說明用於圖形虛擬化架構1900之一個實施例的額外細節,圖形虛擬化架構1900包括多個VM, 例如,VM 1930及VM 1940,其係由超管理器1910管理,包括對GPU 1920中之GPU特徵之完全陣列的存取。在各種實施例中,超管理器1910可使VM 1930或VM 1940能夠利用圖形記憶體及其他GPU資源以用於GPU虛擬化。一或多個虛擬GPU(vGPU)(例如,vGPU 1960A及1960B)可基於GPU虛擬化技術來存取由GPU 1920硬體提供之完全功能性。在各種實施例中,超管理器1910可追蹤、管理如本文中所描述之vGPU 1960A及1960B的資源及生命週期。
在一些實施例中,vGPU 1960A至1960B可包括呈現至VM 1930、1940之虛擬GPU裝置,且可用以與原生GPU驅動器(例如,如上文關於圖14所描述)互動。VM 1930或VM 1940可接著存取GPU特徵之完全陣列且使用vGPU 1960A至1960B中之虛擬GPU裝置以存取虛擬圖形處理器。舉例而言,一旦VM 1930截獲至超管理器1910中,超管理器1910就可操縱vGPU執行個體(例如,vGPU 1960A),且判定VM 1930是否可存取vGPU 1960A中之虛擬GPU裝置。可按配量或事件而切換vGPU脈絡。在一些實施例中,脈絡切換可按GPU表現引擎(諸如3D表現引擎1922或位塊傳送器表現引擎1924)而發生。週期性切換允許多個VM以對VM之工作負載透通之方式共用實體GPU。
GPU虛擬化可採取各種形式。在一些實施例中,可運用裝置遞通來啟用VM 1930,其中向VM 1930 呈現整個GPU 1920,就好像其直接連接。非常類似於單一中央處理單元(CPU)核心可經指派以供VM 1930獨佔式地使用,GPU 1920亦可經指派以供VM 1930獨佔式地使用,例如,甚至歷時一有限時間。另一虛擬化模型為時間共用,其中GPU 1920或其部分可由多個VM(例如,VM 1930及VM 1940)以多工方式共用。其他GPU虛擬化模型亦可在其他實施例中由設備1900使用。在各種實施例中,可分割與GPU 1920相關聯之圖形記憶體,且將其分派至超管理器1910中之各種vGPU 1960A至1960B。
在各種實施例中,圖形轉譯表(GTT)可由VM或GPU 1920使用以將圖形處理器記憶體映射至系統記憶體或將GPU虛擬位址轉譯成實體位址。在一些實施例中,超管理器1910可管理經由影子GTT映射之圖形記憶體,且可將影子GTT保持於vGPU執行個體(例如,vGPU 1960A)中。在各種實施例中,每一VM可具有對應影子GTT以在圖形記憶體位址與實體記憶體位址(例如,虛擬化環境下之機器記憶體位址)之間保持映射。在一些實施例中,可共用影子GTT,且其維持用於多個VM之映射。在一些實施例中,每一VM 1930或VM 1940可包括按程序GTT及全域GTT兩者。
在一些實施例中,設備1900可將系統記憶體用作圖形記憶體。可藉由GPU頁面資料表將系統記憶體映射至多個虛擬位址空間中。設備1900可支援全域圖形記憶體空間及按程序圖形記憶體位址空間。全域圖形記憶體空 間可為透過全域圖形轉譯表(GGTT)映射之虛擬位址空間,例如,2GB。此位址空間之下部部分有時被稱為孔徑,其可自GPU 1920及CPU(未圖示)兩者存取。此位址空間之上部部分被稱為高圖形記憶體空間或隱藏式圖形記憶體空間,其可僅由GPU 1920使用。在各種實施例中,影子全域圖形轉譯表(SGGTT)可由VM 1930、VM 1940、超管理器1910或GPU 1920使用,以基於全域記憶體位址空間而將圖形記憶體位址轉譯成各別系統記憶體位址。
在完全GPU虛擬化中,靜態全域圖形記憶體空間分割方案可能面臨可縮放性問題。舉例而言,對於2GB之全域圖形記憶體空間,可對於孔徑保留第一512百萬位元組(MB)虛擬位址空間,且其其餘部分(1536MB)可變成高(隱藏式)圖形記憶體空間。就靜態全域圖形記憶體空間分割方案而言,完全GPU虛擬化被啟用之每一VM可被分派有128MB孔徑及384MB高圖形記憶體空間。因此,2GB全域圖形記憶體空間可僅容納最大四個VM。
除了可縮放性問題以外,具有有限圖形記憶體空間之VM亦可能遭受效能降級。有時,可在媒體應用程式之一些媒體重工作負載中在其充分使用GPU媒體硬體加速時觀測到嚴重效能降級。作為一實例,為了對一個通道1080p H.264/進階視訊編碼(AVC)位元串流進行解碼,可需要至少40MB之圖形記憶體。因此,對於10通道之1080p H264/AVC位元串流解碼,可需要至少400MB之圖形記憶體空間。同時,一些圖形記憶體空間可能必須 出於表面組成物/色彩轉換而保留,從而在解碼過程期間切換顯示圖框緩衝器,等等。在此狀況下,每VM的512MB之圖形記憶體空間可能對於VM執行多視訊編碼或解碼不充分。
在各種實施例中,設備100可達成與按需求SGGTT之GPU圖形記憶體過度承諾。在一些實施例中,超管理器1910可按需求而建構SGGTT,此可包括用於來自不同GPU組件之擁有者VM的圖形記憶體虛擬位址之所有待使用轉譯。
在各種實施例中,由超管理器1910管理之至少一個VM可被分派有不僅僅是經靜態分割全域圖形記憶體位址空間以及記憶體。在一些實施例中,由超管理器1910管理之至少一個VM可被分派有或能夠存取整個高圖形記憶體位址空間。在一些實施例中,由超管理器1910管理之至少一個VM可被分派有或能夠存取整個圖形記憶體位址空間。
超管理器1910可使用命令剖析器1918以偵測用於由VM 1930或VM 1940提交之命令的GPU表現引擎之潛在記憶體工作集。在各種實施例中,VM 1930可具有各別命令緩衝器(未圖示)以保持來自3D工作負載1932或媒體工作負載1934之命令。相似地,VM 1940可具有各別命令緩衝器(未圖示)以保持來自3D工作負載1942或媒體工作負載1944之命令。在其他實施例中,VM 1930或VM 1940可具有其他類型之圖形工作負載。
在各種實施例中,命令剖析器1918可掃描來自VM之命令且判定命令是否含有記憶體運算元。若是,則命令剖析器可(例如)自VM之GTT讀取相關圖形記憶體空間映射,且接著將其寫入至SGGTT之工作負載特定部分中。在掃描工作負載之整個命令緩衝器之後,可產生或更新保持與此工作負載相關聯之記憶體位址空間映射的SGGTT。另外,藉由掃描來自VM 1930或VM 1940之待執行命令,命令剖析器1918亦可(諸如)藉由緩解惡意操作來改良GPU操作之安全性。
在一些實施例中,可產生一個SGGTT以保持用於來自所有VM之所有工作負載的轉譯。在一些實施例中,可產生一個SGGTT以保持用於(例如)僅來自一個VM之所有工作負載的轉譯。工作負載特定SGGTT部分可按需求而由命令剖析器1918建構,以保持用於特定工作負載之轉譯,例如,來自VM 1930之3D工作負載1932或來自VM 1940之媒體工作負載1944。在一些實施例中,命令剖析器1918可將SGGTT插入至SGGTT佇列1914中,且將對應工作負載插入至工作負載佇列1916中。
在一些實施例中,GPU排程器1912可在執行時建構此類按需求SGGTT。特定硬體引擎可僅使用在執行時分配至VM 1930之圖形記憶體位址空間的小部分,且GPU脈絡切換不頻繁地發生。為了利用此類GPU特徵,超管理器1910可使用VM 1930之SGGTT以僅保持用於各種GPU組件之執行中及待執行轉譯,而非分派至VM 1930 之全域圖形記憶體位址空間的整個部分。
用於GPU 1920之GPU排程器1912可與用於設備1900中之CPU的排程器分離。為了在一些實施例中利用硬體平行性,GPU排程器1912可針對不同GPU引擎(例如,3D表現引擎1922、位塊傳送器表現引擎1924、視訊命令串流器(VCS)表現引擎1926,及視訊增強型命令串流器(VECS)表現引擎1928)分離地排程工作負載。舉例而言,VM 1930可為3D密集的,且3D工作負載1932可每次需要排程至3D表現引擎1922。同時,VM 1940可為媒體密集的,且媒體工作負載1944可需要排程至VCS表現引擎1926及/或VECS表現引擎1928。在此狀況下,GPU排程器1912可分離地排程來自VM 1930之3D工作負載1932及來自VM 1940之媒體工作負載1944。
在各種實施例中,GPU排程器1912可追蹤由GPU 1920中之各別表現引擎使用的執行中SGGTT。在此狀況下,超管理器1910可保持按表現引擎SGGTT以用於追蹤各別表現引擎中之所有執行中圖形記憶體工作集。在一些實施例中,超管理器1910可保持單一SGGTT以用於追蹤用於所有表現引擎之所有執行中圖形記憶體工作集。在一些實施例中,此類追蹤可基於單獨執行中SGGTT佇列(未圖示)。在一些實施例中,此類追蹤可基於SGGTT佇列1914上之標記,例如,使用登錄檔。在一些實施例中,此類追蹤可基於工作負載佇列1916上之標記,例如,使用登錄檔。
在排程程序期間,GPU排程器1912可針對來自工作負載佇列1916之待排程工作負載檢驗來自SGGTT佇列1914之SGGTT。在一些實施例中,為了排程用於特定表現引擎之下一VM,GPU排程器1912可檢查由用於彼表現引擎之VM使用的特定工作負載之圖形記憶體工作集是否與彼表現引擎之執行中或待執行圖形記憶體工作集衝突。在其他實施例中,此類衝突檢查可延伸以與所有其他表現引擎之執行中或待執行圖形記憶體工作集相符合。在各種實施例中,此類衝突檢查可基於SGGTT佇列1914中之對應SGGTT,或基於如上文中所論述的由超管理器1910保持用於追蹤各別表現引擎中之所有執行中圖形記憶體工作集的SGGTT。
若不存在衝突,則GPU排程器1912可將執行中及待執行圖形記憶體工作集整合至一起。在一些實施例中,亦可(例如)在SGGTT佇列1914中或在其他資料儲存構件中產生及儲存特定表現引擎之執行中及待執行圖形記憶體工作集的所得SGGTT。在一些實施例中,若所有此等工作負載之圖形記憶體位址並不與彼此衝突,則亦可產生及儲存與一個VM相關聯的所有表現引擎之執行中及待執行圖形記憶體工作集的所得SGGTT。
在將經選擇VM工作負載提交至GPU 1920之前,超管理器1910可將對應SGGTT頁面寫入至GPU 1920中,例如,至圖形轉譯表1950。因此,超管理器1910可使能夠運用全域圖形記憶體空間中之正確映射來執行此 工作負載。在各種實施例中,可將所有此類轉譯項目寫入至圖形轉譯表1950中,至下部記憶體空間1954或上部記憶體空間1952。在一些實施例中,圖形轉譯表1950可按VM含有單獨資料表以保持此等轉譯項目。在其他實施例中,圖形轉譯表1950亦可含有按表現引擎單獨資料表以保持此等轉譯項目。在各種實施例中,圖形轉譯表1950可至少含有待執行圖形記憶體位址。
然而,若存在由GPU排程器1912判定之衝突,則GPU排程器1912可接著推遲彼VM之排程輸入,且嘗試排程輸入相同VM或代替地不同VM之另一工作負載。在一些實施例中,若兩個或多於兩個VM可嘗試將同一圖形記憶體位址(例如)用於同一表現引擎或兩個不同表現引擎,則可偵測到此類衝突。在一些實施例中,GPU排程器1912可改變排程器策略以避免選擇表現引擎中之一或多者,該等表現引擎具有彼此衝突之可能性。在一些實施例中,GPU排程器1912可暫止執行硬體引擎以緩解衝突。
在一些實施例中,如本文中所論述之GPU虛擬化中的記憶體過度承諾方案可與靜態全域圖形記憶體空間分割方案共存。作為一實例,下部記憶體空間1954中之孔徑可仍用於所有VM之間的靜態分割。上部記憶體空間1952中之高圖形記憶體空間可用於記憶體過度承諾方案。相比於靜態全域圖形記憶體空間分割方案,GPU虛擬化中之記憶體過度承諾方案可使每一VM能夠使用上部記 憶體空間1952中之整個高圖形記憶體空間,此可允許每一VM內部之一些應用程式出於改良之效能而使用較大圖形記憶體空間。
就靜態全域圖形記憶體空間分割方案而言,最初主張記憶體之大部分的VM可在執行階段僅使用小部分,而其他VM可在記憶體之不足狀態中。就記憶體過度承諾而言,超管理器可按需求而分配用於VM之記憶體,且經保存記憶體可用以支援更多VM。就基於SGGTT之記憶體過度承諾而言,可在執行階段分配僅由待執行工作負載使用之圖形記憶體空間,此保存圖形記憶體空間且支援更多VM以存取GPU 1920。
用於針對影子結構的智慧型資源提供之設備及方法
如所提及,隨著伺服器中之GPU支援3D、媒體及GPGPU工作負載的重要性增加,GPU虛擬化正變得愈來愈普遍。如何虛擬化自虛擬機(VM)之GPU記憶體存取為關鍵設計因素中之一者。GPU具有其自有圖形記憶體:專用視訊記憶體或共用系統記憶體。當系統記憶體用於圖形時,需要將客體實體位址(GPA)轉譯至主機實體位址(HPA),之後由硬體存取。
存在用以針對GPU執行轉譯之各種途徑。一些實施方案運用硬體支援來執行轉譯,但可將GPU僅遞通至一個VM。另一解決方案為建構用於轉譯之影子結構的軟體途徑。舉例而言,在諸如上文所提及之完全GPU虛擬化解決方案的一些架構中實施影子頁面資料表,此可支援 多個VM以共用一實體GPU。
然而,傳統影子頁面資料表技術並不與一些其他記憶體存取型樣良好地合作,該等記憶體存取型樣需要記憶體投影,但具有一些獨特要求。舉例而言,圖形脈絡含有客體實體位址(GPA)且需要影子脈絡以確保正確性。
圖20說明GPU引擎2020之圖形記憶體位址空間2021內的配置,圖形記憶體位址空間2021包括影子脈絡2022及對應客體脈絡2023。在一個實施例中,圖形/影子脈絡具有以下特性:
1.影子結構中之稀疏影子資料
圖形脈絡為保持待在脈絡執行之前負載之硬體狀態的圖形記憶體區域。一些欄位含有比如頁面資料表之GPA,但此類欄位受到限制。在一些處理器架構中,表現脈絡大小為80K,且僅四個四倍字需要位址轉譯。同時,沒有可能僅投影彼等欄位。必須一起投影整個脈絡2022以擷取依序圖形位址。
2.原始結構與影子結構之間的雙向資料同步
圖形脈絡可由硬體寫入。因此,當自硬體排程輸出脈絡時,影子脈絡2022中之內容需要複製回至客體脈絡2023。此相比於傳統影子實施方案可引入額外負擔。
3.在執行階段中對於投影之大圖形記憶體要求
由使用者空間應用程式判定系統中之脈絡的數目。一個程序可建立多個脈絡2023,且脈絡投影2022可動態地消 耗大量記憶體。除了所使用之系統記憶體以外,影子結構亦消耗圖形記憶體位址空間2021,此亦可為負擔。舉例而言,一些處理器可組配高達4G之圖形記憶體。在本文中所描述之完全虛擬化架構中,圖形記憶體空間2021由多個VM共用,且用於每一VM之記憶體大小仍相對小。歸因於此等特性,僅借用用於圖形脈絡之傳統影子頁面資料表途徑可為次最佳的,且可關於記憶體使用及效能而造成顯著的額外負擔。
為了處理上述限制,本發明之一個實施例包含針對影子結構的智慧型資源提供(IRPSS)以最小化用於影子圖形結構之資源消耗。相同想法可應用於面臨對影子實施方案之資源限制的其他情境。除了來自資源消耗之益處以外,IRPSS亦可藉由縮減結構與影子結構之間的同步成本來改良效能。
在一個實施例中,IRPSS包含用以最佳化兩個類型之影子資源利用率的至少兩種技術:虛擬位址空間及實體系統記憶體頁面。
在一個實施例中,自動位址空間共用(AASS)適用於在僅有限數目個影子事例(諸如GPU脈絡)由GPU在給定時間進行操作的一個實施例中所使用之投影情境。如圖21所說明,在一個實施例中,影子結構管理邏輯2100在圖形記憶體位址空間2102內事先保留被稱為「影子槽」2101之靜態資源,且在GPU脈絡切換時間將一個影子脈絡之GTT項目動態地切換入/出至圖形記憶體位 址空間2102。當不用於當前脈絡中時,GTT項目儲存於備份儲存區2104內,可使用系統之快取記憶體/記憶體子系統及/或使用單獨專用記憶體儲存體來實施備份儲存區2104。
在一個實施例中,部分投影(PS)可用以縮減用於投影之系統記憶體使用。傳統上,影子頁面資料表藉由寫入保護及投影所有頁面資料表來使用單一策略。然而,圖形記憶體結構格式更多樣,且圖形驅動器可能不基於其自有要求而使用所有敏感欄位。使用一個策略以投影所有客體頁面並不有效率,此係因為並非所有頁面含有敏感欄位(例如,GPA)。代替地,在一個實施例中,影子結構管理邏輯2100採用使用按需求策略之部分投影,如圖22所說明。詳言之,對於不含有敏感欄位之頁面,GPU頁面資料表經規劃以具有直接映射至客體頁面之GPU位址(例如,對於客體脈絡2205)。對於含有敏感欄位之頁面,諸如影子脈絡2203,寫入保護彼等頁面且在影子槽2201中建立影子複本,如所說明。接著將影子複本映射至圖形記憶體位址空間2202內之GPU位址範圍。在一個實施例中,將影子位址範圍映射至交錯客體/影子結構,從而引起部分投影。
因此,使用IRPSS的本發明之實施例最佳化傳統影子頁面資料表途徑,以使其對於含有稀疏影子資料之資料結構工作。在一個實施例中,根據圖23所說明之方法來實施IRPSS。
在2301處,執行系統準備,此在一個實施例中保留用於影子結構之足夠數目個影子槽。槽之數目可由可同時地由硬體利用之影子結構的數目判定(例如,將槽之數目設定為等於可同時地由硬體利用之影子結構的數目)。作為實例而非限制,GPU具有各種引擎,諸如表現引擎、位塊傳送器引擎等等,且每一引擎每次僅可執行一個脈絡。因此,槽數目可等於GPU引擎之數目,其相對小。
在2302處,使用本文中所描述之部分投影技術來執行影子建立/損毀。舉例而言,影子建立判定影子結構之不同部分的影子策略(參見(例如)圖22及關聯文字)。舉例而言,對於含有敏感欄位之頁面,可寫入保護此等頁面且在影子槽中建立影子複本。
在2303處,使用自動位址空間共用(AASS)來執行影子排程。在一個實施例中,AASS執行用於位址空間共用之經投影結構的生命週期控制。下文定義在一個實施例中用以實施AASS之兩個術語:
住入(c):結構「c」變得對硬體存留時之時間,此意謂「c」可自彼時間起由硬體操縱。作為實例,此可包括住入為脈絡「c」提交至GPU硬體時之時間的圖形脈絡。
住出(c):結構「c」不再由硬體使用時之時間(但其可稍後被再次使用)。對於圖形脈絡,其為脈絡「c」自GPU排程輸出的時間。
在一個實施例中,在使用AASS的情況下,會顯著地縮減用於投影之圖形記憶體虛擬位址空間。不管 需要多少影子結構,位址消耗皆限定於彼等影子槽。
圖24中說明用於影子結構建立、住入、住出及損毀之方法的更詳細實施例。該方法可實施於本文中所描述之圖形系統架構的脈絡內,但並不限於任何特定系統架構。
在2401處,建立影子結構。具體言之,在2401a處,將影子結構之客體頁面標記為經寫入保護。在一個實施例中,影子結構管理邏輯2100之寫入保護處置器將(諸如)運用正常影子實施方案來執行敏感資料轉譯。在2401b處,判定影子策略。舉例而言,如所提及,若頁面含有諸如GPA之敏感欄位,則需要影子。在2401c處,必要時在備份儲存區中分配及建構影子頁面。
一旦在2401a處建立影子結構,就在2402處執行影子結構住入操作。具體言之,在2402a處識別空槽,且在2402b處將結構之影子頁面映射至槽中。此外,對於未被投影之頁面,將客體頁面直接映射至槽中。
一旦完成關於影子結構之操作,就在2403處執行影子結構住出操作。在一個實施例中,在2403a處,將來自影子頁面之資料同步至結構之客體頁面,且在2403b處,釋放影子槽(使得其可與新影子結構一起使用)。最後,在2404處,損毀影子結構。具體言之,在2404a處,清除客體頁面之寫入保護,且在2404b處,在備份儲存區中損毀影子頁面。
在一個實施例中,在2401c處,可如同正常 頁面資料表投影而執行自GPA至HPA之位址轉譯。相比於頁面資料表投影,在2403a處,住出程序將來自影子頁面之資料複製至結構之客體頁面以供同步。如早先所提及,影子頁面可含有由硬體修改之欄位。因此,當影子結構住出時,應將此資料複製回至客體結構。
在一個實施例中,部分投影(PS)可用以最佳化(2401c)以縮減對於經投影結構所需要之系統記憶體。可出於效能而改良步驟2403a,此係因為會顯著地縮減同步頁面。僅含有敏感欄位之頁面將需要同步。
在此詳細描述中,參考形成詳細描述之部分的隨附圖式,其中類似數字貫穿隨附圖式指定類似部分,且其中作為說明而展示可實踐之實施例。應理解,在不脫離本發明之範疇的情況下,可利用其他實施例且可進行結構或邏輯改變。因此,以下詳細描述不應以限制性意義予以理解,且實施例之範疇係由所附申請專利範圍及其等效者定義。
各種操作可以最有助於理解所主張主題之方式被描述為依次排列之多個離散動作或操作。然而,描述次序不應被解釋為暗示此等操作必要地取決於次序。詳言之,可不以呈現次序執行此等操作。可以與所描述之實施例不同的次序執行所描述之操作。可執行各種額外操作,及/或可在額外實施例中忽略所描述之操作。
出於本發明之目的,片語「A及/或B」意謂(A)、(B)或(A及B)。出於本發明之目的,片語「A、B及/ 或C」意謂(A)、(B)、(C)、(A及B)、(A及C)、(B及C)或(A、B及C)。在揭示內容敍述「一」或「第一」元件或其等效者的情況下,此揭示內容包括一個或多個此類元件,既不需要亦不排除兩個或多於兩個此類元件。另外,除非另有特定陳述,否則用於所識別元件之序數指示符(例如,第一、第二或第三)用以區分該等元件,且並不指示或暗示此類元件之所需或有限數目,亦不指示此類元件之特定位置或次序。
該描述中對一個實施例或一實施例之參考意謂結合該實施例所描述之特定特徵、結構或特性包括於本發明之至少一個實施例中。該描述可使用片語「在一個實施例中,」、「在另一實施例中」、「在一些實施例中」、「在實施例中」、「在各種實施例中」或其類似者,其可各自指代相同或不同實施例中之一或多者。此外,如關於本發明之實施例所使用,術語「包含」、「包括」、「具有」及其類似者為同義的。
在實施例中,術語「引擎」或「模組」或「邏輯」可指代執行一或多個軟體或韌體程式之特殊應用積體電路(ASIC)、電子電路、處理器(共用、專用或群組)及/或記憶體(共用、專用或群組)、組合邏輯電路及/或提供所描述功能性之其他合適組件,可為以上各者之部分,或可包括以上各者。在實施例中,引擎或模組可以韌體、硬體、軟體或韌體、硬體與軟體之任何組合予以實施。
本發明之實施例可包括上文已描述之各種 步驟。該等步驟可體現於可用以致使一般用途或特殊目的處理器執行該等步驟之機器可執行指令中。替代地,可藉由含有用於執行此等步驟之固線式邏輯的特定硬體組件或藉由經規劃電腦組件與自訂硬體組件之任何組合來執行此等步驟。
如本文中所描述,指令可指代經組配以執行某些操作或具有儲存於體現於非暫時性電腦可讀媒體中之記憶體中之預定功能性或軟體指令的硬體(諸如特殊應用積體電路(ASIC))之特定組配。因此,可使用儲存及執行於一或多個電子裝置(例如,終端站、網路元件等等)上之程式碼及資料來實施諸圖所展示之技術。此類電子裝置使用電腦機器可讀媒體(諸如非暫時性電腦機器可讀儲存媒體(例如,磁碟、光碟、隨機存取記憶體、唯讀記憶體、快閃記憶體裝置、相變記憶體)及暫時性電腦機器可讀通訊媒體(例如,電、光、聲或其他形式之傳播信號,諸如載波、紅外線信號、數位信號等等))來儲存及傳達(在內部及/或在網路上運用其他電子裝置)程式碼及資料。
此外,此類電子裝置通常包括耦接至一或多個其他組件(諸如一或多個儲存裝置(非暫時性機器可讀儲存媒體)、使用者輸入/輸出裝置(例如,鍵盤、觸控式螢幕及/或顯示器)及網路連接)之一組一或多個處理器。通常透過一或多個匯流排及橋接器(亦被稱為匯流排控制器)來耦接該組處理器與其他組件。儲存裝置及攜載網路訊務之信號分別表示一或多個機器可讀儲存媒體及機器可讀通訊媒 體。因此,給定電子裝置之儲存裝置通常將用於執行之程式碼及/或資料儲存於彼電子裝置之該組一或多個處理器上。當然,可使用軟體、韌體及/或硬體之不同組合來實施本發明之實施例的一或多個部分。貫穿此詳細描述,出於解釋之目的,闡述眾多特定細節以便提供對本發明之透徹理解。然而,對於熟習此項技術者而言將顯而易見,可在無此等特定細節中之一些細節的情況下實踐本發明。在某些情況下,並未詳細地描述熟知的結構及功能以便避免混淆本發明之主題。因此,應依據以下申請專利範圍來判斷本發明之範疇及精神。
2401、2401a、2401b、2401c、2402、2402a、2402b、2403、2403a、2403b、2404、2404a、2404b:步驟

Claims (25)

  1. 一種用於智慧型資源提供之設備,其包含:圖形處理單元(GPU),其用以處理圖形命令且回應地在一圖形記憶體位址空間中表現複數個影像圖框;影子結構管理邏輯,其用以在該圖形記憶體位址空間中保留一或多個影子槽,在該一或多個影子槽中去儲存不同的GPU脈絡之影子事例;及該影子結構管理邏輯用以實施用於投影(shadowing)該等影子槽中之GPU脈絡之一部分的投影策略,該部分的投影策略係基於該等GPU脈絡之頁面的特性。
  2. 如請求項1之設備,其中用以實施該投影策略之一個特性包含該等頁面內之欄位的一敏感度位準。
  3. 如請求項2之設備,其中含有客體實體位址(GPA)之頁面要被識別為含有敏感欄位且要被儲存於該等影子槽中。
  4. 如請求項3之設備,其中對於不含有敏感欄位之頁面,GPU頁面表經規劃以具有針對一第一客體脈絡直接地映射至一客體頁面之GPU位址,且對於含有敏感欄位之頁面,該影子結構管理邏輯用以寫入保護那些頁面且在一影子槽中建立一影子複本。
  5. 如請求項1之設備,其中該影子結構管理邏輯用以針對一第一GPU脈絡將一第一組圖形轉譯表(GTT)項目動態地儲存於一第一影子槽中,且在該第一影子槽中以一第二組GTT項目動態地調換出該第一組GTT 項目,該第二組GTT項目與一第二GPU脈絡相關聯。
  6. 如請求項5之設備,其中回應於該GPU當前執行分別關於該第一GPU脈絡及該第二GPU脈絡之操作而將該第一GPU脈絡及該第二GPU脈絡互換進入該第一影子槽中。
  7. 如請求項1之設備,其中該影子結構管理邏輯用以在一備份儲存區中分配及建構影子頁面。
  8. 如請求項7之設備,其中在從一第一影子槽調換出一第一GPU脈絡後,該影子結構管理邏輯就用以將對該第一GPU脈絡之任何修改同步至該備份儲存區。
  9. 如請求項1之設備,其中該影子結構管理邏輯用以針對GPU脈絡之該等頁面的寫入保護設定於該等影子槽中。
  10. 一種用於智慧型資源提供之方法,其包含:處理圖形命令且回應地在一圖形記憶體位址空間中表現複數個影像圖框;在該圖形記憶體位址空間中保留一或多個影子槽,在該一或多個影子槽中去儲存不同的GPU脈絡之影子事例;及實施用於投影該等影子槽中之GPU脈絡的一部分地投影策略,該部分地投影策略係基於該等GPU脈絡之頁面的特性。
  11. 如請求項10之方法,其中用以實施該投影策略之一個特性包含該等頁面內之欄位的一敏感度位準。
  12. 如請求項11之方法,其中含有客體實體位址(GPA)之頁面要被識別為含有敏感欄位且儲存於該等影子槽中。
  13. 如請求項12之方法,其中對於不含有敏感欄位之頁面,GPU頁面表經規劃以具有針對一第一客體脈絡直接地映射至一客體頁面之GPU位址,且對於含有敏感欄位之頁面,其中將寫入保護那些頁面且將在一影子槽中建立一影子複本。
  14. 如請求項10之方法,其進一步包含:針對一第一GPU脈絡將一第一組圖形轉譯表(GTT)項目動態地儲存於一第一影子槽中;及在該第一影子槽中以一第二組GTT項目動態地調換出該第一組GTT項目,該第二組GTT項目與一第二GPU脈絡相關聯。
  15. 如請求項14之方法,其中回應於GPU當前執行分別關於該第一GPU脈絡及該GPU第二脈絡之操作而將該第一GPU脈絡及該第二GPU脈絡互換進入該第一影子槽中。
  16. 如請求項10之方法,其進一步包含:在一備份儲存區中分配及建構影子頁面。
  17. 如請求項16之方法,其中在從一第一影子槽調換出一第一GPU脈絡後,影子結構管理邏輯就用以將對該第一GPU脈絡之任何修改同步至該備份儲存區。
  18. 如請求項10之方法,其中影子結構管理邏 輯用以將針對GPU脈絡之該等頁面的寫入保護設定於該等影子槽中。
  19. 一種用於智慧型資源提供之系統,其包括:一記憶體,其用以儲存資料及程式碼;一中央處理單元(CPU),其包含用於快取該程式碼之一部分的一指令快取記憶體及用於快取該資料之一部分的一資料快取記憶體,該CPU進一步包含執行邏輯以執行該程式碼中之至少一些且回應地處理該資料中之至少一些,該程式碼之至少一部分包含圖形命令;一圖形處理子系統,其用以處理該等圖形命令且回應地表現複數個影像圖框,該圖形處理子系統包含:圖形處理單元(GPU),其用以處理圖形命令且回應地在一圖形記憶體位址空間中表現複數個影像圖框;影子結構管理邏輯,其用以在該圖形記憶體位址空間中保留一或多個影子槽,在該一或多個影子槽中去儲存不同的GPU脈絡之影子事例;及該影子結構管理邏輯用以實施用於投影該等影子槽中之GPU脈絡的一部分的投影策略,該部分的投影策略係基於該等GPU脈絡之頁面的特性。
  20. 如請求項19之系統,其中用以實施該投影策略之一個特性包含該等頁面內之欄位的一敏感度位準。
  21. 如請求項20之系統,其中含有客體實體位址(GPA)之頁面要被識別為含有敏感欄位且要被儲存於該等影子槽中。
  22. 如請求項21之系統,其中對於不含有敏感欄位之頁面,GPU頁面表經規劃以具有針對一第一客體脈絡直接地映射至一客體頁面之GPU位址,且對於含有敏感欄位之頁面,該影子結構管理邏輯用以寫入保護那些頁面且在一影子槽中建立一影子複本。
  23. 如請求項19之系統,其中該影子結構管理邏輯用以針對一第一GPU脈絡將一第一組圖形轉譯表(GTT)項目動態地儲存於一第一影子槽中,且在該第一影子槽中以一第二組GTT項目動態地調換出該第一組GTT項目,該第二組GTT項目與一第二GPU脈絡相關聯。
  24. 如請求項23之系統,其中回應於該GPU當前執行分別關於該第一GPU脈絡及該第二GPU脈絡之操作而將該第一GPU脈絡及該第二GPU脈絡互換進入該第一影子槽中。
  25. 如請求項19之系統,其中該影子結構管理邏輯用以在一備份儲存區中分配及建構影子頁面。
TW105138088A 2015-12-22 2016-11-21 用於智慧型資源提供之設備、方法及系統 TWI718210B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/CN2015/098287 WO2017107058A1 (en) 2015-12-22 2015-12-22 Apparatus and method for intelligent resource provisioning for shadow structures
WOPCT/CN2015/098287 2015-12-22

Publications (2)

Publication Number Publication Date
TW201724011A TW201724011A (zh) 2017-07-01
TWI718210B true TWI718210B (zh) 2021-02-11

Family

ID=59088635

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105138088A TWI718210B (zh) 2015-12-22 2016-11-21 用於智慧型資源提供之設備、方法及系統

Country Status (3)

Country Link
US (1) US10482567B2 (zh)
TW (1) TWI718210B (zh)
WO (1) WO2017107058A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6982717B2 (ja) 2016-03-25 2021-12-17 ティーティーテック インダストリアル オートメーション アーゲー フォグコンピューティング促進型フレキシブル工場
US10798063B2 (en) 2016-10-21 2020-10-06 Nebbiolo Technologies, Inc. Enterprise grade security for integrating multiple domains with a public cloud
CN108733311B (zh) * 2017-04-17 2021-09-10 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和设备
EP3688583A1 (en) 2017-09-26 2020-08-05 INTEL Corporation Methods and apparatus to process commands from virtual machines
US10972579B2 (en) * 2017-10-13 2021-04-06 Nebbiolo Technologies, Inc. Adaptive scheduling for edge devices and networks
US11095748B1 (en) 2017-12-13 2021-08-17 Amazon Technologies, Inc. Network-based content rendering
US10878187B1 (en) * 2017-12-13 2020-12-29 Amazon Technologies, Inc. Network-based content rendering
US10521149B2 (en) 2018-05-30 2019-12-31 Red Hat, Inc. Memory poisoning support for free page hinting
US10795718B2 (en) * 2019-02-08 2020-10-06 Microsoft Technology Licensing, Llc Updating hardware with reduced virtual machine downtime
US10958597B2 (en) * 2019-02-25 2021-03-23 Cisco Technology, Inc. General purpose ring buffer handling in a network controller
WO2020191697A1 (en) 2019-03-28 2020-10-01 Intel Corporation Direct memory access tracking for pass-through devices in virtualized environments
US10872458B1 (en) 2019-09-06 2020-12-22 Apple Inc. Graphics surface addressing
CN111913794A (zh) * 2020-08-04 2020-11-10 北京百度网讯科技有限公司 用于共用gpu的方法、装置、电子设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010010601A1 (en) * 2008-07-24 2010-01-28 Thomson Licensing Image processing device, method, and system
US7982734B2 (en) * 2007-08-01 2011-07-19 Adobe Systems Incorporated Spatially-varying convolutions for rendering soft shadow effects
US8395619B1 (en) * 2008-10-02 2013-03-12 Nvidia Corporation System and method for transferring pre-computed Z-values between GPUs
TW201339971A (zh) * 2011-12-30 2013-10-01 Intel Corp 虛擬機器控制結構陰影化技術

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7248261B1 (en) 2003-12-15 2007-07-24 Nvidia Corporation Method and apparatus to accelerate rendering of shadow effects for computer-generated images

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7982734B2 (en) * 2007-08-01 2011-07-19 Adobe Systems Incorporated Spatially-varying convolutions for rendering soft shadow effects
WO2010010601A1 (en) * 2008-07-24 2010-01-28 Thomson Licensing Image processing device, method, and system
US8395619B1 (en) * 2008-10-02 2013-03-12 Nvidia Corporation System and method for transferring pre-computed Z-values between GPUs
TW201339971A (zh) * 2011-12-30 2013-10-01 Intel Corp 虛擬機器控制結構陰影化技術

Also Published As

Publication number Publication date
US20180374188A1 (en) 2018-12-27
WO2017107058A1 (en) 2017-06-29
US10482567B2 (en) 2019-11-19
TW201724011A (zh) 2017-07-01

Similar Documents

Publication Publication Date Title
CN108776949B (zh) 用于图形处理环境中的存储器管理的设备和方法
TWI718210B (zh) 用於智慧型資源提供之設備、方法及系統
US11798125B2 (en) Apparatus and method for dynamic provisioning, quality of service, and prioritization in a graphics processor
CN108694688B (zh) 用于在图形处理架构中管理数据偏置的设备和方法
TWI742019B (zh) 用於針對圖像虛擬化之型樣驅動頁表追蹤之設備與方法
US10304421B2 (en) Apparatus and method for remote display and content protection in a virtualized graphics processing environment
US11080213B2 (en) Apparatus and method for dynamic provisioning, quality of service, and scheduling in a graphics processor
CN109690505B (zh) 用于针对虚拟化输入/输出实施方式的混合层地址映射的设备和方法
CN109643277B (zh) 用于中介传递和共享存储器页合并的装置和方法
CN108694687B (zh) 用于保护虚拟化和图形环境中的内容的设备及方法
TWI719985B (zh) 用以增進圖形處理單元(gpu)虛擬化的可擴充性之設備、方法及系統
US11281500B2 (en) Apparatus and method for cloud-based graphics validation
US11055809B2 (en) Apparatus and method for provisioning virtualized multi-tile graphics processing hardware