TW202139130A - 用於具有動態量化網格的運動模糊的裝置及方法 - Google Patents
用於具有動態量化網格的運動模糊的裝置及方法 Download PDFInfo
- Publication number
- TW202139130A TW202139130A TW109144465A TW109144465A TW202139130A TW 202139130 A TW202139130 A TW 202139130A TW 109144465 A TW109144465 A TW 109144465A TW 109144465 A TW109144465 A TW 109144465A TW 202139130 A TW202139130 A TW 202139130A
- Authority
- TW
- Taiwan
- Prior art keywords
- bvh
- graphics
- child nodes
- motion
- logic
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/08—Volume rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/005—Tree description, e.g. octree, quadtree
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/254—Analysis of motion involving subtraction of images
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20172—Image enhancement details
- G06T2207/20201—Motion blur correction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/12—Bounding box
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Generation (AREA)
Abstract
一種用於處理運動模糊操作的裝置和方法。例如,圖形處理裝置的一個實施例包含:定界體階層(BVH)產生器,其用以基於輸入基元構建包含階層排列的定界體階層(BVH)節點的BVH,至少一個BVH節點包含一或多個子節點;以及運動模糊處理硬體邏輯,其用以基於所述至少一個BVH節點的所述一或多個子節點的運動值確定量化網格的運動值,並將所述子節點中之各者的線性邊界映射到所述量化網格。
Description
本發明總體上涉及圖形處理器領域。更具體地,本發明涉及一種用於實現具有動態量化網格的運動模糊的裝置及方法。
路徑追蹤是一種用於繪製真實感影像以在電影、動畫電影和專業顯像中產生特殊效果的現有技術。產生這些逼真的影像需要使用射線追蹤作為可見性查詢的工具來計算虛擬3D場景中光傳輸的實體模擬。這些可見性查詢的高性能實現要求在預處理階段在場景基元(通常為三角形)上構建3D階層。所述階層允許射線追蹤步驟快速確定射線與基元(三角形)之間的最接近交點。
運動模糊是動畫的真實感繪製中的重要功能,其中模擬了當相機快門打開時場景中物體移動的效果。模擬此效果會致使運動物體的定向模糊,從而使動畫在播放時顯得平滑。繪製運動模糊需要隨機採樣為評估的每個射線路徑的時間,以及許多這些路徑的平均提供所需的模糊效果。為了實現此技術,底層射線追蹤引擎必須能夠在相機快門間隔內的任意時間追蹤穿過場景的射線。這需要對用於射線追蹤的空間加速結構內的幾何物體的運動進行編碼。
與
在下面的描述中,出於解釋的目的,闡述了許多具體細節,以便提供對以下描述的本發明的實施例的透徹理解。然而,對於本領域的技術人員將顯而易見的是,可以在沒有這些具體細節中的一些的情況下實踐本發明的實施例。在其它情況下,以方塊圖形式顯示眾所皆知的結構和裝置,以避免使本發明的實施例的基本原理難以理解。
範例性圖形處理器架構和資料類型系統總覽
圖 1
是根據實施例的處理系統100的方塊圖。在各種實施例中,系統100包含一或多個處理器102和一或多個圖形處理器108,並且可以是單處理器桌上電腦系統、多處理器工作站系統或具有大量處理器102或處理器核心107的伺服器系統。在一實施例中,系統100是併入在系統單晶片(SoC)積體電路內的處理平台,以用於行動、手持或嵌入式裝置。
在一實施例中,系統100可以包含基於伺服器的遊戲平台、包含遊戲和媒體控制台的遊戲控制台、行動遊戲控制台、手持遊戲控制台或線上遊戲控制台,或與其結合。在某些實施例中,系統100是行動電話、智慧型手機、平板計算裝置或行動網際網路裝置。處理系統100還可以包含諸如智慧型手錶可穿戴裝置的可穿戴裝置、智慧型眼鏡裝置、擴增實境裝置、或虛擬實境(VR)裝置。在一些實施例中,處理系統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中的其它元件之間傳送通訊訊號(如位址、資料或控制訊號)。在一實施例中,介面匯流排110可以是處理器匯流排,如直接媒體介面(DMI)匯流排的版本。然而,處理器匯流排並不局限於DMI匯流排,而是可包括一或多個周邊設備元件互連匯流排(例如PCI、PCI Express)、記憶體匯流排或者其它類型的介面匯流排。在一實施例中,(一或多個)處理器102包括整合記憶體控制器116和平臺控制器集線器130。記憶體控制器116促進記憶體裝置與系統100的其它元件之間的通訊,而平臺控制器集線器(PCH)130經由區域I/O匯流排來提供到I/O裝置的連接。
記憶體裝置120可以是動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、相變記憶體裝置或者具有用作進程記憶體的適當效能的一些其它記憶體裝置。在一實施例中,記憶體裝置120能夠作為系統100的系統記憶體進行操作,以便儲存資料122和指令121以供一或多個處理器102運行應用程式或進程時使用。記憶體控制器116還與可選外部圖形處理器112耦接,外部圖形處理器112可與處理器102中的一或多個圖形處理器108進行通訊,以執行圖形和媒體操作。在一些實施例中,顯示裝置111可以連接到(一或多個)處理器102。顯示裝置111可以是內部顯示裝置(如同行動電子裝置或膝上型裝置中一樣)或者經由顯示介面(例如DisplayPort等)所附接的外部顯示裝置中的一或多個。在一實施例中,顯示裝置111可以是頭戴式顯示器(HMD),如供在虛擬實境(VR)應用或擴增實境(AR)應用中使用的立體顯示裝置。
在一些實施例中,平臺控制器集線器130使周邊設備能夠經由高速I/O匯流排來連接到記憶體裝置120和處理器102。I/O周邊設備包括但不限於音訊控制器146、網路控制器134、韌體介面128、無線收發器126、觸控感測器125、資料儲存裝置124(例如,硬碟驅動、快閃記憶體等)。資料儲存裝置124能夠經由儲存介面(例如SATA)或者經由周邊匯流排(如周邊設備元件互連匯流排(例如PCI、PCI Express))進行連接。觸控感測器125可以包括觸控螢幕感測器、壓力感測器或指紋感測器。無線收發器126可以是Wi-Fi收發器、藍牙收發器或者行動網路收發器,如3G、4G或長期演進(LTE)收發器。韌體介面128實現與系統韌體的通訊,並且可以是例如統一擴展韌體介面(UEFI)。網路控制器134能夠實現到有線網路的網路連接。在一些實施例中,高效能網路控制器(未顯示)與介面匯流排110耦接。在一實施例中,音訊控制器146是多通道高解析度音訊控制器。在一實施例中,系統100包括可選的舊有I/O控制器140,以用於將舊有(例如個人系統2(PS/2))裝置耦接到系統。平臺控制器集線器130還能夠連接到一或多個通用串列匯流排(USB)控制器142連接輸入裝置,如鍵盤和滑鼠143組合、相機144或者其它USB輸入裝置。
將會理解,所示系統100是範例性的而不是限制性的,也可使用不同地配置的其它類型的資料處理系統。例如,記憶體控制器116和平臺控制器集線器130的實例可整合到離散外部圖形處理器(如外部圖形處理器112)中。在一實施例中,平臺控制器集線器130和/或記憶體控制器1160可以在一或多個處理器102外部。例如,系統100可以包括外部記憶體控制器116和平臺控制器集線器130,其可配置為與(一或多個)處理器102進行通訊的系統晶片組內的記憶體控制器集線器和周邊控制器集線器。
圖 2
是處理器200的實施例的方塊圖,處理器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 express匯流排。系統代理核心210提供各種處理器元件的管理功能性。在一些實施例中,系統代理核心210包括一或多個整合記憶體控制器214,以管理對各種外部記憶體裝置(未顯示)的存取。
在一些實施例中,處理器核心202A-202N中的一或多個包括對同時多重線程的支援。在這種實施例中,系統代理核心210包括用於在多重線程處理期間協調和操作核心202A-202N的元件。系統代理核心210還可包括功率控制單元(PCU),其包括調節處理器核心202A-202N和圖形處理器208的功率狀態的邏輯和元件。
在一些實施例中,處理器200還包括圖形處理器208,以運行圖形處理操作。在一些實施例中,圖形處理器208與共享快取單元206的集合以及包括一或多個整合記憶體控制器214的系統代理核心210耦接。在一些實施例中,系統代理核心210還包括顯示控制器211,以便將圖形處理器輸出驅動到一或多個所耦接顯示器。在一些實施例中,顯示控制器211還可以是經由至少一個互連與圖形處理器所耦接的獨立模組,或者可整合在圖形處理器208內。
在一些實施例中,環狀互連單元212用來耦接處理器200的內部元件。但是可使用備選互連單元,如點對點互連、交換互連或者其它技術(包括本領域眾所周知的技術)。在一些實施例中,圖形處理器208經由I/O鏈路213與環狀互連212耦接。
範例性I/O鏈路213表示多種I/O互連的至少一個,包括封裝上I/O互連,其促進各種處理器元件與高效能嵌入式記憶體模組218(如eDRAM模組)之間的通訊。在一些實施例中,處理器核心202A-202N的每個和圖形處理器208將嵌入式記憶體模組218用作共享最終級快取。
在一些實施例中,處理器核心202A-202N是運行相同指令集架構的同質核心。在另一個實施例中,處理器核心202A-202N在指令集架構(ISA)態樣是異質的,其中處理器核心202A-202N的一或多個運行第一指令集,而其它核心的至少一個運行第一指令集的子集或者不同指令集。在一實施例中,處理器核心202A-202N在微架構態樣是異質的,其中具有相對較高功率消耗的一或多個核心與具有較低功率消耗的一或多個功率核心耦接。此外,處理器200能夠在一或多個晶片上或者作為具有所示元件以及其它元件的SoC積體電路來實現。
圖 3
是圖形處理器300的方塊圖,圖形處理器300可以是離散圖形處理單元,或者可以是與複數個處理核心整合的圖形處理器。在一些實施例中,圖形處理器經由到圖形處理器上的暫存器的記憶體映射I/O介面並且採用放入處理器記憶體的命令進行通訊。在一些實施例中,圖形處理器300包括存取記憶體的記憶體介面314。記憶體介面314可以是到區域記憶體、一或多個內部快取、一或多個共享外部快取和/或到系統記憶體的介面。
在一些實施例中,圖形處理器300還包括顯示控制器302,以便將顯示輸出資料驅動到顯示裝置320。顯示控制器302包括用於視訊或用戶介面元件的多層的顯示和組成的一或多個覆蓋平面的硬體。顯示裝置320可以是內部或外部顯示裝置。在一實施例中,顯示裝置320是頭戴式顯示裝置,如虛擬實境(VR)顯示裝置或擴增實境(AR)顯示裝置。在一些實施例中,圖形處理器300包括用於對媒體進行編碼、解碼或者向一或多個媒體編碼格式、從一或多個媒體編碼格式或在一或多個媒體編碼格式之間對媒體進行轉碼的視訊編解碼器引擎306,所述一或多個媒體編碼格式包括但不限於動態影像專家組(MPEG)格式(諸如MPEG-2)、高階視訊編碼(AVC)格式(諸如H.264/MPEG-4 AVC、以及電影&電視工程師協會(SMPTE)421M/VC-1和聯合影像專家組(JPEG)格式(諸如JPEG、以及動態JPEG(MJPEG)格式)。
在一些實施例中,圖形處理器300包括區塊影像轉換(block image transfer;BLIT)引擎304以執行二維(2D)光柵器(rasterizer)操作,包括,例如,位元邊界區塊轉換。然而,在一實施例中,2D圖形操作係使用圖形處理引擎(GPE)310的一或多個元件來執行。在一些實施例中,GPE 310為用於執行圖形操作(包括三維(3D)圖形操作及媒體操作)的計算引擎。
在一些實施例中,GPE 310包括用於執行3D操作(諸如使用作用於3D基元形狀(例如,矩形、三角形等等)之處理功能來繪製三維影像與場景)的3D管線312。3D管線312包括可程式化及固定功能元件,其執行元件內之各種任務及/或大量產生線程至3D/媒體子系統315。雖然3D管線312可被使用以執行媒體操作,GPE 310的實施例亦包括媒體管線316,其係被特定使用以執行媒體操作,如視訊後處理(post-processing)及影像加強。
在一些實施例中,媒體管線316包括固定功能或可程式化邏輯單元以執行一或多個專門的媒體操作,如視訊解碼加速、視訊去交錯(de-interlacing)、及視訊編碼加速(取代、或代表視訊編解碼器引擎306)。在一些實施例中,媒體管線316額外地包括以大量產生用於在3D/媒體子系統315上執行的線程大量產生單元。大量產生的線程執行對於在包括於3D/媒體子系統315中的一或多個圖形執行單元上的媒體操作的計算。
在一些實施例中,3D/媒體子系統315包括用於執行藉由3D管線312與媒體管線316而大量產生的線程之邏輯。在一實施例中,該等管線發送線程執行請求至3D/媒體子系統315,其包括用於仲裁(arbitrating)及配送各種請求至可用的線程執行資源的線程配送邏輯。執行資源包括圖形執行單元之陣列以處理3D與媒體線程。在一些實施例中,3D/媒體子系統315包括用於線程指令與資料之一或多個內部快取。在一些實施例中,子系統亦包括共用記憶體(包括暫存器與可定址記憶體)以共用在線程之間的資料並儲存輸出資料。
圖形處理引擎
圖 4
是根據一些實施例的圖形處理器的圖形處理引擎410的方塊圖。在一實施例中,圖形處理引擎(GPE)410是圖 3
所示GPE 310的一個版本。圖 4
中具有與本文中任何其它附圖的元件相同的元件符號(或名稱)的元件能夠根據與本文其它部分所述的方式相似的任何方式進行操作或者起作用,但不限於此。例如,顯示圖3的3D管線312和媒體管線316。媒體管線316在GPE 410的一些實施例中是可選的,並且可以沒有明確地包含在GPE 410中。例如並且在至少一個實施例中,獨立媒體和/或影像處理器係耦接到GPE 410。
在一些實施例中,GPE 410耦接到或者包括命令串流器403,其向3D管線312和/或媒體管線316提供命令流。在一些實施例中,命令串流器403耦接到記憶體,其可以是系統記憶體或者內部快取記憶體和共享快取記憶體中的一或多個。在一些實施例中,命令串流器403從記憶體接收命令,並且將命令發送給3D管線312和/或媒體管線316。命令是從環形緩衝器所獲取的指示,環形緩衝器儲存3D管線312和媒體管線316的命令。在一實施例中,環形緩衝器還可以包括儲存成批多個命令的批次命令緩衝器。3D管線312的命令還可以包括對記憶體中儲存的資料的參照,諸如但不限於3D管線312的頂點和幾何資料和/或媒體管線316的影像資料和記憶體物件。3D管線312和媒體管線316透過經由相應管線中的邏輯執行操作或者透過向圖形核心陣列414分派一或多個執行線程來處理命令和資料。在一實施例中,圖形核心陣列414包括一或多個圖形核心(例如(一或多個)圖形核心415A、(一或多個)圖形核心415B)方塊,每個方塊包括一或多個圖形核心。每個圖形核心包括圖形執行資源集合,其包括執行圖形和計算操作的通用和圖形特定執行邏輯以及固定功能紋理處理和/或機器學習和人工智慧加速邏輯。
在各個實施例中,3D管線312包括固定功能和可程式化邏輯,以透過處理指令並且將執行線程分派給圖形核心陣列414來處理一或多個著色器程式,諸如頂點著色器、幾何著色器、像素著色器、片段著色器、計算著色器或者其它著色器程式。圖形核心陣列414提供統一執行資源方塊,以供在處理這些著色器程式中使用。圖形核心陣列414的(一或多個)圖形核心415A-415B內的多用途執行邏輯(例如執行單元)包括對各種3D API著色器語言的支援,並且能夠運行與多個著色器關聯的多個同時執行線程。
在一些實施例中,圖形核心陣列414還包括執行邏輯,以執行媒體功能,諸如視訊和/或影像處理。在一實施例中,執行單元額外地包括通用邏輯,其可程式化以便除了圖形處理操作之外還執行平行通用計算操作。通用邏輯能夠與圖1的(一或多個)處理器核心107或者如圖2中的核心202A-202N內的通用邏輯平行地執行處理操作或者結合。
由圖形核心陣列414上運行的線程所產生的輸出資料能夠將資料輸出到統一返回緩衝器(unified return buffer;URB)418中的記憶體。URB 418能夠儲存多個線程的資料。在一些實施例中,URB 418可用來在圖形核心陣列414上運行的不同線程之間發送資料。在一些實施例中,URB 418還可用於圖形核心陣列與共享功能邏輯420內的固定功能邏輯上的線程之間的同步。
在一些實施例中,圖形核心陣列414是可縮放的,使得所述陣列包括可變數目的圖形核心,其各自具有基於GPE 410的目標功率和效能等級的可變數目的執行單元。在一實施例中,執行資源是動態可縮放的,使得執行資源可根據需要來啟用或禁用。
圖形核心陣列414耦接到共享功能邏輯420,其包括在圖形核心陣列中的圖形核心之間所共享的多個資源。共享功能邏輯420內的共享功能是硬體邏輯單元,其向圖形核心陣列414提供專用補充功能性。在各個實施例中,共享功能邏輯420包括但不限於取樣器421、數學邏輯422和線程間通訊(ITC)邏輯423。另外,一些實施例實現共享功能邏輯420內的一或多個快取425。
一種共享功能實現在對給定專用功能的需求不足以包含在圖形核心陣列414內的情況下。替代地,所述專用功能的單一例示被實現為共享功能邏輯420中的獨立實體並且在圖形核心陣列414內的執行資源之間共享。在圖形核心陣列414之間共享並且包含在圖形核心陣列414內的功能的準確集合跨實施例而改變。在一些實施例中,共享功能邏輯420內由圖形核心陣列414廣泛使用的特定共享功能可包含在圖形核心陣列414內的共享功能邏輯416內。在各個實施例中,圖形核心陣列414內的共享功能邏輯416可以包括共享功能邏輯420內的一些或全部邏輯。在一實施例中,共享功能邏輯420內的全部邏輯元件可在圖形核心陣列414的共享功能邏輯416內複製。在一實施例中,為了圖形核心陣列414內的共享功能邏輯416而未包含共享功能邏輯420。
圖 5
是根據本文描述的一些實施例的圖形處理器核心500的硬體邏輯的方塊圖。圖 5
中具有與本文中任何其它附圖的元件相同的元件符號(或名稱)的元件能夠根據與本文其它部分所述的方式相似的任何方式進行操作或者起作用,但不限於此。在一些實施例中,所示的圖形處理器核心500係包含在圖 4
的圖形核心陣列414內。圖形處理器核心500(有時稱為核心片)可以是模組化圖形處理器內的一或多個圖形核心。圖形處理器核心500是一個圖形核心片的範例,並且本文所述的圖形處理器可以基於目標功率和效能包絡包含多個圖形核心片。每個圖形處理器核心500可以包含與多個子核心501A-501F(也稱為子片)耦接的固定功能方塊530,其包含通用和固定功能邏輯的模組方塊。
在一些實施例中,固定功能方塊530包含幾何/固定功能管線536,其可以被圖形處理器核心500中的所有子核心共享,例如,在較低效能和/或較低功率的圖形處理器實現中。在各種實施例中,幾何/固定功能管線536包含3D固定功能管線(例如,如圖 3
和圖 4
中的3D管線312)、視訊前端單元、線程產生器和線程分派器以及統一返回緩衝器管理器,所述管理器管理統一返回緩衝器(諸如,圖 4
的統一返回緩衝器418)。
在一實施例中,固定功能方塊530還包含圖形SoC介面537、圖形微控制器538和媒體管線539。圖形SoC介面537提供系統單晶片積體電路中的圖形處理器核心500和其它處理器核心之間的介面。圖形微控制器538是可程式化的子處理器,其可配置成管理圖形處理器核心500的各種功能,包含線程分派、排程和搶占。媒體管線539(例如,圖 3
和圖 4
的媒體管線316)包含有助於對包含影像和視訊資料的多媒體資料進行解碼、編碼、預處理和/或後處理的邏輯。媒體管線539經由請求計算或取樣子核心501A-501F內的邏輯來實現媒體操作。
在一實施例中,SoC介面537致使圖形處理器核心500以與SoC內的通用應用處理器核心(例如,CPU)和/或其它元件進行通訊,包含諸如共享的最末級快取記憶體、系統RAM和/或嵌入在晶片或嵌入在封裝的DRAM記憶體的記憶體階層元件。SoC介面537還可以致使與SoC中的固定功能裝置(諸如相機成像管線)的通訊,並致使使用和/或實現可以在SoC中的圖形處理器核心500和CPU之間共享的全域記憶體原子。SoC介面537還可以實現用於圖形處理器核心500的電源管理控制,並啟用圖形核心500的時脈域和SoC中其它時脈域之間的介面。在一實施例中,SoC介面537致使從命令串流器和全域線程分派器接收命令緩衝器,所述命令串流器和全域線程分派器被配置成向圖形處理器內的一或多個圖形核心中之各者提供命令和指令。當要執行媒體操作時,可以將所述命令和指令分派到媒體管線539,或者當要執行圖形處理操作時,可以將所述命令和指令分派到幾何和固定功能管線(例如,幾何和固定功能管線536、幾何和固定功能管線514)。
圖形微控制器538可以被配置成執行用於圖形處理器核心500的各種排程和管理任務。在一實施例中,圖形微控制器538可以在子核心501A-501F內部的執行單元(EU)陣列502A-502F、504A-504F中的各種圖形平行引擎上執行圖形和/或計算工作負載排程。在此排程模型中,在包含圖形處理器核心500的SoC的CPU核心上執行的主機軟體可以提交多個圖形處理器門鈴(doorbells)之一的工作負載,其調用適當的圖形引擎上的排程操作。排程操作包含確定接下來要運行的工作負載,將工作負載提交給命令串流器、搶占引擎上正在運行的現有工作負載、監視工作負載的進度以及在工作負載完成時通知主機軟體。在一實施例中,圖形微控制器538還可以促進圖形處理器核心500的低功率或閒置狀態,提供圖形處理器核心500具有獨立於系統上的作業系統和/或圖形驅動器軟體跨低功率狀態轉換在圖形處理器核心500內部保存和恢復暫存器的能力。
圖形處理器核心500可具有大於或小於所示的子核心501A-501F,最多N
個模組化子核心。對於每組N
個子核心,圖形處理器核心500也可以包含共享的功能邏輯510、共享和/或快取記憶體512、幾何/固定功能管線514以及額外的固定功能邏輯516,以加速各種圖形和計算處理操作。共享的功能邏輯510可以包含與圖 4
的共享功能邏輯420相關的邏輯單元(例如,取樣器、數學和/或線程間通訊邏輯),其可以由圖形處理器核心500內部的每個N
個子核心共享。共享和/或快取記憶體512可以是圖形處理器核心500中的所述組N
個子核心501A-501F的最末級快取,並且還可以用作可由多個子核心存取的共享記憶體。幾何/固定功能管線514可以被包含來代替固定功能方塊530內的幾何/固定功能管線536並且可以包含相同或相似的邏輯單元。
在一實施例中,圖形處理器核心500包含額外的固定功能邏輯516,其可以包含供圖形處理器核心500使用的各種固定功能加速邏輯。在一實施例中,額外的固定功能邏輯516包含用於僅定位著色的額外的幾何管線。在僅定位著色中,存在兩個幾何管線、幾何/固定功能管線516、536內的完整幾何管線和剔除管線,其為額外的幾何管線,可以被包含在額外的固定功能邏輯516內。在一實施例中,剔除管線是完整幾何管線的修整版。完整管線和剔除管線可以執行同一應用程式的不同實例,每個實例具有單獨的上下文。僅定位著色可以隱藏丟棄三角形的長剔除運行,從而使著色在某些情況下可以更早完成。例如,在一實施例中,在額外的固定功能邏輯516內的剔除管線邏輯可以與主應用程式平行執行位置著色器,並且通常比完整管線更快地產生關鍵結果,因為剔除管線僅獲取和著色頂點的位置屬性,而無需對於訊框緩衝區執行像素的光柵化和繪製。剔除管線可以使用產生的臨界結果來計算所有三角形的可見性資訊,而無需考慮那些三角形是否被剔除。完整的管線(在這種實例中,其可以稱為重播管線)可以使用可見性資訊來跳過剔除的三角形,以僅著色最終傳遞到柵格化階段的可見三角形。
在一實施例中,額外的固定功能邏輯516還可以包含機器學習加速邏輯,諸如固定功能矩陣乘法邏輯,以供實現包含針對機器學習訓練或推理的最佳化。
在每個圖形子核心501A-501F中包含一組執行資源,其可用於響應於圖形管線、媒體管線或著色器程式的請求來執行圖形、媒體和計算操作。圖形子核心501A-501F包含多個EU陣列502A-502F、504A-504F、線程分派和線程間通訊(TD/IC)邏輯503A-503F、3D(例如,紋理)取樣器505A-505F、媒體取樣器506A-506F、著色器處理器507A-507F和共享區域記憶體(SLM)508A-508F。EU陣列502A-502F、504A-504F每個都包含多個執行單元,其為通用圖形處理單元,能夠為圖形、媒體或計算操作(包含圖形、媒體或計算著色器程式)提供服務,以執行浮點和整數/定點邏輯運算。TD/IC邏輯503A-503F對子核心內的執行單元執行區域線程分配和線程控制操作,並促進在子核心的執行單元上執行的線程之間的通訊。3D取樣器505A-505F可以將與紋理或其它3D圖形相關的資料讀取到記憶體中。3D取樣器可以根據配置的取樣狀態和與給定紋理關聯的紋理格式不同地讀取紋理資料。媒體取樣器506A-506F可以基於與媒體資料相關的類型和格式來執行類似的讀取操作。在一實施例中,每個圖形子核心501A-501F可以可替代地包含統一的3D和媒體取樣器。在每個子核心501A-501F中的執行單元上執行的線程可以利用在每個子核心內的共享區域記憶體508A-508F,以使在線程組中執行的線程能夠使用公用的晶載記憶體池執行。
執行單元
圖6A-6B顯示根據本文所述實施例包括圖形處理器核心中採用的處理元件陣列的線程執行邏輯600。圖6A-6B中具有與本文中任何其它附圖的元件相同的元件符號(或名稱)的元件能夠根據與本文其它部分所述的方式相似的任何方式進行操作或者起作用,但不限於此。圖 6A
顯示線程執行邏輯600的概述,其可以以圖5的每個子核心501A-501F顯示的硬體邏輯的變體。圖 6B
顯示執行單元的範例性內部細節。
如圖 6A
所示,在一些實施例中,線程執行邏輯600包括著色器處理器602、線程分派器604、指令快取606、包括多個執行單元608A-608N的可縮放執行單元陣列、取樣器610、資料快取612和資料埠614。在一實施例中,可縮放執行單元陣列能夠透過基於工作負載的計算需求啟用或禁用一或多個執行單元(例如執行單元608A、608B、608C、608D至608N-1和608N中的任一個)來動態縮放。在一實施例中,所包含元件經由互連結構(其鏈接到元件的每個)來互連。在一些實施例中,線程執行邏輯600包括透過指令快取606、資料埠614、取樣器610和執行單元608A-608N中的一或多個到記憶體(諸如系統記憶體或快取記憶體)的一或多個連接。在一些實施例中,每個執行單元(例如608A)是獨立可程式化通用計算單元,其能夠運行多個同時硬體線程,同時對每個線程平行地處理多個資料元件。在各種實施例中,執行單元608A-608N的陣列可縮放成包括任何數目的單獨執行單元。
在一些實施例中,執行單元608A-608N主要用來運行著色器程式。著色器處理器602能夠處理各種著色器程式,並且經由線程分派器604來分派與著色器程式關聯的執行線程。在一實施例中,線程分派器包括仲裁來自圖形和媒體管線的線程發起請求並且在執行單元608A-608N中的一或多個執行單元上例示所請求線程。例如,幾何管線能夠向線程執行邏輯分派頂點、鑲嵌或幾何著色器以供處理。在一些實施例中,線程分派器604還能夠處理來自運行著色器程式的運行時線程大量產生請求。
在一些實施例中,執行單元608A-608N支援指令集,其包括對許多標準3D圖形著色器指令的本機支援,使得來自圖形資料庫(例如Direct 3D和OpenGL)的著色器程式以最小轉化來運行。執行單元支援頂點和幾何處理(例如頂點程式、幾何程式、頂點著色器)、像素處理(例如像素著色器、片段著色器)和通用處理(例如計算和媒體著色器)。執行單元608A-608N的每個能夠進行多發佈單一指令多重資料(single instruction multiple data;SIMD)執行,並且多重線程操作在面對更高時間推遲記憶體存取中實現有效執行環境。每個執行單元中的每個硬體線程具有專用高頻寬暫存器檔案及關聯獨立線程狀態。執行是按時脈至管線的多重發出,能進行整數、單與雙精確度浮點操作、SIMD分支能力、邏輯操作、超越操作(transcendental operation)、與其他雜項操作。在等待來自記憶體或共享功能中的一個的資料時,執行單元608A-608N內的依賴邏輯使等待線程休眠,直到所請求的資料已返回。當等待線程正在休眠時,硬體資源可能會被專門用於處理其它線程。例如,在與頂點著色器操作相關聯的推遲期間,執行單元可以執行像素著色器、片段著色器或包括不同頂點著色器的另一類型的著色器程式的操作。
執行單元608A-608N中的每個執行單元對資料元件的陣列進行操作。資料元件的數目是「執行大小」、或用於指令的通道數目。執行通道是用於資料元件存取、掩蔽和指令內的流程控制的執行的邏輯單元。通道的數目可以與針對特定圖形處理器的實體算術邏輯單元(ALU)或浮點單元(FPU)的數目無關。在一些實施例中,執行單元608A-608N支援整數和浮點資料類型。
執行單元指令集包括SIMD指令。各種資料元件可被儲存為緊縮資料類型於暫存器中且執行單元將基於元件之資料大小來處理各種元件。例如,當操作於256位元寬的向量時,256位元的向量被儲存於暫存器中且執行單元操作為四個獨立64位元之緊縮資料元件(Quad-Word(QW)大小資料元件)、八個獨立32位元之緊縮資料元件(Double Word(DW)大小資料元件)、十六個獨立16位元之緊縮資料元件(Word(W)大小資料元件)、或三十二個獨立8位元資料元件(位元組(B)大小資料元件)之向量。然而,不同的向量寬度與暫存器大小是可能的。
在一實施例中,一或多個執行單元能夠結合為融合執行單元609A-609N,其具有融合EU共同的線程控制邏輯(607A-607N)。多個EU能夠融合為EU組。融合EU組中的每個EU能夠配置成運行獨立SIMD硬體線程。融合EU組中的EU的數目能夠根據實施例改變。另外,各種SIMD寬度能夠按EU執行,包括但不限於SIMD8、SIMD16和SIMD32。每個融合圖形執行單元609A-609N包括至少兩個執行單元。例如,融合執行單元609A包括第一EU 608A、第二EU 608B以及線程控制邏輯607A,其為第一EU 608A和第二EU 608B共同的。線程控制邏輯607A控制融合圖形執行單元609A上運行的線程,從而允許融合執行單元609A-609N內的每個EU使用共同指令指標暫存器運行。
一或多個內部指令快取(例如606)包含在線程執行邏輯600中,以快取執行單元的線程指令。在一些實施例中,包含一或多個資料快取(例如612),以便在線程執行期間快取線程資料。在一些實施例中,包含取樣器610,以提供3D操作的紋理取樣和媒體操作的媒體取樣。在一些實施例中,取樣器610包括專用紋理或媒體取樣功能性,以便在向執行單元提供取樣資料之前的取樣過程期間處理紋理或媒體資料。
在執行期間,圖形和媒體管線經由線程大量生產和分派邏輯向線程執行邏輯600發送線程發起請求。一旦一組幾何物件已經被處理並且光柵化為像素資料,調用著色器處理器602中的像素處理器邏輯(例如像素著色器邏輯、片段著色器邏輯等),以進一步計算輸出資訊,並且使結果被寫到輸出表面(例如顏色緩衝器、深度緩衝器、模板(stencil)緩衝器等)。在一些實施例中,像素著色器或片段著色器計算各種頂點屬性的值,其跨光柵化物件來內插。在一些實施例中,著色器處理器602中的像素處理器邏輯則運行應用程式化介面(application programming interface;API)提供的像素或片段著色器程式。為了運行著色器程式,著色器處理器602經由線程分派器604向執行單元(例如608A)分派線程。在一些實施例中,著色器處理器602使用取樣器610中的紋理取樣邏輯來存取記憶體中儲存的紋理圖中的紋理資料。對紋理資料和輸入幾何資料的算術運算計算每個幾何片段的像素顏色資料,或者丟棄一或多個像素以免進一步處理。
在一些實施例中,資料埠614提供一種記憶體存取機制,以使線程執行邏輯600向記憶體輸出經處理資料以在圖形處理器輸出管線上進一步處理。在一些實施例中,資料埠614包括或者耦接到一或多個快取記憶體(例如資料快取612),以經由資料埠來快取用於記憶體存取的資料。
如圖 6B
所顯示,圖形執行單元608可以包括指令提取單元637、一般暫存器檔案陣列(GRF)624、架構暫存器檔案陣列(ARF)626、線程仲裁器622、發送單元630、分支單元632、SIMD浮點單元(FPU)634的集合,以及一個實施例中的專用整數SIMD ALU 635的集合。GRF 624和ARF 626包括與每個同時硬體線程(其在圖形執行單元608中可以是活動的)關聯的一般暫存器檔案和架構暫存器檔案的集合。在一實施例中,每線程架構狀態保持在ARF 626中,而線程執行期間所使用的資料儲存在GRF 624中。每個線程(包括每個線程的指令指標)的執行狀態能夠保存在ARF 626中的線程特定暫存器中。
在一實施例中,圖形執行單元608具有一種架構,其為同時多重線程(SMT)和細粒度交織多重線程(IMT)的組合。所述架構具有模組化配置,其能夠在設計時間基於同時線程的目標數目和每執行單元的暫存器的數目來微調,其中執行單元資源跨用來運行多個同時線程的邏輯來劃分。
在一實施例中,圖形執行單元608能夠共同發出多個指令,其各自可以是不同指令。圖形執行單元線程608的線程仲裁器622能夠將指令分派給發送單元630、分支單元642或者(一或多個)SIMD FPU 634其中之一以供執行。每個執行線程能夠存取GRF 624內的128個通用暫存器,其中每個暫存器能夠儲存作為32位元資料元件的SIMD 8元件向量可存取的32個位元組。在一實施例中,每個執行單元線程有權存取GRF 624內的4 Kbyte,但是實施例並不局限於此,以及在其它實施例中可提供更多或更少暫存器資源。在一實施例中,高達七個線程可以同時執行,但是每執行單元的線程的數目也可根據實施例而變化。在七個線程可存取4 Kbyte的實施例中,GRF 624能夠儲存總共28 Kbyte。靈活的定址模式能夠允許暫存器被共同定址,以有效地構建更寬暫存器或者表示跨步矩形方塊(strided rectangular block)資料結構。
在一實施例中,記憶體操作、取樣器操作和其它較長時間推遲系統通訊經由「發送」指令(其由訊息傳遞發送單元630所運行)來分派。在一實施例中,分支指令被分派給專用分支單元632,以促進SIMD發散和最終收斂。
在一實施例中,圖形執行單元608包括一或多個SIMD浮點單元(FPU)634,以執行浮點運算。在一實施例中,(一或多個)FPU 634還支援整數計算。在一實施例中,(一或多個)FPU 634能夠SIMD運行高達M個32位元浮點(或整數)運算,或者SIMD運行高達2M個16位元整數或16位元浮點運算。在一實施例中,(一或多個)FPU的至少一個提供擴展數學能力,以支援高產出量超越數學函數和雙精確度64位元浮點。在一些實施例中,8位元整數SIMD ALU 635的集合也存在,並且可具體最佳化以執行與機器學習計算關聯的操作。
在一實施例中,圖形執行單元608的多個實例的陣列能夠在圖形子核心編組(例如子片)中例示。為了可縮放性,產品架構師能夠選擇每子核心編組的執行單元的準確數目。在一實施例中,執行單元608能夠跨多個執行通道來運行指令。在另一實施例中,圖形執行單元608上運行的每個線程在不同通道上運行。
圖 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 720和src1 722以及一個目的地718。在一些實施例中,執行單元支援雙目的地指令,其中暗示目的地之一。資料操縱指令能夠具有第三來源運算元(例如SRC2 724),其中指令運算碼712確定來源運算元的數目。指令的最後一個來源運算元可以是隨指令而傳遞的立即(例如硬編碼)值。
在一些實施例中,128位元指令格式710包括存取/位址模式欄位726,其指定例如是使用直接暫存器定址模式還是間接暫存器定址模式。當使用直接暫存器定址模式時,一或多個運算元的暫存器位址透過指令中的位元直接提供。
在一些實施例中,128位元指令格式710包括存取/位址模式欄位726,其指定指令的位址模式和/或存取模式。在一實施例中,存取模式用來定義指令的資料存取對齊。一些實施例支援包括16位元組對齊存取模式和1位元組對齊存取模式的存取模式,其中存取模式的位元組對齊確定指令運算元的存取對齊。例如,當處於第一模式時,指令可將位元組對齊定址用於來源和目的地運算元,而當處於第二模式時,指令可將16位元組對齊定址用於所有來源和目的地運算元。
在一實施例中,存取/位址模式欄位726的位址模式部分確定指令是使用直接還是間接定址。當使用直接暫存器定址模式時,指令中的位元直接提供一或多個運算元的暫存器位址。當使用間接暫存器定址模式時,一或多個運算元的暫存器位址可基於指令中的位址暫存器值和位址立即欄位來計算。
在一些實施例中,指令基於運算碼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,其對每個頂點執行座標空間變換和照明操作。在一些實施例中,頂點提取器805和頂點著色器807透過經由線程分派器831向執行單元852A-852B分派執行線程來運行頂點處理指令。
在一些實施例中,執行單元852A-852B是向量處理器陣列,其具有用於執行圖形和媒體操作的指令集。在一些實施例中,執行單元852A-852B具有附接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及關聯邏輯單元(例如L1快取851、取樣器854、紋理快取858等)經由資料埠856來互連,以執行記憶體存取,並且與處理器的繪製輸出管線元件進行通訊。在一些實施例中,取樣器854、快取851和858以及執行單元852A-852B各自具有獨立記憶體存取通路。在一實施例中,紋理快取858還能夠配置為取樣器快取。
在一些實施例中,繪製輸出管線870包含光柵器和深度測試元件873,其將基於頂點的物件轉換為關聯的基於像素的表示。在一些實施例中,光柵器邏輯包括加窗器/掩蔽器單元,以執行固定功能三角和線條光柵化。關聯繪製快取878和深度快取879在一些實施例中也是可用的。像素操作元件877對資料執行基於像素的操作,但是在一些實例中,與2D操作關聯的像素操作(例如採用混合的位塊影像傳輸)由2D引擎841來執行,或者由顯示控制器843使用覆蓋顯示平面在顯示時間來替代。在一些實施例中,共享L3快取875是全部圖形元件可用的,從而允許資料的共享,而無需使用主系統記憶體。
在一些實施例中,圖形處理器媒體管線830包括媒體引擎837和視訊前端834。在一些實施例中,視訊前端834從命令串流器803接收管線命令。在一些實施例中,媒體管線830包括獨立命令串流器。在一些實施例中,視訊前端834在將命令發送給媒體引擎837之前處理媒體命令。在一些實施例中,媒體引擎837包括線程產生功能,以產生線程用於經由線程分派器831分派給線程執行邏輯850。
在一些實施例中,圖形處理器800包括顯示引擎840。在一些實施例中,顯示引擎840是處理器800外部的,並且經由環狀互連802或者另外某種互連匯流排或結構與圖形處理器耦接。在一些實施例中,顯示引擎840包括2D引擎841和顯示控制器843。在一些實施例中,顯示引擎840包含專用邏輯,其能夠與3D管線無關地操作。在一些實施例中,顯示控制器843與顯示裝置(未顯示)耦接,顯示裝置可以是如同膝上型電腦中一樣的系統整合顯示裝置或者是經由顯示裝置連接器所附接的外部顯示裝置。
在一些實施例中,幾何管線820和媒體管線830可配置成基於多個圖形和媒體程式化介面來執行操作,而不是特定於任何一個應用程式化介面(API)。在一些實施例中,用於圖形處理器的驅動軟體將特定於特定圖形或媒體庫的API調用轉換成可以由圖形處理器處理的命令。在一些實施例中,為都來自Khronos Group的開放圖形庫(OpenGL)、開放計算語言(OpenCL)和/或Vulkan圖形和計算API提供支援。在一些實施例中,也可以為來自微軟公司的Direct3D庫提供支援。在一些實施例中,可以支援這些庫的組合。還可以為開源電腦視覺庫(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命令或事件來觸發。在一些實施例中,暫存器寫入觸發命令執行。在一些實施例中,執行經由命令序列中的「go」或「kick」命令來觸發。在一實施例中,使用管線同步命令來觸發命令執行,以便經過圖形管線來清除命令序列。3D管線將執行3D基元的幾何處理。一旦操作完成,所產生幾何物件經過光柵化,並且像素引擎對所產生像素著色。還可為那些操作包含控制像素著色和像素後端操作的附加命令。
在一些實施例中,圖形處理器命令序列910在執行媒體操作時沿用媒體管線924通路。一般來說,媒體管線924的程式化的特定使用和方式取決於待執行的媒體或計算操作。特定媒體解碼操作可在媒體解碼期間卸載到媒體管線。在一些實施例中,還能夠繞過媒體管線,並且媒體解碼能夠完全或部分使用一或多個通用處理核心所提供的資源來執行。在一實施例中,媒體管線還包括用於通用圖形處理器單元(GPGPU)操作的元件,其中圖形處理器用來使用計算著色器程式(其不是與圖形基元的繪製明確地相關的)來執行SIMD向量操作。
在一些實施例中,媒體管線924根據與3D管線922相似的方式來配置。配置媒體管線狀態940的命令集合在媒體物件命令942之前被分派或放入命令佇列中。在一些實施例中,媒體管線狀態940的命令包括配置媒體管線元件(其將用來處理媒體物件)的資料。這包括配置媒體管線中的視訊解碼和視訊編碼邏輯的資料,例如編碼或解碼格式。在一些實施例中,媒體管線狀態940的命令還支援使用到包含一批狀態設定的“間接”狀態元件的一或多個指標。
在一些實施例中,媒體物件命令942提供到媒體物件的指標以供媒體管線處理。媒體物件包括記憶體緩衝器,其包含待處理視訊資料。在一些實施例中,所有媒體管線狀態在發出媒體物件命令942之前必須是有效的。一旦配置管線狀態並且將媒體物件命令942進入佇列,則媒體管線924經由運行命令944或者等效運行事件(例如暫存器寫入)來觸發。來自媒體管線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® Windows®作業系統、專有類UNIX作業系統或者使用Linux內核的變體的開源類UNIX作業系統。作業系統1020能夠支援圖形API 1022,例如Direct3D API、OpenGL API或者Vulkan API。當Direct3D API被使用時,作業系統1020使用前端著色器編譯器1024來將HLSL的任何著色器指令1012編譯為低階著色器語言。編譯可以是適時(JIT)編譯,或者應用能夠執行著色器預編譯。在一些實施例中,在3D圖形應用程式1010的編譯期間將高階著色器編譯為低階著色器。在一些實施例中,著色器指令1012採用中間形式(例如Vulkan API所使用的標準可攜式中間表示(SPIR)的一個版本)來提供。
在一些實施例中,用戶模式圖形驅動器1026包含後端著色器編譯器1027,以便將著色器指令1012轉換為硬體特定表示。當OpenGL API被使用時,GLSL高階語言中的著色器指令1012被傳遞給用戶模式圖形驅動器1026以供編譯。在一些實施例中,用戶模式圖形驅動器1026使用作業系統內核模式功能1028與內核模式圖形驅動器1029進行通訊。在一些實施例中,內核模式圖形驅動器1029與圖形處理器1032進行通訊,以分派命令和指令。
IP
核心實現
至少一個實施例的一或多個態樣可透過機器可讀取媒體上儲存的代表代碼來實現,其表示和/或定義積體電路(例如處理器)中的邏輯。例如,機器可讀取媒體可包括表示處理器中的各種邏輯的指令。在由機器讀取時,指令可使所述機器製作執行本文所述技術的邏輯。這類表示(稱作「IP核心」)是積體電路的邏輯的可再用單元,其可作為描述積體電路的結構的硬體模型來儲存在有形機器可讀取媒體上。硬體模型可提供給各種客戶或製造機構,其將硬體模型載入到製造積體電路的製作機器上。可製作積體電路,使得電路執行與本文所述實施例的任一個關聯描述的操作。
圖 11A
是顯示根據實施例,可用來製造執行操作的積體電路的IP核心開發系統1100的方塊圖。IP核心開發系統1100可用來產生模組化可再用設計,其能夠結合到較大設計中或者用來構成整個積體電路(例如SOC積體電路)。設計機構1130能夠採用高階程式化語言(例如C/C++)來產生IP核心設計的軟體模擬1110。軟體模擬1110能夠用來使用模擬模型1112來設計、測試和檢驗IP核心的行為。模擬模型1112可包括功能、行為和/或時序模擬。暫存器傳輸級(RTL)設計1115接著能夠從模擬模型1112來建立或合成。RTL設計1115是積體電路的行為的抽象,其對硬體暫存器之間的數位訊號的流程進行模組化,其中包括使用模組化數位訊號所執行的關聯邏輯。除了RTL設計1115之外,還可建立、設計或合成在邏輯級或電晶體級的低階設計。因此,初始設計和模擬的具體細節可改變。
RTL設計1115或者等效體可由設計機構進一步合成到硬體模型1120(其可透過硬體描述語言(HDL)或者實體設計資料的另外某種表示)中。還可模擬或測試HDL,以檢驗IP核心設計。能夠儲存IP核心設計,以供使用非揮發性記憶體1140(例如硬碟、快閃記憶體或者任何非揮發性儲存媒體)傳遞給第三方製作機構1165。備選地,IP核心設計可透過有線連接1150或無線連接1160來傳送(例如經由網際網路)。製作機構1165接著製作至少部分基於IP核心設計的積體電路。所製作的積體電路能夠配置成執行根據本文所述至少一個實施例的操作。
圖 11B
顯示根據本文所述的一些實施例的積體電路封裝組件1170的截面側視圖。積體電路封裝組件1170顯示如本文所述的一或多個處理器或加速器裝置的實現。封裝組件1170包括連接到基板1180的硬體邏輯1172、1174的多個單元。邏輯1172、1174可至少部分採用可配置邏輯或固定功能性邏輯硬體來實現,並且可以包括(一或多個)處理器核心、(一或多個)圖形處理器或者本文所述的其它加速器裝置中的任一者的一或多個部分。邏輯1172、1174的每個單元能夠在半導體晶粒內實現,並且經由互連結構1173與基板1180耦接。互連結構1173可配置成在邏輯1172、1174與基板1180之間路由電訊號,並且可以包括諸如但不限於凸塊或柱之類的互連。在一些實施例中,互連結構1173可配置成路由與邏輯1172、1174的操作關聯的電訊號,諸如例如輸入/輸出(I/O)訊號和/或功率或接地訊號。在一些實施例中,基板1180是基於環氧樹脂的層壓基板。在其它實施例中,封裝基板1180可包括其它適當類型的基板。封裝組件1170能夠經由封裝互連1183來連接到其它電氣裝置。封裝互連1183可耦接到基板1180的表面,以便將電訊號路由到其它電氣裝置,例如主板、另一晶片組或者多晶片模組。
在一些實施例中,邏輯1172、1174的單元與橋接器1182電耦接,橋接器1182配置成在邏輯1172、1174之間路由電訊號。橋接器1182可以是密集互連結構,其提供電訊號的路由。橋接器1182可包括由玻璃或適當半導體材料所組成的橋接器基板。電氣佈線特徵能夠在橋接器基板上形成,以提供邏輯1172、1174之間的晶片對晶片連接。
雖然顯示邏輯1172、1174的兩個單元和橋接器1182,但是本文所述的實施例可包括一或多個晶粒上的更多或更少邏輯單元。一或多個晶粒可透過零或多個橋接器來連接,因為當邏輯包含在單一晶粒上時,可以不包含橋接器1182。備選地,邏輯的多個晶粒或單元能夠透過一或多個橋接器來連接。另外,多個邏輯單元、晶粒和橋接器能夠根據其它可能配置(包括三維配置)共同連接。
晶片積體電路上的範例性系統
圖12-14顯示根據本文所述的各種實施例,可使用一或多個IP核心來製作的範例性積體電路及關聯圖形處理器。除了所示的之外,還可包含其它邏輯和電路,其中包括附加圖形處理器/核心、周邊介面控制器或者通用處理器核心。
圖 12
是顯示根據實施例,可使用一或多個IP核心來製作的範例性系統單晶片積體電路1200的方塊圖。範例性積體電路1200包括一或多個應用處理器1205(例如CPU)、至少一個圖形處理器1210,並且還可包括影像處理器1215和/或視訊處理器1220,其任一個可以是來自相同或者多個不同設計機構的模組化IP核心。積體電路1200包括周邊或匯流排邏輯,包括USB控制器1225、UART控制器1230、SPI/SDIO控制器1235和I2
S/I2
C控制器1240。另外,積體電路可以包括耦接到高解析度多媒體介面(HDMI)控制器1250與行動產業處理器介面(mobile industry processor interface;MIPI)顯示介面1255中之一或多者的顯示裝置1245。儲存裝置可由快閃記憶體子系統1260(包括快閃記憶體和快閃記憶體控制器)來提供。記憶體介面可經由記憶體控制器1265來提供,以供存取SDRAM或SRAM記憶體裝置。一些積體電路還包括嵌入式安全引擎1270。
圖 13A-13B
是顯示根據本文所述實施例,供SoC內使用的範例性圖形處理器的方塊圖。圖 13A
顯示根據實施例,可使用一或多個IP核心來製作的系統單晶片積體電路的範例性圖形處理器1310。圖 13B
顯示根據實施例,可使用一或多個IP核心來製作的系統單晶片積體電路的附加範例性圖形處理器1340。圖 13A
的圖形處理器1310是低功率圖形處理器核心的範例。圖 13B
的圖形處理器1340是較高效能圖形處理器核心的範例。圖形處理器1310、1340的每個可以是圖 12
的圖形處理器1210的變體。
如圖 13A
所示,圖形處理器1310包括頂點處理器1305和一或多個片段處理器1315A-1315N(例如1315A、1315B、1315C、1315D至1315N-1和1315N)。圖形處理器1310能夠經由獨立邏輯來運行不同著色器程式,使得頂點處理器1305被最佳化以運行頂點著色器程式的操作,而一或多個片段處理器1315A-1315N運行片段或像素著色器程式的片段(例如像素)著色操作。頂點處理器1305執行3D圖形管線的頂點處理級,並且產生基元和頂點資料。(一或多個)片段處理器1315A-1315N使用頂點處理器1305所產生的基元和頂點資料來產生訊框緩衝器,其在顯示裝置上顯示。在一實施例中,(一或多個)片段處理器1315A-1315N被最佳化以運行如在OpenGL API中所提供的片段著色器程式,其可用來執行與如在Direct 3D API所提供的像素著色器程式相似的操作。
圖形處理器1310還包括一或多個記憶體管理單元(MMU)1320A-1320B、(一或多個)快取1325A-1325B和(一或多個)電路互連1330A-1330B。所述一或多個MMU1320A-1320B為圖形處理器1310,包括為頂點處理器1305和/或(一或多個)片段處理器1315A-1315N,提供虛擬到實體位址映射,所述虛擬到實體位址映射除了儲存在所述一或多個快取1325A-1325B中的頂點或影像/紋理資料之外還可以參照儲存在記憶體中的頂點或影像/紋理資料。在一實施例中,所述一或多個MMU 1320A-1320B可以與系統內的其它MMU同步,所述其它MMU包括與圖 12
的所述一或多個應用處理器1205、影像處理器1215和/或視訊處理器1220相關聯的一或多個MMU,使得每個處理器1205-1220可以參與共享或統一的虛擬記憶體系統。根據實施例,所述一或多個電路互連1330A-1330B使得圖形處理器1310能夠經由SoC的內部匯流排或經由直接連接與SoC內的其它IP核心對接。
如圖 13B
所示,圖形處理器1340包括圖 13A
的圖形處理器1310的一或多個MMU 1320A-1320B、快取1325A-1325B和電路互連1330A-1330B。圖形處理器1340包括一或多個著色器核心1355A-1355N(例如1355A、1355B、1355C、1355D、1355E、1355F至1355N-1和1355N),其提供統一著色器核心架構,其中單一核心或者類型或核心能夠運行所有類型的可程式化著色器代碼、包括著色器程式代碼,以實現頂點著色器、片段著色器和/或計算著色器。存在的著色器核心的準確數目能夠在實施例和實現之間改變。另外,圖形處理器1340包括核間任務管理器1345,其充當向一或多個著色器核心1355A-1355N分派執行線程的線程分派器以及加速基於切片的繪製的平鋪操作的平鋪單元1358,其中場景的繪製操作在影像空間中細分,例如以利用場景中的區域空間一致性或者最佳化內部快取的使用。
圖 14A-14B
顯示按照本文所述實施例的額外的示範性圖形處理器邏輯。圖 14A
顯示圖形核心1400,其可包含在圖 12
的圖形處理器1210內,並且可以是如同圖 13B
中的統一著色器核心1355A-1355N。圖 14B
顯示額外的高度平行的通用圖形處理單元1430,其為適合於多晶片模組上的部署的高度平行通用圖形處理單元。
如圖 14A
所示,圖形核心1400包括共享指令快取1402、紋理單元1418和快取/共享記憶體1420,其對於圖形核心1400內的執行資源是共同的。圖形核心1400能夠包括多個片1401A-1401N或者每個核心的分區,以及圖形處理器能夠包括圖形核心1400的多個實例。片1401A-1401N能夠包括支援邏輯,其包括區域指令快取1404A-1404N、線程排程器1406A-1406N、線程分派器1408A-1408N以及暫存器1410A-1440N的集合。為了執行邏輯運算,片1401A-1401N能夠包括附加功能單元(AFU 1412A-1412N)、浮點單元(FPU 1414A-1414N)、整數算術邏輯單元(ALU 1416-1416N)、位址計算單元(ACU 1413A-1413N)、雙精確度浮點單元(DPFPU 1415A-1415N)和矩陣處理單元(MPU 1417A-1417N)的集合。
計算單元中的一些計算單元以特定精確度進行操作。例如,FPU 1414A-1414N能夠執行單精確度(32位元)和半精確度(16位元)浮點運算,而DPFPU 1415A-1415N執行雙精確度(64位元)浮點運算。ALU 1416A-1416N能夠執行8位元、16位元和32位元精確度的可變精確度整數運算,並且能夠配置用於混合精確度運算。MPU 1417A-1417N也能夠配置用於混合精確度矩陣運算,包括半精確度浮點和8位元整數運算。MPU 1417-1417N能夠執行多種矩陣運算,以加速機器學習應用框架,包括實現對加速一般矩陣對矩陣乘法(GEMM)的支援。AFU 1412A-1412N能夠執行浮點或整數單元不支援的附加邏輯運算,包括三角運算(例如正弦、餘弦等)。
如圖 14B
所示,通用處理單元(GPGPU)1430能夠配置成使高度平行計算操作能夠由圖形處理單元陣列來執行。另外,GPGPU 1430能夠直接鏈接到GPGPU的其他實例,以建立多GPU叢集,以改進特定深度神經網路的訓練速度。GPGPU 1430包括主介面1432,以實現與主處理器的連接。在一個實施例中,主介面1432是PCI Express介面。然而,主介面也能夠是供應方特定通訊介面或通訊結構。GPGPU 1430接收來自主處理器的命令,並且使用全域排程器1434向計算叢集1436A-1436H的集合來分發與那些命令關聯的執行線程。計算叢集1436A-1436H共享快取記憶體1438。快取記憶體1438能夠用作計算叢集1436A-1436H內的快取記憶體的高階快取。
GPGPU 1430包括記憶體1434A-1434B,其經由記憶體控制器1442A-1442B的集合與計算叢集1436A-1436H耦接。在各種實施例中,記憶體1434A-1434B能夠包括各種類型的記憶體裝置,包括動態隨機存取記憶體(DRAM)或者圖形隨機存取記憶體,諸如同步圖形隨機存取記憶體(SGRAM)(包括圖形雙倍資料速率(GDDR)記憶體)。
在一個實施例中,計算叢集1436A-1436H各自包括圖形核的集合,諸如圖14A的圖形核心1400,其能夠包括多種類型的整數和浮點邏輯單元(其能夠在包括適合機器學習計算的精確度的範圍來執行計算操作)。例如並且在一個實施例中,計算叢集1436A-1436H的每個中的浮點單元的至少一個子集能夠配置成執行16位元或32位元浮點運算,而浮點單元的不同子集能夠配置成執行64位元浮點運算。
GPGPU 1430的多個實例能夠配置成作為計算叢集進行操作。由計算叢集用於同步和資料交換的通訊機制跨實施例而改變。在一個實施例中,GPGPU 1430的多個實例透過主介面1432進行通訊。在一個實施例中,GPGPU 1430包括I/O集線器1439,其將GPGPU 1430與GPU鏈路1440(其實現到GPGPU的其他實例的直接連接)耦接。在一個實施例中,GPU鏈路1440耦接到專用GPU到GPU橋接器,其實現GPGPU 1430的多個實例之間的通訊和同步。在一個實施例中,GPU鏈路1440與高速互連耦接,以便對其他GPGPU或平行處理器傳送和接收資料。在一個實施例中,GPGPU 1430的多個實例位於獨立資料處理系統中,並且經由網路裝置(其為經由主介面1432可存取的)進行通訊。在一個實施例中,GPU鏈路1440能夠配置成實現到主處理器的連接,作為到主介面1432的連接的補充或替代。
雖然GPGPU 1430的所示配置能夠配置成訓練神經網路,但是一個實施例提供GPGPU 1430的備選配置,其能夠配置用於高性能或低功率推理平臺內的部署。在推理配置中,GPGPU 1430包括相對於訓練配置更少的計算叢集1436A-1436H。另外,與記憶體1434A-1434B關聯的記憶體技術在推理和訓練配置之間可有所不同,其中較高頻寬記憶體技術專用於訓練配置。在一個實施例中,GPGPU 1430的推理配置能夠支援推理特定指令。例如,推理配置能夠提供對一或多個8位元整數點積指令(其通常在所部署神經網路的推理操作期間使用)的支援。
用於定界體階層(BVH)壓縮的裝置及方法
N寬定界體階層(BVH)節點包含與給定節點的N個子相對應的N個定界體。除了定界體之外,還包含對每個子節點的參照作為索引或指標。可以分配索引或指標的一個位元來指示所述節點是否為內部節點或葉節點。軸對齊的定界體(AABV)或軸對齊的定界框(AABB)是一種常用的定界體格式,尤其是用於射線追蹤。只能用每個維度中的最小和最大範圍來定義AABB,從而提供有效的射線相交測試。
通常,AABB使用單精確度(例如4位元組)浮點值以未壓縮格式儲存。為了定義未壓縮的三維AABB,對三個軸中的每個軸使用兩個單精確度浮點值(最小/最大)(例如2x3x4),導致24個位元組來儲存AAAB的範圍以及指向子節點的索引或指標(例如4位元組整數或8位元組指標)。因此,為BVH節點定義的每個AABB可以高達32位元組。因此,具有子的二進制BVH節點可能需要64個位元組、4寬BVH節點可能需要128位元組,而8寬BVH可能需要多達256個位元組。
使用沿k方向(k-DOP)的離散定向多面體的定向定界框也是可與本文所述實施例一起使用的常用定界體格式。對於k-DOP,為多個任意方向儲存下和上限。與AABB相比,k-DOP不僅限於座標軸方向上的邊界,還可以在空間中任意數目的方向上約束幾何。
為了減少使用定界體階層(BVH)的記憶體大小需求,可以用壓縮格式儲存BVH資料。例如,每個AABB可以用相對於AABB的父級的階層式壓縮格式儲存。然而,當在射線遍歷期間將BVH節點參照推到堆疊上時,階層編碼可能會致使射線追蹤實現中的問題。稍後取消參照時,將遵循到根節點的路徑來計算最終的AABB,從而可能致使較長的依賴鏈。另一種解決方案是將當前的AABB儲存在堆疊上,這需要大量的堆疊記憶體來儲存額外資料,因為每條射線的堆疊深度通常在40到60個條目之間。
本文描述的實施例提供了一種用於以簡單和有效的方式壓縮BVH節點的裝置、系統、方法和各種邏輯程序,而無需參照父節點或額外的堆疊儲存空間來解壓縮節點的子邊界,顯著地降低了實現射線追蹤加速硬體的複雜度。
在一個實施例中,為了減少記憶體需求,透過儲存具有絕對座標和全(例如浮點)精確度的父定界框,相對於所有子的合併框,對N寬BVH節點的N個子定界框進行編碼,而子定界框相對於父定界框以較低的精確度儲存。
與儲存所有子的全精確度定界框的傳統方法相比,本文描述的方法減少了記憶體儲存和頻寬需求。每個節點可以與其它節點分開地解壓縮。因此,遍歷期間不會將完整的定界框儲存在堆疊上,並且不會重新遍歷從樹的根開始的整個路徑,以在彈出操作中將節點解壓縮。此外,可以用降低的精確度執行射線節點相交測試,從而降低了算術硬體單元內所需的複雜度。
定界體和射線框相交測試
圖 15
是根據實施例的定界體1502的圖示。顯示的定界體1502是與三維軸1500對準的軸。然而,實施例適用於不同的包圍表示(例如,定向的定界框、離散的定向多面體、球體等)以及任意數目的維度。定界體1502定義了沿軸的每個維度的三維物件1504的最小和最大範圍。為了產生場景的BVH,為場景中的物件集合中的每個物件構建一個定界框。接著可以圍繞為每個物件構建的定界框的群組構建一組父定界框。
圖 16A-B
顯示二維物件的定界體階層的表示。圖16A顯示圍繞一組幾何物件的一組定界體1600。圖16B顯示圖16A的定界體1600的有序樹1602。
如圖 16A
所示,定界體1600的集合包含根定界體N1
,其為所有其它定界體N2
-N7
的父定界體。定界體N2
和N3
是根體N1
和葉體N4
-N7
之間的內部定界體。葉體N4
-N7
包含用於場景的幾何物件O1
-O8
。
圖 16B
顯示定界體N1
-N7
和幾何物件O1
-O8
的有序樹1602。所示的有序樹1602是二元樹,其中所述樹的每個節點具有兩個子節點。配置成包含每個節點的資訊的資料結構可以包含所述節點的定界體(例如定界框)的定界資訊,以及至少對所述節點的每個子節點的節點的參照。
定界體的有序樹1602表示定義了各種操作的階層版本,其包含但不限於碰撞檢測和射線框相交。在射線框相交的實例中,可以從根節點N1
開始對節點以階層的方式進行測試,根節點N1
是階層中所有其它定界體節點的父節點。如果對根節點N1
的射線框相交測試失敗,則樹的所有其它節點可能會被繞過。如果針對根節點N1
的射線框相交測試通過,則可以對樹的子樹進行測試並以有序方式遍歷或繞過,直到至少確定相交的葉節點N4
-N7
的集合為止。所使用的精確測試和遍歷演算法可以根據實施例而變化。
圖 17
是根據實施例的射線框相交測試的圖示。在射線框相交測試期間,射線1702被投射,並且可以使用定義射線的方程式來確定射線是否與定義被測試的定界框1700的平面相交。射線1702可以表示為O+D·t
,其中O
對應於射線的原點,D
是射線的方向,而t
是實數值。更改t可以用來定義沿射線的任何點。當最大入射平面相交距離小於或等於最小出射平面距離時,射線1702被稱為與定界框1700相交。對於圖17的射線1702,y平面入射相交距離顯示為tmin-y
1704。y平面出射相交距離顯示為tmax-y
1708。x平面入射相交距離可以在tmin-x
1706處計算,x平面的出射相交距離顯示為tmax-x
1710。因此,給定射線1702至少在x和y平面上可以數學方式顯示為與定界框相交,因為tmin-x
1706小於tmax-y
1708。為了使用圖形處理器執行射線框相交測試,圖形處理器被配置成儲存至少定義要測試的每個定界框的加速度資料結構。為了使用定界體階層進行加速,至少要儲存對定界框的子節點的參照。
定界體節點壓縮
對於3D空間中的軸對齊定界框,加速度資料結構可以在三個維度中儲存定界框的上下限。軟體實現可以使用32位元浮點數來儲存這些邊界,每個定界框加起來最多為2×3×4=24位元組。對於N寬BVH節點,必須儲存N個框和N個子參照。總共,4寬BVH節點的儲存量為N*24位元組,再加上用於子參照的N*4位元組,假設每個參照為4位元組,則總計為(24+4)*N位元組。對於4寬BVH節點總共為112位元組,而對於8寬BVH節點總共為224位元組。
在一個實施例中,透過儲存包圍所有子定界框的單一較高精確度的父定界框,並相對於所述父框以較低的精確度儲存每個子定界框,來減少BVH節點的大小。根據使用情況,可以使用不同的數字表示來儲存高精確度父定界框和較低精確度相對子邊界。
圖 18
是顯示根據實施例的範例性量化BVH節點1810的方塊圖。量化的BVH節點1810可以包含更高的精確度值,以針對BVH節點定義父定界框。例如,可以使用單精確度或雙精確度浮點值來儲存parent_lower_x 1812、parent_lower_y 1814、parent_lower_z 1816、parent upper_ x 1822、parent_upper_y 1824和parent_upper_z 1826。可以量化儲存在節點中的每個子定界框的子定界框的值,並將其儲存為較低精確度的值,諸如相對於父定界框定義的定界框值的定點表示。例如、child_lower_x 1832、child_ lower_y 1834、child_lower_z 1836以及child_upper_x 1842、child_upper_y 1844和child_upper_z 1846可以儲存為較低精確度的定點值。此外,可以為每個子儲存子參照1852。子參照1852可以是儲存每個子節點位置的表的索引,也可以是指向所述子節點的指標。
表1的量化節點透過量化子值來實現減少的資料結構大小,同時透過儲存針對父定界框的範圍的更高精確度的值來維持基線級別的精確度。在表1中,實數表示較高精確度的數字表示(例如32位元或64位元浮點值),而UintM表示使用用於表示定點數字精確度的M個位元的較低精確度無符號整數。參照表示用於表示對子節點的參照的類型(例如,8位元組指標的4位元組索引)。
所述方法的一般範例可以使用32位元子參照、父邊界的單精確度浮點值以及相對子邊界的M=8位元(1位元組)。接著,所述壓縮節點將需要6*4+6*N+4*N個位元組。對於4寬的BVH,總計為64位元組(相比之下,未壓縮版本為112位元組);對於8寬的BVH,總計為104位元組(相比之下,未壓縮版本為224位元組)。
為了遍歷這種壓縮的BVH節點,圖形處理邏輯可以將相對的子定界框解壓縮,接著使用標準方法與解壓縮的節點相交。未壓縮的下限則可以針對每個維度x、y和z來獲得。下面的方程式1顯示用於獲得子lower_x值的公式。方程式 1:
BVH節點的子節點解壓縮
表2顯示基於父定界框的範圍的浮點值和儲存為與父定界框的範圍的偏移量的子定界框的定點值的用於子邊框的下限的浮點值的計算方法。子上限可以用類似的方式來計算。
在一個實施例中,可以透過儲存縮放的父定界框大小,例如(parent_upper_x-parent_lower_x)/(2^M-1)代替parent_upper_x/y/z值來改善解壓縮的性能。在這種實施例中,可以根據表3中所示的範例邏輯來計算子定界框範圍。
注意,在最佳化版本中,解壓縮/解量化可以被表述為MAD指令(乘加),其中對於所述指令存在硬體支援。在一個實施例中,可以使用SIMD/向量邏輯來執行針對每個子節點的操作,從而能夠同時評估節點內的每個子節點。
儘管上述方法對於基於著色器或CPU的實現效果很好,但是一個實施例提供了一種專用硬體,所述專用硬體配置成執行包含使用定界體階層進行射線框相交測試的射線追蹤操作。在這種實施例中,專用硬體可以被配置成儲存BVH節點資料的進一步量化表示,並且在執行射線框相交測試時自動對這些資料進行去量化。
圖 19
是根據另一實施例的供量化BVH節點1910使用的複合浮點資料區塊1900的方塊圖。在一個實施例中,與父定界框的範圍的32位元單精確度浮點表示或64位元雙精確度浮點表示相反,用以支援複合浮點資料區塊1900的邏輯可以透過圖形處理器中的專用邏輯來定義。複合浮點(CFP)資料區塊1900可包含1位元的符號位元1902、可變大小(E位元)符號的整數指數1904和可變大小(K位元)尾數1906。用於E和K的多個值可以透過調整儲存在圖形處理器的配置暫存器中的值來配置。在一個實施例中,可以在值的範圍內獨立地配置E和K的值。在一個實施例中,可以透過配置暫存器選擇用於E和K的一組固定的相關值。在一個實施例中,每個用於E和K的單一值被硬編碼到圖形處理器的BVH邏輯中。值E和K使CFP資料區塊1900可用作可針對資料集定製的定製(例如,專用)浮點資料類型。
使用CFP資料區塊1900,可以將圖形處理器配置成將定界框資料儲存在量化的BVH節點1910中。在一個實施例中,父定界框的下限(parent_lower_x 1912、parent lower_y 1914 、parent_lower_z 1916)被存放在由選擇用於CFP資料區塊1900的E和K的值來確定的精確度級別。父定界框的下限的儲存值的精確度級別通常將被設置為高於子定界框的值(child_lower_x 1924、child_upper_x 1926、child_lower_y 1934、child_upper_y 1936、child_ lower_z 1944、child_upper_z 1946),其將儲存為定點值。縮放後的父定界框大小儲存為2指數的冪(例如,exp_x 1922、exp_y 1932、exp_z 1942)。此外,可以儲存每個子的參照(例如,子參照1952)。量化的BVH節點1910的大小可以基於每個節點中儲存的寬度(例如,子的數目)以及用於儲存子參照的儲存量以及隨每個額外節點而增加的每個子節點的定界框值進行縮放。
如表4所示,可以定義複合浮點資料區塊(例如struct Float)以表示父定界框的值。Float結構包含1位元符號(int1 符號)、用於儲存2指數的冪的E位元符號整數(intE 指數)和用於表示用於儲存高精確度範圍的尾數的K位元無符號整數(uintK 尾數)。對於子定界框資料,可以使用M位元無符號整數(uintM child_lower_x/y/z; uintM child_upper_x/y/z)儲存定點數以對相對子邊界進行編碼。
對於E=8、K=16、M=8並且對於子參照使用32位元的範例,表4的QuantizedNodeHW結構對於4寬BVH具有52位元組的大小,並且對於8寬BVH具有92個位元組的大小,相對於表1的量化節點而言,這是結構大小的減少,而相對於現有實現而言,這是結構大小的顯著減少。應當注意,對於尾數值(K=16),可以暗示尾數的一個位元,從而將儲存需求減少到15個位元。
表4的BVH節點結構的佈局使精簡的硬體能夠執行針對子定界框的射線框相交測試。基於幾個因素,降低了硬體複雜度。可以針對K選擇較低位元數,因為相對的子邊界會增加額外M位元的精確度。縮放的父定界框大小被儲存為2的冪(exp_x/y/z欄位),其簡化計算。此外,對計算進行重構以減少乘數的大小。
在一個實施例中,圖形處理器的射線相交邏輯計算射線到軸對準的平面的命中距離以執行射線框測試。射線相交邏輯可以使用BVH節點邏輯,其包含對表4的量化節點結構的支援。所述邏輯可以使用較高精確度的父下限和子框的量化相對範圍來計算到父定界框下限的距離。下表5中顯示用於x平面計算的範例性邏輯。
關於表5的邏輯,如果假設單精確度浮點精確度代表射線,則可以使用23位元乘以15位元乘法器,因為parent_lower_x值被儲存為15位元的尾數。可以透過類似於計算dist_parent_lower_x的方式來計算y和z平面上父定界框的下限的距離。
使用父下限,可以為每個子定界框計算到相對子定界框的相交距離,如表5中對dist_child_lower_x和dist_child_upper_x的計算所舉示。dist_child_lower/ upper_x/y/z值的計算可以使用23位元乘以8位元乘法器執行。
根據實施例,圖 20
顯示使用量化值來相對於父定界框2000定義子定界框2010的射線框相交。施加表5中所示的x平面的射線框相交距離確定方程式,可以確定沿射線2002的距離,在所述距離處射線與父定界框2000的邊界沿x平面相交。可以確定位置dist_parent_lower_x 2003,在其中射線2002與父定界框2000的下定界平面2004相交。基於dist_parent_lower_x 2003,可以確定dist_ child_lower_x 2005,在其中射線與子定界框2010的最小定界平面2006相交。此外,基於dist_parent_lower_x 2003,可以確定dist_child_upper_x 2007的位置,在其中射線與子定界框2010的最大定界平面2008相交。可以針對定義了父定界框2000和子定界框2010的每個維度(例如,沿y和z軸)執行類似的確定。接著可以使用平面相交距離來確定射線是否與子定界框相交。在一個實施例中,圖形處理邏輯可以使用SIMD和/或向量邏輯以平行方式確定多個維度和多個定界框的相交距離。此外,本文描述的計算的至少第一部分可以在圖形處理器上執行,而計算的第二部分可以在耦接到圖形處理器的一或多個應用處理器上執行。
圖 21
是根據實施例的BVH解壓縮和遍歷邏輯2100的流程圖。在一個實施例中,BVH解壓縮和遍歷邏輯駐留在圖形處理器的專用硬體邏輯中,或者可以由在圖形處理器的執行資源上執行的著色器邏輯來執行。BVH解壓縮和遍歷邏輯2100可以使圖形處理器執行操作以計算沿射線到父定界體的下定界平面的距離,如方塊2102所示。在方塊2104,所述邏輯可以部分地基於所計算的到父定界體的下定界平面的距離來計算到子定界體的下定界平面的距離。在方塊2106,所述邏輯可以部分地基於所計算的到父定界體的下定界平面的距離來計算到子定界體的上定界平面的距離。
在方塊2108,BVH解壓縮和遍歷邏輯2100可以部分地基於到子定界體的上和下定界平面的距離來確定子定界體的射線相交,儘管定界框的每個維度的相交距離將用於確定相交。在一個實施例中,BVH解壓縮和遍歷邏輯2100透過確定射線的最大入射平面相交距離是否小於或等於最小出射平面距離來確定子定界體的射線相交。換句話說,當射線在沿著任何定義的平面離開定界體之前沿著所有定義的平面進入定界體,則射線與子定界體相交。如果在2110處,BVH解壓縮和遍歷邏輯2100確定射線與子定界體相交,則邏輯可以遍歷定界體的子節點,以測試子節點內的子定界體,如方塊2112所示。在方塊2112處,可以執行節點遍歷,其中可以存取對與相交的定界框相關的節點的參照。子定界體可以成為父定界體,並且可以評估相交定界體的子。如果在2110處,BVH解壓縮和遍歷邏輯2100確定射線未與子定界體相交,則跳過與子定界體相關的定界階層的分支,如方塊2114所示,因為射線將不會在與未相交的子定界體相關的子樹分支下的任何定界體相交。
經由共享平面定界框進一步壓縮
對於使用定界框的任何N寬BVH,可以構建定界體階層,使得3D定界框的六個面中之各者都由至少一個子定界框共享。在3D共享平面定界框中,可以使用6×log2
N位元來指示父定界框的給定平面是否與子定界框共享。對於3D共享平面定界框,當N=4時,將使用12位元來指示共享平面,其中使用兩位元中的每一位元來識別四個子中的哪一個重新使用每個潛在的共享父平面。每個位元可用於指示特定子是否重新使用了父平面。在2寬BVH的情況下,可以添加6個額外的位元,以針對父定界框的每個平面指示定界框的平面(例如,側面)是否被子共享。儘管SPBB概念可以應用於任意數目的大小,但是在一個實施例中,SPBB的益處通常對於2寬(例如,二進制)SPBB是最高的。
當使用如本文所述的BVH節點量化時,共享平面定界框的使用可以進一步減少儲存的資料量。在3D、2寬BVH的範例中,六個共享平面位元可以參照父定界框的min_x、max_x、min_y、max_y、min_z和max_z。如果min_x位元為零,則第一子將從父定界框繼承共享平面。對於與父定界框共享平面的每個子,不需要儲存所述平面的量化值,這減少了節點的儲存成本和解壓縮成本。此外,所述平面的較高精確度值可用於子定界框。
圖 22
是範例性的二維共享平面定界框2200的圖示。二維(2D)共享平面定界框(SPBB)2200包含左子2202和右子2204。對於2D二元SPBPP,可使用4 log2
2個額外的位元來指示父定界框的四個共享平面中的哪個被共享,其中每個平面都有一個相關的位元。在一個實施例中,零可以與左子2202關聯,而一可以與右子關聯,使得SPBB 2200的共享平面位元為min_x=0;max_x=1;min_y=0;max_y=0,因為左子2202與父SPBB 2200共享lower_x、upper_y和lower_y平面,而右子2204共享upper_x平面。
圖 23
是根據實施例的共享平面BVH邏輯2300的流程圖。共享平面BVH邏輯2300可用於減少為一或多個子定界框的上下範圍儲存的量化值的數目、減少BVH節點的解壓縮/去量化成本,並提高用於BVH節點的子定界框的射線框相交測試的值的精確度。在一個實施例中,共享平面BVH邏輯2300包含在一組子定界框上定義父定界框,使得所述父定界框與一或多個子定界框共享一或多個平面,如方塊2302所示。在一個實施例中,可以透過為場景中的幾何物件選擇一組現有的與軸對齊的定界框來定義父定界框,並基於每個平面中的所述組定界框的最小和最大範圍來定義父定界框。例如,將父定界框的每個平面的上平面值定義為子定界框的集合內每個平面的最大值。在方塊2304,共享平面BVH邏輯2300可以為父定界框的每個平面編碼共享子平面。如方塊2306所示,在射線框相交測試期間,共享平面BVH邏輯2300可以繼承具有共享平面的子平面的父平面值。可以用較高的精確度繼承子的共享平面值,其中將父平面值儲存在BVH節點結構中,並且可以繞過為共享平面產生和儲存較低精確度的量化值。
圖 24
為根據實施例之包括具有定界體階層邏輯2424的圖形處理器2404的計算裝置2400之方塊圖。計算裝置2400可為諸如於圖1中之資料處理系統100的計算裝置。計算裝置2400也可為或被包括於通訊裝置內,諸如機上盒(例如,網際網路式有線電視機上盒等等)、全球定位系統(GPS)式裝置等等。計算裝置2400也可或被包括於行動計算裝置內,諸如蜂巢式電話、智慧型手機、個人數位助理(PDA)、平板電腦、膝上型電腦、電子閱讀器(e-reader)、智慧型電視、電視平台、可穿戴式裝置(例如,眼鏡、手錶、手鐲、智慧卡、珠寶、衣服物件等等)、媒體播放器等等。舉例來說,在一個實施例中,計算裝置2400包括採用積體電路(「IC」)之行動計算裝置,諸如系統單晶片(「SoC」或「SOC」),其整合計算裝置2400之各種硬體及/或軟體元件於單一晶片上。
在一個實施例中,定界體階層(BVH)邏輯2424包含用於對定界體階層的壓縮表示進行編碼的邏輯和用於解碼和解譯定界體階層的壓縮表示的額外邏輯。BVH邏輯2424可以與射線追蹤邏輯2434協同工作,以執行硬體加速的射線框相交測試。在一個實施例中,BVH邏輯2424被配置成相對於參考定界體對多個子定界體進行編碼。例如,BVH邏輯2424可以在多個方向上使用上下限對參考定界體和子定界體進行編碼,其中參考定界體係使用浮點值進行編碼,而子定界體係使用定點值進行編碼。BVH邏輯2424可以被配置成在多個方向上使用下限和上限將參考定界體編碼為邊界的下限和縮放範圍以及子定界體。在一個實施例中,BVH邏輯2424被配置成使用編碼的多個子定界體來對定界體階層的節點進行編碼。
射線追蹤邏輯2434可以至少部分地結合圖形處理器2404的執行資源2444進行操作,所述執行資源包含執行單元和相關的邏輯,諸如圖5的圖形核心580A-N中的邏輯,以及/或圖6中所示的執行邏輯600。射線追蹤邏輯2434可以執行穿過定界體階層的射線遍歷,並測試射線是否與節點的編碼子定界體相交。射線追蹤邏輯2434可以配置成計算定界平面距離以測試射線定界體相交,其係透過計算到較低參考定界平面的平面的距離,並將所述距離加到反向射線方向的算術乘積、參考邊界的縮放範圍以及相對子定界平面的位置,以計算到所有子定界平面的距離。
在一個實施例中,還可以包含一組暫存器2454來儲存圖形處理器2404的元件的配置和操作資料。圖形處理器2404可以額外地包含配置成快取2414的記憶體裝置。在一個實施例中,快取2414是用於執行繪製操作的繪製快取。在一個實施例中,快取2414還可以包含記憶體階層的額外階層,諸如儲存在圖2的嵌入式記憶體模組218中的最後一級快取。
如圖所示,在一個實施例中,除了圖形處理器2404之外,計算裝置2400還可以包含任何數目和類型的硬體元件和/或軟體元件,諸如(但不限於)應用處理器2406、記憶體2408和輸入/輸出(I/O)來源2410。應用處理器2406可以利用硬體圖形管線互動以共享圖形管線功能,如參考圖3所顯示的。將處理後的資料儲存在硬體圖形管線的緩衝區中,並將狀態資訊儲存在記憶體2408中。接著將所得影像傳輸至顯示控制器而經由顯示裝置(諸如圖3的顯示裝置320)來輸出。顯示裝置可為各種類型,諸如陰極射線管(CRT)、薄膜電晶體(TFT)、液晶顯示器(LCD)、有機發光二極體(OLED)陣列,且可被組構成將資訊顯示給使用者。
應用處理器2406可包括一或多個處理器(諸如圖1之處理器102)且可為至少部分被使用以對於計算裝置2400執行作業系統(OS)2402之中央處理單元(CPU)。OS 2402可作為在電腦裝置2400之硬體及/或實體資源與使用者之間的介面。OS 2402可包括用於計算裝置2400中之各種硬體裝置的驅動器邏輯2422。驅動器邏輯2422可包括圖形驅動器邏輯2423,諸如圖10之使用者模式圖形驅動器1026及/或內核模式圖形驅動器1029。在一個實施例中,圖形驅動器邏輯2423包括能用以配置圖形處理器2404的BVH邏輯2424和射線追蹤邏輯2434。
可以設想,在一些實施例中,圖形處理器2404可以作為應用處理器2406的一部分(諸如實體CPU封裝的一部分)存在,在這種情況下,記憶體2408的至少一部分可被應用處理器2406與圖形處理器2404共用,雖然記憶體2408的至少一部分可為圖形處理器2404所獨佔、或圖形處理器2404可具有分開的記憶體之儲存。記憶體2408可包含緩衝器(例如,訊框緩衝器)之預先分配的區域;然而,所屬技術領域中具有通常知識者應理解的是,實施例並不以此為限,且可存取至較低圖形管線之任何記憶體可被使用。記憶體2408可包括包含使用圖形處理器2404來繪製桌面(desktop)或3D圖形場景的應用程式之各種形式的隨機存取記憶體(RAM)(例如,SDRAM、SRAM等等)。記憶體控制器集線器(例如圖1之記憶體控制器集線器116)可存取記憶體2408中的資料且將其轉送至圖形處理器2404以用於圖形管線處理。記憶體2408可被製造為對於在計算裝置2400內之其他元件為可用的。舉例來說,從計算裝置2400的各種I/O來源2410接收的任何資料(例如,輸入圖形資料)可在其在軟體程式或應用程式的實現中被一或多個處理器(例如,應用處理器2406)操作之前被暫時地於記憶體2408內排入佇列。同樣地,決定應透過計算系統介面中之一者從計算裝置2400被發送至外部實體、或被儲存於內部儲存元件內的軟體程式之資料通常在其被傳送或儲存之前被暫時地排入記憶體2408之佇列中。
I/O來源可包括諸如觸控螢幕、觸控板、觸控墊、虛擬或一般鍵盤、虛擬或一般滑鼠、接口、連接器、網路裝置、或諸如此類之裝置,且可經由輸入/輸出(I/O)控制集線器(ICH)130(如圖1所示)來附接。此外,I/O來源2010可包括一或多個I/O裝置,其係被實現用於傳送資料至計算裝置2400(例如,網路配接器)及/或從計算裝置2400傳送資料;或用於在計算裝置2400內之大規模非揮發性儲存器(例如,硬碟機)。使用者輸入裝置(包括字母數字與其他鍵)可被使用以將資訊與命令選擇遞送至圖形處理器2404。另一類型的使用者輸入裝置為游標控制(諸如滑鼠、軌跡球、觸控螢幕、觸控墊、或游標方向鍵)以將方向資訊及命令選擇遞送至GPU及於顯示裝置上控制游標移動。電腦裝置2400的相機與麥克風陣列可被利用以觀察手勢、記錄音訊與視訊、及接收與傳送視覺與音訊命令。
經組構為網路介面之I/O來源2410可提供至網路的存取,諸如LAN、廣域網路(WAN)、都會網路(MAN)、個人區域網路(PAN)、藍牙、雲端網路、蜂巢式或行動網路(例如,第三代(3G)、第四代(4G)等等)、內部網路、網際網路等等。網路介面可包括,舉例來說,具有一或多個天線之無線網路介面。網路介面也可包括,舉例來說,有線網路介面以經由網路電纜與遠端裝置通訊,其可為例如乙太網路電纜、同軸電纜、光纖電纜、序列電纜(serial cable)、或平行電纜(parallel cable)。
網路介面可提供至LAN(例如藉由遵照IEEE 802.11標準)之存取、及/或無線網路介面可提供至個人區域網路(例如藉由遵照藍牙標準)之存取。其他無線網路介面及/或協定(包括之前的與之後版本的標準)也可被支援。除了經由無線LAN標準之通訊之外(或取而代之),網路介面可提供使用例如分時多重存取(TDMA)協定、全球行動通訊系統(GSM)協定、分碼多重存取(CDMA)協定、及/或任何其他類型的無線通訊協定之無線通訊。
應理解的是,採用較以上所述範例少或多裝備的系統對於特定實現為較佳。因此,計算裝置2400之配置可根據許多因素,諸如價格限制、效能需求、技術改良、或其他情形隨著實現而改變。範例包括(但不限於)行動裝置、個人數位助理、行動計算裝置、智慧型手機、蜂巢式電話、手機(handset)、單向呼叫器、雙向呼叫器、傳訊裝置、電腦、個人電腦(PC)、桌上型電腦、膝上型電腦、筆記型電腦、手持式電腦、平板電腦、伺服器、伺服器陣列或伺服器場、網頁伺服器、網路伺服器、網際網路伺服器、工作站、迷你電腦、大型電腦、超級電腦、網路設備、網頁設備、分散式計算系統、多處理器系統、處理器式系統、消費性電子產品、可程式化消費性電子產品、電視、數位電視、機上盒、無線存取點、基地台、用戶站、行動用戶中心、無線電網路控制器、路由器、集線器、閘道器、橋接器、交換器、機器、或其組合。
用於壓縮定界體階層的葉節點的裝置和方法
諸如定界體階層(BVH)和k-d樹之類的加速結構的缺點是:它們需要時間和記憶體來構建和儲存。減少這種負擔的一種方法是對加速資料結構進行某種壓縮和/或量化,其對於BVH尤其有效,而BVH自然會採用保守的增量編碼。從好的方面來看,其可以顯著減少加速結構的大小,通常使BVH節點的大小減半。不利的方面是,壓縮BVH節點還會產生負擔,這些負擔可能屬於不同的類別。首先,在遍歷期間對每個BVH節點進行解壓縮存在明顯的成本;第二,特別是對於階層編碼方案,追蹤父資訊的需求使堆疊操作稍微複雜化;以及第三,保守地對邊界進行量化意味著定界框比未壓縮的定界框要不緊密一些,從而分別觸發了必須遍歷和相交的節點和基元數目可測量的增加。
透過局部量化壓縮BVH是減少其大小的已知方法。n寬BVH節點包含單精確度浮點格式的「n」個子節點的軸對齊定界框(AABB)。局部量化表示相對於父的AABB的「n」個子AABB,並以量化(例如8位元)格式儲存這些值,從而減少了BVH節點的大小。
整個BVH的局部量化引入了多個負擔因子,因為(a)去量化的AABB比原始的單精確度浮點AABB更粗糙,從而為每條射線引入了額外的遍歷和相交步驟,並且(b)去量化操作本身是昂貴的,其增加了每個射線遍歷步驟的負擔。由於這些缺點,壓縮的BVH僅在特定的應用場景中使用,而未被廣泛採用。
本發明的一個實施例採用了一種技術來壓縮定界體階層中的髮基元的葉節點。特別是,在一個實施例中,數組定向基元與父定界框一起儲存,從而消除了葉節點中的子指標儲存。接著使用相對於父框的角落進行量化的16位元座標為每個基元儲存定向的定界框。最後,為每個基元組儲存量化的法線以指示方向。此方法可能會致使BVH髮基元的頻寬和記憶體佔用量顯著減少。
在一些實施例中,透過儲存父定界框並使用較低的精確度相對於所述父定界框編碼N個子定界框(例如8個子)來壓縮BVH節點(例如,對於8寬BVH)。將這種想法應用於BVH的每個節點的缺點是:在穿過此結構遍歷射線時,在每個節點都會引入一些解壓縮負擔,這可能會降低性能。
為理解決這個問題,本發明的一個實施例僅在BVH的最低級別使用壓縮節點。這提供了較高的BVH級別以最佳性能運行的優點(也就是說,當框很大時,它們經常被觸摸,但是它們很少),並且在較低/最低級別上的壓縮也非常有效,因為大多數情況下BVH的資料處於最低級別。
此外,在一個實施例中,量化還應用於儲存定向定界框的BVH節點。如下述,所述操作比與軸對齊的定界框更為複雜。在一種實現中,將壓縮的BVH節點與定向的定界框一起使用與僅在BVH的最低級別(或更低級別)上使用壓縮節點相結合。
因此,一個實施例透過引入壓縮葉節點的單一專用層,同時對內部節點使用傳統的、未壓縮的BVH節點,對完全壓縮的BVH進行了改進。這種方法背後的動機是:幾乎所有的壓縮節省都來自最低級別的BVH(尤其為4寬和8寬BVH彌補了所有節點中的絕大多數),而大多數的負擔來自內部節點。因此,引入單層的專用「壓縮葉節點」可提供與完全壓縮的BVH幾乎相同(在某些情況下甚至更好)的壓縮增益,同時保持與未壓縮的BVH幾乎相同的遍歷性能。
在一個實施例中,本文描述的技術被整合在圖形處理器(諸如圖 25
所示的GPU 2505)內的遍歷/相交電路內,所述圖形處理器包括佈置成多核心組2500A-N的專用圖形處理資源集。雖然只提供了單一多核心組2500A的細節,應當理解,其它多核心組2500B-N可以配備相同或相似的圖形處理資源集。
如圖所示,多核心組2500A可以包含一組圖形核心2530、一組張量核心2540和一組射線追蹤核心2550。排程器/分派器2510排程並分派圖形線程以在各種核心2530、2540、2550上執行。當執行圖形線程時,一組暫存器檔案2520儲存由核心2530、2540、2550使用的運算元值。這些可以包含例如用於儲存整數值的整數暫存器、用於儲存浮點值的浮點暫存器、用於儲存緊縮資料元件(整數和/或浮點資料元件)的向量暫存器以及用於儲存張量/矩陣值的切片暫存器。在一實施例中,切片暫存器被實現為向量暫存器的組合集合。
一或多個1級(L1)快取和紋理單元2560在每個多核心組2500A內區域地儲存諸如紋理資料、頂點資料、像素資料、射線資料、定界體資料等的圖形資料。由多核心組2500A-N中的全部或部分子集共享的2級(L2)快取2580儲存用於多個並發圖形線程的圖形資料和/或指令。一或多個記憶體控制器2570將GPU 2505耦接到記憶體2598,其可以是系統記憶體(例如,DRAM)和/或專用圖形記憶體(例如,GDDR6記憶體)。
輸入/輸出(I/O)電路2595將GPU 2505耦接到一或多個I/O裝置2595,諸如數位訊號處理器(DSP)、網路控制器或使用者輸入裝置。晶載互連可用於將I/O裝置2590耦接到GPU 2505和記憶體2598。I/O電路2595的一或多個I/O記憶體管理單元(IOMMU)2570將I/O裝置2590直接耦接到系統記憶體2598。在一實施例中,IOMMU 2570管理多組頁表,以將虛擬位址映射到系統記憶體2598中的實體位址。在此實施例中,I/O裝置2590、CPU 2599和GPU 2505可以共享相同的虛擬位址空間。
在一種實現中,IOMMU 2570支援虛擬化。在這種情況下,可以使用用以將訪客/圖形虛擬位址映射到訪客/圖形實體位址的第一組頁表,以及用以將訪客/圖形實體位址映射到系統/主機實體位址的第二組頁表(例如,在系統記憶體2598內)。
在一實施例中,CPU 2599、GPU 2505和I/O裝置2590被整合在單一半導體晶片和/或晶片封裝上。所示的記憶體2598可以整合在同一晶片上,或者可以透過晶片外介面耦接到記憶體控制器2570。在一種實現中,記憶體2598包含與其它實體系統級記憶體共享相同虛擬位址空間的GDDR6記憶體,儘管本發明的基本原理不限於所述特定實現。
在一實施例中,張量核心2540包含複數個專門設計用於執行矩陣運算的執行單元,矩陣運算是用於執行深度學習運算的基本計算運算。例如,同時矩陣乘法運算可用於神經網路訓練和推理。張量核心2540可以使用各種運算元精確度來執行矩陣處理,包含單精確度浮點數(例如32位元)、半精確度浮點數(例如16位元)、整數字組(16位元)、位元組(8位元)和半位元組(4位元)。在一實施例中,神經網路實現提取每個繪製場景的特徵,潛在地從多個訊框中組合細節,以構建高品質的最終影像。
在一個實施例中,射線追蹤核心2550加速用於即時射線追蹤和非即時射線追蹤實現的射線追蹤操作。例如,關於本發明的實施例,射線追蹤核心2550可以包含用於壓縮BVH的葉節點的電路/邏輯。此外,射線追蹤核心2550可以包含用於使用BVH執行射線遍歷並識別射線與包圍在BVH體積內的基元之間的相交的射線遍歷/相交電路。射線追蹤核心2550還可包含用於執行深度測試和剔除(例如,使用Z緩衝器或類似佈置)的電路。使用專用的射線追蹤核心2550進行遍歷/相交操作會大大降低圖形核心2530的負載。如果沒有這些射線追蹤核心2550,則遍歷和相交操作將使用在圖形核心2530上運行的著色器來實現,這將消耗大量的GPU 2505的圖形處理資源,因此無法進行即時射線追蹤。
圖 26
顯示範例性射線追蹤引擎2600,其執行本文所述的葉節點壓縮和解壓縮操作。在一實施例中,射線追蹤引擎2600包含上述一或多個射線追蹤核心2550的電路。替代地,可以在CPU 2599的核心上或在其它類型的圖形核心(例如,Gfx核心2530、張量核心2540等)上實現射線追蹤引擎2600。
在一個實施例中,射線產生器2602產生遍歷/相交單元2603穿過包含複數個輸入基元2606的場景追蹤的射線。例如,諸如虛擬實境遊戲的APP(應用程式)可以產生輸入基元2606被產生的命令流。遍歷/相交單元2603遍歷穿過由BVH構建器2607產生的BVH 2605的射線,並識別射線與一或多個基元2606相交的命中點。儘管被顯示為單一單元,但是遍歷/相交單元2603可包含與不同的相交單元耦接的遍歷單元。這些單元可以用電路、由GPU或CPU執行的軟體/命令或其任意組合來實現。
節點壓縮/解壓縮
在一個實施例中,BVH處理電路/邏輯2604包含BVH構建器2607,其基於場景中的基元2606之間的空間關係來產生如本文所述的BVH 2605。此外,BVH處理電路/邏輯2604包含BVH壓縮器2609和BVH解壓縮器2609,其如本文所述分別用於壓縮和解壓縮葉節點。為了說明,下面的描述將集中在8寬BVH(BVH8)。
如在圖 27
所示的,單一8寬BVH節點2700A的一個實施例中包含8個定界框2701-2708和8個(64位元)子指標/參照2710,其指向定界框/葉資料2701-2708。在一個實施例中,BVH壓縮器2625執行編碼,其中相對於父定界框2700A表示8個子定界框2701A-2708A,並量化為8位元統一值,如定界框葉資料2701B-2708B所示。量化的8寬BVH (QBVH8節點2700B)由BVH壓縮2725使用起始值和範圍值編碼,儲存為兩個3維單精確度向量(2×12位元組)。將八個量化的子定界框2701B-2708B儲存為每個維度的定界框的下和上邊界的2乘8位元組(總共48個位元組)。請注意,此佈局與現有實現有所不同,因為範圍以全精確度儲存,這通常提供更嚴格的邊界,但需要更多空間。
在一個實施例中,BVH解壓縮器2626如下對QBVH8節點2700B進行解壓縮。可以透過QBVH8.starti
+ (byte-to-float)QBVH8來計算維度i
的解壓縮下限。在CPU 4099上的loweri
∗QBVH8.extendi
每個維度和每個框都需要5條指令:2個載入(start,extend)、byte-to-int load+
upconversion、int-to-float conversion以及一個multiply-add。在一個實施例中,使用SIMD指令平行地對所有8個量化的子定界框2701B-2708B進行解壓縮,這給射線節點相交測試增加了大約10條指令的負擔,這使其成本至少是標準未壓縮節點情況下的兩倍。在一個實施例中,這些指令在CPU 4099的核心上執行。可替代地,類似的一組指令由射線追蹤核心4050執行。
沒有指標,QBVH8節點需要72個位元組,而未壓縮的BVH8節點需要192個位元組,這致使2.66倍的縮減因子。使用8個(64位元)指標時,縮減因子減少到1.88倍,這使得有必要解決處理葉指標的儲存成本。
葉級壓縮和佈局
在一個實施例中,當僅將BVH8節點的葉層壓縮為QBVH8節點時,8個子2701-2708的所有子指標將僅參照葉基元資料。在一個實現中,透過在QBVH8節點2700B本身之後將所有參照的基元資料直接儲存來利用這一事實,如圖 27 所示
。這允許將QBVH8的全部64位元子指標2710減少到僅8位元偏移2722。在一個實施例中,如果基元資料是固定大小的,則偏移2722被完全跳過,因為它們可以直接從相交定界框的索引中和指向QBVH8節點2700B本身的指標計算出。
BVH構建器修改
當使用由上而下的BVH8構建器時,僅壓縮BVH8葉級別僅需要對構建程序進行少量修改。在一個實施例中,這些構建修改是在BVH構建器2607中實現的。在遞歸構建階段中,BVH構建器2607追蹤當前基元的數目是否低於某個臨界值。在一種實現中,N×M是一種臨界值,其中N是指BVH的寬度,而M是BVH葉內的基元的數目。對於BVH8節點(例如,每個葉四個三角形),臨界值為32。因此,對於具有少於32個基元的所有子樹,BVH處理電路/邏輯2604將輸入特殊的碼路徑,並在所述路徑處繼續進行基於表面積啟發式(SAH)的拆分程序,但建立了單一QBVH8節點2700B。當最終建立了QBVH8節點2700B時,BVH壓縮器2609接著收集所有參照的基元資料並將其複製到QBVH8節點的後面。
遍歷
由射線追蹤核心2750或CPU 2799執行的實際BVH8遍歷僅稍微受葉級壓縮的影響。質樸上,葉級別QBVH8節點2700B被視為擴展葉類型(例如,將其標記為葉)。這意味著傳統的BVH8由上而下遍歷一直持續到達到QBVH節點2700B。在此刻,執行單一射線-QBVH節點相交,並且針對其所有相交的子2701B-2708B,重構各自的葉指標並執行傳統的射線-基元相交。有趣的是,基於相交距離對QBVH的相交子2701B-2708B進行排序可能無法提供任何可測量的好處,因為在大多數情況下,無論如何,僅單一子被射線相交。
葉資料壓縮
葉級壓縮方案的一個實施例甚至透過提取共同特徵可以對實際基元葉資料進行無損壓縮。例如,壓縮葉BVH(CLBVH)節點內的三角形極有可能共享隅角(vertices)/頂點(vertex)索引和屬性,例如相同的objectID。透過每個CLBVH節點僅儲存一次這些共享屬性,並在基元中使用較小的區域位元組大小的索引,可以進一步減少記憶體消耗。
在一個實施例中,用於利用BVH葉內的共同空間一致的幾何特徵的技術也用於其它更複雜的基元類型。每個BVH葉的基元(諸如髮片段)可能共享相同的方向。在一個實施例中,BVH壓縮器2609實現了一種壓縮方案,所述壓縮方案考慮了所述共同方向特性以有效地壓縮定向的定界框(OBB),其已被證明對於定界長對角基元類型非常有用。
本文描述的葉級壓縮的BVH僅在最低的BVH級別引入BVH節點量化,因此允許在保留未壓縮的BVH的遍歷性能的同時進行額外記憶體減少最佳化。由於僅對最低級別的BVH節點進行了量化,因此其所有子節點都指向葉資料2701B-2708B,葉資料2701B-2708B可連續儲存在一塊記憶體或一或多個快取行2698中。
所述想法還可以應用於使用定向定界框(OBB)的階層,所述定向定界框通常用於加速髮基元的繪製。為了說明一個特定的實施例,將評估在三角形上的標準8寬BVH的通常情況下的記憶體減少。
以下列核心序列表示8寬BVH節點2700的佈局:
struct BVH8Node {
float lowerX[8], upperX[8];
// X維度中的8個下和上邊界
float lowerY[8], upperY[8];
// Y維度中的8個下和上邊界
float lowerZ[8], upperZ[8];
// Z維度中的8個下和上邊界
void *ptr[8];
// 指向8個子節點或葉資料的8 x 64位元指標
};
並需要276個位元組的記憶體。標準的8寬量化節點的佈局可以定義為:
// X維度中的8個位元組量化的下/上邊界
char lowerY[8], upperY[8];
// Y維度中的8個位元組量化的下/上邊界
char lowerZ[8], upperZ[8];
// Z維度中的8個位元組量化的下/上邊界
void *ptr[8];
//指向8個子節點或葉資料的8 x 64位元指標
};
並需要136個位元組。
因為在葉級僅使用量化的BVH節點,所以所有子指標實際上將指向葉資料2701A-2708A。在一個實施例中,透過將量化的節點2700B和其子所指向的所有葉資料2701B-2708B儲存在記憶體2698的單一連續區塊中,量化的BVH節點2700B中的8個子指標被移除。保存子指標可將量化的節點佈局減少為:
struct QBVH8NodeLeaf {
Vec3f start, scale;
//父AABB的開始位置、擴展向量
char lowerX[8], upperX[8];
// X維度中的8個位元組量化的下和上邊界
char lowerY[8], upperY[8];
// Y維度中的8個位元組量化的下和上邊界
char lowerZ[8], upperZ[8];
// Z維度中的8個位元組量化的下和上邊界
};
其僅需要72個位元組。由於記憶體/快取2698中的連續佈局,第i個子的子指標現在可以簡單地透過以下方式計算: 。
由於BVH最低級別的節點佔BVH整個大小的一半以上,因此,本文所述的僅葉級別的壓縮將壓縮率降低到0.5+0.5 * 72/256=0.64倍的原始大小。
此外,具有較粗略邊界的負擔和對量化的BVH節點本身進行解壓縮的成本僅發生在BVH葉級別(與整個BVH被量化時的所有級別相比)。因此,很大程度上避免了由於較粗略邊界(由量化引入)而致使的通常相當大的遍歷和交集負擔。
本發明的實施例的另一個益處是改進的硬體和軟體預提取效率。此結果來自所有葉資料被儲存在記憶體或快取行的相對小連續區塊的事實。
因為在BVH葉級的幾何是空間相干的,很可能透過QBVH8NodeLeaf節點參照的所有基元共享共同屬性/功能,如objectID、一或多個隅角等。因此,本發明的一個實施例透過消除基元資料重複進一步減少了儲存。例如,每個QBVH8NodeLeaf節點只能儲存一次基元資料和關聯資料,從而進一步減少了葉資料的記憶體消耗。
BVH葉級別的量化定向定界框(OBB)
下面描述髮基元的有效定界,作為透過在BVH葉級別利用常見的幾何屬性實現的顯著記憶體減少的一個範例。為了精確地定界髮基元,所述髮基元是在空間中定向的長而細結構,一種眾所周知的方法用以計算定向的定界框以緊密地定界幾何。首先,計算與髮方向對齊的座標空間。例如,可以確定z軸指向髮方向,而x軸和y軸垂直於z軸。使用所述定向空間,現在可以使用標準AABB緊密地定界髮基元。將射線與這種定向邊界相交需要先將射線轉換為定向空間,接著執行標準的射線/框相交測試。
所述方法的問題是其記憶體使用率。轉換為定向空間需要9個浮點值,而儲存定界框需要額外的6個浮點值,總共產生60個位元組。
在本發明的一個實施例中,BVH壓縮器2625壓縮所述定向空間和定界框,以用於在空間上靠近的多個髮基元。接著可以將這些壓縮邊界儲存在壓縮葉級別內,以緊密定界儲存在葉內部的髮基元。在一個實施例中,使用以下方法來壓縮定向邊界。定向空間可以由彼此正交的三個標準化向量𝑣𝑥
、𝑣y
和𝑣z
來表示。透過將點p
投影到這些軸上來將其轉換為所述空間:
因為向量𝑣𝑥
、𝑣y
和𝑣z
被標準化,它們的元件都在[-1,1]的範圍內。因此,這些向量是使用8位元帶符號的定點數而不是使用8位元帶符號的整數和恆定的比例來量化的。如此,量化的𝑣𝑥
′、𝑣y
′和𝑣y
′被產生。這種方法將對定向空間進行編碼所需的記憶體從36個位元組(9個浮點值)減少到僅9個位元組(9個定點數,每個1個位元組)。
在一個實施例中,透過利用所有向量彼此正交這一事實,進一步減少了定向空間的記憶體消耗。因此,一個只需要儲存兩個向量(例如,𝑝y
'和𝑝z
')並且可以計算𝑝𝑥
′=cros
(𝑝y
′, 𝑝z
′),進一步降低了所需的儲存到只有六個位元組。
剩下的是將量化的定向空間內的AABB量化。這裡的問題是:將點p投影到所述空間的壓縮座標軸(例如,透過計算(𝑣𝑥
′, 𝑝))產生潛在大範圍的值(如值p通常被編碼為浮點數)。因此,將需要使用浮點數對邊界進行編碼,從而減少了潛在的節省。
為了解決這個問題,本發明的一個實施例首先將多個髮基元轉換為空間,在所述空間中其座標在[0, 1/√3]的範圍內。這可以透過確定多個髮基元的世界空間軸對齊定界框b
來進行,並使用轉換T,其首先由b
.lower轉換到左邊,接著透過1⁄max(𝑏.𝑠𝑖𝑧𝑒.𝑥, 𝑏.𝑠𝑖𝑧𝑒.𝑦.𝑏.𝑠𝑖𝑧𝑒.𝑧)在每個座標縮放:
一個實施例確保這轉換後的幾何停留在範圍[0, 1/√3],而投影到量化向量p 𝑥
′、p y
′或p z
′的轉換點停留在範圍[-1,1]內。這意味著,當使用T進行轉換時,可以對曲線幾何的AABB進行量化,接著轉換為量化的定向空間。在一實施例中,使用8位元帶符號定點算術。然而,出於精確度原因,可以使用16位元帶符號的定點數(例如,使用16位元帶符號的整數和恆定比例進行編碼)。這減少了記憶體需求,將軸對齊定界框從24個位元組(6浮點值)編碼到只有12位元組(6個字)加上偏移b
.lower(3浮點)和標度(1浮點),其為多個髮基元共享。
例如,具有8個要定界的髮基元,此實施例將記憶體消耗從8*60位元組=480位元組減少到僅8*(6+12)+3*4+4=160位元組,其減少了3倍。透過首先使用轉換T來轉換射線,接著使用量化的𝑣𝑥
′、𝑣y
′和𝑣z
′投影射線,使射線與這些量化定向邊界相交。最後,射線與量化的AABB相交。
圖 29 中
的表格顯示在Intel Embree架構上實現的本發明的一個實施例(CLBVH)的記憶體消耗(以MB為單位)和總繪製性能(以fps為單位),包含Embree的傳統BVH8(參考)和Embree的完全壓縮QBVH8變體;在一般的二合二(two-in-two)Embree BVH配置中:最高性能(SBVH+預先收集的三角形資料)和最低記憶體消耗(BVH+三角形索引)。通常,在其兩種可能的配置(「快速」和「緊湊」)中,本發明的實施例具有與Embree的QBVH相同的記憶體節省,而對性能的影響要低得多(「快速」),或者在大致相同的性能影響下甚至可以實現更好的壓縮(「緊湊」)。
圖 30 中
的表格顯示兩個Embree BVH配置的記憶體消耗(以MB為單位)、遍歷統計資訊和總體性能:最高性能(SBVH+預先收集的三角形資料)和最低記憶體消耗(BVH+三角形索引)。本發明的一個實施例(CLBVH)實現了與完全壓縮的BVH相似或有時甚至更大的記憶體節省,同時將運行時間負擔減少到僅百分之幾。
一個實施例利用了Embree 3.0 [11] CPU射線追蹤框架的修改版本。作為比較框架,使用了公開可用的原射線路徑追蹤器[1]。為了進行基準測試,將路徑追蹤器設置為純擴散路徑追蹤(最多8次反彈),而每個CPU硬體線程都追蹤單一射線。對於此基準,著色花費了15-20%的時間。硬體平台設置是雙插槽Xeon工作站,其具有2倍的28核心和96 GB的記憶體,並且作為基準方案,測試了四種不同的模型,其複雜度從10M到350M個三角形(使用許多不同的相機位置)。測量了兩種設置的性能和記憶體消耗:「最佳性能」和「最低記憶體消耗」。這兩種模式需要不同的BVH設置和基元佈局:第一種模式將每個BVH葉的所有三角形預先收集為緊湊的佈局,並使用具有空間分割(SBVH)的BVH,而第二種模式僅儲存每個三角形的頂點索引並使用沒有空間分割的傳統BVH。
為了獲得最佳性能,圖 30
中的表顯示對BVH節點進行解壓縮的負擔將繪製性能降低了10-20%。相對地,CLBVH方法僅致使速度降低2-4%,而與完全壓縮的BVH相比,其同時提供BVH節點的類似或甚至略大的尺寸減小(43-45%)。基元資料的大小不變。在總體大小(BVH+葉基元資料)方面,這些實施例提供了與完全壓縮BVH相比的8-10%的相似減少。
相對於BVH節點的大小,在基元資料的大小較小(僅儲存頂點索引而不是完整的預聚集頂點)的記憶體設置中,減少BVH節點的記憶體消耗更為有效。使用完全壓縮的BVH節點或CLBVH方法時,記憶體消耗的總減少量增加到16-24%。然而,CLBVH方法僅具有0-3.7%的運行時負擔,而對於完全壓縮的BVH節點,負擔範圍為7%至14%。
為了實現最大的記憶體減少,CLBVH方法採用了無損葉資料壓縮方案(見上文)。此CLBVH*變體的運行時負擔比CLBVH大,但允許將葉資料(每個三角形的頂點索引、objectID等)的大小減少15-23%,從而使總體大小與未壓縮的基線相比減少到26-37%。
參考資料:
如所提及的,運動模糊可以用於模擬在相機快門打開時場景中移動的物體的效果。模擬此效果會致使移動的物體定向模糊,從而使動畫在播放時顯得平滑。繪製運動模糊需要為每個評估的射線路徑隨機取樣時間,以及許多這些路徑的平均值會提供所需的模糊效果。為了實現此技術,底層射線追蹤引擎必須能夠在相機快門間隔內的任意時間追蹤穿過場景的射線。這需要對用於射線追蹤的空間加速結構內的幾何物體的運動進行編碼。
在實踐中,透過在三角形的線性運動段上建立定界體階層(BVH)來構造這種資料結構,其中三角形頂點只在從開始到結束時間線性混合。透過使用線性邊界對運動進行限制,使用許多這種運動片段可以在相機快門間隔期間對複雜的運動進行編碼。這些線性邊界為此運動的開始和結束時間儲存了定界框,因此,在這些邊界之間的任何時間線性地對這些邊界進行內插,即可在所述特定時間對幾何進行適當的定界。
對於射線追蹤硬體實現而言,重要的是各個BVH節點消耗盡可能少的記憶體以減少節點提取頻寬。在一個實施例中,施加寬BVH節點的所有子的定界框的局部每個節點量化。特別是,寬BVH節點的量化網格使用具有少量位元(例如,8位元與32位元全浮點精確度)的網格座標來編碼每個子的定界框。
一個實施例擴展了這種方法,以針對每個子使用此量化方案透過儲存開始和結束時間的量化邊界來線性定界運動模糊。然而,隨著非常詳細的幾何的快速運動,這種質樸的擴展容易出現性能問題。問題在於:相對於其大小移動遠的小三角形將致使BVH節點儲存相當大從而粗略的量化網格,其無法正確定界小三角形特徵。
本發明的一個實施例透過不使用靜態量化網格(如當前實現中那樣)而是使用根據有界子節點的運動而移動的動態量化網格來解決所述問題。所述實施例利用了以下事實:相鄰的幾何通常以非常相似的方式移動;因此,BVH節點的子在運動中保持合理靠近,並經常朝同一方向移動。
此屬性在一個實現中被利用,透過確定具有沿著BVH節點的子的共同運動線性地移動的固定延長的量化網格。每個子的線性邊界現在可以被映射到所述移動量化網格,如透過從線性子運動減去線性柵格運動所獲得的殘餘運動再次是可直接得到用於所述線性量化邊界的線性運動。
所述技術的優點是:當它被放置在起始網格位置時,運動內插網格的延長只需要足夠大,以涵蓋在開始時間的所有幾何,並當它被放置在結束網格位置時,涵蓋在結束時間的所有幾何。因此,大小取決於開始和結束時BVH節點內包含的幾何的近似大小,而不取決於整個動畫路徑所佔的體積。因此,量化網格將更小,從而減少了儲存需求。
圖 31
顯示量化定界框到運動模糊三角形3101-3103的質樸擴展的實現。假設所述BVH節點有三個所示的三角形3101-3103為子,其如圖所示從左邊移到了右邊的位置。因此,在整個運動中,此BVH節點的量化網格3100是大的,只能粗略地定界在開始和結束時間的三角形。
圖 32
顯示在本發明的一個實施例中使用的變化,所述變化使用小得多的量化網格,所述量化網格顯著更緊密地定界相同的三角形3201-3203。特別是,開始時間量化網格3200A基於三角形3201-3203從左到右檢測到的運動被轉換成結束時間量化網格3200B。量化網格3200A-B沿著BVH節點的子的共同運動線性地移動。現在可以將每個子的線性邊界映射到此移動量化網格3200A-B中,因為透過從線性子運動中減去線性網格運動而獲得的殘餘運動再次是可以直接導出線性量化邊界的線性運動。
圖 33
顯示用於實現本文描述的運動模糊技術的架構的一個實施例。在操作中,BVH處理器3304基於圖形場景的輸入基元3309的當前集合構建BVH 3300。射線產生器3301產生遍歷電路3305遍歷穿過BVH 3307的射線。相交電路3310識別射線-基元相交,以產生命中3315,其用於進一步的處理(例如,基於材料規格產生次級射線,等等)。一或多個著色器可以執行指定的著色操作以繪製影像訊框。
在一個實施例中,運動模糊處理邏輯3312基於網格資料3318和BVH節點內的圖形基元的檢測運動來實現本文描述的運動模糊技術。在一個實施例中,量化網格運動評估器3314確定量化網格在指定時間段內的運動,運動模糊處理邏輯3312使用所述指定時間段來執行其運動模糊操作。運動模糊處理邏輯3312可以被實現為程式碼(例如,可執行著色器)、電路或者使用電路和程式碼的組合。本發明的基本原理不限於運動模糊處理邏輯3312的任何特定實現。
在圖 34 中
顯示用於運動模糊處理的方法的一個實施例。所述方法可以在上述架構的上下文中實現,但是不限於任何特定架構。
在3400處,基於輸入基元產生包含按階層排列的BVH節點的定界體階層(BVH)。在3401處,產生包含一組BVH節點的量化網格,其中每個BVH節點包含一或多個子節點。在3402處,基於檢測到的特定BVH節點的子節點的運動來確定量化網格的運動。在3404處,每個子節點的線性邊界被映射到移動量化網格。在一個實施例中,為了執行映射,透過從線性子節點運動中減去線性量化網格運動來獲得一或多個殘餘運動值。線性量化邊界接著從殘餘運動值導出。
如果在3404處確定需要處理另一個BVH節點的子節點,則程序返回到3401,在此計算當前BVH節點的新量化。如果不是,則程序結束。
現在將提供本發明的一個實施例的額外的細節。然而,應當注意,本發明的基本原理不限於這些具體細節。
在一個實施例中,內插網格資料3318包含開始位置(grid_start)、結束位置(grid_end)和網格的大小(grid_size),其對於所有時間值是相同的(也就是說,因為網格基於場景中基元的移動而移動)。在一個實施例中,所有的這些網格性質儲存為3D向量。
量化網格運動評估器3314將網格運動表示為:
其為用於快門時間0和1的特殊情況下的線性混合。定界框的線性運動(其中bounds_start是指定界框在開始時間,而bounds_end是指定界框在結束時間)可以被表示為:
因此,在所述三角形的網格相對邊界的開始時間是residual_bounds_start=(bounds_start-grid_start)/ grid_size,而柵格相對邊界的結束時間是residual_ bounds_end=(bounds_end-grid_end)/ grid_size。相對於所述移動網格的殘餘運動只是這些residual_bounds_start和residual_bounds_end位置的線性混合。因此,相對於移動網格的線性邊界在所述網格自身內部線性移動。
注意,本實施例中僅獲得殘餘線性運動,因為grid_size不是線性混合的,而只有一個固定grid_size。如果grid_size也線性地改變,則量化網格運動評估器3314確定兩個lerp運算的乘積,所述乘積不分解為兩個lerp的和。
殘餘邊界residual_bounds_start和residual_ bounds_end可以容易地在起點和終點位置處使用量化網格進行保守地量化,以透過對應的線性內插獲得量化的殘餘邊界quantized_residual_bounds_start和quantized_residual_ bounds_end:
此提供到3下定界平面和3上定界平面的距離,接著其由相交電路3310使用,以使用射線/框測試來測試此邊界是否命中。
在一個實施例中,使用上述技術(也就是說,定界體階層的壓縮和遍歷)減少了上述距離計算所需的處理。這些技術包含減少複雜度與節點的所有子之間共享的較高精確度距離計算,並添加使用降低的精確度量化邊界被確定的一些校正:
對所有子確定一次第一項(grid_base(time)- org)* rcp(dir),因為它僅取決於量化網格。針對每個子確定第二項quantized_residual_bounds(time)* grid_size * rcp (dir)。然而,當量化邊界的內插產生較低精確度的輸出,並且將grid_size選擇為2的冪時,則此項只是少量位元和浮點數rcp(dir)的乘積,在硬體的實現上再次是便宜的。
在一個實施例中,計算第一項的複雜度被進一步降低,如下所示:
其中grid_end_start=grid_end - grid_start是從grid_ start到grid_end的向量。當不進行運動模糊時,公式看起來幾乎相同,但是time *(grid_end_start)項將遺失。我們嘗試透過評估grid_end_start需要多少精確度和需要多少時間的精確度來降低計算此項的額外複雜度。儲存此grid_end_start項的8個尾數位元,並且僅使用時間的16個尾數位元就足夠了。這大大降低了此操作的硬體複雜度。減少grid_end_start的位元的方式必須使grid_end_start向量變長(因此,移動的網格仍包含所有幾何)。進一步降低時間精確度會給網格位置增加一些模糊性,必須使用適當擴展的殘留運動邊界來校正(透過此時間量化所引入的最大網格錯位可以簡單地擴展邊界)。
針對用於具有許多小三角形和大運動的場景的如上所述的實施例的統計評估,與質樸量化方法相比,每射線減少的相交步驟的數目超過一個數量級。
在實施例中,用語「引擎」或「模組」或「邏輯」可以是指特殊應用積體電路(ASIC)、電子電路、處理器(共享的、專用的或群組的)和/或執行一或多個軟體或韌體程式的記憶體(共享的、專用的或群組的)、組合邏輯電路和/或提供所描述功能的其它合適元件。在實施例中,引擎、模組或邏輯可以用韌體、硬體、軟體或韌體、硬體和軟體的任何組合來實現。
範例
以下是本發明的不同實施例的範例實現。
範例1. 一種方法,包含:基於輸入基元產生包含階層排列的定界體階層(BVH)節點的BVH,至少一個BVH節點包含一或多個子節點;基於所述至少一個BVH節點的所述一或多個子節點的運動值確定量化網格的運動值;以及將所述子節點中之各者的線性邊界映射到所述量化網格。
範例2. 如範例1的方法,其中映射所述子節點中之各者的線性邊界還包含:透過從與所述一或多個子節點相關的運動值中減去所述量化網格的運動值來獲得一或多個殘餘運動值;以及從所述一或多個殘餘運動值中得出所述一或多個子節點的量化邊界。
範例3. 如範例2的方法,其中所述一或多個子節點包含基元。
範例4. 如範例3的方法,其中所述基元處於運動中。
範例5. 如範例4的方法,其中與所述一或多個子節點相關的所述運動值係基於所述基元的運動來確定。
範例6. 如範例3的方法,其中所述基元包含三角形。
範例7. 如範例2的方法,還包含:根據所述一或多個子節點的所述量化邊界執行射線遍歷和/或相交操作,以確定射線的一或多個相交點。
範例8. 如範例7的方法,還包含:大量產生一或多個著色器以針對所述一或多個相交點執行圖形操作。
範例9. 一種機器可讀取媒體,其上儲存有程式碼,當所述程式碼由機器執行時,使所述機器執行以下操作:基於輸入基元產生包含階層排列的定界體階層(BVH)節點的BVH,至少一個BVH節點包含一或多個子節點;基於所述至少一個BVH節點的所述一或多個子節點的運動值確定量化網格的運動值;以及將所述子節點中之各者的線性邊界映射到所述量化網格。
範例10. 如範例9的機器可讀取媒體,其中映射所述子節點中之各者的線性邊界映射還包含:透過從與所述一或多個子節點相關的運動值中減去所述量化網格的運動值來獲得一或多個殘餘運動值;以及從所述一或多個殘餘運動值中得出所述一或多個子節點的量化邊界。
範例11. 如範例10的機器可讀取媒體,其中所述一或多個子節點包含基元。
範例12. 如範例11的機器可讀取媒體,其中所述基元處於運動中。
範例13. 如範例12的機器可讀取媒體,其中與所述一或多個子節點相關的所述運動值係基於所述基元的運動來確定。
範例14. 如範例11的機器可讀取媒體,其中所述基元包含三角形。
範例15. 如範例10的機器可讀取媒體,還包含程式碼,以使所述機器執行以下操作:根據所述一或多個子節點的所述量化邊界執行射線遍歷和/或相交操作,以確定射線的一或多個相交點。
範例16. 如範例15的機器可讀取媒體,還包含程式碼,以使所述機器執行以下操作:大量產生一或多個著色器以針對所述一或多個相交點執行圖形操作。
範例17. 一種圖形處理器,包含:定界體階層(BVH)產生器,其用以基於輸入基元構建包含階層排列的BVH節點的BVH,至少一個BVH節點包含一或多個子節點;以及運動模糊處理硬體邏輯,其用以基於所述至少一個BVH節點的所述一或多個子節點的運動值確定量化網格的運動值,並將所述子節點中之各者的線性邊界映射到所述量化網格。
範例18. 如範例17的圖形處理器,其中為了映射所述子節點中之各者的線性邊界,所述運動模糊處理硬體邏輯係透過從與所述一或多個子節點相關的運動值中減去所述量化網格的運動值來獲得一或多個殘餘運動值;以及從所述一或多個殘餘運動值中得出所述一或多個子節點的量化邊界。
範例19. 如範例18的圖形處理器,其中所述一或多個子節點包含基元。
範例20. 如範例19的圖形處理器,其中所述基元處於運動中。
範例21. 如範例20的圖形處理器,其中與所述一或多個子節點相關的所述運動值係基於所述基元的運動來確定。
範例22. 如範例19的圖形處理器,其中所述基元包含三角形。
範例23. 如範例18的圖形處理器,還包含:射線遍歷和相交硬體邏輯,其用以根據所述一或多個子節點的所述量化邊界執行射線遍歷和/或相交操作,以確定射線的一或多個相交點。
範例24. 如範例23的圖形處理器,還包含:複數個執行電路,其用以執行一或多個著色器,以針對所述一或多個相交點執行圖形操作。
本發明的實施例可以包含上面已經描述的各種步驟。這些步驟可以體現在機器可執行指令中,所述機器可執行指令可以用於使通用或專用處理器執行這些步驟。替代地,這些步驟可以由包含用於執行步驟的硬連線邏輯的特定硬體元件來執行,或者由程式化的電腦元件和自定義硬體元件的任意組合來執行。
如本文中所描述,指令可是指硬體的特定配置,諸如被配置成執行某些操作或具有預定功能性的特殊應用積體電路(ASIC)或儲存在非暫態電腦可讀取媒體中體現的記憶體中的軟體指令。因此,可以使用在一或多個電子裝置(例如,終端站、網路元件等)上儲存和執行的碼和資料來實現附圖中所示的技術。這種電子裝置使用電腦機器可讀取媒體(諸如非暫態電腦機器可讀取儲存媒體(例如磁碟;光碟;隨機存取記憶體;唯讀記憶體;快閃記憶體裝置;相變記憶體)和暫態電腦機器可讀取通訊媒體(例如電、光、聲或其它形式的傳播訊號,諸如載波、紅外線訊號、數位訊號等)來儲存碼和資料並且(內部地和/或透過網路與其它電子裝置)進行通訊。
此外,此類電子裝置通常包含與一或多個其它元件耦接的一組一或多個處理器,諸如一或多個儲存裝置(非暫態機器可讀取儲存媒體)、使用者輸入/輸出裝置(例如鍵盤、觸控螢幕和/或顯示器)和網路連接。一組處理器和其它元件的耦接通常透過一或多個匯流排和橋接器(也稱為匯流排控制器)進行。儲存裝置和承載網路訊務的訊號分別表示一或多種機器可讀取儲存媒體和機器可讀取通訊媒體。因此,給定電子裝置的儲存裝置通常儲存用於在所述電子裝置的一或多個處理器的集合上執行的碼和/或資料。當然,可以使用軟體、韌體和/或硬體的不同組合來實現本發明的實施例的一或多個部分。在整個詳細描述中,出於解釋的目的,闡述了許多具體細節以便提供對本發明的透徹理解。然而,對本領域技術人員顯而易見的是,可以在沒有這些具體細節中的一些的情況下實踐本發明。在某些情況下,沒有詳細描述眾所周知的結構和功能,以避免使本發明的申請標的不清楚。因此,本發明的範圍和精神應根據所附申請專利範圍來判斷。
100:處理系統
102:處理器
104:快取記憶體
106:暫存器檔案
107:處理器核心
108:圖形處理器
109:指令集
110:介面匯流排
111:顯示裝置
112:外部圖形處理器
116:記憶體控制器
119:外部加速器
120:記憶體裝置
121:指令
122:資料
124:資料儲存裝置
125:觸控感測器
126:無線收發器
128:韌體介面
130:平臺控制器集線器
134:網路控制器
140:I/O控制器
142:通用串列匯流排(USB)控制器
143:鍵盤和滑鼠
144:相機
146:音訊控制器
200:處理器
202A-202N:處理器核心
204A-204N:內部快取單元
206:共享快取單元
206A-206F:媒體取樣器
208:整合圖形處理器
210:系統代理核心
212:環狀互連
214:整合記憶體控制器
216:匯流排控制器單元
218:高效能嵌入式記憶體模組
300:圖形處理器
302:顯示控制器
304:區塊影像轉換(BLIT)引擎
306:視訊編解碼器引擎
310:圖形處理引擎(GPE)
312:3D管線
314:記憶體介面
315:3D/媒體子系統
316:媒體管線
318:顯示裝置
320:圖形處理器
403:命令串流器
410:圖形處理引擎
414:圖形核心陣列
415A,415B:圖形核心
416:共享功能邏輯
418:統一返回緩衝器
420:共享功能邏輯
421:取樣器
422:數學邏輯
423:線程間通訊(ITC)邏輯
425:快取
500:圖形處理器核心
501A-501F:子核心
502A-502F:執行單元(EU)陣列
503A-503F:線程分派和線程間通訊(TD/IC)邏輯
504A-504F:執行單元(EU)陣列
505A-505F:3D取樣器
507A-507F:著色器處理器
508A-508F:共享區域記憶體(SLM)
530:固定功能方塊
536:幾何/固定功能管線
537:圖形SoC介面
538:圖形微控制器
539:媒體管線
600:線程執行邏輯
602:著色器處理器
604:線程分派器
606:指令快取
608A-608N:執行單元
610:取樣器
611:共享區域記憶體
612:資料快取
614:資料埠
622:線程仲裁器
624:一般暫存器檔案陣列(GRF)
626:架構暫存器檔案陣列(ARF)
630:發送單元
632:分支單元
634:SIMD浮點單元(FPU)
635:專用整數SIMD ALU
637:指令提取單元
700:圖形處理器指令格式
710:128位元指令格式
712:指令運算碼
713:索引欄位
714:指令控制欄位
716:執行大小欄位
718:目的地
720:來源運算元
722:來源運算元
724:來源運算元
726:存取/位址模式欄位
730:64位元格式
740:運算碼解碼
742:移動和邏輯運算碼編組
744:流程控制指令編組
746:混雜指令編組
748:平行數學編組
750:向量數學編組
800:圖形處理器
802:環狀互連
803:命令串流器
805:頂點提取器
807:頂點著色器
811:可程式化外殼著色器
813:鑲嵌器
817:可程式化域著色器
819:幾何著色器
820:幾何管線
823:流輸出單元
829:剪輯器
830:媒體管線
831:線程分派器
834:視訊前端
837:媒體引擎
840:顯示引擎
841:2D引擎
843:顯示控制器
850:線程執行邏輯
851:L1快取
852A-852B:執行單元
854:取樣器
856:資料埠
858:紋理快取
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:作業系統
1022:圖形API
1024:前端著色器編譯器
1026:用戶模式圖形驅動器
1027:後端著色器編譯器
1028:作業系統內核模式功能
1029:內核模式圖形驅動器
1030:處理器
1032:圖形處理器
1034:通用處理器核心
1050:系統記憶體
1100:IP核心開發系統
1110:軟體模擬
1112:模擬模型
1115:暫存器傳輸級(RTL)設計
1120:硬體模型
1130:設計機構
1140:非揮發性記憶體
1150:有線連接
1160:無線連接
1165:製作機構
1170:封裝組件
1172:硬體邏輯
1173:互連結構
1174:硬體邏輯
1175:記憶體小晶片
1180:基板
1182:橋接器
1183:封裝互連
1200:單晶片積體電路
1205:應用處理器
1210:圖形處理器
1215:影像處理器
1220:視訊處理器
1225:USB控制器
1230:UART控制器
1235:SPI/SDIO控制器
1240:I2
S/I2
C控制器
1245:顯示裝置
1250:高解析度多媒體介面(HDMI)控制器
1255:行動產業處理器介面(MIPI)顯示介面
1260:快閃記憶體子系統
1265:記憶體控制器
1270:嵌入式安全引擎
1305:頂點處理器
1310:圖形處理器
1315A-1315N:片段處理器
1320A-1320B:記憶體管理單元(MMU)
1325A-1325B:快取
1330A-1330B:電路互連
1340:圖形處理器
1345:核間任務管理器
1355A-1355N:著色器核心
1358:平鋪單元
1400:圖形核心
1401A-1401N:片
1402:共享指令快取
1404A-1404N:區域指令快取
1406A-1406N:線程排程器
1408A-1408N:線程分派器
1410A-1410N:暫存器
1412A-1412N:附加功能單元
1414A-1414N:浮點單元
1415A-1415N:雙精確度浮點單元
1416-1416N:整數算術邏輯單元
1417A-1417N:矩陣處理單元
1418:紋理單元
1420:快取/共享記憶體
1430:通用處理單元(GPGPU)
1432:主介面
1434:全域排程器
1436A-1436H:計算叢集
1438:快取記憶體
1440:GPU鏈路
1442A-1442B:記憶體控制器
1500:三維軸
1502:定界體
1504:三維物件
1600:定界體
1602:有序樹
1700:定界框
1702:射線
1704:y平面入射相交距離
1706:x平面入射相交距離
1708:y平面出射相交距離
1710:x平面出射相交距離
1810:量化BVH節點
1812:parent_lower_x
1814:parent_lower_y
1816:parent_lower_z
1822:parent upper_x
1824:parent_upper_y
1826:parent_upper_z
1832:child_lower_x
1834:child_lower_y
1836:child_lower_z
1842:child_upper_x
1844:child_upper_y
1846:child_upper_z
1852:子參照
1900:複合浮點資料區塊
1902:1位元的符號位元
1904:可變大小(E位元)符號的整數指數
1906:可變大小(K位元)尾數
1910:量化的BVH節點
1912:parent_lower_x
1914:parent lower_y
1916:parent_lower_z
1922:exp_x
1924:child_lower_x
1926:child_upper_x
1932:exp_y
1934:child_lower_y
1936:child_upper_y
1942:exp_z
1944:child_lower_z
1946:child_upper_z
1952:子參照
2000:父定界框
2002:射線
2003:dist_parent_lower_x
2004:下定界平面
2005:dist_child_lower_x
2006:最小定界平面
2007:dist_child_upper_x
2008:最大定界平面
2010:子定界框
2100:BVH解壓縮和遍歷邏輯
2102:方塊
2104:方塊
2106:方塊
2108:方塊
2110:方塊
2112:方塊
2114:方塊
2200:二維共享平面定界框
2202:左子
2204:右子
2300:共享平面BVH邏輯
2302:方塊
2304:方塊
2306:方塊
2400:計算裝置
2402:作業系統(OS)
2404:圖形處理器
2406:應用處理器
2408:記憶體
2410:輸入/輸出(I/O)來源
2414:快取
2422:驅動器邏輯
2423:圖形驅動器邏輯
2424:定界體階層(BVH)邏輯
2434:射線追蹤邏輯
2444:執行資源
2454:暫存器
2500A-N:多核心組
2505:GPU
2510:排程器/分派器
2520:暫存器檔案
2530:圖形核心
2540:張量核心
2550:射線追蹤核心
2560:1級(L1)快取和紋理單元
2570:I/O記憶體管理單元(IOMMU)
2580:2級(L2)快取
2590:I/O裝置
2595:輸入/輸出(I/O)電路
2598:記憶體
2599:CPU
2600:射線追蹤引擎
2602:射線產生器
2603:遍歷/相交單元
2604:BVH處理電路/邏輯
2605:BVH
2606:輸入基元
2607:BVH構建器
2609:BVH壓縮器
2698:快取行
2700:8寬BVH節點
2701A-2701B:葉資料
2702A-2702B:葉資料
2703A-2703B:葉資料
2704A-2704B:葉資料
2705A-2705B:葉資料
2706A-2706B:葉資料
2707A-2707B:葉資料
2708A-2708B:葉資料
2710:子指標/參照
2722:8位元偏移
2725:BVH壓縮
2626:BVH解壓縮器
3100:量化網格
3101:運動模糊三角形
3102:運動模糊三角形
3103:運動模糊三角形
3200A-B:量化網格
3201:三角形
3202:三角形
3203:三角形
3301:射線產生器
3304:BVH處理器
3305:遍歷電路
3307:BVH
3309:輸入基元
3310:相交電路
3312:運動模糊處理邏輯
3314:量化網格運動評估器
3315:命中
3318:網格資料
3400:方塊
3401:方塊
3402:方塊
3403:方塊
3404:方塊
可以從以下結合附圖的詳細描述中獲得對本發明的更好的理解,其中:
[圖 1
]是具有包含一或多個處理器核心和圖形處理器的處理器的電腦系統的實施例的方塊圖;
[圖 2
]是具有一或多個處理器核心、整合記憶體控制器和整合圖形處理器的處理器的一個實施例的方塊圖;
[圖 3
]是圖形處理器的一個實施例的方塊圖,所述圖形處理器可以是離散的圖形處理單元,或者可以是整合有複數個處理核心的圖形處理器;
[圖 4
]是用於圖形處理器的圖形處理引擎的實施例的方塊圖;
[圖 5
]是圖形處理器的另一實施例的方塊圖。
[圖 6A-B
]顯示執行電路和邏輯的範例;
[圖 7
]顯示根據實施例的圖形處理器執行單元指令格式;
[圖 8
]是圖形處理器的另一實施例的方塊圖,所述圖形處理器包含圖形管線、媒體管線、顯示引擎、線程執行邏輯和繪製輸出管線;
[圖 9A
]是顯示根據實施例的圖形處理器命令格式的方塊圖;
[圖 9B
]是顯示根據實施例的圖形處理器命令序列的方塊圖;
[圖 10
]顯示根據實施例的用於資料處理系統的範例性圖形軟體架構;
[圖 11A-B
]顯示可以用於製造積體電路和範例性封裝組件的範例性IP核心開發系統;
[圖 12
]顯示根據實施例的可以使用一或多個IP核心來製造的範例性系統單晶片積體電路;
[圖 13A-B
]顯示可以使用一或多個IP核心來製造的系統單晶片積體電路的範例性圖形處理器;
[圖 14A-B
]顯示範例性圖形處理器架構;
[圖 15
]是根據實施例的定界體的圖示;
[圖 16A-B
]顯示定界體階層的表示;
[圖 17
]是根據實施例的射線框相交測試的圖示;
[圖 18
]是顯示根據實施例的範例性量化BVH節點的方塊圖;
[圖 19
]是根據另一實施例的由量化的BVH節點使用的複合浮點資料區塊的方塊圖;
[圖 20
]顯示根據實施例的使用量化值來定義相對於父定界框的子定界框的射線框相交;
[圖 21
]是根據實施例的BVH解壓縮和遍歷邏輯的流程圖;
[圖 22
]是範例性的二維共享平面定界框的圖示;
[圖 23
]是根據實施例的共享平面BVH邏輯的流程圖;
[圖 24
]是根據實施例的包含具有定界體階層邏輯的圖形處理器的計算裝置的方塊圖;
[圖 25
]顯示可以在其上實現本發明的實施例的裝置或系統;
[圖 26
]顯示用於構建、壓縮和解壓縮定界體階層的節點的裝置的一個實施例;
[圖 27
]顯示其中葉節點透過以偏移量替換指標來壓縮的一個實施例;
[圖 28
]顯示與三種BVH節點類型相關的碼;
[圖 29
]在記憶體消耗(以MB為單位)和總繪製性能(以fps為單位)方面將本發明的實施例與現有實現進行比較;
[圖 30
]是用來在記憶體消耗(以MB為單位)、遍歷統計和總性能方面將本發明的實施例與現有實現進行比較;
[圖 31
]顯示量化定界框對運動模糊三角形的質樸擴展;
[圖 32
]顯示本發明的一個實施例,其在開始和結束時間使用較小的量化網格;
[圖 33
]顯示包含運動模糊處理硬體/邏輯的架構的一個實施例;以及
[圖 34
]顯示根據本發明的一個實施例的方法。
Claims (25)
- 一種方法,包含: 基於輸入基元產生包含階層排列的定界體階層(BVH)節點的BVH,至少一個BVH節點包含一或多個子節點; 基於所述至少一個BVH節點的所述一或多個子節點的運動值確定量化網格的運動值;以及 將所述子節點中之各者的線性邊界映射到所述量化網格。
- 如請求項1的方法,其中映射所述子節點中之各者的線性邊界還包含: 透過從與所述一或多個子節點相關的運動值中減去所述量化網格的運動值來獲得一或多個殘餘運動值;以及 從所述一或多個殘餘運動值中得出所述一或多個子節點的量化邊界。
- 如請求項2的方法,其中所述一或多個子節點包含基元。
- 如請求項3的方法,其中所述基元處於運動中。
- 如請求項4的方法,其中與所述一或多個子節點相關的所述運動值係基於所述基元的運動來確定。
- 如請求項3至5中任一項的方法,其中所述基元包含三角形。
- 如請求項2至6中任一項的方法,還包含: 根據所述一或多個子節點的所述量化邊界執行射線遍歷和/或相交操作,以確定射線的一或多個相交點。
- 如請求項7的方法,還包含: 大量產生一或多個著色器以針對所述一或多個相交點執行圖形操作。
- 一種機器可讀取媒體,其上儲存有程式碼,當所述程式碼由機器執行時,使所述機器執行以下操作: 基於輸入基元產生包含階層排列的定界體階層(BVH)節點的BVH,至少一個BVH節點包含一或多個子節點; 基於所述至少一個BVH節點的所述一或多個子節點的運動值確定量化網格的運動值;以及 將所述子節點中之各者的線性邊界映射到所述量化網格。
- 如請求項9的機器可讀取媒體,其中映射所述子節點中之各者的線性邊界還包含: 透過從與所述一或多個子節點相關的運動值中減去所述量化網格的運動值來獲得一或多個殘餘運動值;以及 從所述一或多個殘餘運動值中得出所述一或多個子節點的量化邊界。
- 如請求項10的機器可讀取媒體,其中所述一或多個子節點包含基元。
- 如請求項11的機器可讀取媒體,其中所述基元處於運動中。
- 如請求項12的機器可讀取媒體,其中與所述一或多個子節點相關的所述運動值係基於所述基元的運動來確定。
- 如請求項11至13中任一項的機器可讀取媒體,其中所述基元包含三角形。
- 如請求項10至14中任一項的機器可讀取媒體,還包含程式碼,以使所述機器執行以下操作: 根據所述一或多個子節點的所述量化邊界執行射線遍歷和/或相交操作,以確定射線的一或多個相交點。
- 如請求項15的機器可讀取媒體,還包含程式碼,以使所述機器執行以下操作: 大量產生一或多個著色器以針對所述一或多個相交點執行圖形操作。
- 一種圖形處理器,包含: 定界體階層(BVH)產生器,其用以基於輸入基元構建包含階層排列的BVH節點的BVH,至少一個BVH節點包含一或多個子節點;以及 運動模糊處理硬體邏輯,其用以基於所述至少一個BVH節點的所述一或多個子節點的運動值確定量化網格的運動值,並將所述子節點中之各者的線性邊界映射到所述量化網格。
- 如請求項17的圖形處理器,其中為了映射所述子節點中之各者的線性邊界,所述運動模糊處理硬體邏輯係透過從與所述一或多個子節點相關的運動值中減去所述量化網格的運動值來獲得一或多個殘餘運動值;以及從所述一或多個殘餘運動值中得出所述一或多個子節點的量化邊界。
- 如請求項18的圖形處理器,其中所述一或多個子節點包含基元。
- 如請求項19的圖形處理器,其中所述基元處於運動中。
- 如請求項20的圖形處理器,其中與所述一或多個子節點相關的所述運動值係基於所述基元的運動來確定。
- 如請求項19至21中任一項的圖形處理器,其中所述基元包含三角形。
- 如請求項18至22中任一項的圖形處理器,還包含: 射線遍歷和相交硬體邏輯,其用以根據所述一或多個子節點的所述量化邊界執行射線遍歷和/或相交操作,以確定射線的一或多個相交點。
- 如請求項23的圖形處理器,還包含: 複數個執行電路,其用以執行一或多個著色器,以針對所述一或多個相交點執行圖形操作。
- 一種裝置,包含: 用於基於輸入基元產生包含階層排列的定界體階層(BVH)節點的BVH的機制,至少一個BVH節點包含一或多個子節點; 用於基於所述至少一個BVH節點的所述一或多個子節點的運動值確定量化網格的運動值的機制;以及 用於將所述子節點中之各者的線性邊界映射到所述量化網格的機制。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/819,114 US11663777B2 (en) | 2020-03-15 | 2020-03-15 | Apparatus and method for motion blur with a dynamic quantization grid |
US16/819,114 | 2020-03-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202139130A true TW202139130A (zh) | 2021-10-16 |
TWI855202B TWI855202B (zh) | 2024-09-11 |
Family
ID=
Also Published As
Publication number | Publication date |
---|---|
US20210287428A1 (en) | 2021-09-16 |
JP2021149941A (ja) | 2021-09-27 |
US11663777B2 (en) | 2023-05-30 |
KR20210116197A (ko) | 2021-09-27 |
CN113409428A (zh) | 2021-09-17 |
EP3882864A1 (en) | 2021-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10839475B2 (en) | Apparatus and method for compressing leaf nodes of a bounding volume hierarchy (BVH) | |
US11763183B2 (en) | Compression for deep learning in case of sparse values mapped to non-zero value | |
US11663777B2 (en) | Apparatus and method for motion blur with a dynamic quantization grid | |
US20200045344A1 (en) | Video processing mechanism | |
US10685476B2 (en) | Voxels sparse representation | |
CN110796724A (zh) | 点云视点和可扩展压缩/解压 | |
US11721059B2 (en) | Apparatus and method for cross-instance front-to-back traversal for ray tracing heavily-instanced scenes | |
US11568182B2 (en) | System and method for 3D blob classification and transmission | |
US11593069B2 (en) | Use of a single instruction set architecture (ISA) instruction for vector normalization | |
TW202205080A (zh) | 用於射線追蹤管線中之雙精確度射線遍歷的設備及方法 | |
US9858704B2 (en) | Reduced precision ray traversal with plane reuse | |
US11657472B2 (en) | Apparatus and method for compressing leaf nodes of a bounding volume hierarchy (BVH) | |
KR20220133769A (ko) | 컴퓨팅 아키텍처에서 8비트 부동 소수점 형식 피연산자 지원 | |
US11775195B2 (en) | Distributed copy engine | |
KR20210059603A (ko) | 병렬 압축해제 메커니즘 | |
US20200311948A1 (en) | Background estimation for object segmentation using coarse level tracking | |
US10497170B2 (en) | Method and apparatus for occlusion data compression in a graphics processor | |
TWI855202B (zh) | 用於具有動態量化網格的運動模糊的裝置及方法 | |
TW202121264A (zh) | 點積乘法器機制 |