TW201727576A - 用於圖像虛擬化之型樣驅動頁表的影子製作之設備與方法 - Google Patents

用於圖像虛擬化之型樣驅動頁表的影子製作之設備與方法 Download PDF

Info

Publication number
TW201727576A
TW201727576A TW105138650A TW105138650A TW201727576A TW 201727576 A TW201727576 A TW 201727576A TW 105138650 A TW105138650 A TW 105138650A TW 105138650 A TW105138650 A TW 105138650A TW 201727576 A TW201727576 A TW 201727576A
Authority
TW
Taiwan
Prior art keywords
command
gpu
page table
memory
graphics
Prior art date
Application number
TW105138650A
Other languages
English (en)
Other versions
TWI742019B (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 TW201727576A publication Critical patent/TW201727576A/zh
Application granted granted Critical
Publication of TWI742019B publication Critical patent/TWI742019B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)

Abstract

就型樣驅動頁表更新說明一種設備及方法。舉例而言,一設備之一項實施例包含有用以處理圖形命令並且回應地呈現複數個影像圖框之一圖形處理單元(GPU);將該GPU虛擬化以在複數個虛擬機器(VM)間共享該GPU之一超管理器;在一第一VM內受管理之一第一客體頁表,該第一客體頁表包含有複數個頁表登入項;受該超管理器管理並包含有與該第一客體頁表之該等頁表登入項相對應之一第一影子頁表;以及用以分析自該第一VM提交至該GPU之一目前的命令之工作集的一命令剖析器,該命令剖析器用以回應於以該命令之工作集之該分析為基礎而判定經預測要被使用之一組頁表登入項,來回應地更新該第一影子頁表。

Description

用於圖像虛擬化之型樣驅動頁表的影子製作之設備與方法
本發明大致係有關於電腦處理器領域。更特別的是,本發明係有關於用於圖像虛擬化之型樣驅動頁表的影子製作之設備與方法。
圖形處理器單元(GPU)虛擬化進來已快速進步。虛擬化圖形處理環境舉例而言,乃用在媒體雲端、遠端工作站/桌上型電腦、車內娛樂資訊(IVI)、豐富的用戶端虛擬化,以上略舉數例。某些架構透過截取並模擬來進行全GPU虛擬化以模擬一全功能虛擬GPU (vGPU),同時仍藉由透通關鍵效能圖形記憶體資源來提供近原生效能。
依據本發明之一實施例,係特地提出一種設備,其包含有:用以處理圖形命令並且回應地呈現複數個影像圖框之一圖形處理單元(GPU);將該GPU虛擬化以在複數個虛擬機器(VM)間共享該GPU之一超管理器;在一第一VM內受管理之一第一客體頁表,該第一客體頁表包含有複數個頁表登入項;受該超管理器管理並包含有與該第一客體頁表之該等頁表登入項相對應之一第一影子頁表;以及用以分析自該第一VM提交至該GPU之一目前的命令之工作集的一命令剖析器,該命令剖析器用以回應於以該命令之工作集之該分析為基礎而判定經預測要被使用之一組頁表登入項,來回應地更新該第一影子頁表。
在以下說明中,為了解釋,提出許多特定細節是為了透徹理解下文所述本發明之實施例。然而,所屬技術領域中具有通常知識者將會明白,本發明之實施例無需這些特定細節中的一些也可實踐。在其他例子中,為了避免混淆本發明之實施例的基本原理,眾所周知的結構與裝置是以方塊圖形式來展示。 例示性圖形處理器架構及資料類型系統概述
圖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乃耦合至處理器匯流排110以在處理器102與系統100中其他組件間傳送諸如一位址、資料或控制信號等通訊信號。在一項實施例中,系統100使用一例示性「集線器」系統架構,包括有一記憶體控制器集線器116及一輸入輸出(I/O)控制器集線器130。一記憶體控制器集線器116促進一記憶體裝置與系統100之其他組件間的通訊,而一I/O控制器集線器(ICH) 130經由一區域I/O匯流排提供連至I/O裝置之連接。在一項實施例中,記憶體控制器集線器116之邏輯乃整合於該處理器內。
記憶體裝置120可以是一動態隨機存取記憶體(DRAM)裝置、一靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、相變記憶體裝置、或對當作處理記憶體使用具有適合效能之一些其他記憶體裝置。在一項實施例中,記憶體裝置120可操作為用於系統100之系統記憶體,用以儲存資料122及指令121,以供一或多個處理器102執行一應用程式或程序時使用。記憶體控制器集線器116亦與一任選之外部圖形處理器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乃一處理器200之一實施例的一方塊圖,其具有一或多個處理器核心202A至202N、一整合式記憶體控制器214、以及一整合式圖形處理器208。圖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互連件多種變例其中至少一者,包括有一封裝體上I/O互連件,其促進各種處理器組件與諸如一eDRAM模組之一高效能嵌入式記憶體模組218間的通訊。在一些實施例中,處理器核心202至202N之各者及圖形處理器208將嵌入式記憶體模組218當作一共享最後一階快取使用。
在一些實施例中,處理器核心202A至202N為執行相同指令集架構之同質核心。在另一實施例中,處理器核心202A至202N依據指令集架構(ISA)具有異質性,其中處理器核心202A至202N有一或多者執行一第一指令集,而其他核心其中至少一者執行該第一指令集之一子集或一不同指令集。在一項實施例中,處理器核心202A至202N依據微架構具有異質性,其中具有一較高功率消耗之一或多個核心與具有一較低功率消耗之一或多個功率核心耦合。另外,處理器200可在一或多個晶片上實施,或可實施成具有所示組件外加其他組件之一SoC積體電路。
圖3乃一圖形處理器300的一方塊圖,其可以是一分立圖形處理單元,或可以是整合有複數個處理核心之一圖形處理器。在一些實施例中,該圖形處理器經由連至其上暫存器之一記憶體對映I/O介面、並以存於處理器記憶體內的命令進行通訊。在一些實施例中,圖形處理器300包括有用以存取記憶體之一記憶體介面314。記憶體介面314可以是連至區域記憶體、一或多個內部快取、一或多個共享外部快取、及/或連至系統記憶體之一介面。
在一些實施例中,圖形處理器300亦包括有用以將顯示輸出資料驅動至一顯示裝置320之一顯示控制器302。顯示控制器302包括有該顯示器之一或多個覆蓋平面用的硬體、以及多層視訊或使用者介面元件的組成物。在一些實施例中,圖形處理器300包括有一視訊編解碼引擎306,用來對、自或於一或多個媒體編碼格式間之媒體進行編碼、解碼或轉碼,包括有,但不限於諸如MPEG-2之動畫專家群(MPEG)格式、諸如H.264/MPEG-4 AVC之先進視訊編碼(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與媒體緒之一圖形執行單元陣列。在一些實施例中,3D/媒體子系統315包括有用於緒指令與資料之一或多個內部快取。在一些實施例中,該子系統亦包括有共享記憶體,包括有暫存器及可定址記憶體,用來共享諸執行緒間的資料及用來儲存輸出資料。3D/ 媒體處理
圖4根據一些實施例,乃一圖形處理器之一圖形處理引擎410的一方塊圖。在一項實施例中,GPE 410為圖3所示GPE 310之一版本。圖4中與本文中任何其他圖式之元件具有相同參考數字符號(或名稱)的元件可採用與本文中其他地方所述類似的任何方式來操作或作用,但不限於如此。
在一些實施例中,GPE 410與一命令串流器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包括有用於對記憶體進行快取存取之快取記憶體空間。快取記憶體可以是單一資料快取或可分成多個快取以用於經由資料埠存取記憶體(例如一呈現緩衝快取、一恆定緩衝快取等)之多個子系統。在一些實施例中,執行單元陣列414中一執行單元上之執行緒經由耦合GPE 410之各該子系統之一資料配送互連件,藉由交換訊息與資料埠通訊。執行單元
圖5乃一圖形處理器500之另一實施例的一方塊圖。圖5中與本文中任何其他圖式之元件具有相同參考數字符號(或名稱)的元件可採用與本文中其他地方所述類似的任何方式來操作或作用,但不限於如此。
在一些實施例中,圖形處理器500包括有一環形互連件502、一管線前端504、一媒體引擎537、以及圖形核心580A至580N。在一些實施例中,環形互連件502將該圖形處理器耦合至其他處理單元,包括有其他圖形處理器或一或多個通用處理器核心。在一些實施例中,該圖形處理器乃整合於一多核心處理系統內之許多處理器其中一者。
在一些實施例中,圖形處理器500經由環形互連件502接收數個批次之命令。傳入之命令乃藉由管線前端504中之一命令串流器503來解譯。在一些實施例中,圖形處理器500包括有用以經由圖形核心580A至580N進行3D幾何處理之規模可調執行邏輯。命令串流器503就3D幾何處理命令,供應命令至幾何管線536。命令串流器503就至少一些媒體處理命令,供應此等命令至一視訊前端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繪示緒執行邏輯600,其包括有一GPE之一些實施例中所運用之一處理元件陣列。圖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)大小的資料元)。然而,不同的向量寬度及暫存器尺寸是有可能的。
緒執行邏輯600中包括有一或多個內部指令快取(例如606)以快取用於執行單元之緒指令。在一些實施例中,包括有用以在緒執行期間快取緒資料之一或多個資料快取(例如612)。在一些實施例中,包括有用以提供用於3D操作之紋理取樣及用於媒體操作之媒體取樣的取樣器610。在一些實施例中,取樣器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來解譯,其供應指令至圖形管線820或媒體管線830之個別組件。
在一些實施例中,命令串流器803引導一頂點擷取器805之操作,其自記憶體讀取頂點資料,並且執行命令串流器803所提供之頂點處理命令。在一些實施例中,頂點擷取器805提供頂點資料至一頂點著色器807,其對各頂點進行坐標空間轉換以及照明操作。在一些實施例中,頂點擷取器805及頂點著色器807經由一緒分派器831,藉由分派執行緒至執行單元852A、852B,執行頂點處理指令。
在一些實施例中,執行單元852A、852B為一向量處理器陣列,其具有用於進行圖形與媒體操作之一指令集。在一些實施例中,執行單元852A、852B具有一附接之L1快取851,其乃特定於各陣列或共享於此等陣列間。此快取可組配為一資料快取、一指令快取、或經分區而在不同分區含有資料與指令之單一快取。
在一些實施例中,圖形管線820包括有鑲嵌組件,用來進行3D物件之硬體加速鑲嵌。在一些實施例中,一可規劃外殼著色器811組配鑲嵌操作。一可規劃域著色器817提供鑲嵌輸出之後端評估。一鑲嵌器813以外殼著色器811之方向操作,並且含有特殊用途邏輯,以基於提供作為圖形管線820之輸入的一粗略幾何模型,產生一組詳細的幾何物件。在一些實施例中,若未使用鑲嵌,則可旁通鑲嵌組件811、813、817。
在一些實施例中,完整的幾何物件可經由分派至執行單元852A、852B之一或多條緒,藉由一幾何著色器819來處理,或可直接進入剪輯器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呼叫轉譯成可藉由圖形處理器來處理之命令。在一些實施例中,就出自科納斯組織的開放圖形程式館(OpenGL)與開放計算語言(OpenCL)、出自微軟公司的Direct3D程式庫提供支援,或可對OpenGL與D3D兩者提供支援。亦可就開放原始碼電腦視覺庫(OpenCV)提供支援。若可自一未來API之管線映射至圖形處理器之管線,則也會支援具有一相容3D管線之未來API。圖形管線程式規劃
圖9A乃根據一些實施例繪示一圖形處理器命令格式900的一方塊圖。圖9B乃根據一實施例繪示一圖形處理器命令序列910的一方塊圖。圖9A中的實線方塊繪示一般在一圖形命令中所包括之組件,而虛線則包括有屬於任選或只在此等圖形命令之一子集中才包括之組件。圖9A之例示性圖形處理器命令格式900包括有用以識別命令之一目標用戶端902、一命令操作碼(操作碼) 904、以及用於命令之相關資料906的資料欄。一些命令中亦包括有一子操作碼905及一命令尺寸908。
在一些實施例中,用戶端902指定處理命令資料之圖形裝置的用戶端單元。在一些實施例中,一圖形處理器命令剖析器審查各命令之用戶欄以調制命令之進一步處理,並且將命令資料路由安排至適當的用戶端單元。在一些實施例中,圖形處理器用戶端單元包括有一記憶體介面單元、一呈現單元、一2D單元、一3D單元、以及一媒體單元。各用戶端單元具有處理命令之一對應處理管線。一旦用戶端單元收到命令,用戶端單元便讀取操作碼904,而且若存在,也讀取子操作碼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命令或事件來觸發。在一些實施例中,一暫存器寫入觸發命令執行。在一些實施例中,執行乃經由命令序列中之「前往」或「突跳」命令來觸發。在一項實施例中,使用一管線同步化命令觸發命令執行以透過圖形管線將命令序列排清。3D管線將會就3D基元進行幾何處理。操作一旦完成,產生的幾何物件便進行柵格化,並且像素引擎將產生的像素上色。亦可就那些操作包括有用以控制像素著色及像素後端操作之附加命令。
在一些實施例中,圖形處理器命令序列910在進行媒體操作時,遵循媒體管線924。一般而言,對媒體管線924程式規劃之特定使用及方式取決於待進行之媒體或運算操作。可在媒體解碼期間,將特定媒體解碼操作卸載至媒體管線。在一些實施例中,亦可旁通媒體管線,並且可使用一或多個通用處理核心所提供的資源整體或部分進行媒體解碼。在一項實施例中,媒體管線亦包括有用於通用圖形處理器單元(GPGPU)操作之元素,其中圖形處理器乃使用與圖形基元呈現不明確有關之運算著色器程式,用於進行SIMD向量操作。
在一些實施例中,以一與3D管線922類似之方式組配媒體管線924。一組媒體管線狀態命令940是在媒體物件命令942之前,先予以分派或存於一命令佇列中。在一些實施例中,媒體管線狀態命令940包括有用以組配將會用於處理媒體物件之媒體管線元素的資料。此包括有用以組配媒體管線裡視訊解碼及視訊編碼邏輯的資料,諸如編碼或解碼格式。在一些實施例中,媒體管線狀態命令940亦支援使用一或多個指標「間接處理」含有一狀態設定值批次之狀態元素。
在一些實施例中,媒體物件命令942供應指標至媒體物件以供媒體管線處理之用。此等媒體物件包括含有待處理視訊資料之記憶體緩衝器。在一些實施例中,所有媒體管線狀態在發出一媒體物件命令942之前都必須先有效。一旦將管線狀態組配並將媒體物件命令942排入佇列,便經由一執行命令944或一等效執行事件(例如暫存器寫入)觸發媒體管線924。接著可藉由3D管線922或媒體管線924所提供之操作來後處理來自媒體管線924之輸出。在一些實施例中,以一與媒體操作類似之方式操作並執行GPGPU。圖形軟體架構
圖10根據一些實施例,繪示用於一資料處理系統1000之例示性圖形軟體架構。在一些實施例中,軟體架構包括有一3D圖形應用程式1010、一作業系統1020、以及至少一個處理器1030。在一些實施例中,處理器1030包括有一圖形處理器1032及一或多個通用處理器1034。圖形應用程式1010及作業系統1020各於資料處理系統之系統記憶體1050中執行。
在一些實施例中,3D圖形應用程式1010含有包括著色器指令1012之一或多個著色器程式。著色器語言指令可採用一高階著色器語言呈現,諸如高階著色器語言(HLSL)或OpenGL著色器語言(GLSL)。該應用程式亦包括有採用適用於由通用處理器核心1034執行之一機器語言呈現的可執行指令1014。該應用程式亦包括有由頂點資料所界定的圖形物件1016。
在一些實施例中,作業系統1020乃出自微軟公司之一MicrosoftR WindowsR作業系統、一專屬似UNIX作業系統、或使用Linux核心之一變例的一開放原始碼似UNIX作業系統。Direct3D API若使用中,作業系統1020使用一前端著色器編譯器1024將HLSL中的任何著色器指令1012編譯成一低階著色器語言。此編譯可以是一及時(JIT)編譯,或該應用程式可進行著色器預編譯。在一些實施例中,高階著色器乃於編譯3D圖形應用程式1010期間編譯成低階著色器。
在一些實施例中,使用者模式圖形驅動程式1026含有用以將著色器指令1012轉換成一特定硬體表示型態之一後端著色器編譯器1027。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,其可採用一硬體描述語言(HDL)呈現,或可以是實體設計資料之一些其他表示型態。可進一步模擬或測試該HDL以驗證該IP核心設計。可使用非依電性記憶體1140 (例如硬碟、快閃記憶體、或任何非依電性儲存媒體)儲存該IP核心設計以供遞送至一第三方製作設施1165。替代地,可透過一有線連接1150或無線連接1160 (例如經由網際網路)傳送該IP核心設計。製作設施1165可接著製作至少部分基於該IP核心設計之一積體電路。製作出之積體電路可被組配來進行根據本文中所述至少一項實施例之操作。
圖12根據一實施例,乃繪示一例示性系統單晶片積體電路1200的一方塊圖,其可使用一或多個IP核心來製作。該例示性積體電路包括有一或多個應用處理器1205 (例如CPU)、至少一個圖形處理器1210,並且可另外包括有一影像處理器1215及/或一視訊處理器1220,其任何一者可以是出自相同或多個不同設計設施之一模組化IP核心。該積體電路包括有週邊或匯流排邏輯,包括有一USB控制器1225、UART控制器1230、一SPI/SDIO控制器1235、以及一I2 S/I2 C控制器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則可使用晶粒上記憶體。系統記憶體1310可藉由GPU頁表1306來映射到多個虛擬位址空間。
稱為全域圖形記憶體可存取自GPU 1300與CPU 1320兩者之一2GB全域虛擬位址空間乃透過全域頁表來映射。區域圖形記憶體空間之支援形式為多個2GB區域虛擬位址空間,但透過區域頁表,並非僅受限於存取自呈現引擎1302。全域圖形記憶體大部分是圖框緩衝器1314,但也當作命令緩衝器1312使用。進行硬體加速時,對區域圖形記憶體進行大型資料存取。具有晶粒上記憶體之GPU運用類似的頁表機制。
在一項實施例中,如圖13所示,在一生產者-消費者模型中,CPU 1320透過特定GPU命令來規劃GPU 1300。圖形驅動程式根據像是OpenGL與DirectX之高階程式規劃API,將GPU命令規劃到命令緩衝器1312內,包括有一主要緩衝器及一批次緩衝器。GPU 1300接著擷取並且執行該等命令。該主要緩衝器為一環形緩衝器,可將其他批次緩衝器鍊接在一起。「主要緩衝器」及「環形緩衝器」等詞在下文可交換使用。該批次緩衝器乃用於依據程式規劃模型傳送大部分命令(多達約98%)。一暫存器(頭端、尾端)乃用於控制該環形緩衝器。在一項實施例中,CPU 1320藉由更新該尾端將該等命令提交至GPU 1300,同時GPU 1300自頭端擷取命令,然後在該等命令執行完成後,藉由更新該頭端來通知CPU 1320。
如所述,本發明之一項實施例乃是在具有居間透通之一全GPU虛擬化平台中實施。如此,每個VM乃呈現有用以運行一VM內部一原生圖形驅動程式之一全功能GPU。然而,有三大挑戰:(1)虛擬化一完全先進現代化GPU之複雜度、(2)多個VM共享該GPU所導致的效能、以及(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,其與CPU排程器1416在超管理器1410中並行運行,用來在VM 1431至1432間共享實體GPU 1400。一項實施例使用實體GPU 1400直接執行提交自一VM之所有命令,從而避免模擬呈現引擎之複雜度,其乃GPU內最複雜的部分。同時,圖框緩衝器與命令緩衝器之資源透通使CPU存取上超管理器之1410中介降到最低,而GPU排程器1426則每個VM就直接GPU執行保證一配量。所以,所示實施例在多個VM間共享GPU時達到良好效能。
在一項實施例中,虛擬化虛設常式1411選擇性地截取或透通某些GPU資源之客體存取。虛擬化虛設常式1411操縱EPT 1414登入項以向使用者VM 1431至1432呈現或隱藏一特定位址範圍,同時將PVMMU 1412中之一PTE保留位元用於特權VM 1420,以選擇性截取或透通對一特定位址範圍之客體存取。在兩種狀況中,週邊輸入輸出(PIO)存取遭受截取。所有遭受截取之存取都轉發至虛擬化中繼程序1422以供模擬之用,而虛擬化中繼程序1411則使用超呼叫來存取實體GPU 1400。
如所述,在一項實施例中,虛擬化中繼程序1422就特權資源存取而模擬虛擬GPU (vGPU) 1424,並且進行諸vGPU 1424間旳內容切換。同時,特權VM 1420圖形驅動程式1428乃用於初始化實體裝置並管理功率。一項實施例藉由將虛擬化中繼程序1422實施成特權VM 1420中之一核心模組而採取一靈活的釋放模型,以便於虛擬化中繼程序1422與超管理器1410間的連結。
一分割CPU/GPU排程機制乃經由CPU排程器1416與GPU排程器1426來實施。之所以如此做,是因為一GPU內容切換的成本可能比一CPU內容切換的成本高超過1000倍(例如約700us之於300ns)。另外,一電腦系統中CPU核心的數量可能與GPU核心的數量不同。所以,在一項實施例中,一GPU排程器1426與現有CPU排程器1416乃分開來實施。該分割排程機制對出自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之區域圖形記憶體空間,可透過呈現內容切換來實施一每VM區域圖形記憶體,因為只有GPU 1400才可存取區域圖形記憶體。
如所述,一項實施例將VM 1431至1432間的全域圖形記憶體分區。如上述,一分割CPU/GPU排程機制要求可藉由CPU同時存取不同VM之全域圖形記憶體,因此各VM必須隨時呈現有其自有資源,產生用於全域圖形記憶體之資源分區作法,如圖15所示。特別的是,圖15展示VM1與VM2用之圖形記憶體之一客體視圖1501、及一對應的主機視圖1502。
資源分區顯露一有趣的問題:客體及主機此時對於全域圖形記憶體具有不一致的視圖。客體圖形驅動程式1428未感知到分區,假設獨家所有權:全域圖形記憶體從位址零開始具有相連性。一項實施例就任何圖形位址,在藉由CPU及GPU存取之前,先在主機視圖1502與客體視圖1501間進行轉譯。因此,引起更多複雜度及附加額外負荷,諸如對命令緩衝器進行附加存取(通常映射為無法快取,從而導致存取緩慢)。
一項實施例使用一稱為「位址空間鼓脹」之技巧消除位址變換額外負荷。圖16中繪示一實例,其展示用於VM1與VM2之一客體視圖1601、及用於記憶體分區之一主機視圖1602。一項實施例透過virt_info MMIO視窗,將資訊分區至VM圖形驅動程式1428。圖形驅動程式1428之一項實施例將其他VM之區域標示為「已鼓脹」,並且經由其圖形記憶體分配保留該等VM。憑藉此設計,全域圖形記憶體空間之客體視圖1601與如圖示之主機視圖1602完全相同,透過客體實體位址,驅動程式規劃位址可藉由硬體來直接使用。位址空間鼓脹與傳統的記憶體鼓脹技巧不同。記憶體鼓脹乃用於記憶體使用狀況控制,與已鼓脹頁之數量有關,而位址空間鼓脹則是鼓脹特殊記憶體位址範圍。
位址空間鼓脹之另一效益在於可就直接GPU執行,直接使用客體命令緩衝器,沒有任何位址變換額外負荷。這藉由消除對於一影子命令緩衝器之需求,顯著簡化實作態樣,另外還提供效能保證。然而,此類方案可能易於違反安全性。在一項實施例中,此問題乃藉由稽核並保護命令緩衝器免遭惡意攻擊,利用智慧型影子製作來因應,如下文所論述。
在一項實施例中,類似於CPU上之虛擬位址空間,許可各VM靠自己使用全區域圖形記憶體空間。此等區域圖形記憶體空間只有GPU 1400中的呈現引擎才可見。所以,一VM 1431至1432所規劃之任何有效區域圖形記憶體位址可由GPU 1400直接使用。虛擬化中繼程序1420在切換呈現所有權時,在VM 1431至1432間切換區域圖形記憶體空間。
如圖17所示,在一項實施例中,GPU頁表乃以共享之影子全域頁表1703及每VM影子區域頁表1701至1702來虛擬化。特別的是,為了達成資源分區及位址空間鼓脹,一項實施例就所有VM 1431至1432,實施共享之影子全域頁表1703。各VM具有其自有的客體全域頁表1701 (VM1)及1702 (VM2),自圖形記憶體頁號轉譯成客體記憶體頁號(GPN)。影子全域頁表1703接著自圖形記憶體頁號轉譯成主機記憶體頁號(HPN)。共享之影子全域頁表1703就所有VM維持此等轉譯,用來並行支援起於CPU及GPU之存取。因此,此實施例如圖17所示,藉由截取客體PTE更新,實施單一、共享之影子全域頁表1703。在一項實施例中,全域頁表1703在MMIO空間中具有512K個PTE登入項,各指向一4KB系統記憶體1710頁,建立一2GB全域圖形記憶體空間。一項實施例在更新該等影子PTE登入項之前,先根據位址空間鼓脹資訊來稽核客體PTE值。
在一項實施例中,為了支撐區域圖形記憶體存取之透通,實施每VM影子區域頁表。該區域圖形記憶體僅可存取自呈現引擎。如圖18所示,該等區域頁表為包含有頁目錄表1801及頁表1802之二階分頁結構。第一階頁目錄登入項(PDE) 1801位於全域頁表中,在系統記憶體中,指向第二階頁表登入項(PTE) 1802。所以,透過實施包含有一影子頁目錄登錄表1803及影子頁表1804,對該PDE之客體存取遭受截取並模擬。一項實施例如傳統的影子頁表作法所做,就各VM,對客體PTE頁之一清單進行寫入保護。在一項實施例中,虛擬化中繼程序1422在出現一寫入保護尋頁錯失時,以客體頁表1801至1802同步化影子頁表1803至1804,並且在呈現內容進行切換時,切換影子區域頁表1803至1804。
透通有助於效能,但必須就安全隔離符合一項實施例之以下準則。第一,必須禁止一VM映射未經授權之圖形記憶體頁。第二,一VM所規劃之所有GPU暫存器及命令必須確認僅含有經授權之圖形記憶體位址。最後,這項實施例需要定址拒絕服務型攻擊,舉例而言,一VM可能有計畫地觸發大量GPU停擺。
在一項實施例中,在虛擬化中繼程序1422的控制下,對特權I/O暫存器及PTE之CPU存取遭受截取並模擬。因此,一惡意VM無法直接變更實體GPU內容,也無法映射未經授權之圖形記憶體。在一項實施例中,對圖框緩衝器及命令緩衝器之CPU存取亦受EPT保護。
另一方面,一項實施例再利用客體命令緩衝器,使GPU就效能直接執行,如上述,但可能違反隔離。舉例而言,一惡意命令可含有一未經授權之圖形記憶體位址。如下文詳述,此問題可利用智慧型影子製作來因應。
一項實施例進行GPU存取之隔離。特別的是,這項實施例在GPU使用位址之前,先稽核暫存器及命令中之圖形記憶體位址。這可在截取並模擬暫存器存取時、以及在命令提交時來實施。
一項實施例使用現代GPU中廣受支援之裝置重設特徵,減輕拒絕服務型攻擊。該GPU太過複雜,使得一應用程式可能令該GPU因為許多理由而停擺。所以,現代GPU支援用以動態恢復GPU之裝置重設,不需要將整體系統重新啟動。一項實施例使用這種功能恢復因出自VM 1431至1432之有問題命令所造成之各種GPU停擺。同時,偵檢到一實體GPU停擺時,這項實施例藉由從運行之佇列移除所有VM來模擬一GPU停擺事件,從而容許各VM偵檢及恢復。可就每個VM 1431至1432維持一臨界值,並且若GPU停擺之數量超出該臨界值,則銷毀一VM。
使效能與安全性取得平衡就全GPU虛擬化而言具有挑戰性。為了保證無出自GPU之未經授權位址參考,一項實施例在命令提交時稽核客體命令緩衝器。然而,提交命令與實際執行該等命令這兩個時間點間存在有一時窗,使得一惡意VM可能在該時窗內藉由修改該等命令來破壞隔離。在一項實施例中,可應用諸如影子頁表之一影子製作機制。然而,其原始設計旨在用於客體內容常遭受修改並且可能導致顯著效能額外負荷及附加複雜度之一種狀況。
命令緩衝器與頁表實際上有不同的程式規劃模型。第一,經結構化作為一環形緩衝器之主要緩衝器乃以有限頁數(例如32頁或16頁)靜態分配,而且在一項實施例中,不容許修改提交之環命令(自頭端至尾端)。效率可能足以僅將提交之命令複製到影子緩衝器。第二,批次緩衝頁乃予以隨選分配,並且鍊接到環形緩衝器內。批次緩衝頁一旦提交,便不太可能會予以存取,直到該頁引退為止。可就此類單次使用狀況避免影子緩衝器。
一項實作態樣利用不同緩衝器之不同保護方案,藉由其特定程式規劃模型之優點,實施一智慧型影子製作機制。舉例而言,可將寫入保護應用於批次緩衝器,其不太可能遭到修改(所以,寫入模擬成本非常有限),並且可將懶人影子製作(Lazy-Shadowing)應用於環形緩衝器,其不僅尺寸小,還可用最低成本予以從客體緩衝器複製到影子緩衝器。
一項實施例使用一懶人影子製作方案關閉環形緩衝器上之攻擊視窗。這項實施例可建立一單獨環形緩衝器,稱為影子環形緩衝器,用來傳送提交至GPU之實際命令。客體提交之命令在稽核該等命令之後,乃隨選地自客體環形緩衝器複製到影子環形緩衝器。
請注意,只有提交至GPU之命令才在這裡進行影子製作。客體存取維持透通至客體環形緩衝器,不用超管理器1410中介。當客體提交新命令時,影子緩衝器採懶人方式與客體緩衝器同步化。影子緩衝器對一VM乃不可見,因此,一惡意VM沒有進行攻擊的機會。
在一項實施例中,批次緩衝頁受到寫入保護,並且命令在提交至GPU執行之前先予以稽核以關閉攻擊視窗。寫入保護乃每頁隨選地予以應用,並且在GPU完成此頁中之命令執行後遭到移除,其乃藉由追蹤環體頭端的進展狀態來偵檢。依據規格,修改所提交命令乃圖形程式規劃模型之一違規,所以,對所提交命令進行的任何客體修改乃視為導致VM終止之一攻擊。同時命令緩衝器使用狀況可能頁對準不一,而且客體可將自由子頁空間用於新命令。
一項實施例追蹤各批次緩衝頁之已用及未用空間,並且就正確性模擬客體寫入至受保護頁之未用空間。環形緩衝器的懶人影子製作運作良好。其每秒引起的命令複製平均數量為9K個,就現代多吉赫CPU而言成本很小。同時,批次緩衝器之寫入保護運作良好,其在一項實作態樣中,平均而言,每秒保護約1700頁,其中截取並模擬的僅約560頁。
在一項實施例中,引進一附加最佳化以降低截取頻率,對原生圖形驅動程式進行的修改次數更少。根據硬體規格,圖形驅動程式必須在存取某些MMIO暫存器時使用一特殊程式規劃型樣,其中附加的MMIO暫存器存取多達7次,用來防止GPU進入省電模式。其並未使原生世界中的成本明顯增加,但由於引發中繼額外負荷,在本文所述之實施例中,可能變為一大效能挑戰。一GPU功率管理設計之一項實施例為最佳化提供一機會。具體而言,一項實施例依賴特權VM 1420管理實體GPU功率,而客體功率管理則予以停用。基於此,原生圖形驅動程式1428在虛擬化環境運行時,可經最佳化以略過附加的MMIO暫存器存取。在一項實施例中,此最佳化平均而言,將截取頻率降低60%。
在一項實施例中,圖形驅動程式1428藉由virt_info MMIO視窗(上述)中之資訊,識別其處於一原生環境或一虛擬化環境中。可將virt_info之定義推送到GPU硬體規格,以使得未來原生圖形驅動程式及未來GPU世代可遵循向後相容性。
可在各種不同GPU上實施本文中所述之基本原理及架構。圖框緩衝器、命令緩衝器、I/O暫存器及頁表之觀念在現代GPU中全都有非常良好的抽象表示。有些GPU可使用晶粒上圖形記憶體;然而,本文中所述之圖形記憶體資源分區及位址空間鼓脹機制也適用於那些GPU。另外,就頁表及命令緩衝器兩者,影子製作機制乃通用於不同GPU。GPU排程器1426具有通用性,而特定內容切換序列可以不同。
再者,本文中所述之核心組件具有超管理器不可知性。雖然一項實作態樣是在一第1類超管理器上,這些技巧仍可輕易地延伸至一第2類超管理器,諸如一核心為基之虛擬機器(KVM),(例如使用一Linux圖形驅動程式)與主機MMIO存取產生關聯。舉例而言,主機圖形驅動程式中,可在I/O存取介面上登記回叫,使虛擬化中繼程序1424可截取並模擬對特權GPU資源之主機驅動程式存取。
雖然分區圖形記憶體資源可能限制規模可調性,有兩種正交方式可用來解決此問題。一種方式是利用附加驅動程式配合,藉由實施一動態資源鼓脹機制,善用現有圖形記憶體,在諸vGPU間共享圖形記憶體。另一種方式是藉由在未來世代GPU中新增更多圖形記憶體,以增加可用的圖形記憶體資源。
全GPU虛擬化之一個附加挑戰是諸如3D、映像(blitter)及媒體等不同圖形引擎之相依性。圖形驅動程式可使用旗號命令以同步化此等引擎間共享的資料結構,同時該等旗號命令可能不予以預佔。其接著帶來引擎間相依性的問題,並且導致一成群排程政策總是將所有引擎排程在一起;然而,這會影響到共享效率。此限制可在稽核命令緩衝器時,透過建構一引擎間相依圖,利用將按引擎排程與成群排程兩者組合之一混合方案來因應。GPU排程器1426可接著根據該相依圖,動態選擇按引擎排程及成群排程政策。
圖19就包括有受超管理器1910管理之例如VM 1930及VM 1940等多個VM之一圖像虛擬化架構1900繪示附加細節,包括有對一GPU 1920中一全GPU特徵陣列之存取。在各項實施例中,超管理器1910可啟用VM 1930或VM 1940,以就GPU虛擬化,利用圖形記憶體及其他GPU資源。例如vGPU 1960A與1960B等一或多個虛擬GPU (vGPU)可基於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內容。在一些實施例中,諸如3D呈現引擎1922或映像呈現引擎1924之每GPU呈現引擎可能發生內容切換。這種週期性切換容許多個VM採用對此等VM之作業量呈透明之一方式共享一實體GPU。
GPU虛擬化可以有各種形式。在一些實施例中,VM 1930可利用裝置透通來啟用,其中向VM 1930呈現整體GPU 1920,如同兩者直接連接。與可指派單一中央處理單元(CPU)核心以供VM 1930專用非常相似,亦可指派GPU 1920供VM 1930專用,例如即使時間有限亦然。另一虛擬化模型具有分時性,其中GPU 1920或其部分可依照一多工處理方式,由例如VM 1930與VM 1940等多個VM共享。在其他實施例中,設備1900亦可使用其他GPU虛擬化模型。在各項實施例中與GPU 1920相關聯之圖形記憶體可予以分區,並且調配至超管理器1910中之各個vGPU 1960A至1960B。
在各項實施例中,圖形轉譯表(GTT)可由VM或GPU 1920用於將圖形處理器記憶體映射至系統記憶體,或用於將GPU虛擬位址轉譯成實體位址。在一些實施例中,超管理器1910可經由影子GTT來管理圖形記憶體映射關係,並且例如vGPU 1960A之一vGPU個體中可保持影子GTT。在各項實施例中,各VM可具有一對應的影子GTT,用來保持圖形記憶體位址與實體記憶體位址間的映射關係,例如虛擬化環境下的機器記憶體位址。在一些實施例中,影子GTT可共享,並且可維持多個VM之映射關係。在一些實施例中,各VM 1930或VM 1940可兼含每程序及全域GTT。
在一些實施例中,設備1900可將系統記憶體當作圖形記憶體使用。系統記憶體可藉由GPU頁表來映射到多個虛擬位址空間。設備1900可支援全域圖形記憶體空間及每程序圖形記憶體位址空間。該全域圖形記憶體空間可以是一虛擬位址空間,例如2GB,乃透過一全域圖形轉譯表(GGTT)來映射。此位址空間之下部分有時稱為孔徑(aperture),可存取自GPU 1920及CPU (圖未示)兩者。此位址空間之上部分稱為高圖形記憶體空間或隱藏圖形記憶體空間,其僅可由GPU 1920使用。在各項實施例中,影子全域圖形轉譯表(SGGTT)可基於一全域記憶體位址空間,由VM 1930、VM 1940、超管理器1910、或GPU 1920用於將圖形記憶體位址轉譯成各別系統記憶體位址。
在全GPU虛擬化中,一靜態全域圖形記憶體空間分區方案可能面臨一規模可調性問題。舉例而言,就一2 GB之全域圖形記憶體空間,可就孔徑保留前512百萬位元組(MB)虛擬位址空間,而1536 MB之其餘部分可變為高(隱藏)圖形記憶體空間。憑藉此靜態全域圖形記憶體空間分區方案,啟用全GPU虛擬化之各VM可調配有128 MB孔徑及384 MB高圖形記憶體空間。因此,這2 GB全域圖形記憶體空間最大僅可容納四個VM。
除了規模可調性問題,所具圖形記憶體空間有限之VM也可能遭逢效能衰減。當一媒體延伸使用GPU媒體硬體加速時,其有些媒體沉重作業量中有時可觀測到嚴重的效能降級。舉一例來說,可能需要至少40 MB的圖形記憶體才能解碼一條1080p H.264/先進視訊編碼(AVC)位元流通道。因此,就10條1080p H264/AVC位元流解碼通道,可能需要至少400 MB之圖形記憶體空間。同時,可能必須就表面組成/顏色轉換、解碼程序期間切換顯示框緩衝器等,擱置一些圖形記憶體空間。在這種狀況中,每VM 512 MB之圖形記憶體空間可能不足以供一VM運行多個視訊編碼或解碼。
在各項實施例中,設備100可利用隨選SGGTT達到GPU圖形記憶體過度承諾。在一些實施例中,超管理器1910可隨選建構SGGTT,其可包括有起於不同GPU組件自有VM之所有待用於圖形記憶體虛擬位址之轉譯。
在各項實施例中,至少一個受超管理器1910管理之VM可調配有超過靜態分區全域圖形記憶體位址空間及記憶體。在一些實施例中,至少一個受超管理器1910管理之VM可調配有或能夠存取整體高圖形記憶體位址空間。在一些實施例中,至少一個受超管理器1910管理之VM可調配有或能夠存取整體圖形記憶體位址空間。
超管理器1910可就VM 1930或VM 1940所提交之命令,使用命令剖析器1918偵檢一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操作之安全性,諸如藉由減少惡意操作來改善。
在一些實施例中,可就出自所有VM之所有作業量,產生用以保持轉譯之一個SGGTT。在一些實施例中,可就所有作業量,例如僅出自一個VM之作業量,產生用以保持轉譯之一個SGGTT。特定作業量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之全域圖形記憶體位址空間之整體部分。
設備1900中用於GPU 1920之GPU排程器1912可與用於CPU之排程器分開。為了善用一些實施例中之硬體平行性,GPU排程器1912可就不同GPU引擎分單獨排程作業量,例如3D呈現引擎1922、映像呈現引擎1924、視訊命令串流器(VCS)呈現引擎1926、以及視訊增強型命令串流器(VECS)呈現引擎1928。舉例而言,VM 1930可具有3D密集性,而且每次可能都需要對3D呈現引擎1922排程3D作業量1932。同時,VM 1940可具有媒體密集性,而且可能需要對VCS呈現引擎1926及/或VECS呈現引擎1928排程媒體作業量1944。在這種狀況中,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可嘗試使用同一圖形記憶體位址,則可偵檢此衝突。在一些實施例中,GPU排程器1912可變更排程器政策,以避免選擇有可能彼此衝突之呈現引擎其中一或多者。在一些實施例中,GPU排程器1912可暫止執行硬體引擎以減輕衝突。
在一些實施例中,如本文中所論述之GPU虛擬化中的記憶體過度承諾方案可與靜態全域圖形記憶體空間分區方案共存。舉一例來說,仍可將下記憶體空間1954中之孔徑用於所有VM間的靜態分區。上記憶體空間1952中之高圖形記憶體空間可用於記憶體過度承諾方案。相較於靜態全域圖形記憶體空間分區方案,GPU虛擬化中之記憶體過度承諾方案可使各VM能夠使用上記憶體空間1952中之整體高圖形記憶體空間,其可容許各VM內部有些應用程式就提升效能使用更大的圖形記憶體空間。
憑藉靜態全域圖形記憶體空間分區方案,初始主張記憶體一大部分之一VM在運行時間可僅使用一小部分,而其他VM則處於記憶體短缺狀態。憑藉記憶體過度承諾,一超管理器可隨選分配用於VM之記憶體,並且儲存之記憶體可用於支援更多VM。憑藉SGGTT為基之記憶體過度承諾,僅待執行作業量所用之圖形記憶體空間可予以在運行時間分配,其儲存圖形記憶體空間,並且支援更多用以存取GPU 1920之VM。 用於型樣驅動頁表之設備及方法
如上述,GPU頁表影子製作(例如使用一影子GGTT/PPGTT)是一種用在全GPU虛擬化之技巧。客體GPU頁表登入項含有客體實體位址(GPA),必須將其轉譯成主機實體位址(HPA)作為DMA目的地。然而,當多個VM共享一個pGPU裝置時,由於PCI請求器ID只有一個,輸入輸出記憶體管理單元(IOMMU)無法用於進行硬體GPA至HPA轉譯。因此,與CPU頁表影子製作相似,客體頁表頁上施行寫入保護,以致所有客體寫入都造成一尋頁錯失,然後超管理器可轉譯並更新對應之影子頁表,如(上述)圖18中所示。實際的寫入保護錯失取決於程式規劃模型,而且高寫入保護錯失可能導致一顯著的虛擬化額外負荷,從而大幅影響總體GPU虛擬化效能。舉例而言,在一項測試中,相較於裸金屬效能,由於寫入保護尋頁錯失過多,一VM中之一H.264媒體轉碼基準中觀測到減速達20倍之多。
引進與GPU共享CPU頁表以啟用一更有效程式規劃模型之共享虛擬記憶體(SVM),會使事情變為更複雜。舉例而言,一使用者等級應用程式可直接提交虛擬位址(GVA)至裝置,旁通核心模式驅動程式,然後該裝置可直接將GVA當作DMA目的地使用。藉由使用IOMMU中之二階轉譯結構(GVA->GPA->HPA),較容易支援GPU透通模式中之一客體SVM。然而,由於可用的PCI請求器ID只有一個,難以將該等二階轉譯結構用於多個VM (其潛在具有衝突之GPA位址空間)。因應此問題之一種技巧乃是引進一新輸入輸出虛擬位址(IOVA)空間,在多個VM間將其分區。接著將二階轉譯結構用於進行GVA->IOVA->HPA轉譯。這意味著,第一階轉譯結構即共享之CPU頁表,需要就GPA->IOVA轉譯進行影子製作。
然而,此CPU頁表影子製作技巧對於達到一有效率之實作態樣非常複雜而且容易出錯。舉例而言,一綜合影子頁表需要追蹤所有頁表頁(目的在於寫入保護),這會有所困難,而且VMM通常必須追蹤各客體之PDE/PTE的上代之頁(即影子頁表側之一逆向映射)。這在一客體頁表暫時無效(例如諸如CR3之控制暫存器未指向)、及/或一頁表完全遭釋放以當作一資料頁再利用時會很複雜。相較於現有的GPU頁表影子製作,由於CPU頁表共享,需要複雜度及額外的額外負荷才能處置一大更多的CPU-GPU組合式工作集。最後,相較於透過無頁表共享(SVM停用)之舊有實作態樣之一組建者(built),透過共享CPU頁表的實際效能可能甚至更糟。
以上乃現今全GPU虛擬化中不支援SVM的主要理由。有些現有技巧已用於最佳化GPU頁表影子製作。舉例而言,在2014年12月24日提出申請之題為「An hybrid On Demand Per-Process Graphics Translation Table Shadowing Mechanism for Efficient Media Cloud Usage」之共同待決申請案第14/777,738號中,一GPU頁表乃基於頁表存取型樣之探試法,採一隨選方式予以寫入保護。這可大幅提升傳統影子GGTT/PPGTT作法之虛擬媒體轉碼效能。然而,由於無法以所建議探試法輕易最佳化之CPU工作集很大,因此可能不符合SVM虛擬化之要求。
本發明之一項實施例將型樣驅動頁表影子製作(PPTS)框架用於兩共享之CPU頁表(例如SVM)與傳統GPU頁表(例如GGTT/PPGTT)來因應這些限制。此框架基於分析提交自各VM之GPU命令來嘗試預測目前的GPU工作集,然後進行一隨選懶人影子同步化,以確保所有必要的映射關係都是最新的(亦即,將GPU命令提交至實體GPU之前,恰恰在使用前儲存者)。
目前GPU工作集之預測可大幅降低寫入保護錯失,這是因為不需要不與目前工作集直接有關、或甚至GPU完全未用(例如SVM案例中之僅CPU使用狀況)之寫入保護PTE。隨選懶人影子同步化可進一步基於頁表存取型樣來降低寫入保護錯失。
下文所述PPTS之另一最佳化乃臆測頁請求(SPR),其在將命令提交至GPU之前,先基於預測之工作集來臆測地請求非目前頁(非分配至或換出碟片者)。這可有助於使IOMMU尋頁錯失在GPU嘗試對其進行存取時避免權重更大。諸如可現場規劃閘陣列(FPGA)加速器之其他加速裝置若支援CPU與裝置間共享位址空間,在各種虛擬化使用狀況中,亦可應用所提出之PPTS技巧。
在一項實施例中,利用GPU程式規劃模型,其需要就所有指派之任務明確通知GPU之驅動程式。在此實施例中,GPU只有當所指派任務是在GPU命令中(例如,透過MMIO為基之「尾端」暫存器或記憶體為基之「門鈴」)提交時,才會接觸屬於該等任務之資源。
這些實施例在一虛擬化環境中提供最佳化,因為這些提交可遭受超管理器截取,並且可分析提交之命令以採用一懶人方式瞭解真正的資源要求。
型樣驅動頁表影子製作(PPTS)框架之一項實施例乃繪示於圖20中,其展示一超管理器2051上運行之一例示性虛擬機器2050。這項實施例可應用於解決因SVM所導致的新CPU頁表影子製作挑戰,也可應用於改善現有GPU頁表影子製作。 1.   GPU工作集預測
一項實施例運用全GPU虛擬化,其截取並模擬出自客體/VM 2050之特權操作,包括有GPU命令之提交。當vGPU 2024裝置模型收到一新命令緩衝器時,將此命令緩衝器轉發至一CMD剖析器2005以供細粒分析之用。在一項實施例中,CMD剖析器2005分析命令運算元,並且記錄可由所提交GPU命令使用之所用記憶體頁。在另一實施例中,編譯器技術可用於做更準確的預測(例如必定不會基於輸入參數來執行之略過符碼分支),因此可建構更縮減但準確的記憶體頁集合。
在一項實施例中,CMD剖析器2005記錄與提供至影子頁表2004 (亦即,儲存藉由工作集所利用之那些PTE)之各所提交命令緩衝器相關聯之工作集(即一記憶體頁清單)。該工作集包含有與所提交命令有關之部分,其乃待利用之最大可能頁表。僅目前工作集內之記憶體頁才需要在影子頁表與客體頁表間進行細粒同步化。目前工作集外部之其他頁可較不常予以同步化。所以,顯著減少待寫入保護之頁表登入項之數量,這會代表不用這些技巧之整體CPU位址空間。 2.   隨選懶人影子同步化
在一項實施例中,GPU排程器2006對影子頁表2004提供懶人更新。基於預測之工作集與歷史頁表存取型樣,有數個懶人頁表影子製作政策可予以採用。
在一項實施例中,在一全重構政策下,不使用寫入保護。當GPU排程器2006準備提交一客體命令緩衝器時,其僅就屬於相關聯命令緩衝器之預測工作集,同步化出自客體頁表2001之客體PTE的影子頁表2004之影子PTE。這項實施例沒有引起寫入保護額外負荷,然而,若該預測工作集太大,則該重構所用的時間可能拉長。
影子頁表2004中影子PTE進行第一次重構之後,使用一部分影子製作政策,將目前工作集加入一每VM全域工作集。接著,對全域工作集之所有客體PTE進行寫入保護移動轉發。各新提交之命令緩衝器若尚不在全域工作集中,則重構影子PTE。否則,由於寫入保護的關係,影子PTE已是最新的。
一項實施例中運用之一隨選影子製作政策乃類似於部分影子製作,但每VM全域工作集乃基於出自CMD剖析器2005之參考頻率及頁表存取型樣來動態更新。參考頻率較低的PTE駐留於每VM全域工作集的時間較長,這是因為用以將其進行重構的機率較低,因此,寫入保護對於降低CMD提交路徑之延遲較有效率。否則,參考頻率最大的PTE乃予以從全域工作集移除,並且移回到全重構模型,這是因為頻繁的寫入保護錯失對效能不利。 3.   臆測頁請求
在一項實施例中,IOMMU支援尋頁錯失,所以,與GPU 2000共享CPU頁表時,非目前指標位址將會在GPU存取這些指標時觸發IOMMU尋頁錯失。在一項實施例中,IOMMU驅動程式接著將會請求超管理器MMU 2010填充PTE (分配一新頁或在一現有頁中調換)。然而,由於IOMMU與端裝置間的有更長的路徑及請求/回應協定,相較於一CPU尋頁錯失,一IOMMU尋頁錯失的權重更大。
在本發明之一項實施例中,可基於該預測工作集來進行前瞻性頁請求。具體而言,在此實施例中,該預測工作集之一或多個PTE若不存在,則可在GPU 2000執行命令之前,先利用一頁請求代理器(PRA) 2008臆測地觸發一CPU尋頁錯失、或直接調用超管理器IOMMU 2010以對影子頁表2004分配/換入所需頁。這可移除相當大量的非必要IOMMU尋頁錯失,從而提升總體效能。
在另一實施例中,編譯器技術可應用於CMD剖析器2005,用來分析所提交命令裡存取一給定頁的可能性,對臆測頁請求提供另一提示。
圖21繪示根據本發明之一項實施例繪示的一種方法。該方法可在上述系統架構之背景下實施,但不限於任何特定系統架構。
於2101,虛擬機器(VM)提交包含有一目前命令工作集之一命令緩衝器至一虛擬GPU (vGPU)以供執行之用。在一項實施例中,vGPU乃藉由與不同VM共享一實體GPU之一超管理器來實施。於2102,分析目前命令工作集以判定一頁表登入項(PTE)工作集。於2103,更新影子頁表以包括有PTE工作集 (即對應於命令工作集之PTE)。於2104,GPU排程器基於命令工作集對影子頁表進行懶人更新。若在整體預測工作集上施行寫入保護,則2104為任選。在一項實施例中,GPU執行命令前先進行更新。在一項實施例中,於2105,頁請求代理器(例如經由一記憶體管理單元(MMU))擷取與PTE工作集相關聯之一或多頁,然後於2106,影子頁表及/或擷取之記憶體頁乃當作GPU所執行之命令工作集使用。
共享虛擬記憶體(SVM)對全GPU虛擬化帶來新挑戰(舉例如CPU頁表影子製作有關者)。傳統CPU頁表影子製作之複雜度及效能額外負荷使SVM在實施方面具有挑戰性。本發明之實施例基於主動PTE工作集之一預測、及隨選懶人影子同步化而提供一新穎的解決方案,相較於傳統的CPU頁表影子製作,其可大幅減少寫入保護錯失。這些實施例亦可透過一前瞻性頁請求模型來減少IOMMU尋頁錯失。
在此詳細說明中,參照形成其一部分之附圖,其中相似的符號全文指定相似的部分,而且其中是以例示方式來展示可實踐之實施例。要瞭解的是,可利用其他實施例並且可施作結構化或邏輯變更但不會脫離本揭露之範疇。因此,以下詳細說明並非限制概念,而且實施例的範疇是由隨附申請專利範圍及其均等論述來界定。
進而可採用一最有助於理解所訴求標的內容的方式,將各種操作描述為多個分立動作或操作。然而,說明順序不應該視為意味著這些操作必然順序相依。特別的是,這些操作可不按介紹之順序來進行。所述操作可按有別於所述實施例之順序來進行。在另外的實施例中,可進行各種附加操作,及/或可省略所述操作。
就本揭露之目的而言,「A及/或B」一詞意味著(A)、(B)、或(A及B)。就本揭露之目的而言,「A、B及/或C」一詞意味著(A)、(B)、(C)、(A及B)、(A及C)、(B及C)、或(A、B及C)。在本揭露明載「一」或「一第一」元件或其均等件的部分,此揭露包括有一或多個此類元件,不必然是也不排除二或更多個此類元件。再者,依序的指標(例如第一、第二或第三)就識別之元件乃用於在此等元件間作區別,並未指出或暗指一所需或有限數量之此類元件,也未指出此類元件之一特定位置或順序,除非另有具體敍述。
本說明中對一項實施例或一實施例之參照意味著搭配該實施例所述之一特定特徵、結構或特性乃包括於本說明之至少一項實施例中。本說明可使用「在一項實施例中」、「在另一實施例中」、「在一些實施例中」、「在實施例中」、「在各項實施例中」或類似字詞,其可各意指為相同或不同實施例之一或多者。再者,「包含有」、「包括有」、「具有」等詞及類似用語於對照本揭露之實施例使用時為同義字。
在實施例中,「引擎」或「模組」或「邏輯」一詞可意指為、屬於部分之、或包括有一特定應用積體電路(ASIC)、一電子電路、一處理器(共享、專屬、或群組)、及/或記憶體(共享、專屬、或群組),其執行提供所述功能之一或多個軟體或韌體程式、一組合邏輯電路、及/或其他適合的組件。在實施例中,一引擎或一模組可實施成韌體、硬體、軟體、或韌體、硬體與軟體之任何組合。
本發明之實施例可包括有已在上文說明之各種步驟。此等步驟可具體實現為可用於令一通用或特殊用途處理器進行此等步驟之機器可執行指令。替代地,這些步驟可藉由含有用於進行此等步驟之固線邏輯之特定硬體組件來進行,或藉由已程式規劃電腦組件或自訂硬體組件之任何組合來進行。
如本文中所述,指令可意指為諸如特定應用積體電路(ASIC)等硬體之特定組態,其被組配來進行某些操作,或具有一預定功能、或具體實現為一非暫時性電腦可讀媒體之記憶體中所儲存之軟體指令。因此,圖式中所示之技巧可使用在一或多個電子裝置(例如一終端站、一網路元件等)上儲存及執行之符碼及資料來實施。此類電子裝置使用諸如非暫時性電腦機器可讀儲存媒體(例如磁碟;光碟;隨機存取記憶體;唯讀記憶體;快閃記憶體裝置;相變記憶體)及暫時性電腦可讀通訊媒體(例如電氣、光學、聲學或其他形式之傳播信號,諸如載波、紅外線信號、數位信號等)等電腦機器可讀媒體來(內部及/或透過一網路配合其他電子裝置)儲存並傳送符碼及資料。
另外,此類電子裝置一般包括有耦合至諸如一或多個儲存裝置(非暫時性機器可讀儲存媒體)、使用者輸入輸出裝置(例如一鍵盤、一觸控螢幕、及/或一顯示器)、以及網路連線等一或多個其他組件之一或多個處理器。該組處理器與其他組件一般是透過一或多條匯流排及橋接器(亦稱為匯流排控制器)來進行耦合。儲存裝置及攜載網路流量之信號各別代表一或多個機器可讀儲存媒體及機器可讀通訊媒體。因此,一給定電子裝置之儲存裝置一般儲存用於在該電子裝置之該組一或多個處理器上執行之符碼及/或資料。當然,本發明之一實施例之一或多個部分可使用不同組合之軟體、韌體、及/或硬體來實施。在本詳細說明各處,就解釋目的來講,許多特定細節是為了透徹理解本發明而提出。然而,所屬技術領域中具有通常知識者將會明白,本發明無需這些特定細節中的一些也可實踐。在某些例子中,為了避免混淆本發明之標的內容,並未精心詳細說明眾所周知的結構及功能。因此,本發明之範疇及精神應該依據以下申請專利範圍來判定。
100‧‧‧處理系統
102、200、1030‧‧‧處理器
104‧‧‧快取記憶體
106‧‧‧暫存器檔案
107、202A~202N‧‧‧處理器核心
108、112、208、300、500、800、1032、1210‧‧‧圖形處理器
109‧‧‧指令集
110‧‧‧處理器匯流排
116‧‧‧記憶體控制器集線器
120‧‧‧記憶體裝置
121‧‧‧指令
122‧‧‧資料
124‧‧‧資料儲存裝置
126‧‧‧無線收發器
128‧‧‧韌體介面
130‧‧‧I/O控制器集線器
134‧‧‧網路控制器
140‧‧‧I/O控制器
142‧‧‧通用串列匯流排(USB)控制器
144‧‧‧滑鼠
146‧‧‧音訊控制器
204A~204N‧‧‧內部快取單元
206‧‧‧共享快取單元
210‧‧‧系統代理核心
211、302、843‧‧‧顯示控制器
212‧‧‧環體為基之互連單元
213‧‧‧I/O鏈路
214‧‧‧整合式記憶體控制器
216‧‧‧匯流排控制器單元
218‧‧‧高效能嵌入式記憶體模組
304‧‧‧區塊影像轉移(BLIT)引擎
306‧‧‧視訊編解碼引擎
310‧‧‧圖形處理引擎
312‧‧‧3D管線
314‧‧‧記憶體介面
315‧‧‧3D/媒體子系統
316‧‧‧媒體管線
320‧‧‧顯示裝置
403‧‧‧命令串流器
410‧‧‧GPE
412‧‧‧3D管線
414‧‧‧執行單元陣列
416‧‧‧媒體管線
430‧‧‧取樣引擎
432‧‧‧去雜訊/去交錯模組
434‧‧‧動作估計模組
436‧‧‧影像比例縮放與篩選模組
444、614‧‧‧資料埠
502‧‧‧環形互連件
503‧‧‧命令串流器
504‧‧‧管線前端
530‧‧‧視訊品質引擎
533‧‧‧多格式編碼/解碼
534‧‧‧視訊前端
536‧‧‧幾何管線
537‧‧‧媒體引擎
550A~550N、560A~560N‧‧‧子核心
552A~552N、562A~562N、608A~608N、852A~852B‧‧‧執行單元
554A~554N‧‧‧媒體/紋理取樣器
564A~564N、610、854‧‧‧取樣器
570A~570N‧‧‧共享資源
580~580N‧‧‧圖形核心
600‧‧‧緒執行邏輯
602‧‧‧像素著色器
604‧‧‧緒分派器
606‧‧‧指令快取
612‧‧‧資料快取
700‧‧‧圖形處理器指令格式
710‧‧‧128位元格式
712‧‧‧指令操作碼
714‧‧‧指令控制欄
716‧‧‧執行尺寸欄
718‧‧‧目的地
722‧‧‧src1
724‧‧‧SRC2
726‧‧‧存取/定址模式資訊
730‧‧‧64位元壓縮指令格式
740‧‧‧操作碼解碼
742‧‧‧移動與邏輯操作碼群
744‧‧‧流程控制指令群
746‧‧‧雜項指令群
748‧‧‧平行數學指令群
750‧‧‧向量數學群
802‧‧‧環形互連件
803‧‧‧命令串流器
805‧‧‧頂點擷取器
807‧‧‧頂點著色器
811‧‧‧可規劃外殼著色器
813‧‧‧鑲嵌器
817‧‧‧可規劃域著色器
819‧‧‧幾何著色器
820‧‧‧圖形管線
823‧‧‧串流輸出單元
829‧‧‧剪輯器
830‧‧‧媒體管線
831‧‧‧緒分派器
834‧‧‧視訊前端
837‧‧‧媒體引擎
840‧‧‧顯示引擎
841‧‧‧2D引擎
850‧‧‧緒執行邏輯
851、858‧‧‧快取
856‧‧‧資料埠
870‧‧‧呈現輸出管線
873‧‧‧柵格化程序與深度測試組件
875‧‧‧共享L3快取
877‧‧‧像素操作組件
878‧‧‧呈現快取
879‧‧‧深度快取
900‧‧‧圖形處理器命令格式
902‧‧‧目標用戶端
904‧‧‧命令操作碼
905‧‧‧子操作碼
906‧‧‧相關資料
908‧‧‧命令尺寸
910‧‧‧圖形處理器命令序列
912‧‧‧管線排清命令
913‧‧‧管線選擇命令
914‧‧‧管線控制命令
916‧‧‧回傳緩衝狀態命令
920‧‧‧管線判定
922‧‧‧3D管線
924‧‧‧媒體管線
930‧‧‧3D管線狀態
932‧‧‧3D基元
934‧‧‧執行
940‧‧‧媒體管線狀態
942‧‧‧媒體物件命令
944‧‧‧執行命令
1000‧‧‧資料處理系統
1010‧‧‧3D圖形應用程式
1012‧‧‧著色器指令
1014‧‧‧可執行指令
1016‧‧‧圖形物件
1020‧‧‧作業系統
1024‧‧‧前端著色器編譯器
1026‧‧‧使用者模式圖形驅動程式
1027‧‧‧後端著色器編譯器
1028‧‧‧作業系統核心模式功能
1029‧‧‧核心模式圖形驅動程式
1034‧‧‧通用處理器核心
1050、1310、1710‧‧‧系統記憶體
1100‧‧‧IP核心開發系統
1110‧‧‧軟體模擬
1115‧‧‧RTL設計
1120‧‧‧硬體模型
1130‧‧‧設計設施
1140‧‧‧非依電性記憶體
1150‧‧‧有線連接
1160‧‧‧無線連接
1165‧‧‧製作設施
1200‧‧‧晶片積體電路
1205‧‧‧應用處理器
1215‧‧‧影像處理器
1220‧‧‧視訊處理器
1225‧‧‧USB控制器
1230‧‧‧UART控制器
1235‧‧‧SPI/SDIO控制器
1240‧‧‧I2S/I2C控制器
1245‧‧‧顯示裝置
1250‧‧‧高畫質多媒體介面(HDMI)控制器
1255‧‧‧行動產業處理器介面(MIPI)顯示介面
1260‧‧‧記憶體子系統
1265‧‧‧記憶體控制器
1270‧‧‧嵌入式安全性引擎
1300‧‧‧圖形處理單元
1302‧‧‧呈現引擎
1304‧‧‧顯示引擎
1306‧‧‧GPU頁表
1312‧‧‧命令緩衝器
1314‧‧‧圖框緩衝器
1320‧‧‧中央處理單元
1400、2000、1920‧‧‧GPU
1410、2051、1910‧‧‧超管理器
1411‧‧‧虛擬化虛設常式
1412‧‧‧PVMMU
1414‧‧‧擴充頁表
1416‧‧‧CPU排程器
1420‧‧‧特權虛擬機器
1422‧‧‧虛擬化中繼程序
1424‧‧‧vGPU個體
1426‧‧‧GPU排程器
1428‧‧‧客體圖形驅動程式
1431~1432‧‧‧使用者VM
1501、1601‧‧‧客體視圖
1502、1602‧‧‧主機視圖
1701~1702‧‧‧客體全域頁表
1703‧‧‧影子全域頁表
1801‧‧‧頁目錄表
1802‧‧‧頁表
1803‧‧‧影子頁目錄登錄表
1804、2004‧‧‧影子頁表
1900‧‧‧圖像虛擬化架構
1912‧‧‧GPU排程器
1914‧‧‧SGGTT佇列
1916‧‧‧作業量佇列
1818‧‧‧命令剖析器
1922‧‧‧3D呈現引擎
1924‧‧‧映像呈現引擎
1926‧‧‧視訊命令串流器(VCS)呈現引擎
1928‧‧‧視訊增強型命令串流器(VECS)呈現引擎
1930、1940‧‧‧VM
1932、1942‧‧‧3D作業量
1934、1944‧‧‧媒體作業量
1950‧‧‧圖形轉譯表
1952‧‧‧上記憶體空間
1954‧‧‧下記憶體空間
1960A~1960B、2024‧‧‧vGPU
2001‧‧‧客體頁表
2005‧‧‧CMD剖析器
2006‧‧‧GPU排程器
2008‧‧‧頁請求代理器
2010‧‧‧超管理器MMU
2050‧‧‧虛擬機器
2101~2106‧‧‧步驟
搭配以下圖式透過以下詳細說明可更加理解本發明,其中: 圖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根據本發明之一項實施例繪示一方法。
2000‧‧‧GPU
2001‧‧‧客體頁表
2004‧‧‧影子頁表
2005‧‧‧CMD剖析器
2006‧‧‧GPU排程器
2008‧‧‧頁請求代理器
2010‧‧‧超管理器MMU
2024‧‧‧Vgpu
2028‧‧‧圖形驅動程式
2050‧‧‧虛擬機器
2051‧‧‧超管理器

Claims (24)

  1. 一種設備,其包含有: 一圖形處理單元(GPU),其用以處理圖形命令並且回應地呈現複數個影像圖框; 一超管理器,其將該GPU虛擬化以在複數個虛擬機器(VM)間共享該GPU; 在一第一VM內受管理之一第一客體頁表,該第一客體頁表包含有複數個頁表登入項; 一第一影子頁表,其受該超管理器管理並包含有與該第一客體頁表之該等頁表登入項相對應之頁表登入項;以及 一命令剖析器,其用以分析自該第一VM提交至該GPU之一目前的命令之工作集,該命令剖析器用以回應於以該命令之工作集之該分析為基礎而判定經預測要被使用之一組頁表登入項,來回應地更新該第一影子頁表。
  2. 如請求項1之設備,其更包含有: 該超管理器之一GPU排程器,其用以回應於排程出自用於在該GPU上執行之該命令之工作集之命令,而對該第一影子頁表進行一或多個頁表登入項更新。
  3. 如請求項1之設備,其更包含有: 一頁請求代理器,其用以判定用於該GPU去執行在該命令之工作集中之該等命令中之一或多者所請求之記憶體頁,以及用以回應地令一記憶體管理單元去擷取該等記憶體頁。
  4. 如請求項3之設備,其中該頁請求代理器是用以藉由自該第一影子頁表讀取一或多個頁表登入項來判定要被擷取之該等記憶體頁。
  5. 如請求項4之設備,其中該頁請求代理器是用來臆測地觸發一尋頁錯失、或直接調用一超管理器記憶體管理單元(MMU)以擷取該記憶體頁。
  6. 如請求項1之設備,其中該VM要提交該命令之工作集至一命令緩衝器,並且提供該命令緩衝器至該超管理器以排程該命令之工作集以供該GPU執行。
  7. 如請求項6之設備,其中該超管理器要截取並模擬來自該VM之特權操作,並且透通非特權操作至該GPU。
  8. 如請求項1之設備,其中該第一影子頁表係基於來自該命令剖析器之命令之一經偵測之參考頻率、及經偵測頁表存取型樣來被更新。
  9. 一種方法,其包含有: 提交包含有一工作集或命令之一命令緩衝器至一超管理器內之一虛擬圖形處理器單元(vGPU); 分析該等命令之工作集以判定要被一圖形處理單元(GPU)使用以執行該命令之工作集的一頁表登入項(PTE)之工作集; 更新一影子頁表以包括該PTE之工作集; 排程該命令之工作集以供在該GPU上執行,其中該GPU要在執行該命令之工作集時,利用出自該影子頁表之該PTE之工作集。
  10. 如請求項9之方法,其中更新該影子頁表之操作係藉由該超管理器內之一命令剖析器及/或一GPU排程器來進行。
  11. 如請求項9之方法,其更包含有: 判定用於該GPU去執行該命令之工作集中之該等命令中之一或多者所請求之記憶體頁;以及 在執行該命令之工作集之前,回應地擷取該等記憶體頁。
  12. 如請求項11之方法,其中要被擷取之該等記憶體頁係藉由自該第一影子頁表讀取一或多個頁表登入項來判定。
  13. 如請求項12之方法,其中擷取該等記憶體頁包含有臆測地觸發一尋頁錯失,或直接調用一超管理器記憶體管理單元(MMU)以擷取該等記憶體頁。
  14. 如請求項9之方法,其中該命令之工作集被提交至一命令緩衝器,並且該命令緩衝器被提供至該超管理器以排程該命令之工作集以供該GPU執行。
  15. 如請求項14之方法,其中特權操作係藉由該超管理器來截取並模擬,以及非特權操作係通透至該GPU。
  16. 如請求項9之方法,其中該第一影子頁表係基於來自該命令剖析器之命令之一經偵測參考頻率、及經偵測頁表存取型樣來被更新。
  17. 一種系統,包含: 一記憶體,其用以儲存資料及程式碼; 一中央處理單元(CPU),其包含有用於快取一部分該程式碼之一指令快取、及用於快取一部分該資料之一資料快取,該CPU更包含有用以執行該程式碼並回應地處理該資料之執行邏輯,該程式碼之至少一部分包含有圖形命令; 一圖形處理單元(GPU),其用以處理該等圖形命令並且回應地呈現複數個影像圖框; 一超管理器,其將該GPU虛擬化以在複數個虛擬機器(VM)間共享該GPU; 在一第一VM內受管理之一第一客體頁表,該第一客體頁表包含有複數個頁表登入項; 一第一影子頁表,其受該超管理器管理並包含有與該第一客體頁表之該等頁表登入項相對應之頁表登入項;以及 一命令剖析器,其用以分析自該第一VM提交至該GPU之一目前的命令之工作集,該命令剖析器要回應於以該命令之工作集之該分析為基礎而判定經預測要被使用之一組頁表登入項,來回應地更新該第一影子頁表。
  18. 如請求項17之系統,其更包含有: 該超管理器之一GPU排程器,其用以回應於排程出自供在該GPU上執行之該命令之工作集的命令,而對該第一影子頁表進行一或多個頁表登入項更新。
  19. 如請求項17之系統,其更包含有: 一頁請求代理器,其用以判定用於該GPU去執行該命令之工作集中之該等命令中之一或多者所請求之記憶體頁、以及用以回應地令一記憶體管理單元去擷取該等記憶體頁。
  20. 如請求項19之系統,其中該頁請求代理器要藉由自該第一影子頁表讀取一或多個頁表登入項來判定要被擷取之該等記憶體頁。
  21. 如請求項20之系統,其中該頁請求代理器是用來臆測地觸發一尋頁錯失、或直接地調用一超管理器記憶體管理單元(MMU)以擷取該記憶體頁。
  22. 如請求項17之系統,其中該VM要提交該命令之工作集至一命令緩衝器,並且提供該命令緩衝器至該超管理器以排程該命令之工作集以供該GPU執行。
  23. 如請求項22之系統,其中該超管理器是用來截取並模擬來自該VM之特權操作,並且透通非特權操作至該GPU。
  24. 如請求項17之系統,其中該第一影子頁表係基於來自該命令剖析器之命令的一經偵測參考頻率、及經偵測頁表存取型樣來被更新。
TW105138650A 2015-12-21 2016-11-24 用於針對圖像虛擬化之型樣驅動頁表追蹤之設備與方法 TWI742019B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
WOPCT/CN2015/098046 2015-12-21
PCT/CN2015/098046 WO2017107001A1 (en) 2015-12-21 2015-12-21 Apparatus and method for pattern-driven page table shadowing for graphics virtualization

Publications (2)

Publication Number Publication Date
TW201727576A true TW201727576A (zh) 2017-08-01
TWI742019B TWI742019B (zh) 2021-10-11

Family

ID=59088805

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105138650A TWI742019B (zh) 2015-12-21 2016-11-24 用於針對圖像虛擬化之型樣驅動頁表追蹤之設備與方法

Country Status (3)

Country Link
US (1) US10853118B2 (zh)
TW (1) TWI742019B (zh)
WO (1) WO2017107001A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI811560B (zh) * 2020-08-17 2023-08-11 宏碁股份有限公司 資源整合系統及資源整合方法
CN116894275A (zh) * 2023-09-08 2023-10-17 摩尔线程智能科技(北京)有限责任公司 页表的更新方法、服务器、图形处理器、芯片及存储介质

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9870266B2 (en) * 2015-07-30 2018-01-16 Nasdaq, Inc. Background job processing framework
US11907377B2 (en) * 2018-10-30 2024-02-20 Intel Corporation Supporting self-modifying graphics workloads in fully virtualized graphics architectures
US11099874B2 (en) * 2019-01-28 2021-08-24 Red Hat Israel, Ltd. Efficient userspace driver isolation by shallow virtual machines
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
FR3093842B1 (fr) * 2019-03-14 2021-09-10 Amadeus Procédé et système pour optimiser des groupements de machines virtuelles d’une plateforme informatique en nuage
US11960422B2 (en) 2019-03-28 2024-04-16 Intel Corporation Direct memory access tracking for pass-through devices in virtualized environments
US11263122B2 (en) * 2019-04-09 2022-03-01 Vmware, Inc. Implementing fine grain data coherency of a shared memory region
CN110336894B (zh) * 2019-06-24 2021-03-30 中国科学院软件研究所 一种虚拟机用户空间地址到宿主机内核空间地址转换方法
US11481255B2 (en) * 2019-09-10 2022-10-25 International Business Machines Corporation Management of memory pages for a set of non-consecutive work elements in work queue designated by a sliding window for execution on a coherent accelerator
US11645145B2 (en) * 2019-12-16 2023-05-09 Qualcomm Incorporated Methods and apparatus to facilitate speculative page fault handling in a graphics processing unit
CN114612579A (zh) * 2020-12-18 2022-06-10 完美世界(北京)软件科技发展有限公司 图像渲染方法、装置、计算机设备及可读存储介质
CN115659290B (zh) * 2022-11-07 2023-07-21 海光信息技术股份有限公司 代码保护系统、方法、虚拟系统、芯片及电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9058292B2 (en) * 2004-12-29 2015-06-16 Intel Corporation System and method for one step address translation of graphics addresses in virtualization
CN102421012B (zh) 2011-11-16 2014-01-22 王白 一种获得电视节目截屏图片的方法和系统
CN102521012B (zh) * 2011-11-24 2014-08-27 华中科技大学 基于虚拟机的gpu集群管理系统
WO2013091185A1 (en) * 2011-12-21 2013-06-27 Intel Corporation Gpu accelerated address translation for graphics virtualization
DE112012006199T5 (de) * 2012-06-30 2014-12-24 Hewlett-Packard Development Company, L.P. Virtuelle Hand basierend auf kombinierten Daten
US20140373005A1 (en) 2013-06-12 2014-12-18 Nvidia Corporation Requirement based exposure of engines of a graphics processing unit (gpu) to a virtual machine (vm) consolidated on a computing platform
US9098323B2 (en) * 2013-09-05 2015-08-04 Nvidia Corporation Simultaneous utilization of a first graphics processing unit (GPU) and a second GPU of a computing platform through a virtual machine (VM) in a shared mode and a dedicated mode respectively
US10120663B2 (en) * 2014-03-28 2018-11-06 Intel Corporation Inter-architecture compatability module to allow code module of one architecture to use library module of another architecture

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI811560B (zh) * 2020-08-17 2023-08-11 宏碁股份有限公司 資源整合系統及資源整合方法
US11995471B2 (en) 2020-08-17 2024-05-28 Acer Incorporated Resource integration system and resource integration method
CN116894275A (zh) * 2023-09-08 2023-10-17 摩尔线程智能科技(北京)有限责任公司 页表的更新方法、服务器、图形处理器、芯片及存储介质
CN116894275B (zh) * 2023-09-08 2023-12-19 摩尔线程智能科技(北京)有限责任公司 页表的更新方法、服务器、图形处理器、芯片及存储介质

Also Published As

Publication number Publication date
WO2017107001A1 (en) 2017-06-29
US10853118B2 (en) 2020-12-01
US20180373556A1 (en) 2018-12-27
TWI742019B (zh) 2021-10-11

Similar Documents

Publication Publication Date Title
US11798125B2 (en) Apparatus and method for dynamic provisioning, quality of service, and prioritization in a graphics processor
US11768781B2 (en) Apparatus and method for memory management in a graphics processing environment
TWI742019B (zh) 用於針對圖像虛擬化之型樣驅動頁表追蹤之設備與方法
US11080213B2 (en) Apparatus and method for dynamic provisioning, quality of service, and scheduling in a graphics processor
TWI718210B (zh) 用於智慧型資源提供之設備、方法及系統
US10983821B2 (en) Apparatus and method for a hybrid layer of address mapping for a virtualized input/output (I/O) implementation
US20180293965A1 (en) Apparatus and method for remote display and content protection in a virtualized graphics processing environment
US10891237B2 (en) Apparatus and method for mediate pass through and shared memory page merge
US9619860B2 (en) Hybrid on-demand graphics translation table shadowing
US11341212B2 (en) Apparatus and method for protecting content in virtualized and graphics environments
US11281500B2 (en) Apparatus and method for cloud-based graphics validation
US20220188965A1 (en) Apparatus and method for scheduling graphics processing resources
US11436696B2 (en) Apparatus and method for provisioning virtualized multi-tile graphics processing hardware