TWI780839B - 具有並行射線測試之射線相交電路系統 - Google Patents

具有並行射線測試之射線相交電路系統 Download PDF

Info

Publication number
TWI780839B
TWI780839B TW110127658A TW110127658A TWI780839B TW I780839 B TWI780839 B TW I780839B TW 110127658 A TW110127658 A TW 110127658A TW 110127658 A TW110127658 A TW 110127658A TW I780839 B TWI780839 B TW I780839B
Authority
TW
Taiwan
Prior art keywords
ray
circuitry
rays
graphics
node
Prior art date
Application number
TW110127658A
Other languages
English (en)
Other versions
TW202215379A (zh
Inventor
雷克西 阿里 拉巴尼
克里斯多福 A 本斯
賈斯汀 A 漢斯利
盧卡 O 優莉亞諾
強納森 M 雷索
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 TW202215379A publication Critical patent/TW202215379A/zh
Application granted granted Critical
Publication of TWI780839B publication Critical patent/TWI780839B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/506Illumination models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/60Shadow generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Investigating Or Analyzing Materials Using Thermal Means (AREA)
  • Details Of Television Scanning (AREA)

Abstract

所揭露之技術係關於用於射線追蹤之射線相交處理。在一些實施例中,射線相交電路系統橫越一空間組織加速資料結構,並且包括邊界區域電路系統,該邊界區域電路系統經組態以並行地測試一射線是否與由該資料結構之一節點所指示的多個不同邊界區域相交。著色器電路系統可執行一射線相交指令,以由該射線相交電路系統叫用橫越,且該橫越可產生相交結果。該著色器電路系統可基於該等相交結果而著色所相交之基元。相對於傳統技術,共用介於相交電路系統與著色器處理器之間處理的所揭露技術可改善效能、降低功率消耗、或兩者。

Description

具有並行射線測試之射線相交電路系統
本揭露大致上係關於圖形處理器中的射線追蹤,且更具體而言,係關於經組態以偵測射線與圖形基元之間的相交的電路系統。
在電腦圖形中,射線追蹤係一種演現技術,其用於藉由將光線路徑作為在一影像平面中之像素追蹤而產生影像,並模擬其與虛擬物體會遇的效應。射線追蹤可允許在場景中之任兩個點之間的三維可見度解析度,其亦係其大部分運算費用來源。一般射線追蹤器取樣在光傳播相反方向開始於攝影機且傳播至場景中(而非來自光源)而穿過場景的光路徑(此有時稱為「後向射線追蹤」(backward ray tracing))。開始於攝影機具有僅追蹤對於攝影機可見之射線之益處。此系統可模型化一光柵(rasterizer),其中射線僅停止於該第一表面處,並且叫用一著色器(類似於一片段著色器)以運算一顏色。亦模型化更常見的次要效應,其中場景元素(諸如相互漫反射(diffuse inter-reflection)及透射)之間的照明交換。評估表面反射性質之著色器可叫用進一步相交查詢(例如,產生新射線)以擷取從其他表面傳入的照明。此種遞迴程序具有許多公式化,但通常稱為路徑追蹤。
實施射線追蹤之圖形處理器一般提供相對於傳統光柵化系統之更實際的場景及照明效應。然而,射線追蹤一般係運算上昂貴的。改善射線追蹤技術可改善圖形場景中的寫實性、改善效能(例如,允許每圖框追蹤更多射線、更複雜場景的追蹤、或兩者)、降低功率消耗(其在電池供電裝置中可特別重要)等。
0-9:節點
100:處理流程
110:變換及照明程序
115:剪輯程序
120:光柵化程序
130:著色程序
135:圖框緩衝器
150:圖形單元
160:可程式化著色器
165:紋理處理單元(TPU)
170:影像寫入單元(IWU)
175:片段管
180:記憶體介面
185:頂點管
190:射線相交加速器(RIA)
210:圖形場景之幾何資料
215:加速資料結構(ADS)建置元件
220:加速資料結構(ADS)
225:攝影機著色元件
230:ADS橫越元件/ADS橫越
235:邊界區域測試元件
240:基元測試元件/邊界區域測試
245:結果著色元件
250:元件
310:邊界區域測試電路系統
350:步驟
360:步驟
370:步驟
380:步驟
390:步驟
610:指令提取及排程電路系統/電路系統
615:L0儲存電路系統
620:路由網路
630:L1儲存器
640:較高層快取/記憶體電路系統
660:著色器管線
710:並行測試器/並行測試器電路系統
715:邊界區域資料快取
720:射線資料快取
725:共同計算電路系統
730:邊界區域測試器
730A-703N:邊界區域測試器
735:結果排序電路系統
810:符記緩衝器
820:射線核心資料
830:射線堆疊資料
840:射線延伸資料/延伸資料
1210:節點測試器
1220:團A
1230:團T/S
1240:著色器核心空間
1250:裝置記憶體
1310:步驟
1315:步驟
1320:步驟
1325:步驟
1330:步驟
1335:步驟
1340:步驟
1345:步驟
1350:步驟
1355:步驟
1405:步驟
1410:步驟
1420:步驟
1430:步驟
1440:步驟
1520:ADS節點
1610:步驟
1620:步驟
1630:步驟
1810:步驟
1820:步驟
1830:步驟
1910:分組控制電路系統
2010:步驟
2020:步驟
2030:步驟
2040:步驟
2110:步驟
2112:步驟
2114:步驟
2116:步驟
2118:步驟
2120:步驟
2122:步驟
2124:步驟
2126:步驟
2128:步驟
2130:步驟
2132:步驟
2134:步驟
2140:步驟
2142:步驟
2144:步驟
2146:步驟
2210:著色器核心/核心
2210A-2210N:著色器核心
2220:快取/記憶體階層/階層
2230:其他電路系統
2240:共處理器
2240A-2240N:共處理器
2310A-2310M:記憶體空間
2320:著色器核心空間
2330:裝置記憶體空間
2410:L1快取
2420:暫存器檔案
2430:L2快取
2440:控制電路系統
2450:著色器管線
2510:步驟
2520:步驟
2600:裝置
2610:網狀結構
2620:運算複合體
2625:匯流排介面單元(BIU)
2630:快取
2635:核心
2640:核心
2645:快取/記憶體控制器
2650:輸入/輸出(I/O)橋接器
2665:顯示單元
2700:系統或裝置
2710:桌上型電腦
2720:膝上型電腦
2730:平板電腦
2740:蜂巢式或行動電話
2750:電視
2760:穿戴式裝置
2770:基於雲端的服務
2780:裝置
2790:車輛
2810:非暫時性電腦可讀媒體
2815:設計資訊
2820:半導體製造系統
2830:積體電路
A-D:節點
L0-L8:葉
P0-P3:基元
R:根節點
〔圖1A〕係繪示根據一些實施例之實例圖形處理操作概要的圖。
〔圖1B〕係繪示根據一些實施例之實例圖形單元的方塊圖。
〔圖2〕係繪示根據一些實施例之使用ADS之實例射線追蹤程序的圖。
〔圖3A〕係繪示根據一些實施例之包括著色器處理器電路系統及相交電路系統的一實例圖形處理器的方塊圖。
〔圖3B〕係繪示根據一些實施例之用於使用射線相交電路系統來偵測射線相交之實例方法的流程圖。
〔圖4〕係繪示根據一些實施例之一實例ADS樹狀結構的方塊圖。
〔圖5〕係繪示根據一些實施例之使用一射線堆疊之一BVH樹之一實例性深度優先橫越(depth-first traversal)的圖。
〔圖6〕係繪示根據一些實施例之射線相交電路系統與其他圖形電路系統之實例連接性的方塊圖。
〔圖7〕係繪示根據一些實施例之詳細實例並行邊界區域測試電路系統的方塊圖。
〔圖8〕係繪示根據一些實施例之用於儲存射線資料的射線著色器核心空間(shader core space,SCS)的實例組織。
〔圖9〕係繪示根據一些實施例之實例節點資料結構的圖。
〔圖10〕係繪示根據一些實施例之實例可組態大小之葉資料結構的圖。
〔圖11〕係繪示根據一些實施例之具有可變大小之葉節點的ADS樹狀結構之一實例記憶體佈局的圖。
〔圖12〕係繪示根據一些實施例之相交電路系統、節點測試電路系統、記憶體區域、及由著色器電路系統執行的SIMD群組之間的實例資料流程的圖。
〔圖13〕係繪示根據一些實施例之與圖12之資料流程相關聯之實例方法的流程圖。
〔圖14A〕係繪示根據一些實施例之用於動態形成用於基元測試之SIMD群組之實例技術的方塊圖。
〔圖14B〕係繪示根據一些實施例之用於動態形成用於基元測試之SIMD群組之實例方法的流程圖。
〔圖15〕係繪示根據一些實施例之在邊界區域與基元之間的實例多對多映射的圖。
〔圖16〕係繪示根據一些實施例之用於產生具有多對多映射之空間組織資料結構之實例方法的流程圖。
〔圖17〕係繪示根據一些實施例之當橫越加速資料結構時用於射線變換之SIMD群組的實例動態形成的圖。
〔圖18〕係繪示根據一些實施例之用於動態形成用於射線座標變換之SIMD群組之實例方法的流程圖。
〔圖19A〕係繪示根據一些實施例之目前目標為ADS中之不同節點的不同射線在其等橫越期間之實例情況的圖。
〔圖19B〕係繪示根據一些實施例之實例分組控制電路系統的方塊圖。
〔圖19C〕係繪示根據一些實施例之用於分組射線的實例單向連結清單實施方案的圖。
〔圖20〕係繪示根據一些實施例之用於橫越ADS期間分組射線之實例方法的流程圖。
〔圖21〕係繪示根據一些實施例之用於處理射線之實例方法的流程圖。
〔圖22A〕係繪示根據一些實施例之著色器核心可存取之實例快閃記憶體階層的方塊圖。
〔圖22B〕係顯示根據一些實施例之多個著色器核心及其等之共處理器可存取之實例快閃記憶體階層的方塊圖。
〔圖23〕係繪示根據一些實施例之實例性執行緒群組(threadgroup)、著色器核心、及裝置記憶體空間的圖。
〔圖24〕係繪示根據一些實施例之用於不同記憶體空間之實例快取組織及同調性點的方塊圖。
〔圖25〕係繪示根據一些實施例之用於使用著色器記憶體空間之實例方法的流程圖。
〔圖26〕係繪示根據一些實施例之一實例運算裝置的方塊圖。
〔圖27〕係繪示根據一些實施例之系統或裝置之實例應用的圖。
〔圖28〕係繪示根據一些實施例之儲存電路設計資訊的實例電腦可讀媒體的方塊圖。
本揭露提出各種射線追蹤技術,且具體而言是射線相交技術。圖1A至圖2大致上提供圖形程序及射線追蹤之概述。圖3A至圖6提供對射線相交加速器電路系統之實例實施例的介紹。
圖7至圖21提供關於射線相交電路系統之實施例及與其他圖形電路系統互動的額外細節。具體而言,圖7顯示並行節點測試電路系統,圖8顯示一記憶體空間,其用以在著色器與相交電路系統之間共用射線資料,圖9至圖11顯示實例資料結構及記憶體空間,圖12至圖13顯示實例總體資料流程,圖14A至圖14B顯示用於動態形成用於基元測試之SIMD群組的實例技術,圖15至圖16提供在邊界區域與基元之間的多對多映射,圖17至圖18提供用於在橫越期間動態形成SIMD群組(例如,用於射線變換)的實例技術,圖19至圖20提供用於節點測試之實例射線分組技術,及圖21提供用於射線相交操作的整體流程圖。圖21至圖25提供關於著色器核心記憶體空間的範圍之細節。
圖26顯示可包括一圖形處理器的實例運算裝置,圖27顯示實例應用,及圖28顯示儲存電路設計資訊之實例電腦可讀取媒體。
圖形處理概述
參考圖1A,顯示的係繪示一種用於處理圖形資料之實例處理流程100的流程圖。在一些實施例中,變換及照明程序110可涉及基於經界定的光 源位置、反射率等處理自一應用程式接收之用於頂點的照明資訊;將頂點組裝成多邊形(例如三角形);及/或基於三維空間中的位置將多邊形變換成正確的大小及定向。剪輯程序115可涉及捨棄落在一可視區外的多邊形或頂點。光柵化程序120可涉及例如基於多邊形之頂點的紋理座標而在各多邊形內界定片段以及分派用於各片段的初始色值。片段可指定用於其等重疊之像素的屬性,但可基於組合多個片段(例如,在一圖框緩衝器中)及/或忽略一或多個片段(例如,若其等經其他物件覆蓋)來判定實際的像素屬性。著色程序130可涉及基於照明、陰影、塊形映射、半透明度等變更像素組件。。可在一圖框緩衝器135中組譯經著色的像素。現代GPU一般包括可程式化著色器,其等允許由應用程式開發人員客製化著色及其他處理程序。因此,在各種實施例中,圖1A之實例元件以各種順序執行、並行地執行、或省略。亦可實施額外的處理程序。
現參考圖1B,顯示繪示根據一些實施例之圖形單元150的簡化方塊圖。在所繪示之實施例中,圖形單元150包括可程式化著色器160、頂點管185、片段管175、紋理處理單元(texture processing unit,TPU)165、影像寫入單元170、及記憶體介面180。在一些實施例中,圖形單元150經組態以使用可程式化著色器160處理頂點及片段資料兩者,該可程式化著色器可經組態以使用多個執行管線或執行個體來處理圖形資料。
在所繪示之實施例中,頂點管185可包括經組態以處理頂點資料的各種固定功能硬體。頂點管185可經組態以與可程式化著色器160通訊以協調頂點處理。在所繪示之實施例中,頂點管185經組態以將經處理的資料發送至片段管175及/或可程式化著色器160以供進一步處理。
在所繪示之實施例中,片段管175可包括經組態以處理像素資料的各種固定功能硬體。片段管175可經組態以與可程式化著色器160通訊以協調片段處理。片段管175可經組態以對來自頂點管185及/或可程式化著色器160的多邊形執行光柵化,以產生片段資料。頂點管185及/或片段管175可耦接至記憶體介面180(未圖示耦接)以存取圖形資料。
在所繪示之實施例中,可程式化著色器160經組態以接收來自頂點管185之頂點資料以及來自片段管175及/或TPU 165之片段資料。可程式化著色器160可經組態以對頂點資料執行頂點處理任務,其可包括頂點資料的各種變換及/或調整。在所繪示之實施例中,例如,可程式化著色器160亦經組態以對像素資料執行片段處理任務(諸如紋理化及著色)。可程式化著色器160可包括用於並行地處理資料的多組多個執行管線。
在所繪示之實施例中,TPU 165經組態以排程來自可程式化著色器160的片段處理任務。在一些實施例中,TPU 165經組態以預提取紋理資料且將初始色彩指派給片段,以供可程式化著色器160進一步處理(例如,經由記憶體介面180)。例如,TPU 165可經組態以依正規化整數格式或浮點格式來提供片段組件。在一些實施例中,TPU 165經組態以提供待藉由可程式化著色器160中之一群組四個的執行管線處理之呈2x2格式之一群組四個的片段(一「片段方塊(fragment quad)」)。
在一些實施例中,影像寫入單元(image write unit,IWU)170經組態以儲存一影像之經處理圖塊,且可在一經演現影像經傳輸以供顯示或經傳輸至記憶體以供儲存之前執行操作。在一些實施例中,圖形單元150經組態以執行基於圖塊的延遲演現(tile-based deferred rendering,TBDR)。在基於圖塊的演現 中,可分開處理螢幕空間的不同部分(例如,像素的正方形或矩形)。記憶體介面180可促成與各種實施例中之各種記憶體階層之一或多者的通訊。
在所繪示之實例中,圖形單元150包括射線相交加速器(ray intersection accelerator,RIA)190,其可包括經組態以執行各種射線相交操作的硬體,如下文所詳細描述者。
射線追蹤概述
射線追蹤技術一般取樣在光傳播相反方向開始於攝影機且傳播至場景中(而非來自光源)而穿過場景的光路徑(此有時稱為「後向射線追蹤」)。一射線可使用一原點(O)、一方向(D)、及定義該射線之作用部分的一參數區間(T)所定義。因此,一射線可視為一線段。一圖形處理器可針對一給定射線執行各種查詢。例如,一「最接近命中(closest hit)」查詢可定位沿該射線且在該參數區間內的最接近相交幾何(此可係最常見的查詢類型)。一「任何命中(any hit)」查詢可定位沿該射線且在該參數區間內的任何相交幾何。此類型的查詢可用於陰影射線,例如,以判定該場景中的一點具有對該光的可見度或被遮擋。一旦已判定相交幾何,該幾何可係基於該等相交而著色,且繼而可例如從反射表面產生用於相交測試之更多射線。
射線相交計算常係藉由加速資料結構(acceleration data structure,ADS)來促進。為了有效率地實施射線相交查詢,一空間資料結構可減少射線表面相交測試之數目,從而加速查詢程序。ADS的常見類別係其中表面基元被封閉在幾何代理體積(geometric proxy volume)(例如,方塊(box))的階層中的邊界體積階層(bounding volume hierarchy,BVH),幾何代理體積對相交的測試較便 宜。這些體積可稱為邊界區域。藉由橫越資料結構並在過程中執行代理相交測試,圖形處理器定位針對一給定射線的一組保守候選相交基元。BVH的常見形式使用3D軸對齊邊界方塊(Axis-Aligned Bounding Boxes,AABB)。一旦建構,AABB BVH可針對所有射線查詢,且係一個視點獨立結構。在一些實施例中,這些結構係針對場景中、在局部物體空間中、或在該物體的模型空間中之各相異網格而建構一次,並且在橫越於BVH之前將射線從世界空間變換成局部空間。這可允許具有許多剛性變換及材料性質之單一網格的幾何執行個體化(geometric instancing)(類似於光柵化的執行個體化)。動畫幾何一般需要重建資料結構(有時以已知為「重新適配(refit)」的較不昂貴的更新操作)。針對其中對照在單一圖框中的單一場景追蹤數百萬或數十億條射線的非即時使用情況,ADS構造的成本被完全攤銷為「免費(free)」的點。然而,在即時情境中,一般有建置成本與橫越成本之間的難以處理的權衡,其中愈高效率的結構一般建置愈昂貴。
在下文詳細討論的一些實施例中,相交電路系統經組態以橫越BVH ADS,其針對其邊界體積使用3D軸對齊方塊。ADS可具有最大的分支因數(例如,2、4、8、16等)及一彈性使用者定義的酬載(例如,樹的葉處的內容),其不假定三角形幾何。
圖2係繪示根據一些實施例之使用ADS之實例射線追蹤程序的圖。ADS建置元件215接收針對一圖形場景之幾何資料210並產生ADS 220。ADS建置元件215可例如基於一動畫物體的位置變化而從草稿建置ADS或更新一先前ADS。攝影機著色元件225(其亦可稱為來源著色器)產生源自該視點處的射線(其可稱為主要射線、攝影機射線、或眼睛射線)。這些射線係藉由 ADS橫越元件230來處理。橫越包括藉由邊界區域(例如,方塊)測試元件235與基元測試元件240進行的操作,並對結果著色元件245(其可稱為命中著色器)提供相交結果。該著色可產生用於ADS橫越的額外新射線。該著色可產生用於在元件250處建置一圖框緩衝器的片段資料。
在各種所揭露之實施例中,相交電路系統(例如,一射線相交共處理器或包括在一圖形處理器中的專用電路系統)經組態以執行ADS橫越230及邊界區域測試235。在一些實施例中,該射線相交電路系統在橫越期間產生用於著色器處理器(例如,用於座標變換或基元測試)的工作。該等著色器處理器可執行SIMD群組以執行下文所討論的各種操作。
因為有本文中所討論的多種類型之SIMD群組,所以將使用下列標示:「團A」係指傳統的SIMD群組,其執行一圖形程式(且可執行一射線相交指令);「團S」係指由該射線相交電路系統所形成以用於座標變換的SIMD群組;及「團T」係指由該射線相交電路系統所形成以用於基元測試的SIMD群組,如下文詳細討論者。
實例射線相交電路系統
圖3A係繪示根據一些實施例之包括著色器處理器電路系統及相交電路系統的一實例圖形處理器的方塊圖。在所繪示之實施例中,該系統包括可程式化著色器160(其可執行圖形程式)及射線相交加速器(RIA)190(其係專用相交電路系統之一個實例)。
在所繪示之實例中,可程式化著色器160接收及執行包括在圖形程式中的相交射線指令。例如,該相交射線指令可係一單指令多資料(single- instruction multiple-data,SIMD)指令,並且可指定多個射線。作為回應,可程式化著色器160發送一相交射線命令至RIA 190。該命令可包括對針對該(等)所處理射線的一資料結構之一指標。
在所繪示之實例中,RIA 190經組態以基於針對該場景之一空間組織資料結構(例如,BVH)的橫越而產生相交結果。RIA 190包括邊界區域測試電路系統,其可經組態以對照多個邊界區域(例如,方塊)並行地測試一射線。在一些實施例中,相交結果指示待測試相交的一組基元,例如,RIA 190可啟動一或多個SIMD群組以在可程式化著色器160上執行基元測試,如下文參考圖14A至圖14B所論述。在其他實施例中,RIA 190可執行基元測試,且相交結果可直接指示經相交基元。
用語「SIMD群組(SIMD group)」意欲根據其所充分理解的意義解釋,其包括一組執行緒,針對該等執行緒的處理硬體使用不同執行緒之不同輸入資料並行地處理相同指令。各種類型的電腦處理器可包括經組態以執行SIMD指令的管線組。例如,圖形處理器常包括可程式化著色器核心,該等可程式化著色器核心經組態以依SIMD方式執行針對一組相關執行緒的指令。經常用於SIMD群組的名稱之其他實例包括:波前(wavefront)、團(clique)、或集(warp)。SIMD群組可係一較大執行緒群組之一部分,該較大執行緒群組可基於電腦的並行處理能力而分解成數個SIMD群組。在一些實施例中,各執行緒被指派給一硬體管線,該硬體管線提取針對該執行緒的運算元,並與針對該組執行緒的其他管線並行地執行該等特定操作。請注意,處理器可具有大量管線,使得多個分開的SIMD群組亦可並行地執行。在一些實施例中,各執行緒具有 私用運算元儲存區,例如在一暫存器檔案中。因此,讀取來自暫存器檔案的特定暫存器可提供用於SIMD群組中之各執行緒的暫存器版本。
請注意,在其他實施例中,可使用單一執行緒來執行如使用SIMD群組執行的各種所揭露技術。因此,本文所討論的SIMD實例並非意欲限制本揭露之範圍。在各種實施例中,SIMD技術可相對於非SIMD技術改善效能,然而,特別是給定圖形處理器一般包括大量的並行硬體。
圖3B係繪示根據一些實施例之用於使用射線相交電路系統來偵測射線相交之實例方法的流程圖。圖3B所示之方法可與本文所揭示之電腦電路系統、系統、裝置、元件、組件、或其他者之任何者結合使用。在各種實施例中,所示之方法元件的一些可同時執行、以不同於所示的一順序執行、或者可省略。亦可依需要執行額外的方法元件。
在350,在所繪示之實施例中,圖形著色器電路系統(例如,可程式化著色器160)執行指示用於在一圖形場景中之一組一或多個射線之原點及方向資訊的一射線相交指令。
在360,在所繪示之實施例中,射線相交電路系統(例如,RIA 190)回應於該射線相交指令而橫越一空間組織加速資料結構中之多個節點,其中該資料結構之節點指示對應於該圖形場景中之邊界區域的座標。
在370,在所繪示之實施例中,在該橫越期間,邊界區域測試電路系統(例如,電路系統310)並行地測試該組射線中之一射線是否與由該資料結構之一節點所指示的該等邊界區域中之多者相交。
在380,在所繪示之實施例中,該裝置判定指定被該組一或多個射線之各別射線所相交的一或多個圖形基元之資訊。
在390,在所繪示之實施例中,該圖形著色器電路系統基於相交射線來著色所指定之該一或多個圖形基元。
以下關於圖3B之方法之各種實施例的討論提供以下更詳細論述之各種射線相交技術的高階概述。
在一些實施例中,該邊界區域測試電路系統包括多個邊界區域測試器,該多個邊界區域測試器經組態以判定一射線是否與一邊界區域相交,並經組態以執行針對多個邊界區域的並行測試。該邊界區域測試電路系統亦可包括共同計算電路系統,該共同計算電路系統經組態以執行一或多個操作,該一或多個操作的輸出係由該等邊界區域測試器共用。在一些實施例中,該邊界區域測試電路系統進一步包括:一邊界區域資料快取;一射線資料快取;及結果排序電路系統,其經組態以基於相距於一所測試射線之一原點的距離,排序來自該多個邊界區域測試器的相交結果。
在一些實施例中,該邊界區域測試電路系統經組態以對照該多個不同邊界區域來並行地測試多個射線。在這些實施例中,該邊界區域測試電路系統可在相同時間對照M個邊界區域來測試N個射線。
在一些實施例中,該設備經組態以將針對該組一或多個射線之射線資料儲存在該圖形著色器電路系統及該射線相交電路系統可存取的一著色器記憶體空間(其可稱為一射線著色器核心空間)中。在一些實施例中,該圖形著色器電路系統經組態以:基於所指定之該一或多個圖形基元的著色而產生一或多個額外射線;及執行針對該一或多個額外射線的一射線相交指令。
在一些實施例中,該加速資料結構係一階層結構,且一第一節點係在一上層加速資料結構之一葉節點,該葉節點具有在一下層加速資料結構 中的一子節點。(在下文關於圖4更詳細論述此類階層結構的實例。)該下層加速資料結構可對應於在該圖形場景中多次經具現化的一圖形模型。該射線相交電路系統可經組態以形成一SIMD群組(其可稱為一團S),以將到達該第一節點的一或多個射線之座標變換成該圖形模型之一執行個體之一模型空間。
在一些實施例中,該ADS具有相對高的分支因數,例如,使得該加速資料結構之一或多個節點包括四個或更多個邊界區域及四個或更多個子節點。在一些實施例中,可支援甚至更大的分支因數,諸如八、十、十二、十六等。在一些實施例中,該ADS支援邊界區域與基元之間的實例多對多映射,例如,使得加速資料結構包括具有至少一個邊界區域的(多個)節點,針對該至少一個邊界區域的多個基元經指示為子代,且該加速資料結構包括至少一個基元,針對該至少一個基元的多個邊界區域經指示為親代。
在一些實施例中,該射線相交電路系統經組態以形成一SIMD群組(一團T),以對照對應於該資料結構之一葉節點的一基元來測試一組射線。
在一些實施例中,該射線相交電路系統經組態以使用分組電路系統基於其等下一個目標的該資料結構之該節點而將該組射線之部分分組成多個群組,其中該測試係基於該等群組。此可改善存取節點資料的時間局部性。
實例樹狀結構及深度優先橫越之概述
圖4係繪示根據一些實施例之簡化實例ADS樹狀結構的方塊圖。在所繪示之實例中,樹包括節點0至5及葉L0至L8。各節點可包括各指向一子節點或指向一或多個基元的兩個或更多個邊界區域。概念上,各節點可儲存針對 其子代的界限,但並非其自身的界限(其可係意味基於其親節點)。在一些實施例中,各葉表示被包括在該親節點之一邊界區域中的一基元,諸如三角形。下文參考圖9至圖10討論針對節點及葉之詳細實例資料結構。
在所繪示之實例中,各節點具有至多兩個子節點,但在各種實施例中,可實施較大的分支因數。在一些實施例中,針對節點的「節點測試(node test)」包括針對對應於子節點之多個邊界區域的界限測試。內部節點係其等子代皆是節點的節點(諸如圖4中之節點0及2)。葉節點係其等子代皆是葉的節點(諸如圖4中之節點1、3及5)。一混合節點具有葉及節點子代的一混合物,諸如圖4中之節點4。可使用廣度優先、深度優先技術、或兩者之組合來橫越基於樹之ADS結構,以例如判定一或多個基元,應對照該一或多個基元來測試一射線的相交。
圖5係繪示根據一些實施例之使用一射線堆疊之一BVH樹之一實例性深度優先橫越的圖。在所繪示之實例中,使用虛線所示之節點未被所測試射線相交,及實心三角形表示經相交的基元。
考慮對應於圖5之情況的下列實例橫越。首先,射線對照對應於場景範圍之一根邊界區域的根節點0進行測試。每次有一命中時,測試該節點的子代。在此實例中,節點1及2兩者皆命中,所以橫越繼續至節點2的子代,並將節點1推入針對所測試節點的射線堆疊。方塊5及6兩者皆命中,並將節點6推入該堆疊。當測試節點5的子代時,節點7係命中,但節點8係未命中,所以沒有任何者被推入該堆疊,並且橫越繼續至節點7的子代。針對節點11其與節點7之葉子代的邊界區域兩者皆命中,因此節點11被推入至該堆疊,且該葉係針對基元相交而測試。
圖5的射線堆疊顯示在實例橫越期間在此點處之堆疊狀態,其中節點11、6及1在該堆疊上。在此點處,已到達一葉,並且接下來應橫越該樹之被延遲部分,其可稱為回溯。相交電路系統取出該堆疊,並針對基元相交來測試節點11之葉。接著,相交電路系統取出該堆疊,並測試節點6之子代,兩者皆未命中。在橫越期間未到達節點12及13,因為其等之親節點9並非命中。接著,相交電路系統取出節點1,並且其子節點3與4兩者皆未命中。
請注意,存在多個原因,親節點可係命中,但其子節點皆沒有命中。首先,由於ADS的本質,親代邊界區域合併比子代更大的體積,所以與該親代邊界區域相交的一射線可能不與子代區域相交。另一個原因在於一射線可基於所偵測到與基元之相交而縮短。例如,在命中節點7的基元子代之後,陣列之作用部分的長度可被剪輯,使得其未進行通過該相交。在一些情況中,此可造成節點3及4未命中。當該堆疊是空的且沒有待探求的進一步路徑時,該橫越可結束並且該相交電路系統可傳回結果。
請注意,各種所揭露之技術可施加至其他資料結構組織(例如,非樹加速或非BVH資料結構)。所揭露之資料結構圖形係為了說明目的而包括在內,但不意欲限制本揭露之範圍。類似地,可使用一或多個不同節點類型來實施各種節點結構。
實例RIA連接性與區域測試電路系統
圖6係繪示根據一些實施例之射線相交電路系統與其他圖形電路系統之實例連接性的方塊圖。在所繪示之實施例中,一圖形處理器包括指令提取及排程電路系統610、著色器管線660(例如,其可被包括在可程式化著色器 160中)、L0儲存電路系統615、路由網路620、L1儲存器630、較高層快取/記憶體電路系統640、RIA 190、及紋理處理單元165。
L0儲存器可經組態以儲存由著色器管線660所處理之運算元。L1儲存器630可經組態以將圖形資料儲存於一較高層,該較高層亦可供紋理處理單元165及RIA 190使用。路由網路620可促進在著色器管線中之線道之間(例如,在SIMD群組內的執行緒之間)、在不同的儲存層級之間、以及在L1儲存器與不同單元之間(諸如RIA 190與紋理處理單元165)之間移動運算元。例如,較高層快取/記憶體電路系統640可包括一或多個L2快取或系統記憶體。各種儲存器或快取元件可實施適當的定址或快取組織方案。下文參考圖8至圖11討論可儲存在圖6之一或多個儲存元件中的實例資料結構。
在一些實施例中,由電路系統610提取的一圖形程式可包括一射線相交指令。基於該指令,一著色器管線660可發送一射線相交命令至RIA 190,其可經由L1儲存器630存取相關聯之射線及幾何資料。RIA 190亦可使用透過路由網路620的通訊來動態地形成用於著色器管線660的SIMD群組。
請注意,圖6所揭露之電路系統組織係出於說明目的而包括,而非意欲限制本揭露的範圍。在其他實施例中,可實施用於射線相交及可程式化著色器電路系統之專用電路系統的各種組織之任何者。
圖7係繪示根據一些實施例之詳細實例並行邊界區域測試電路系統的方塊圖。在所繪示之實例中,並行測試器電路系統710接收針對多個邊界區域之射線資料及邊界區域資料,並且輸出指示一射線是否相交於該等邊界區域的結果。並行測試器710包括邊界區域資料快取715、射線資料快取720、共 同計算電路系統725、邊界區域測試器730A至703N、及結果排序電路系統735。
在一些實施例中,並行測試器710係一節點測試器,其經組態以測試至多N個邊界區域,其中該ADS中的各節點包括至多N個子節點。在具有M個可程式化著色器執行個體的實施例中,RIA 190可包括用於各可程式化著色器的多個並行測試器710,例如,2、4、8等。在這些實施例中,各節點測試器可測試至多每時脈、每可程式化著色器核心M個節點。在一些實施例中(例如,在本文中所討論的深度優先橫越),一次對照至多一個節點來測試一給定射線。
在一些實施例中,邊界區域資料快取715及射線資料快取720經組態以分別儲存針對目前測試及針對在後續測試中可能再使用的節點及射線資料。這些快取可能能夠維持每時脈每測試器一個節點測試的產出量。對於待發生的測試,可能需要射線及邊界區域資訊兩者,所以快取項目可針對讀取被鎖定,直到可取得兩者資訊。下文所詳細討論的圖9提供用於邊界區域資料的詳細實例編碼。在一些實施例中,目標相同係下一節點的分組射線可改善快取的效能並將頻寬減少至較高層快取,如下文參考圖19A至圖19C所詳細論述。
在一些實施例中,共同計算電路系統725經組態以執行對於所有所測試之邊界區域共同的計算。此可包括判定使用一經壓縮量化格式所表示的界限。作為另一實例,此可包括共同射線計算,諸如判定該射線之一倒數及該射線之一測試點。在一些實施例中,以邊界區域測試的較高浮點精確度執行共同計算。
在一些實施例中,邊界區域測試器730經組態以測試一射線是否與一邊界區域之一表示相交(然而,請注意,在具有量化之實施例中可包括偽陽性)。對於方塊形邊界區域,這些測試器可實施一板測試(slab test)(例如,找尋各射線至各方塊之六邊的距離,並比較該等值以判定射線是否在方塊中有命中)。大致上,邊界區域測試器730可包括經組態以執行與所實施的測試類型相關聯之算術運算的電路系統,且此電路系統可經管線化。在一些實施例中,邊界區域測試器730利用較低精密浮動點算術及選擇捨入模式,使得針對面向射線的三個平面之所計算相交結果捨去(round down)(朝向該射線),而針對遠離的三個相對平面之所計算相交結果捨進(round up)(遠離該射線),以確保該邊界區域測試係保守且不產出偽陰性。
在一些實施例中,結果排序電路系統735經組態以排序命中結果(例如,基於其等相距於該射線之原點的距離),並輸出結果以供在進一步橫越中使用。因此,基於此排序,非葉子代可被推入到堆疊上。在一些實施例中,可將任何葉子代分組成一單一堆疊項目。在一些實施例中,該排序可影響ADS之橫越,例如,在深度優先搜尋期間,可首先橫越對應於較接近命中的子節點。
在一些實施例中,並行測試器電路系統710經組態以儲存參數區間(T)參數的值,在該值處,一射線與一邊界區域相交(並可以比平面測試更高的精確度儲存該值)。此值可稱為T局部(T-local),且可儲存在堆疊項目中及被擷取以用作為子代邊界區域平面測試之數值射線原點。
在一些實施例中,可對照相同節點並行地測試多個射線,可對照多個節點並行地測試一射線,或兩者。例如,RIA 190可包括多個並行測試 器710以並行地處理射線群組中之所有或一部分射線。在一些實施例中,各邊界區域測試器730可經組態以對照一邊界區域並行地測試多個射線。
實例資料結構及整體資料流程
圖8係繪示根據一些實施例之用於儲存射線資料的射線著色器核心空間(SCS)的實例組織。該射線SCS係一私用記憶體空間,其可經動態地分配並可允許在不同的群組之間共用資料。進一步,該射線SCS可允許在來自相同資料主控及啟動槽(kick slot)(例如在團A、團S、團T等之間)之不同SIMD群組之間共用資料。在圖8之討論結束處,下文討論一資料主控及一圖形啟動之概念的更詳細解釋。該圖形處理器亦可包括其他記憶體空間,諸如執行緒私用位址空間、執行緒群組位址空間、及裝置位址空間。
例如,SCS可被分配在一圖形啟動之開始處。該著色器核心空間可有利地允許在不同類型的SIMD群組(例如團A類型及團T或團S類型)之間的共用,允許較小數目個位元以用於定址射線資料(相對於使用較大記憶體空間之位址),允許動態分配用於資料之頁面,或其任何組合。例如,於2020年2月28日申請的美國專利申請案第16/804,128號中討論的用於動態私用記憶體的技術可用以動態分配用於射線著色器核心空間的頁面。
在所繪示之實施例中,該著色器核心空間包括用於射線核心資料820、射線堆疊資料830、射線延伸資料840、及符記緩衝器810的區域。在一些實施例中,該SCS亦可包括一上下文切換緩衝器(未圖示)以處置上下文儲存。一著色器可使用一明確指令(例如,一分配射線指令)分配在SCS中的空 間及藉由另一明確指令解放空間(例如,在射線處理完成之後的釋放射線指令)。
在一些實施例中,符記緩衝器810提供用於RIA 190與藉由RIA 190在著色器上啟動的SIMD群組之間通訊的暫用空間。在一些實施例中,這些SIMD群組接收一射線識別符作為其等輸入資料之部分,以例如在一相交射線命令之前存取已分配在SCS中的射線資料。當形成一SIMD群組(例如,用於基元測試的一團T或用於變換的一團S)時,RIA 190可將SIMD群組所需的執行緒資料填入緩衝器,SIMD群組可將結果寫回至相同緩衝器中。在一些實施例中,該符記緩衝器儲存對待用於基元測試或座標變換的資訊之指標。例如,此可包括對用於相交測試之一葉位址的一指標、連同共用相同射線ID的執行緒計數(其可封裝至相同團T中)及對應的執行緒識別碼。作為另一實例,此可包括對用於座標變換之一射線的一指標。
在一些實施例中,射線堆疊資料830含有用於在橫越期間之射線的堆疊項目,例如,如上文參考圖5所論述。各射線可具有用於其堆疊之一專用空間,但是用於所有射線之堆疊可經交錯,其可減少覆蓋區並可減少用於堆疊SCS之整體頁面數。例如,堆疊SCS之最大大小可基於以下之一或多者判定:射線總數的大小、ADS中的層級數目、及ADS的分支因數。
射線核心資料820可指示各射線之原點、方向、及作用部分,且可使用一射線識別符來編索引。此區域亦可係其他資料,諸如用於水密射線橫越的一ε及軸。射線延伸資料840可包括較不常被例如軟體著色器存取的額外資料,諸如相交結果、射線差分、效能計數器等。分開的射線核心資料820與延伸資料840可改善快取利用。
可執行多個「啟動(kick)」以演現圖形資料的圖框。在一些實施例中,一啟動係來自一單一上下文的一工作單元,其可包括待執行的多個執行緒(並且可潛在包括未被一著色器執行的其他類型的圖形工作)。一啟動可不提供關於執行緒中之記憶體同步(除了由執行緒本身所指定以外)、執行緒中之並行性、或在執行緒當中的啟動順序的任何保證。在一些實施例中,一啟動可識別為相依於另一啟動之結果,其可允許記憶體同步而不需要硬體記憶體同調性支援。一般而言,在將工作發送至管線以用於處理之前,圖形韌體或硬體程式組態登記各啟動。經常,一旦啟動已開始,其不會存取高於某層級之一記憶體階層,直到該啟動完成(在此點處,結果可寫入至在該階層之較高層)。一給定啟動的資訊可包括完成對應的圖形操作所需的狀態資訊、待執行之(多個)著色器程式的位置、緩衝器資訊、紋理資料的位置、可用位址空間等。例如,圖形韌體或硬體可排程啟動,並在一啟動完成時偵測一中斷。在一些實施例中,圖形單元150之部分經組態以一次處理一單一啟動。此組資源可稱為「啟動槽」。因此,在一些實施例中,針對一給定啟動所需要的任何資料係在啟動開始時在多個處理元件當中共用的記憶體讀取,且結果係在啟動結束時寫回至共用記憶體。因此,其他硬體看不到啟動結果直到啟動完成,在此點處結果可在共用記憶體中取得,且可由其他啟動存取(包括來自其他資料主控的啟動)。一啟動可包括一組一或多個演現命令,其可包括用以繪製程序幾何的命令、用以設定陰影取樣方法的命令、用以繪製網格的命令、用以擷取紋理的命令、用以執行產生運算的命令等。在一圖框之演現期間,可在各種階段之一者執行一啟動。演現階段之實例包括但不限於攝影機演現、光演現、投影、紋理 化、片段著色等。啟動可經排程以用於例如運算工作、頂點工作、或像素工作。
圖9係繪示根據一些實施例之實例節點資料結構的圖。在所繪示之實例中,節點資料結構包括用於與該節點之子代相關聯的多個邊界區域之界限0至N、用於各邊界區域之後設資料、一作業碼、指數資訊、原點資訊、子代基底資訊、狀態資訊、及著色器索引資訊。
在一些實施例中,界限0至N定義對應於至多N-1個子節點的邊界區域。在一些實施例中,這些係藉由其等上隅角與下隅角所定義的量化軸對齊邊界方塊(例如,在X、Y、Z座標空間中具有每方塊六個值)。在一些實施例中,這些值係表示為相對於一共同原點(由原點X、Y、Z欄位所指定)的固定點偏移及比例因數(例如,由指數X、Y、Z欄位所指定的2冪次的比例因數)。例如,原點值可表示為有號的(signed)浮點值。此可允許相對於親代界限編碼所有子節點,其可避免隨著該等方塊在樹之較深部分中變成較小而漸進的損失精確度。親代容器(原點及指數)可稱為該節點之量化圖框。
指示各邊界區域的資訊可稱為子代,並可指示內部子代、葉子代、或無效子代。給定子代的狀態及內容可基於其對應的後設資料欄位及狀態欄位來聯合判定。例如,該狀態欄位可包括每子代一個位元,其指示子代係一內部節點或葉節點。作為另一實例,該狀態欄位可分開地編碼內部節點之數目及葉節點之數目。後設資料欄位可指示子代是否無效。
子代基底欄位可指示相對於BVH樹之基底位址的節點之子代基底位址,在其之後可儲存節點的子代。對於葉子代,後設資料欄位可指示在一給定界限內的葉之數目,並且指示相對於整體節點之子代基底位址的對子代位 置之一偏移,在該處儲存葉之數目。對於非葉子代,後設資料欄位可類似地指定相對於子代基底位址的一偏移(在一些實施例中,對於混合節點,子節點先儲存在該偏移位置,後續接著葉)。如下文參考圖15所討論,各界限可參考一或多個葉,且各葉可藉由一或多個界限來參考。
該作業碼欄位可定義關於節點及其子代的資訊及效能提示。例如,在可變大小之葉的實施例中,葉步距(leaf stride)的資訊可定義的連續葉之間的步距。在作業碼中之另一欄位可指示子代是否與一變換相關聯,例如,使得一團S應係形成以當橫越至一子代時變換射線(下文參考圖17至圖18論述針對此情況的技術)。
在一些實施例中,界限座標經量化為每座標六個、七個、或八個位元,例如,其導致36、42或48位元的界限欄位以表示定義方塊形邊界區域的六個座標。在一些實施例中,(從可使用較大量位元表示的初始值)產生量化座標值的量化技術確保可能有偽陽性的相交結果,但不會是偽陰性。例如,可以量化方塊表示大於或等於非量化方塊表示的此類方式來執行量化。例如,量化算術可經組態以在不同方向上針對各隅角捨入(如果執行捨入,則在對應於擴展方塊的方向)。此可有利地減少每節點使用的資料量,而不會影響準確度,並且在橫越期間測試有限地增加。
圖10係繪示根據一些實施例之實例可組態大小之葉資料結構的圖。在所繪示之實施例中,各葉包括一標頭及一酬載(其具有多個可用的酬載大小A至N)。如上文所討論,針對一給定節點之葉的葉步距可由該節點的標頭資料定義。該標頭可包括啟動用於針對該基元之相交測試之SIMD群組或執行針對該基元的座標變換所需之資訊。該酬載可包括針對不同類型的基元的變 化資訊(例如,預設三角形、α映射三角形、移動三角形等)。酬載資訊之實例包括但不限於:一基元識別符、一幾何識別符、一或多個向量等。在一些實施例中,一給定界限之所有子代葉具有相同大小。在其他實施例中,可分開地編碼一給定界限之葉大小。
圖11係繪示根據一些實施例之具有可變大小之葉節點的ADS樹狀結構之一實例記憶體佈局的圖。圖11之左側顯示具有一根節點R、節點A至D、及可變大小葉節點0至9的樹。圖11之右側顯示這些樹元件在記憶體中的實例佈局。如所示,各節點包括指示記憶體中對任何節點子代的偏移的資訊,後續接著是任何葉子代。例如,對於節點A,其偏移指向節點D的資訊儲存在記憶體中的位置,後續接著葉5與6。
在一些實施例中,所揭露之編碼實現接在葉區塊之後的未定義記憶體區域(如由在圖11中的橢圓形所指示),該圖形驅動器可用於各種目的而使用其等。例如,驅動器可將除錯資訊、延伸基元資訊、效能計數器等插入至樹狀結構之這些部分中。
在一些實施例中,處理器經組態以將葉資料分割成多個部分。例如,葉可與幾何基元相關聯,總是存取針對該幾何基元的一些資料以用於相交測試,而一些內容對於相交測試很少需要(例如,用於穿透α紋理查詢的uv座標)。這些不同類型的資料可儲存於一葉資料結構之核心及延伸部分中。在一些實施例中,延伸部分儲存於接在葉區塊之後的未定義記憶體區域中,如上文所討論。
請注意,本文所述之各種節點、葉、及樹資料結構係為了解釋之目的而被包括,而非意欲限制本揭露之範圍。在其他實施例中,可實施各種不同結構及組織。
圖12係繪示根據一些實施例之相交電路系統、節點測試電路系統、記憶體區域、及由著色器電路系統執行的SIMD群組之間的實例資料流程的圖。如圖12所示,在一些實施例中,一圖形處理器包括射線相交加速器190、節點測試器1210(例如,圖7的並行測試器710)、及著色器電路系統(諸如可程式化著色器電路系統160(未明確顯示)),其等經組態以執行不同類型的SIMD群組:團A 1220及團T/團S 1230。進一步,圖形處理器實施著色器核心空間1240及裝置記憶體空間1250(其中儲存ADS)。
圖13係繪示根據一些實施例之與圖12之資料流程相關聯之實例方法的流程圖。在1310,在所繪示之實施例中,在一著色器上執行的一團A分配射線資源(例如,藉由回應於執行由團A所執行的著色器程式中的分配射線指令而發送請求至RIA 190)。在1315,在所繪示之實施例中,RIA 190在一或多個通用暫存器中傳回一或多個射線ID(注意,可例如針對由團A所處理的多個射線執行此射線分配)。在1320,在所繪示之實施例中,團A基於該(等)所提供的射線ID將針對一或多個經分配射線的射線資料寫入至射線著色器核心空間中。
在1325,在所繪示之實施例中,團A發出一相交射線命令與射線ID(潛在地連同其他射線ID)至RIA 190(例如,基於執行一相交射線指令)。此可開始ADS橫越程序。在此點之後,來自給定團A的射線可最後採用 不同的路徑通過ADS,並且可分開處理直到團A的所有射線已完成其等之橫越。
在1330,在所繪示之實施例中,RIA 190找尋射線之下一個ADS節點,並且將節點的測試發出至節點測試器1210。如果此係射線第一次測試,則RIA 190選擇根節點。在1335,在所繪示之實施例中,節點測試器1210讀取來自著色器核心空間的節點資料及射線資料,並執行節點測試。而傳回針對節點之子代的未命中/命中資訊至RIA 190。
在1340,在所繪示之實施例中,基於測試結果,RIA 190橫越至下一節點,直到到達葉節點。如果下一節點係一內部節點,則流程繼續回到1330。如果到達一葉節點,則流程繼續進行至1345。如果橫越完成,則流程繼續進行至1355。
在1345,在所繪示之實施例中,已到達葉節點且RIA 190產生一團T,並且發送一符記緩衝器ID與針對團T的資訊。在1350,在所繪示之實施例中,團T使用符記ID讀取來自色器核心空間的執行緒資料(例如,射線ID及基元ID)、讀取來自裝置記憶體的基元資料、及使用射線ID讀取來自著色器核心空間的射線資料。團T亦執行基元測試,基於該基元測試更新該射線資料(例如,如果有一命中),且接著通知RIA 190是否繼續橫越(例如,當偵測到一命中時,結束最接近命中查詢的橫越)。
請注意,類似於針對團T而參考元件1345及1350所描述者之操作亦可針對團S執行。在1340,當到達一S節點時,RIA 190可產生一團S、讀取來自裝置記憶體的資料、讀取射線資料、在一著色器上執行以執行對射線的變 換(例如,可使用一葉酬載來指定其參數)、及適當地更新該射線資料之一部分。接著,團S可通知RIA 190繼續橫越。
在1355,在所繪示之實施例中,該橫越完成,且RIA 190形成團A,其讀取來自射線著色器核心空間之具有相交結果之射線資料,並釋放射線資源命令(其後射線ID可用於另一射線)。處理器可減量柵欄計數器(fence counter),例如使得團A可等待直到所有其射線在繼續進行之前已完成橫越。接著,團A可基於相交結果執行片段著色,在某些情況中,其繼而可產生額外射線。
動態地形成用於基元測試的SIMD群組
圖14A係繪示根據一些實施例之用於動態形成用於基元測試之SIMD群組之實例技術的方塊圖。在所繪示之實施例中,可程式化著色器160發送一相交射線命令至射線相交加速器(RIA)190。該相交射線命令可係用於例如處理多個射線的一團A SIMD群組。RIA 190橫越加速資料結構以產生射線之相交結果(其可來自各種團A者且可採取不同路徑通過資料結構)。
在所繪示之實例中,一旦到達一葉節點,RIA 190實際上不執行基元測試,而是動態地形成待由可程式化著色器160執行的基元測試SIMD群組1405(例如,針對對照相同基元測試的射線群組)。可程式化著色器160執行(團T的)該等基元測試SIMD群組,且可提供基元測試結果至RIA 190(未明確顯示)。RIA 190可聚集針對給定團A的測試結果,且當結果準備就緒時,提供結果回到可程式化著色器160,或RIA 190可在其等完成時提供結果,且團T可聚集該等結果(例如,使用柵欄指令)。
請注意,基元測試結果亦可例如基於是否有一命中及所請求的相交類型,向RIA 190指示其是否應針對一給定射線繼續橫越。對於一最接近命中查詢,當有一命中時橫越結束。
在一些實施例中,處理器經組態以將共用相同著色器的多個葉分組成相同團T,使得其等可一起測試。此可有利地減少基元測試的平均延時。在一些實施例中,該處理器將針對各射線之一執行緒指定為一主執行緒,該主執行緒回應於執行多個葉測試之間未並行化的操作(例如,判定贏家並且更新該射線的操作,諸如找尋所有距離之最小值並且潛在地執行用於一最接近命中操作之決勝局操作)。因此,一團可接收指示由該團所測試的射線之射線ID的資料、所測試基元的基元位址、以及指示「執行緒區段(thread segment)」的資訊,該等執行緒區段係操作相同射線的執行緒(例如,該等執行緒區段的計數及執行緒ID資訊)。
例如,考慮三個射線以及所測試的十個不同基元的以下資訊:
Figure 110127658-A0305-02-0031-1
在此實例中,對照具有針對射線2的執行緒區段中之五個執行緒的一計數值及針對在此執行緒區段內之五個執行緒的不同執行緒ID(TID)0至4的基元5至9來測試射線2。類似地,對照具有該執行緒區段中之兩個執行緒的基元3及4來測 試射線1。如上文參考圖8所論述,RAI 190可在用於一團T的符記緩衝器810中儲存此資訊。
在一些實施例中,團T執行一SIMD範圍的縮減指令以執行涉及變換的非並行操作。在這些實施例中,SIMD縮減指令可從一SIMD群組中的多個執行緒存取資料以產生輸出。例如,此可取代反覆遍及該等執行緒的主執行緒之一迴圈,以針對命中來找尋在執行緒區段內之執行緒當中的距離最小值。使用SIMD縮減指令而非迴圈可有利地改善產出量。
在這些實施例中,針對團T的資訊可包括表示區段之間的邊界的區段遮罩(segment mask,SM)。在此實例中,區段遮罩中的邏輯「1」指示此係在一新執行緒區段中的第一執行緒。
Figure 110127658-A0305-02-0032-2
該SIMD縮減指令可使用此資訊以在各執行緒區段內操作而無需使用來自其他執行緒區段之輸入資料。
於2019年10月9日申請的美國專利申請案第16/597,625號以引用方式併入本文中,並且解釋各種實例SIMD縮減運算及線道連接網路。這些操作一般採用結果暫存器及輸入暫存器,並且以基於對應於SIMD群組中之不同執行緒的輸入暫存器之不同執行個體來找尋結果。在一些實施例中,SIMD縮減指令採用指示區段遮罩的額外引數。此可允許執行管線以避免跨執行緒區段 載送縮減結果,提供針對各執行緒區段的分開之縮減結果。因此,著色器電路系統可包括控制電路系統,該控制電路系統經組態以基於該區段遮罩將SIMD縮減運算限制在一執行緒區段內。
在一些實施例中,在一執行緒區段中的所有執行緒接收來自該SIMD縮減運算的相同結果(例如,指示具有最接近命中的基元)。SIMD縮減運算可支援各種算術運算,諸如最小值、最大值、加法等。
因此,在一些實施例中,一團T的不同執行緒對不同射線操作。進一步,一團T之不同執行緒可對針對相同射線或針對不同射線的不同基元操作。進一步,一團T可執行一SIMD縮減指令,該SIMD縮減指令基於來自對相同射線操作之多個執行緒的輸入值而執行一操作,並且可針對在一執行緒區段中之該多個執行緒之各者產生相同結果。
圖14B係繪示根據一些實施例之用於動態形成用於基元測試之SIMD群組之實例方法的流程圖。圖14B所示之方法可與本文所揭示之電腦電路系統、系統、裝置、元件、組件、或其他者之任何者結合使用。在各種實施例中,所示之方法元件的一些可同時執行、以不同於所示的一順序執行、或者可省略。亦可依需要執行額外的方法元件。
在1410,在所繪示之實施例中,著色器電路系統執行針對一第一SIMD群組之一射線相交指令,其中該指令指示在一圖形場景中之一第一組射線的座標資訊。
在1420,在所繪示之實施例中,射線相交電路系統回應於該射線相交指令而橫越於一空間組織加速資料結構中之多個節點,其中該等節點包括指示在該圖形場景中之邊界區域座標的多個節點及指示基元之多個節點。
在1430,在所繪示之實施例中,該裝置回應於達到該加速資料結構的指示一或多個基元之一節點而形成一第二SIMD群組,該第二SIMD群組操作僅部分地與該第一組射線重疊的一第二組射線,其中該第二SIMD群組執行一或多個指令,以判定該第二組射線中之射線是否與該一或多個基元相交。
在一些實施例中,RIA 190形成第二SIMD群組,且著色器電路系統執行該第二SIMD群組。該第一SIMD群組及該第二SIMD群組可操作一第一資料結構,該第一資料結構儲存用於該一或多個射線之一第一射線的資訊,其中該第一資料結構經儲存在一著色器記憶體空間中,該射線相交電路系統亦可存取該著色器記憶體空間。例如,該第一資料結構可包括射線核心資料820、射線延伸資料840、或兩者。在一些實施例中,該第二SIMD群組從由該射線相交電路系統針對該第二SIMD群組所識別的在著色器記憶體空間中之一緩衝器(例如,一符記緩衝器810)存取執行緒資料。該著色器記憶體空間亦可包括用於由該相交電路系統使用的射線堆疊資料之一記憶體區域。在一些實施例中,用於該一或多個基元的基元座標資料及該等邊界區域之座標係儲存在一裝置記憶體空間中(例如,作為儲存在裝置記憶體1250中的ADS之部分)。
在一些實施例中,該著色器電路系統暫停執行該第一SIMD群組(例如,正好在該相交射線指令之後,或後來在程式中),並在接收來自該第二SIMD群組(且可能來自其他團T)的相交結果之後,繼續執行該第一SIMD群組以著色該一或多個基元。
在1440,在所繪示之實施例中,該著色器電路系統基於執行該第二SIMD群組的結果而著色指示為相交的一或多個基元。可藉由繼續執行第一SIMD群組來執行著色。
在各種實施例中,當使用著色器處理器來執行更複雜的操作(如基元測試)的同時,圖14A及圖14B的技術可有利地提供專用邊界區域測試電路系統的效能及功率消耗效益。
邊界區域與基元之間的多對多映射
圖15係繪示根據一些實施例之在邊界區域與基元之間的實例多對多映射的圖。在所繪示之實例中,圖15之上部分顯示四個基元與八個邊界區域的二維視圖,而圖15之下部分顯示對應於四個基元之四個葉節點及具有八個邊界區域之實例ADS節點。
基元P0至P3係三角形基元。例如,邊界區域0至7可係邊界方塊。在各種實施例中,雖然在三維或更多維度中指定在邊界區域中之基元頂點,但圖15之簡化實例以二維顯示以促進解釋。
如所示,在一些實施例中,圖形處理器產生且使用支援邊界區域與基元之間的多對多映射的加速資料結構。例如,邊界區域0至3皆係基元P0的親代,所以一基元可具有多個親代邊界區域。進一步,例如,邊界區域3具有多個基元子代。
其中傳統ADS產生技術可能已在較高層建立針對基元P0的葉節點(例如,作為其係邊界區域0至3的一上代且具有較大的邊界區域之一節點之子代),而所揭露之技術可等待以在下層建立針對基元的一葉,使得其係多個較小邊界區域的子代。在各種實施例中,該多對多映射結構(結合一相對高的分支因數)允許邊界區域提供圍繞基元的緊密適配。在各種實施例中,此可減少陰性的基元測試結果。因為就處理資源而言,節點測試相較於基元測試係相 對較不昂貴的,所以此基元測試減少可改善效能、降低電力消耗、或兩者。例如,針對給定場景,當發出較少數目個陰性基元測試時,可形成較小數目個團T。
圖16係繪示根據一些實施例之用於產生具有多對多映射之空間組織資料結構之實例方法的流程圖。圖16所示之方法可與本文所揭示之電腦電路系統、系統、裝置、元件、組件、或其他者之任何者結合使用。在各種實施例中,所示之方法元件的一些可同時執行、以不同於所示的一順序執行、或者可省略。亦可依需要執行額外的方法元件。
在1610,在所繪示之實施例中,一圖形處理器存取針對待演現之一圖形場景中之多個圖形基元的資料。
在1620,在所繪示之實施例中,該圖形處理器產生一空間組織資料結構,其中該資料結構之節點指示該圖形場景中之邊界區域的圖形基元或座標。在所繪示之實施例中,該空間組織資料結構包括具有一邊界區域的一節點,針對該邊界區域的多個基元經指示為子代。進一步,該空間組織資料結構包括一基元,針對該基元的多個邊界區域經指示為親代。
在一些實施例中,該圖形處理器量化指示在該空間組織資料結構中之一第一邊界區域的資訊,以使用數目比一原始表示數目少的位元來表示該第一邊界區域。此量化可減少ADS的整體儲存需求。在一些實施例中,執行該量化使得該所量化表示指示在每一方向大於或等於該第一邊界區域的一區域,藉此防止該第一邊界區域的偽陰性相交結果。在一些實施例中,該空間組織資料結構編碼針對一節點的一位置(例如,從針對該ADS之根位置的一偏 移),該節點之所有子節點係連續地定位於該位置處。在一些實施例中,該空間組織資料結構指定葉節點中之基元資訊及在內部節點中之邊界區域資訊。
在一些實施例中,該空間組織資料結構包括針對指示一或多個基元之一第一節點的一或多個欄位,該一或多個欄位指示:該一或多個基元定位於其處的一偏移;及定位於該偏移處的針對該第一節點之基元數目。
在一些實施例中,資料結構具有相對高的分支因數。例如,該空間組織資料結構可包括具有至少四個子節點的一節點。在一些實施例中,該資料結構支援可變大小之葉節點。因此,在該空間組織資料結構中之一第一葉節點及一第二葉節點可具有不同資料大小,且該第一葉節點與該第二葉節點之各別親節點可編碼該等不同資料大小。
在1630,在所繪示之實施例中,該圖形處理器橫越該空間組織資料結構以判定該圖形場景中之射線是否與基元相交及基於該判定而著色相交之基元。如上文所論述,該處理器可形成用於基元測試的團T,並繼續執行團A以用於基於該等相交結果之著色。
在橫越期間動態地形成用於射線座標變換之SIMD群組
圖17係繪示根據一些實施例之當橫越加速資料結構時用於射線變換之SIMD群組的實例動態形成的圖。在所繪示之實例中,ADS包括十個節點0至9。兩個節點(節點5及6,其可稱為S節點)具有其具有相同子節點(節點7,其可係一下層ADS之根,如下文所詳細討論)的界限。這些節點可具有一欄位,該欄位指示當橫越至該子節點時應執行一變換。例如,在所繪示之實 例中,上文參考圖9所論述之作業碼欄位可指示針對節點5及6之此欄位待執行的變換(在圖17中指示為「(T)」值)。
RIA 190可形成一團S以變換進行橫越的一或多個射線之座標(例如,在對應邊界區域中的命中)。可程式化著色器160可執行指定針對團S之數學運算的一或多個指令以執行變換。在一些實施例中,團S操作在著色器核心空間1240中的射線資料,使得當該變換完成時,RIA 190可基於經變換射線資料而繼續橫越。在橫越期間的一些點處,RIA 190可例如藉由形成另一團S或回復到所儲存的原始座標而將射線變換回到其等原始座標以用於進一步橫越。
上述之射線座標變換可用於各種情境。作為一實例,幾何執行個體化係允許演現在相同場景中相同模型之多個複本的技術。考慮例如可在一場景中多次執行個體化的一房屋的一模型以在一街道上建立一排房屋。針對各執行個體,可定義一變換矩陣以將該模型從模型空間變換至世界空間。射線追蹤處理器可使用不同技術來支援執行個體化。作為一實例,該系統可針對各執行個體來變換該模型,並且建立包括針對所有該等執行個體之世界空間幾何的ADS。作為另一實例,該系統可針對正被執行個體化的幾何在模型空間中建立加速資料結構的單一子部分(例如,樹),並在ADS的橫越期間執行至世界空間的變換,如圖17中所示。後者技術可提供相對較小的ADS,由於在ADS中缺乏正被執行個體化的模型的複製。
在一些實施例中,對於該模型空間樹之每一執行個體(例如,圖17中之節點7至9,其可提供用於該模型之多個執行個體的BVH樹),根邊界區域之一複本經變換至世界空間,並且一階層經建置而其中該模型的根邊界區 域作為在ADS中具有多個親代之一葉。較上階層含有模型空間樹之所有執行個體的所有邊界區域,並且可稱為一頂層ADS。在ADS中被包括一次且正被執行個體化的模型空間BVH樹可稱為下層ADS。
該系統可在從頂層ADS橫越至下層ADS時執行變換。入射射線或邊界區域本身可經變換。在一些實施例中,如上文所述,該射線經變換,因為此可能係運算上較不昂貴。例如,針對一仿射變換,僅該射線之原點及方向可經變換(且並非該方向)。在一些實施例中,針對在橫越期間回溯,可執行逆變換(例如,使用逆變換矩陣)。在其他實施例中,處理器可記錄原始射線座標(例如,原點及方向),避免需要執行縮減變換。例如,此可減少由於浮點運算的誤差。
在一些實施例中,一ADS可包括多於兩個階層層級,其中每次橫越繼續進行至下層時進行相對於目前層級的變換。該處理器可維持一變換堆疊,該變換堆疊儲存在變換之前的座標資訊以用於橫越回到先前層級。ADS可指示應以各種粒度執行變換。作為一實例,節點可包括單一欄位,該單一欄位指示當橫越至其子節點之任何者時應執行一變換。作為另一實例,一節點可分開地編碼在過渡至不同子節點時是否應執行變換。
在圖17所繪示之實例中,可已產生具有分別對應於節點7至9之三個網格的模型。在所繪示之實例中,此模型已經被具現化兩次,且在頂層ADS(對應於節點0至6)中每執行個體有一個節點(節點5及6)標記為需要變換。這些節點(節點5及6)有效地係頂層階層的葉。
雖然所揭露之技術利用由著色器管線執行的團S SIMD群組,但在其他實施例中,專用RIA電路系統可經組態以執行針對S節點的變換。
圖18係繪示根據一些實施例之用於動態形成用於射線座標變換之SIMD群組之實例方法的流程圖。圖18所示之方法可與本文所揭示之電腦電路系統、系統、裝置、元件、組件、或其他者之任何者結合使用。在各種實施例中,所示之方法元件的一些可同時執行、以不同於所示的一順序執行、或者可省略。亦可依需要執行額外的方法元件。
在1810,在所繪示之實施例中,著色器電路系統(例如,可程式化著色器160)執行針對一第一SIMD群組之一射線相交指令,其中該指令指示在一圖形場景中之一組射線的座標資訊。
在1820,在所繪示之實施例中,射線相交電路系統(例如,RIA 190)回應於該射線相交指令而橫越一空間組織加速資料結構中之多個節點,其中該資料結構之節點指示對應於該圖形場景中之邊界區域的座標,且該橫越判定射線是否與該等邊界區域相交。
在一些實施例中,該加速資料結構係一階層結構,且該第一節點係在一上層加速資料結構之一葉節點,該葉節點具有在一下層加速資料結構中的一子節點。在一些實施例中,該變換將一或多個射線定位在一模型空間中,該模型空間用於在該圖形場景中多次經具現化的一圖形模型之一執行個體。因此,在一些實施例中,該第一節點之一子節點(例如,針對該模型空間之一根節點)亦具有在該上層加速資料結構中之另一親節點,其中當橫越至該子節點時該另一親節點指示一不同變換,其中該不同變換係與該圖形模型之一不同執行個體的一模型空間相關聯。
在一些實施例中,該加速資料結構係一邊界體積階層。
在1830,在所繪示之實施例中,該裝置回應於達到指示一變換之一第一節點而形成一第二SIMD群組(例如,一團S),以在該著色器電路系統上執行,以變換該組射線中之一或多個射線的座標。
在一些實施例中,該射線相交電路系統儲存該一或多個射線之原始座標;及回應於往回橫越遍及該加速資料結構通過該第一節點而回復至該原始座標。
在一些實施例中,該第一SIMD群組及該第二SIMD群組存取在一著色器記憶體空間中針對該一或多個射線的射線資料。該第一SIMD群組包括用以在執行該射線相交指令之前分配用於該著色器記憶體空間中之該組射線的記憶體空間的一指令。
在一些實施例中,該第二SIMD群組包括來自執行一射線相交指令之另一SIMD群組的一或多個射線。大致上,來自一團A的射線可在採用來自橫越的不同路徑時分割,使得團S或團T可操作來自多個不同團A的射線。
在橫越期間的實例射線分組
圖19A係繪示根據一些實施例之目前目標為ADS中之不同節點的不同射線在其等橫越期間之實例情況的圖。在所繪示之實例中,射線A、C、及E的目標係節點1,射線B及D目標係節點2,射線X及Y目標係節點3,而射線Z目標係節點4。
在一些實施例中,圖形處理器經組態以將射線分組以增加在一給定時間對照一節點測試的射線數目。此亦可稱為分級(binning)或同調性蒐集 (coherency gathering)。在下文詳細討論的所揭露之分組技術可減少例如在儲存節點資料的L1資料快取處的頻寬消耗。
在一些實施例中,該圖形處理器在允許測試射線之前將各射線分配至一群組。此群組可係共用相同金鑰的一射線清單。針對邊界區域測試,該金鑰可係該節點的位址,該位址係在橫越中該射線的下一個目標。作為其他實例,該金鑰可係一親節點或祖父節點(grandparent node)的位址。針對葉測試,該金鑰可係葉標頭虛擬位址。該金鑰亦可包括與該射線相關聯的該資料主控及啟動槽的其他上下文資訊。
針對各群組之資訊指示該群組中之射線清單。在一些實施例中,專用電路系統經組態以儲存針對各分類(bin)的射線清單。在這些實施例中,各種項目數目可用於各種實施方案中的分組,例如,64、128、256或512個群組,各具有4、8、16、32或64個項目。
在一些實施例中,每次針對一給定射線的橫越堆疊之頂部變更時,RIA搜尋所分配群組以找尋針對對應金鑰之一匹配。RIA可包括經組態以將射線指派給群組的分組控制電路系統1910,如圖19B所示。與集合關聯快取(set-associate cache)中的快取線類似,分組控制電路系統1910可搜尋該等群組,例如,藉由雜湊該金鑰以判定一組群組及針對一金鑰匹配搜尋在該組群組中任何分配群組。在這些實施例中,分組控制電路系統1910可包括內容可定址記憶體結構。如果發現一匹配,RIA 190經組態以將該射線附加至該匹配群組。如果未找尋到匹配但可取得未分配群組,則RIA 190可產生新群組且將該射線指派給新群組。如果未找尋到匹配,且所有群組目前皆被分配,則分組可停頓直到一群組變得可用。
可使用類似技術以分組與基元相關聯之葉節點,例如,使用分開的專用電路系統以儲存目標係相同葉節點(或相同類型的葉,例如,用於著色同調性)的射線清單。在一些實施例中,可針對葉節點及內部節點實施不同數目個群組、每群組不同數目個項目、或兩者。
在一些實施例中,RIA 190亦追蹤各群組內的最舊射線之年齡。例如,RIA 190可在一控制暫存器中維持各群組的一年齡欄位。該年齡欄位可經量化。每個循環,RIA可選擇具有最舊射線的至多N個群組,並將來自該等所選取群組之待發出以供節點或基元測試之排程的射線發出。在一些實施例中,RIA 190可不考慮用於排程的群組,直到其包括臨限數目個射線。在其他實施例中,可實施用於在可用群組之間進行選擇的各種不同技術。
在一些實施例中,由分組控制電路系統1910所判定之匹配群組係在專用電路系統中的一索引,該專用電路系統經組態以儲存針對各所分配群組的射線清單。在其他實施例中,可使用資料結構之屬性來指示匹配群組,例如,對一清單中之項目的一或多個指標,如下文參考圖19C所論述者。
圖19C係繪示根據一些實施例之用於分組射線的實例單向連結清單實施方案的圖。在所繪示之實施例中,各射線佇列項目指示:一射線ID(例如,針對射線A、C及E);一堆疊頂部欄位,其指示下一個目標節點(例如,在圖19A之實例中,其中0x2C係識別節點1的節點識別符);以及一下一個射線欄位,其指示清單中之下一射線的位置。在一些實施例中,此技術可允許群組無限生長而不會停頓。在一些實施例中,RIA一次支援至多臨限數目個群組。當一射線被分組時,可將其新增至群組清單之末端,並且可更新由該分組控制電路系統1910維持的一尾指標。當一群組經排程以用於測試時,RIA可使 用指標追蹤(pointer chasing)以反覆遍及該清單並找尋該群組中之所有射線。雖然為了說明之目的而論述一單向連結清單,但是可實施各種其他資料結構中之任何者以用於射線分組。請注意,雖然為了說明目的而顯示一單向連結清單,但是設想其他資料結構。
所揭露之分組技術可有利地改善邊界區域資料提取的時間局部性。此可減少至一或多個資料快取的快取猛移(cache thrashing)及頻寬。
圖20係繪示根據一些實施例之用於橫越ADS期間分組射線之實例方法的流程圖。圖20所示之方法可與本文所揭示之電腦電路系統、系統、裝置、元件、組件、或其他者之任何者結合使用。在各種實施例中,所示之方法元件的一些可同時執行、以不同於所示的一順序執行、或者可省略。亦可依需要執行額外的方法元件。
在2010,在所繪示之實施例中,射線相交電路系統(例如,RIA 190)接收一或多個射線相交請求,該一或多個射線相交請求指示用於在一圖形場景中之一組射線中之多個射線之原點及方向資訊。
在2020,在所繪示之實施例中,該射線相交電路系統橫越其節點指示對應於該圖形場景之邊界區域之座標的一空間組織加速資料結構中之多個節點以判定射線是否與邊界區域相交。在所繪示之實施例中,2020的橫越包括元件2030及2040。
在2030,在所繪示之實施例中,該射線相交電路系統(例如,使用分組控制電路系統1910)基於其等下一個目標的該資料結構之該節點而將該組射線之部分分組成多個群組。在一些實施例中,該射線相交電路系統包括針對 該加速資料結構之葉節點及該加速資料結構之內部節點的分開之分組電路系統。
在一些實施例中,每次一射線橫越於該加速資料結構之層級之間時,該射線相交電路系統將該射線指派給一新群組。例如,該射線相交電路系統可實施針對該射線之一橫越堆疊以用於該ADS之一深度優先搜尋,且在每次該橫越堆疊之一頂部變更時,該射線相交電路系統可將該射線指派給一新群組。
在一些實施例中,為了判定針對一射線之一群組,該射線相交電路系統使用基於被該射線作為目標的該下一節點的一金鑰作為一雜湊函數之一輸入以判定一組群組,並搜尋該組群組以判定在該組中的所分配群組是否匹配該金鑰。該射線相交電路系統可針對不匹配任何目前所分配群組之一射線分配一新群組。
在2040,在所繪示之實施例中,該射線相交電路(例如,使用並行測試器710)基於該分組來處理包括以一第一節點為目標的該組射線之一子集的一第一群組,以判定該第一群組中之射線是否與該第一節點之一或多個邊界區域相交。在一些實施例中,該處理係基於在一時脈週期期間選擇一或多個射線群組以用於排程以用於發出該邊界區域測試電路系統。在這些實施例中,可在繼續處理其他群組之前清空這些群組,提供用於存取在一或多個資料快取中快取的邊界區域資料的時間局部性。(多個)群組之選擇可基於所分配之射線群組中之最舊射線,其可提供公平性且避免匱乏(starvation)。
該第一群組可藉由一連結清單指定。在一些實施例中,在一射線佇列中之項目包括一欄位,該欄位指向針對對應射線之目前群組的連結清單 中的一下一射線。在一些實施例中,例如,由於來自採取不同路徑通過ADS且與來自其他群組的射線組合的一給定SIMD群組的射線,該第一群組包括來自一著色器處理器處理的多個不同SIMD群組的射線。該射線相交電路系統可包括並行測試電路系統,該並行測試電路系統經組態以對照一節點之多個邊界區域並行地測試一射線。該並行測試電路系統的多個執行個體可經組態以並行地處理多個射線。
詳細整體相交橫越實例
圖21係繪示根據一些實施例之用於處理射線之實例方法的流程圖。圖21所示之方法可與本文所揭示之電腦電路系統、系統、裝置、元件、組件、或其他者之任何者結合使用。在各種實施例中,所示之方法元件的一些可同時執行、以不同於所示的一順序執行、或者可省略。亦可依需要執行額外的方法元件。
在2110,在所繪示之實例中,由一著色器處理器執行的團A分配一射線。在2112,RIA 190分配針對射線的射線著色器核心空間且傳回一射線ID。在2114,團A將針對該射線的資料寫入至著色器核心空間中。在2116,團A發出一相交射線指令。
在2118,RIA 190開始橫越針對該射線的一ADS,例如,開始於BVH根節點。在2120,RIA將該射線指派給一群組(例如,使用分組電路系統)並等待群組清空(例如,由於在作用群組當中具有N個最舊射線中之一者,或根據在群組當中的一些其他適當的仲裁方案)。在2122,一旦發出群 組,RIA 190判定節點類型。如果為該群組目標的該節點係一內部節點,則流程進行至2124。如果節點係一葉節點,則流程進行至2140。
在2124,在所繪示之實例中,並行測試器710執行節點測試,並傳回針對該節點之邊界區域的命中資訊。如果在2126有命中,則流程進行至2128,且RIA 190將任何未探求的節點推入至射線堆疊上,且流程進行回到2120(例如,橫越至在ADS中的下一節點)。如果在2126無命中,則流程進行至2130。
在2130,如果堆疊不是空的,則在2120,RIA 190從堆疊取出一節點並進行至2120(例如,橫越至在ADS中的下一節點)。如果該堆疊是空的,則RIA 190在2134結束該橫越。
在2140,在所繪示之實例中(針對葉節點),RIA 190產生用於在RIA 190與待針對葉節點產生之團T或團S之間通訊的符記ID(指向在著色器核心空間中之一緩衝器的指標)。各執行緒可使用其執行緒ID結合該符記ID來擷取其射線ID及基元位址。接著,著色器排程團T(針對基元測試)或團S(針對射線座標變換)並且在2142執行更新射線資料的該團。一旦該團已結束,在2144,RIA 190喚醒射線以繼續橫越。如果該射線待終止(例如,由於偵測一最接近命中查詢之相交),則流程進行至2134且橫越結束。否則(例如,針對一任何命中查詢),則流程進行至2130,並且如果該堆疊不是空的,則橫越繼續進行。
在橫越已結束之後,團A可讀取來自射線著色器核心空間的結果資料。RIA 190亦可釋放該射線,包括將來自射線著色器核心空間的射線解除分配。
在一些實施例中,並行測試器710經組態以執行圖21之元件2124。在一些實施例中,在RIA中的射線橫越控制電路系統經組態以執行圖21之步驟2112、2118、2120、2122、2126、2144、2146及2134。在一些實施例中,射線堆疊管理器電路系統經組態以執行圖21之步驟2128、2132及2130。在一些實施例中,其他圖形電路系統(諸如著色器電路系統)經組態以執行圖21之元件2110、2114、2116及2142。
著色器核心空間
如上文所討論,一著色器記憶體空間(本文亦稱為著色器核心空間)可由在相同著色器核心上執行的多個執行緒群組存取,其可促進在RIA 190與不同類型的SIMD群組(例如,團A及團T)之間共用資料。在一些實施例中,該圖形處理器使用著色器記憶體空間以用於其他操作。一般而言,所揭露之著色器記憶體共用可有利地促進共處理器與著色器之間的共用以及在執行緒群組之間的共用,而不需要在一較高層記憶體空間(諸如一裝置或系統記憶體空間)的同調性點相關聯的延遲。在一些實施例中,一圖形裝置實施下列記憶體空間:執行緒空間(針對給定執行緒的私用空間,雖然一些SIMD排列指令可允許對資料的有限存取以用於SIMD群組中的其他執行緒);一執行緒群組空間(針對一給定執行緒群組的一私用空間);一著色器記憶體空間(可由在相同著色器核心上執行的多個執行緒群組存取,並可能由用於著色器核心的一或多個共處理器存取,但不可由其他著色器核心執行的執行緒群組存取);及一裝置空間(可由多個著色器核心存取,並可能由在運算裝置(例如,CPU)上的其他電路系統存取)。
針對某些類型的資料使用著色器記憶體空間(而非裝置記憶體)可有利地提供針對該資料的較低延時、允許更高的頻寬實施方案、減少針對同調性的資源成本、或其任何組合。
圖22A係繪示根據一些實施例之著色器核心可存取之實例快閃記憶體階層的方塊圖。在所繪示之實施例中,著色器核心2210及其他電路系統2230可存取快取/記憶體階層2220之全部或一部分。階層2220可包括下層電路系統(如一暫存器檔案)、各種快取(例如,針對指令及/或資料的L0(其可與一或多個ALU緊密相關聯)、L1、L2等快取)、及記憶體電路(例如,隨機存取記憶體、磁碟機、固態儲存器等)。針對不同記憶體空間的同調性可強加在階層的不同層級處。在一些實施例中,該裝置實施統一記憶體架構,其中藉由記憶體階層支援所有儲存器。
其他電路系統2230可包括其他著色器核心、其他圖形單元、其他處理器(諸如CPU)、一系統單晶片(SoC)的其他電路系統等。請注意,一些實施例中,其他電路系統2230及著色器核心2210可例如以私用下層快取在內部實施階層2220之一部分。
在一些實施例中,著色器核心2210係包括在圖形處理器中的多個著色器核心中之一者。著色器核心2210可包括不與其他著色器核心共用的一或多個L1快取。著色器核心2210可包括數個算術邏輯單元(arithmetic logic unit,ALU),其經組態以並行地執行SIMD群組的指令。著色器核心2210可係GPU的最小尺度單元,例如,係能夠執行其自身著色器程式的最小單元。GPU可包括少至一單一著色器核心,或與較大規模應用中一樣多的著色器核心(若需 要)。針對運算工作,著色器核心2210可接收運算工作群組,並將來自該工作群組的工作項目指派給內部處理管線。
圖22B係顯示根據一些實施例之多個著色器核心及其等之共處理器可存取之實例快閃記憶體階層的方塊圖。在所繪示之實例中,多個著色器核心2210A至2210N及其等之共處理器2240A至2240N可存取階層2220。RIA 190係共處理器2240A至2240N的一個實例。一紋理處理單元(TPU)係另一實例。一給定著色器核心2210可具有多個共處理器,且該等共處理器之全部或一部分可存取階層2220之至少一部分。
在一些實施例中,階層2220包括針對一著色器記憶體空間的一同調性點,一著色器核心2210及其(多個)共處理器可存取該著色器記憶體空間,但是其他著色器核心及其等之共處理器不可存取該著色器記憶體空間。雖然本文中以執行緒群組粒度論述各種實施例,但是核心2210、共處理器2240或兩者以其存取著色器記憶體空間的粒度可變化(例如,SIMD群組、執行緒、或執行緒群組可使用著色器記憶體空間以緩衝資料)。
圖23係繪示根據一些實施例之實例性執行緒群組、著色器核心、及裝置記憶體空間的圖。在所繪示之實施例中,裝置記憶體空間2330由多個著色器核心2210共用。相比之下,在所繪示之實施例中,著色器核心空間2320可由共處理器2240A及由著色器核心2210A所執行的執行緒群組存取,但無法由其他著色器核心(諸如著色器核心2210N)所執行的執行緒群組存取(然而,請注意,著色器核心2210N可實施其自身的著色器核心空間,未明確顯示)。在所繪示之實施例中,執行緒群組(TG)記憶體空間2310A至2310M係可由著色器核心2210A所執行的執行緒群組存取的私用記憶體空間。在一些實 施例中,著色器核心2210A亦實施將經指派給單一執行緒的執行緒記憶體空間(未圖示)。
圖24係繪示根據一些實施例之用於不同記憶體空間之實例快取組織及同調性點的方塊圖。在所繪示之實施例中,著色器核心2210包括一L1快取2410、一暫存器檔案2420、著色器管線2450、及控制電路系統2440。在此實例中,著色器核心2210亦經組態以存取共用L2快取2430。
在所繪示之實例中,暫存器檔案2420用作為針對一執行緒群組記憶體空間的該同調性點,且L1快取2410作用為著色器核心空間同調性點。該同調性點係共用記憶體空間的所有實體(例如,針對著色器記憶體空間的執行緒群組與共處理器)將看到相同所快取資料的層級。在L1層級實施著色器記憶體空間可藉由避免存取記憶體階層的較高層(例如,至L2快取2430)來縮減(例如,執行緒群組當中)共用資料所需的記憶體延時。
在不包括分開之暫存器檔案的統一記憶體實施例中,L1快取可用作為針對執行緒群組空間、執行緒私用空間、及著色器核心空間的同調性點。更大致上,L1快取可係針對著色器核心2210外部的電路系統不可存取的所有記憶體空間的同調性點。在一些實施例中,執行緒私用資料可儲存在一或多個L0快取(及L1快取2410(若需要))中。在所繪示實例中,L2快取用作為針對裝置記憶體空間的同調性點。在其他實施例中,如果L2快取係不均勻的,則一較高層快取(諸如一L3快取)可用作為針對裝置記憶體空間的同調性點。
在一些實施例中,著色器管線2450經組態以例如使用用於在SIMD群組中之執行緒的共用程式計數器來執行SIMD群組的指令。這些管線可包括經組態以在多個時脈週期執行操作的多個管線階段。
在一些實施例中,控制電路系統2440經組態以促進正確執行目標為不同記憶體空間的記憶體存取指令。例如,控制電路系統可包括電路系統,以適當執行載入、儲存、分配、不可切割執行(atomic)、屏障(barrier)等指令,其存取著色器記憶體空間。例如,存取著色器記憶體空間的載入及儲存不會儲存或擷取來自其他空間的資料。從可存取著色器記憶體空間的其他執行緒群組之觀點,對該空間的不可切割執行操作允許執行緒群組以不可切割執行方式執行記憶體存取操作。例如,如果L1快取係著色器記憶體空間同調性點,則一執行緒群組可獲取並更新一或多個L1快取線以用不可切割執行方式執行一組操作。針對著色器記憶體空間之屏障或柵欄操作導致在以可存取該空間的程式碼方式的該屏障柵欄之前的所有操作在該屏障之後的操作之前完成。
除上文所述之射線相交操作以外(或取代上文所述之射線相交操作),著色器核心空間亦可用於各種緩衝操作。例如,執行緒發散係例如對於某些圖形工作負載之SIMD處理器中之未充分利用的常見原因。例如,SIMD處理器經常使用預測執行以處置分支指令。在預測執行中,執行在分支後的路徑兩者,但未採用目前路徑的執行緒在其執行期間被預測關閉。因此,如果在相同SIMD群組中的一些執行緒被預測關閉,而其他執行緒則被預測開啟,則SIMD管線硬體可能未充分利用。
解決此類未充分利用的一個方式係將採取不同路徑的執行緒移至不同的核心。然而,此可涉及在開始新核心之前將結果資料寫出至裝置記憶體,然而,其可實質上影響效能。在一些實施例中,SIMD群組的執行緒被分解(且在執行發散路徑後可能重組),且在相同核心內針對不同路徑執行新的SIMD群組。例如,考慮下列偽代碼:
Figure 110127658-A0305-02-0053-3
在上述程式碼實例中,如果p<0係不可預測的,則著色器可遭受發散問題,其中在相同SIMD群組中的一些執行緒執行碼區塊B(而其他執行緒被預測關閉),且在該SIMD群組中的其他執行緒執行碼區塊C。在一些實施例中,此程式碼被分解成在相同核心內的三個不同的著色器:
Figure 110127658-A0305-02-0053-4
Figure 110127658-A0305-02-0054-5
在此實例中,如果processTriangle著色器係由SIMD群組A執行,則一個動態形成之SIMD群組B可執行subdivideTriangle路徑,而另一動態形成之SIMD群組C可執行rasterizeTriangle路徑。請注意,SIMD群組B可包括來自執行processTriangle著色器的多個不同SIMD群組的執行緒(如同可SIMD群組C)。
在一些實施例中,此精細顆粒的局部調度可使用著色器記憶體空間來儲存中間資料,而非例如將資料發送上至針對裝置記憶體的同調性點。例如,在上述實例中,SIMD群組A可將資料儲存在著色器核心空間中的緩衝器中,而SIMD群組B及C可從此緩衝器讀取中間結果。因為SIMD群組B及C在不同的執行緒群組中(例如,因為其等執行不同著色器),所以著色器核心空間提供針對共用資料的一便利的同調性點。
圖25係繪示根據一些實施例之用於使用著色器記憶體空間之實例方法的流程圖。圖25所示之方法可與本文所揭示之電腦電路系統、系統、裝置、元件、組件、或其他者之任何者結合使用。在各種實施例中,所示之方法 元件的一些可同時執行、以不同於所示的一順序執行、或者可省略。亦可依需要執行額外的方法元件。
在2510,在所繪示之實施例中,第一圖形著色器核心及第二圖形著色器核心執行多個執行緒群組的指令。在所繪示之實施例中,此包括由該第一圖形著色器核心執行以下兩者:具有多個單指令多資料(SIMD)群組的一第一執行緒群組,其經組態以執行一第一著色器程式;及具有多個SIMD群組的一第二執行緒群組,其經組態以執行不同的一第二著色器程式。請注意,在一些實施例中,執行相同著色器程式的不同執行緒群組亦可存取著色器記憶體空間。更大致上,在一些實施例中,該著色器記憶體空間可由來自在相同著色器核心上運行的任何執行緒群組的任何SIMD群組的任何執行緒存取。
在2520,在所繪示之實施例中,控制電路系統根據一著色器記憶體空間提供對儲存在記憶體電路系統中之資料的存取,該著色器記憶體空間可由該第一圖形著色器核心所執行的包括該第一執行緒群組及該第二執行緒群組的執行緒群組存取,但無法由該第二圖形著色器核心所執行的執行緒群組存取。
在一些實施例中,該第一圖形著色器核心中之一第一快取(例如,L1快取2410)係針對該著色器記憶體空間的一同調性點,且在該設備中之一第二較高層快取(例如,L2快取2430)係針對裝置記憶體空間的一同調性點。
在一些實施例中,該控制電路系統亦根據具有不同共用粒度的額外記憶體空間提供對儲存於該記憶體電路系統中之資料的存取,包括:針對該第一執行緒群組之一執行緒群組記憶體空間,其可由該第一執行緒群組可存 取,但不可由任何其他執行緒群組存取;一執行緒記憶體空間,其可由一單一執行緒存取;及一裝置記憶體空間,其可由第一圖形著色器核心及第二圖形著色器核心兩者執行的執行緒群組存取。
在一些實施例中,用於該第一圖形著色器核心的一或多個共處理器亦可存取該著色器記憶體空間。例如,該一或多個共處理器包括RIA 190。在一些實施例中,RIA 190經組態以:基於該第一執行緒群組(例如,團A)之一指令,橫越一空間組織資料結構以判定一或多個基元,一射線待對照該一或多個基元進行相交測試;及起始該第二執行緒群組(例如,團T)以對照該射線來測試該一或多個基元,其中該第一執行緒群組及該第二執行緒群組兩者操作儲存於該著色器記憶體空間中的射線資訊。
在一些實施例中,該第一圖形著色器核心經組態以執行目標為該著色器記憶體空間的載入、儲存、及不可切割執行指令。
在一些實施例中,該第一圖形著色器核心經組態以執行該第一執行緒群組中之一第一SIMD群組以使用該著色器記憶體空間以依執行緒粒度儲存中間圖形工作,以待由一動態形成之SIMD群組的執行緒進一步處理。該動態形成之SIMD群組可包括一組執行緒,該組執行緒經判定以具有針對一條件式控制傳送指令之相同條件結果。
實例裝置
現參照圖26,所示的係繪示一裝置2600之實例實施例的方塊圖。在一些實施例中,裝置2600之元件可包括在一系統單晶片內。在一些實施例中,裝置2600可包括在可係電池供電之一行動裝置中。因此,裝置2600之功 率消耗可係一重要設計考量。在所繪示之實施例中,裝置2600包括網狀架構(fabric)2610、運算複合體2620、輸入/輸出(I/O)橋接器2650、快取/記憶體控制器2645、圖形單元150、及顯示單元2665。在一些實施例中,除了及/或代替所繪示之組件(諸如視頻處理器編碼器與解碼器、影像處理或辨識元件、電腦視覺元件等)以外,裝置2600可包括其他組件(未圖示)。
網狀架構2610可包括各種互連件、匯流排、MUX、控制器等,且可經組態以促進裝置2600的各種元件之間的通訊。在一些實施例中,網狀架構2610的部分可經組態以實施各種不同的通訊協定。在其他實施例中,網狀架構2610可實施單一通訊協定,且耦接至網狀架構2610之元件可在內部自單一通訊協定轉換成其他通訊協定。
在所繪示之實施例中,運算複合體2620包括匯流排介面單元(bus interface unit,BIU)2625、快取2630、以及核心2635及2640。在各種實施例中,運算複合體2620可包括各種數目個處理器、處理器核心、及/或快取。例如,運算複合體2620可包括1、2、或4個處理器核心或者任何其他合適的數目。在一實施例中,快取2630係一集合關聯L2快取。在一些實施例中,核心2635及/或2640可包括內部指令及/或資料快取。在一些實施例中,在網狀架構2610中、快取2630中、或裝置2600中的別處之一同調性單元(未圖示)可經組態以維持裝置2600之各種快取之間的同調性。BIU 2625可經組態以管理運算複合體2620與裝置2600的其他元件之間的通訊。處理器核心(諸如核心2635及2640)可經組態以執行一特定指令集架構(instruction set architecture,ISA)的指令,該指令集架構可包括作業系統指令及使用者應用指令。
快取/記憶體控制器2645可經組態以管理網狀架構2610與一或多個快取及/或記憶體之間的資料傳輸。例如,快取/記憶體控制器2645可耦接至一L3快取,其繼而可耦接至一系統記憶體。在其他實施例中,快取/記憶體控制器2645可直接耦接至一記憶體。在一些實施例中,快取/記憶體控制器2645可包括一或多個內部快取。
如本文中所使用,用語「耦合至(coupled to)」可指示元件之間的一或多個連接,且一耦合可包括中間元件。例如,在圖26中,圖形單元150可經描述為透過網狀架構2610及快取/記憶體控制器2645「耦接至(coupled to)」一記憶體。反之,在圖26所繪示之實施例中,圖形單元150係「直接耦接(directly coupled)」至網狀架構2610,因為沒有中間元件。
圖形單元150可包括一或多個處理器及/或一或多個圖形處理單元(GPU)。例如,圖形單元150可接收圖形導向指令,諸如OPENGL®、Metal、或DIRECT3D®指令。圖形單元150可基於所接收之圖形導向指令執行特殊化GPU指令或執行其他操作。圖形單元150大致上可經組態以並行處理大資料區塊,並可在一圖框緩衝器中建構影像以供輸出至一顯示器。圖形單元150可包括在一或多個圖形處理管線中之變換、照明、三角形、及/或演現引擎。圖形單元150可輸出用於顯示影像的像素資訊。在各種實施例中,可程式化著色器160可包括經組態以執行圖形程式的高度並行執行核心,其可包括像素任務、頂點任務、及運算任務(其可係或可不係與圖形相關的)。
在一些實施例中,圖形單元150包括本文所討論的電路系統。在其他實施例中,例如,所揭露之電路系統可在其他類型的處理器(諸如,CPU)中實施。
顯示單元2665可經組態以自一圖框緩衝器讀取資料,並提供一像素值串流以供顯示。在一些實施例中,顯示單元2665可經組態為一顯示管線。此外,顯示單元2665可經組態以混合多個圖框以產生一輸出圖框。進一步地,顯示單元2665可包括用於耦合至一使用者顯示器(例如觸控螢幕或外部顯示器)之一或多個介面(例如MIPI®或嵌入式顯示埠(embedded display port,eDP))。
例如,I/O橋接器2650可包括各種元件,其等經組態以實施:通用串列匯流排(universal serial bus,USB)通訊、安全性、音頻、及/或低功率永遠開啟功能。例如,橋接器2650亦可包括介面(諸如脈衝寬度調變(pulse-width modulation,PWM)、通用輸入/輸出(general-purpose input/output,GPIO)、串列周邊介面(serial peripheral interface,SPI)、及/或積體電路匯流排(inter-integrated circuit,I2C))。各種類型的周邊設備及裝置可經由I/O橋接器2650耦接至裝置2600。
在一些實施例中,裝置2600包括可連接至網狀架構2610或I/O橋接器2650的網路介面電路系統(未明確顯示)。該網路介面電路系統可經組態以經由各種網路(其可係有線、無線或兩者)進行通訊。例如,該網路介面電路系統可經組態以經由一有線區域網路、一無線區域網路(例如,經由WiFi)、或廣域網路(例如,網際網路或虛擬私人網路)進行通訊。在一些實施例中,該網路介面電路系統經組態以經由使用一或多個無線電存取技術之一或多個蜂巢式網路進行通訊。在一些實施例中,該網路介面電路系統經組態以使用裝置間通訊(例如,藍牙或無線保真度直連(WiFi Direct))等進行通訊。 在各種實施例中,該網路介面電路系統可提供連接至各種類型之其他裝置及網路的連接性至裝置2600。
實例應用
現在轉到圖27,各種類型系統可包括上文論述之電路、裝置、或系統之任何者。可併入或以其他方式利用本文所述之技術之一或多者之系統或裝置2700可於廣泛範圍的領域中使用。例如,系統或裝置2700可被利用作為系統硬體之部分,諸如桌上型電腦2710、膝上型電腦2720、平板電腦2730、蜂巢式或行動電話2740、電視2750(或耦接至電視的機上盒)。
類似地,所揭露之元件可用在穿戴式裝置2760中,諸如智慧型手錶或健康監測裝置等。在許多實施例中,智慧型手錶可實施各種不同的功能,例如,存取電子郵件、蜂巢式服務、行事曆、健康監測等。穿戴式裝置亦可經單獨設計以執行健康監測功能,諸如監測使用者的生命徵象、執行流行病學功能(諸如接觸者追蹤(contact tracing))、提供對緊急醫療服務之通訊等。亦設想其他類型的裝置,包括配戴於頸上的裝置、可植入人體中的裝置、眼鏡或頭盔,該等裝置經設計以提供電腦產生之實境體驗,諸如基於擴增及/或虛擬實境等。
系統或裝置2700亦可用於各種其他背景中。例如,系統或裝置2700可用於伺服器電腦系統的背景中,諸如專用伺服器或在實施基於雲端的服務2770的共用硬體上。更進一步,系統或裝置2700可實施在廣泛範圍的專用日常裝置中,包括家中常見的裝置2780,諸如冰箱、恆溫器、保全攝影機等。此類裝置的互連常稱為「物聯網」(Internet of Things,IoT)。元件亦可實施在各種 運輸模式中。例如,系統或裝置2700可用於各種類型車輛2790之控制系統、導引系統、娛樂系統等中。
圖27中所繪示之應用僅係例示性的,且非意欲限制所揭露系統或裝置的潛在未來應用。其他實例應用包括(但不限於):可攜式遊戲裝置、音樂播放器、資料儲存裝置、無人機等。
實例電腦可讀媒體
本揭露已於上文詳細描述各種實例電路。本揭露不僅意欲涵蓋包括此類電路系統的實施例,且亦意欲涵蓋包括指定此類電路系統之設計資訊的一電腦可讀的儲存媒體。因此,本揭露意欲支持的申請專利範圍不僅涵蓋包括所揭示之電路系統的一設備,且亦涵蓋以一格式來指定電路系統之一儲存媒體,該格式係藉由經組態以生產包括所揭示之電路系統的硬體(例如積體電路)之一製造系統來辨識。針對此一儲存媒體的申請專利範圍係意欲涵蓋例如一實體,其生產一電路設計,但本身並不製造該設計。
圖28係繪示根據一些實施例之儲存電路設計資訊的實例非暫時性電腦可讀儲存媒體的方塊圖。在所繪示之實施例中,半導體製造系統2820經組態以處理儲存於非暫時性電腦可讀的媒體2810上的設計資訊2815,且基於設計資訊2815製造積體電路2830。
非暫時性電腦可讀儲存媒體2810可包含各種適當類型的記憶體裝置或儲存裝置之任何者。非暫時性電腦可讀儲存媒體2810可係安裝媒體(例如CD ROM、軟碟、或磁帶裝置);一電腦系統記憶體或隨機存取記憶體(諸如DRAM、DDR RAM、SRAM、EDO RAM、Rambus RAM等);一非揮發性 記憶體(諸如快閃、磁性媒體(例如硬碟)、或光學儲存);暫存器或其他類似類型的記憶體元件等。非暫時性電腦可讀儲存媒體2810亦可包括其他類型的非暫時性記憶體或其組合。非暫時性電腦可讀儲存媒體2810可包括可駐留在不同位置(例如,在透過網路連接的不同電腦系統中)之二或更多個記憶體媒體。
設計資訊2815可使用各種適當的電腦語言(包括硬體描述語言)之任何者指定,諸如但不限於:VHDL、Verilog、SystemC、SystemVerilog、RHDL、M、MyHDL等。可由半導體製造系統2820使用設計資訊2815以製造積體電路2830之至少一部分。可由至少一半導體製造系統2820辨識設計資訊2815之格式。在一些實施例中,設計資訊2815亦可包括指定積體電路2830之合成及/或佈局的一或多個元件庫。在一些實施例中,設計資訊係全部或部分地以一接線對照表的形式指定,該接線對照表指定元件庫元件及其連接。單獨採用的設計資訊2815可包括或可不包括用於製造一對應積體電路的足夠資訊。例如,設計資訊2815可指定待製造之電路元件但無法指定其等之實體佈局。在此情況中,設計資訊2815可能需要與佈局資訊組合以實際製造所指定的電路系統。
在各種實施例中,積體電路2830可包括一或多個客製巨集電路元件,諸如,記憶體、類比或混合信號電路、及類似者。在此種情況中,設計資訊2815可包括與所包括之巨集元件有關的資訊。此種資訊可無限制地包括線路圖擷取資料庫、遮罩設計資料、行為模型、及裝置或電晶體層級接線對照表。如本文所使用的,遮罩設計資料可根據圖形資料系統(GDSII)或任何其他合適格式格式化。
半導體製造系統2820可包括經組態以製造積體電路的各種適當元件的任何者。例如,此可包括用於沉積半導體材料(例如在可包括遮罩之一晶圓上)、移除材料、變更所沉積之材料的形狀、改質材料(例如,藉由摻雜材料或使用紫外線處理修改介電常數)等的元件。半導體製造系統2820亦可經組態以執行所製造之電路的各種測試以供正確操作。
在各種實施例中,積體電路2830經組態以根據由設計資訊2815所指定之一電路設計進行操作,其可包括執行如本文所述的功能之任何者。例如,積體電路2830可包括圖1B、圖3A、圖6、圖7、圖14A、圖19B、圖22A至22B、圖24、或圖26所示之各種元件的任何者。進一步地,積體電路2830可經組態以結合其他組件執行本文所述的各種功能。進一步地,本文所述的功能可由多個經連接的積體電路執行。
如本文中所使用,具有「指定一電路經組態以…之一設計的設計資訊」之形式的詞組並非意味所涉電路必須為了滿足該要素而製造。相反,此詞組指示設計資訊所描述之一電路一經製成將經組態以執行所指示的動作或將包括指定組件。
下列編號的條項訂出本文揭示之各種非限制性實施例:
A組
A1.一種設備,其包含:圖形著色器電路系統,其經組態以執行指示用於在一圖形場景中之一組一或多個射線之原點及方向資訊的一射線相交指令;射線相交電路系統,其經組態以: 回應於該射線相交指令而橫越一空間組織加速資料結構中之多個節點,其中該資料結構之節點指示對應於該圖形場景中之邊界區域的座標;在該橫越期間,使用邊界區域測試電路系統並行地測試該組射線中之一射線是否與由該資料結構之一節點所指示的多個不同邊界區域相交;及其中該設備經組態以基於該橫越及測試來判定指定被該組一或多個射線之各別射線所相交的一或多個圖形基元之資訊;及其中該圖形著色器電路系統經組態以基於相交射線來著色所指定之該一或多個圖形基元。
A2.如A組內前述條項中任一項之設備,其中該邊界區域測試電路系統經組態以對照該多個不同邊界區域來並行地測試多個射線。
A3.如A組內前述條項中任一項之設備,其中該邊界區域測試電路系統包括:多個邊界區域測試器,其等經組態以判定一射線是否與一邊界區域相交,並經組態以執行針對多個邊界區域的並行測試;及共同節點計算電路系統,其經組態以執行一或多個操作,該一或多個操作的輸出係由該等邊界區域測試器共用。
A4.如A組內前述條項中任一項之設備,其中該邊界區域測試電路系統進一步包括:一邊界區域資料快取;一射線資料快取;及結果排序電路系統,其經組態以基於相距於一所測試射線之一原點的距離,排序來自該多個邊界區域測試器的相交結果。
A5.如A組內前述條項中任一項之設備,其中該設備經組態以將針對該組一或多個射線之射線資料儲存在該圖形著色器電路系統及該射線相交電路系統可存取的一著色器記憶體空間中。
A6.如A組內前述條項中任一項之設備,其中該圖形著色器電路系統經組態以:基於所指定之該一或多個圖形基元的著色而產生一或多個額外射線;及執行針對該一或多個額外射線的一射線相交指令。
A7.如A組內前述條項中任一項之設備,其中該加速資料結構係一階層結構,且一第一節點係在一上層加速資料結構之一葉節點,該葉節點具有在一下層加速資料結構中的一子節點;其中該下層加速資料結構對應於在該圖形場景中多次經具現化的一圖形模型;及其中該射線相交電路系統經組態以形成一SIMD群組,以將到達該第一節點的一或多個射線之座標變換成該圖形模型之一執行個體之一模型空間。
A8.如A組內前述條項中任一項之設備,其中該加速資料結構之一或多個節點包括四個或更多個邊界區域及四個或更多個子節點。
A9.如A組內前述條項中任一項之設備,其中該加速資料結構包括具有一邊界區域的一節點,針對該邊界區域的多個基元經指示為子代;及其中該加速資料結構包括一基元,針對該基元的多個邊界區域經指示為親代。
A10.如A組內前述條項中任一項之設備,其中該射線相交電路系統經組態以形成一SIMD群組,以對照對應於該資料結構之一葉節點的一基元來測試一組射線
A11.如A組內前述條項中任一項之設備,其中該射線相交電路系統經組態以使用分組電路系統基於其等下一個目標的該資料結構之該節點而將該組射線之部分分組成多個群組,其中該測試係基於該等群組。
A12.如A組內前述條項中任一項之設備,其中該設備係一運算裝置,其包括:一圖形處理器,其包括該射線相交電路系統;一中央處理單元;及網路介面電路系統。
A13.一種方法,其包含由如A組內前述條項中任一項之設備所執行的操作的任何組合。
A14.一種非暫時性電腦可讀儲存媒體,其具有儲存於其上的設計資訊,該設計資訊以一格式指定一硬體積體電路之至少一部分的一設計,該格式係藉由經組態以根據該設計使用該設計資訊生產該電路之一半導體製造系統來辨識,其中該設計資訊指定該電路包括:如條項A1至A12中所述之元件的任何組合。
***
B組
B1.一種設備,其包含:射線相交電路系統,其經組態以:接收一或多個射線相交請求,該一或多個射線相交請求指示用於在一圖形場景中之一組射線中之多個射線之原點及方向資訊; 橫越其節點指示對應於該圖形場景之邊界區域之座標的一空間組織加速資料結構中之多個節點以判定射線是否與邊界區域相交,包括以:藉由分組電路系統基於其等下一個目標的該資料結構之該節點而將該組射線之部分分組成多個群組;及藉由該邊界區域測試電路系統基於該分組來處理包括以一第一節點為目標的該組射線之一子集的一第一群組,以判定該第一群組中之射線是否與該第一節點之一或多個邊界區域相交。
B2.如B組內前述條項中任一項之設備,其中該射線相交電路系統經組態以在一時脈週期期間選擇一或多個射線群組,且排程在該等射線群組中之射線以用於發出至該邊界區域測試電路系統。
B3.如B組內前述條項中任一項之設備,其中該選擇係基於在不同射線群組中之最舊射線。
B4.如B組內前述條項中任一項之設備,其中該分組提供用於存取在一或多個資料快取中快取的邊界區域資料的時間局部性。
B5.如B組內前述條項中任一項之設備,其中該射線相交電路系統包括針對該加速資料結構之葉節點及該加速資料結構之內部節點的分開之分組電路系統。
B6.如B組內前述條項中任一項之設備,其中該第一群組係藉由一連結清單指定。
B7.如B組內前述條項中任一項之設備,其中在一射線佇列中之項目包括一欄位,該欄位指向針對對應射線之目前群組的連結清單中的一下一射線。
B8.如B組內前述條項中任一項之設備,其中該第一群組包括來自由一著色器處理器處理的多個不同SIMD群組的射線。
B9.如B組內前述條項中任一項之設備,其中該射線相交電路系統經組態以每次一射線橫越該加速資料結構之層級之間時,將該射線指派給一新群組。
B10.如B組內前述條項中任一項之設備,其中該射線相交電路系統實施用於該射線之一橫越堆疊以用於該加速資料結構之一深度優先搜尋,且其中該射線相交電路系統經組態以每次該橫越堆疊之一頂部變更時,將該射線指派給一新群組。
B11.如B組內前述條項中任一項之設備,其中判定一射線之一群組,該射線相交電路系統經組態以:使用基於被該射線作為目標的該下一節點的一金鑰作為一雜湊函數之一輸入以判定一組群組;及搜尋該組群組以判定在該組中的一所分配群組是否匹配該金鑰。
B12.如B組內前述條項中任一項之設備,其中該射線相交電路系統經組態以針對不匹配任何目前所分配群組之一射線分配一新群組。
B13.如B組內前述條項中任一項之設備,其中該邊界區域測試電路系統包括並行測試電路系統,該並行測試電路系統經組態以對照一節點之多個邊界區域並行地測試一射線。
B14.一種方法,其包含:由如B組內前述條項中任一項之電路系統所執行的操作的任何組合。
B15.一種非暫時性電腦可讀儲存媒體,其具有儲存於其上的設計資訊,該設計資訊以一格式指定一硬體積體電路之至少一部分的一設計,該格式係藉由經 組態以根據該設計使用該設計資訊生產該電路之一半導體製造系統來辨識,其中該設計資訊指定該電路包括:條項B1至B13中所述之元件的任何組合。
***
C組
C1.一種設備,其包含:一或多個圖形處理器,其經組態以:存取用於待演現之一圖形場景中之多個圖形基元的資料;產生一空間組織資料結構,其中該資料結構之一些節點指示圖形基元,且一些節點指示該圖形場景中之邊界區域的座標,其中:該空間組織資料結構包括具有一邊界區域的一節點,針對該邊界區域的多個基元經指示為子代;及該空間組織資料結構包括一基元,針對該基元的多個邊界區域經指示為親代;及橫越該空間組織資料結構以判定該圖形場景中之射線是否與基元相交;及基於該判定而著色相交之基元。
C2.如C組內前述條項中任一項之設備,其中該一或多個圖形處理器經組態以量化指示在該空間組織資料結構中之一第一邊界區域的資訊,以使用數目比一原始表示數目少的位元來表示該第一邊界區域。
C3.如C組內前述條項中任一項之設備,其中該一或多個圖形處理器經組態以執行量化,使得該所量化表示指示大於或等於該第一邊界區域的一區域,藉此防止針對該第一邊界區域的偽陰性相交結果。
C4.如C組內前述條項中任一項之設備,其中該空間組織資料結構包括針對指示一或多個基元之一第一節點的一或多個欄位,該一或多個欄位指示:該一或多個基元定位於其處的一偏移;及定位於該偏移處的針對該第一節點之基元數目。
C5.如C組內前述條項中任一項之設備,其中該空間組織資料結構包括具有至少四個子節點之一節點。
C6.如C組內前述條項中任一項之設備,其中該空間組織資料結構編碼針對一節點的一記憶體位置,該節點之所有子節點經連續地定位於該記憶體位置處。
C7.如C組內前述條項中任一項之設備,其中用於該一或多個圖形處理器之一驅動器經組態以將除錯資料插入至該等節點之一或多者之子代之間的記憶體空間中。
C8.如C組內前述條項中任一項之設備,其中該空間組織資料結構指定葉節點中之基元資訊及在內部節點中之邊界區域資訊。
C9.如C組內前述條項中任一項之設備,其中在該空間組織資料結構中之一第一葉節點及一第二葉節點具有不同資料大小,其中該第一葉節點與該第二葉節點之各別親節點編碼該等不同資料大小。
C10.如C組內前述條項中任一項之設備,其進一步包含:網路介面電路系統;及 一或多個中央處理單元。
C11.一種方法,其包含:由如C組內前述條項中任一項之電路系統所執行的操作的任何組合。
C12.一種非暫時性電腦可讀儲存媒體,其具有儲存於其上的設計資訊,該設計資訊以一格式指定一硬體積體電路之至少一部分的一設計,該格式係藉由經組態以根據該設計使用該設計資訊生產該電路之一半導體製造系統來辨識,其中該設計資訊指定該電路包括:條項C1至C10中所述之元件的任何組合。
***
D組
D1.一種設備,其包含:著色器電路系統,其經組態以執行針對一第一SIMD群組之一射線相交指令,其中該指令指示在一圖形場景中之一組射線的座標資訊;射線相交電路系統,其經組態以:回應於該射線相交指令而橫越一空間組織加速資料結構中之多個節點,其中該資料結構之節點指示對應於該圖形場景中之邊界區域的座標,且該橫越判定射線是否與該等邊界區域相交;及回應於達到指示一變換之一第一節點而形成一第二SIMD群組,以在該著色器電路系統上執行,以變換該組射線中之一或多個射線的座標。
D2.如D組內前述條項中任一項之設備,其中該加速資料結構係一階層結構,且該第一節點係在一上層加速資料結構之一葉節點,該葉節點具有在一下層加速資料結構中的一子節點。
D3.如D組內前述條項中任一項之設備,其中該變換將一或多個射線定位在一模型空間中,該模型空間用於在該圖形場景中多次經具現化的一圖形模型之一執行個體。
D4.如D組內前述條項中任一項之設備,其中該第一節點之一子節點亦具有在該上層加速資料結構中之另一親節點,其中當橫越至該子節點時該另一親節點指示一不同變換,其中該不同變換係與該圖形模型之一不同執行個體的一模型空間相關聯。
D5.如D組內前述條項中任一項之設備,其中該設備經組態以:儲存該一或多個射線之原始座標;及回應於往回橫越遍及該加速資料結構通過該第一節點而回復至該原始座標。
D6.如D組內前述條項中任一項之設備,其中該第一SIMD群組及該第二SIMD群組存取在一著色器記憶體空間中針對該一或多個射線的射線資料。
D7.如D組內前述條項中任一項之設備,其中該第一SIMD群組包括用以在執行該射線相交指令之前分配用於該著色器記憶體空間中之該組射線的記憶體空間的一指令。
D8.如D組內前述條項中任一項之設備,其中該第二SIMD群組包括來自執行一射線相交指令之另一SIMD群組的一或多個射線。
D9.如D組內前述條項中任一項之設備,其中該加速資料結構係一邊界體積階層。
D10.如D組內前述條項中任一項之設備,其中該設備係一運算裝置,其包括:一圖形單元,其包括該射線相交電路系統及該著色器電路系統;一或多個中央處理單元;及網路介面電路系統。
D11.一種方法,其包含:由如D組內前述條項中任一項之電路系統所執行的操作的任何組合。
D12.一種非暫時性電腦可讀儲存媒體,其具有儲存於其上的設計資訊,該設計資訊以一格式指定一硬體積體電路之至少一部分的一設計,該格式係藉由經組態以根據該設計使用該設計資訊生產該電路之一半導體製造系統來辨識,其中該設計資訊指定該電路包括:條項D1至D10中所述之元件的任何組合。
***
E組
E1.一種設備,其包含:著色器電路系統,其經組態以執行針對一第一SIMD群組之一射線相交指令,其中該指令指示在一圖形場景中之一第一組射線的座標資訊;及射線相交電路系統,其經組態以回應於該射線相交指令而橫越於一空間組織加速資料結構中之多個節點,其中該等節點包括指示在該圖形場景中之邊界區域座標的多個節點及指示基元之多個節點; 其中該設備經組態以回應於達到該加速資料結構的指示一或多個基元之一節點而形成一第二SIMD群組,該第二SIMD群組操作僅部分地與該第一組射線重疊的一第二組射線,其中該第二SIMD群組包括一或多個指令,以判定該第二組射線中之射線是否與該一或多個基元相交;及其中該著色器電路系統經組態以基於執行該第二SIMD群組的結果而著色指示為相交的一或多個基元。
E2.如E組內前述條項中任一項之設備,其中該著色器電路系統經組態以基於執行該第二SIMD群組之相交結果來指示該射線相交電路系統是否繼續進行該一或多個射線之一射線的橫越。
E3.如E組內前述條項中任一項之設備,其中該第一SIMD群組及該第二SIMD群組操作一第一資料結構,該第一資料結構儲存用於該一或多個射線之一第一射線的資訊,其中該第一資料結構經儲存在一著色器記憶體空間中,該射線相交電路系統亦可存取該著色器記憶體空間。
E4.如E組內前述條項中任一項之設備,其中該第二SIMD群組經組態以從由用於該第二SIMD群組的該射線相交電路系統所識別的在該著色器記憶體空間中之一緩衝器存取執行緒資料。
E5.如E組內前述條項中任一項設備,其中該第二SIMD群組包括經組態以對照多個不同基元測試一第一射線的不同執行緒。
E6.如E組內前述條項中任一項之設備,其中該第二SIMD群組包括一SIMD縮減指令,該SIMD縮減指令基於來自操作該第一射線之多個執行緒的輸入值而執行一操作。
E7.如E組內前述條項中任一項之設備,其進一步包含邊界區域測試電路系統,其經組態以在該橫越期間並行地測試一射線是否與由該加速資料結構之一節點所指示的該等邊界區域中之多個不同者相交。
E8.如E組內前述條項中任一項之設備,其中該著色器電路系統經組態以:暫停執行該第一SIMD群組;及在接收來自該第二SIMD群組的相交結果之後,繼續執行該第一SIMD群組以著色該一或多個基元。
E9.如E組內前述條項中任一項之設備,其中該設備係一運算裝置,其包括:一圖形單元,其包括該著色器電路系統及該射線相交電路系統;一中央處理單元;及網路介面電路系統。
E10.一種方法,其包含:由如E組內一前述條項中之電路系統所執行的操作的任何組合。
E11.一種非暫時性電腦可讀儲存媒體,其具有儲存於其上的設計資訊,該設計資訊以一格式指定一硬體積體電路之至少一部分的一設計,該格式係藉由經組態以根據該設計使用該設計資訊生產該電路之一半導體製造系統來辨識,其中該設計資訊指定該電路包括:條項E1至E9中所述之元件的任何組合。
***
F組
F1.一種設備,其包含: 第一圖形著色器核心及第二圖形著色器核心,其等經組態以執行用於多個執行緒群組的指令,其中該第一圖形著色器核心經組態以執行:具有多個單指令多資料(SIMD)群組的一第一執行緒群組,其經組態以執行一第一著色器程式;及具有多個SIMD群組的一第二執行緒群組,其經組態以執行不同的一第二著色器程式;記憶體電路系統;及控制電路系統,其中該控制電路系統經組態以根據一著色器記憶體空間提供對儲存在該記憶體電路系統中之資料的存取,該著色器記憶體空間可由該第一圖形著色器核心所執行的包括該第一執行緒群組及該第二執行緒群組的執行緒群組存取,但無法由該第二圖形著色器核心所執行的執行緒群組存取。
F2.如F組內前述條項中任一項之設備,其中該第一圖形著色器核心中之一第一快取係用於該著色器記憶體空間的一同調性點,且在該設備中之一第二較高階快取係用於裝置記憶體空間的一同調性點。
F3.如F組內前述條項中任一項之設備,其中該控制電路系統進一步經組態以根據下列記憶體空間來提供對儲存在該記憶體電路系統中之資料的存取:用於該第一執行緒群組之一執行緒群組記憶體空間,該第一執行緒群組可存取該執行緒記憶體空間,但任何其他執行緒群組不可存取該執行緒記憶體空間;一執行緒記憶體空間,其可由一單一執行緒存取;及一裝置記憶體空間,其可由第一圖形著色器核心及第二圖形著色器核心兩者執行的執行緒群組存取。
F4.如F組內前述條項中任一項之設備,其中用於該第一圖形著色器核心的一或多個共處理器亦可存取該著色器記憶體空間。
F5.如F組內前述條項中任一項之設備,其中該一或多個共處理器包括射線相交電路系統。
F6.如F組內前述條項中任一項之設備,其中該射線相交電路系統經組態以:基於該第一執行緒群組之一指令,橫越一空間組織資料結構以判定待對照以針對相交測試一射線的一或多個基元;及起始該第二執行緒群組以對照該射線來測試該一或多個基元;其中該第一執行緒群組及該第二執行緒群組兩者操作儲存於該著色器記憶體空間中的射線資訊。
F7.如F組內前述條項中任一項之設備,其中該第一圖形著色器核心經組態以執行目標為該著色器記憶體空間的載入、儲存、及不可切割執行指令。
F8.如F組內前述條項中任一項之設備,其中該第一圖形著色器核心經組態以執行該第一執行緒群組中之一第一SIMD群組以使用該著色器記憶體空間以依執行緒粒度儲存中間圖形工作,以待由一動態形成之SIMD群組的執行緒進一步處理。
F9.如F組內前述條項中任一項之設備,其中該動態形成之SIMD群組可包括一組執行緒,該組執行緒經判定以具有針對一條件式控制傳送指令之相同條件結果。
F10.一種方法,其包含:由如F組內前述條項中任一項之電路系統所執行的操作的任何組合。
F11.一種非暫時性電腦可讀儲存媒體,其具有儲存於其上的設計資訊,該設計資訊以一格式指定一硬體積體電路之至少一部分的一設計,該格式係藉由經組態以根據該設計使用該設計資訊生產該電路之一半導體製造系統來辨識,其中該設計資訊指定該電路包括:條項F1至F9中所述之元件的任何組合。
***
本揭露包括對「一實施例(an embodiment)」或「實施例」群組(groups of "embodiments")(例如,「一些實施例(some embodiment)」或「各種實施例(various embodiments)」)的引用。實施例係所揭露之概念的不同實施方案或例項。提及「一實施例(an embodiment)」、「一個實施例(one embodiment)」、「一特定實施例(a particular embodiment)」、及類似者不必然指稱相同實施例。設想大量可行的實施例,包括該些具體揭示者,以及落在本揭露之精神或範圍內的修改或替代例。
本揭露可討論可由所揭露之實施例產生的潛在優點。並非這些實施例之所有實施方案將必須表現潛在優點之任何者或全部。無論是針對特定實施方案所實現的優點是否取決於許多因素,其中一些者係在本揭露範圍外。事實上,落在申請專利範圍之範圍內的實施方案可能不會展現一些或所有任何所揭露之優點有許多原因。例如,一特定實施方案可包括本揭露範圍外的其他電路系統(結合所揭露實施例之一者)而使一或多個所揭露優點無效或減弱。此外,特定實施方案(例如,實施方案技術或工具)之次佳設計執行亦可使所揭露優點無效或減弱。即使假定經熟練的實施方案,優點的實現仍可取決於其 他因素,諸如於其中部署該實施方案之環境情況。例如,施加至一特定實施方案的輸入可防止在此揭露中解決的一或多個問題免於出現在特定場合,結果係可能無法實現其解決方案的效益。考慮到本揭露外部的可能因素的存在,明確地意欲將本文所述的任何潛在優點並非解讀為必須符合請求項限制以證明侵權。而是,此類潛在優點之識別意欲說明具有本揭露之利益的設計者可用的(多種)改善類型。許可地描述的此類優點(例如,陳述特定優點「可引起」)並非意欲傳達實際上此類優點是否可實現的疑慮,而是認知到實現此類優點的技術現實常取決於額外因素。
除非另外陳述,否則實施例係非限制性的。即,所揭露之實施例並非意欲限制基於本揭露之草擬的申請專利範圍之範圍,即使僅描述關於一特定特徵的一單一實例。所揭露之實施例意欲係說明性而非限制,而在本揭露中沒有與此相反的任何陳述。因此,本申請案意欲允許申請專利範圍涵蓋所揭露之實施例以及此類替代例、修改例、與均等物,此等對於受益於本揭露之所屬技術領域中具有通常知識者來說將是顯而易見的。
例如,此申請案中的特徵可以任何合適的方式組合。據此,在此申請案之審查期間(或主張其優先權之申請案)可對特徵之任何此類組合制定新請求項。具體而言,參考隨附申請專利範圍,可組合來自獨立請求項之特徵與其他獨立請求項之特徵,若適當,包括依附於其他附屬請求項的請求項。類似地,若適當,可組合來自各別附屬請求項之特徵。
據此,雖然隨附的附屬請求項可經草擬,使得各依附於一單一其他請求項,但是亦設想額外相依性。與本揭露一致的附屬項之特徵的任何組 合經設想且可在此申請案或另一申請案中主張。簡言之,組合不限於在隨附申請專利範圍中具體列舉者。
若適當,亦設想以一種格式或法定類型(例如,設備)草擬之請求項意欲支持另一種格式或法定類型(例如,方法)之對應請求項。
***
因為本揭露係一法律文件,所以各種用語及詞組可受到行政與司法解釋的規約。公告特此以下段落以及在整份揭露內容提供的定義將用於判定如何解釋基於本揭露所草擬的申請專利範圍。
除非上下文另有明確指定,否則提及項目的單數形式(即,名詞或名詞詞組之前有「一(a/an)」、或「該(the)」)意欲意指「一或多個(one or more)」)。因此,在一請求項提及「一項目(an item)」在沒有隨附上下文情況中不排除該項目的額外例項。「複數個(plurality)」項目係指二或更多個項目之一集合。
在本文中,字語「可(may)」在本文中以許可意涵使用(即,具有可能以、能夠),且非以強制意涵使用(即,必須)。
用語「包含(comprising)」及「包括(including)」及其形式係開放式,意指「包括但不限於(including,but not limited to)」。
當本揭露中關於一選項清單使用用語「或(or)」時,其通常將被理解為以包含性意涵使用,除非上下文另有提供。因此,陳述「x或y(x or y)」相當於「x或y、或兩者(x or y,or both)」,因此:1)涵蓋x,但不涵蓋y;2)涵蓋y,但不涵蓋x;及3)涵蓋x與y兩者。另一方面,諸如「x或y任何者但非兩者 (either x or y,but not both)」的詞組清楚表明「或(or)」係以排他性含意意義使用。
陳述「w、x、y、或z、或其任何組合(w,x,y,or z,or any combination thereof)」或「...w、x、y、及z之至少一者(at least one of…w,x,y,and z)」意欲涵蓋涉及在該集合中的單一元件至多總數目個元件的所有可能性。例如,給定集合[w,x,y,z],這些詞組涵蓋該集合之任何單一元件(例如,w,但沒有x、y、或z(w but not x,y,or z))、任何二個元件(例如,w與x,但沒有y或z(w and x,but not y or z))、任何三個元件(例如,w、x與y,但沒有z(w,x,and y,but not z))、及所有四個元件。因此,詞組「...w、x、y、及z之至少一者(at least one of…w,x,y,and z)」係指該集合[w,x,y,z]之至少一個元件,藉此涵蓋此元件清單中的所有可行組合。此詞組並不解讀為需要w之至少一個例項、x之至少一個例項、y之至少一個例項、及z之至少一個例項。
在本揭露中,各種「標示」可置於名詞或名詞詞組之前。除非上下文另有提供,否則用於一特徵的不同標示(例如,「第一電路(first circuit)」、「第二電路(second circuit)」、「特定電路(specific circuit)」、「給定電路(given circuit)」等)係指該特徵的不同例項。額外地,除非另有說明,否則標示「第一(first)」、「第二(second)」、及「第三(third)」當施加至一特徵時並非意味任何類型的順序(例如,空間、時間、邏輯等)。
詞組「基於(based on)」或係用以敘述影響一判定的一或多個因素。此用語不排除可能有額外因素可影響判定。意即,一判定可單獨基於特定因素,或基於該等特定因素以及其他未指出因素。考慮用語「基於B判定A(determine A based on B)」。此用語指出,B係一用以判定A之因素,或B影響 A之判定。此用語不排除亦可基於一些其他因素例如C來判定A。此用語亦意欲涵括其中A係單獨基於B而判定的一實施例。如本文所用,用語「基於(based on)」與用語「至少部分地基於(based at least in part on)」同義。
詞組「回應於(in response to/response to)」描述觸發效應之一或多個因素。此詞組不排除額外因素可影響或以其他方式觸發效應的可能性,聯合特定因素或獨立於特定因素任一者。意即,一效應可係單獨回應於該等因素,或可回應於該等被指出因素以及其他未指出因素。考慮詞組「回應於B而執行A(perform A in response to B)」。此詞組指定B是觸發執行A或觸發A的特定結果的因素。此詞組並不排除也可回應於一些其他因素(諸如C)而執行A。此詞組也不排除可聯合回應於B與C而執行A。此詞組亦意欲涵蓋僅回應於B而執行A的實施例。如本文中所使用,詞組「回應於(responsive to)」與詞組「至少部分回應於(responsive at least in part to)」同義。類似地,詞組「回應於(in response to)」與詞組「至少部分回應於at least in part in response to)」同義。
***
在本揭露中,不同的實體(其等可能被不同地稱為「單元(unit)」、「電路(circuit)」、其他組件等)可被描述或主張為「經組態(configured)」以執行一或多個任務或操作。此表示法(『實體』經組態以『執行一或多個任務』)在本文中係用以指稱結構(即,實體之物)。具體而言,此表示法係用以指示此結構係經配置以在操作期間執行該一或多個任務。即使一結構目前並未被操作,仍可稱該結構「經組態以(configured to)」執行某任務。因此,經說明或敘述為「經組態以(configured to)」執行某任務的一實體, 係指實體之物,諸如裝置、電路、具有處理單元的系統、儲存有可執行用以實施該任務之程式指令的記憶體等。此詞組在本文中並非用以指稱無形之物。
在一些情況中,各種單元/電路/組件可在本文中描述為執行一組任務或操作。應理解,這些實體「經組態以(configured to)」執行該等任務/操作,即使未具體提及。
用語「經組態以(configured to)」並非意欲意指「可組態以(configurable to)」。例如,未經程式化的FPGA將不被視為「經組態以(configured to)」執行一特定功能。然而,此未經程式化的FPGA可係「可組態以(configurable to)」執行該功能。在適當程式化之後,接著,該FPGA可聲稱「經組態以(configured to)」執行特定功能。
為了基於本揭露的美國專利申請案之目的,在一請求項中描述一結構「經組態以」執行一或多個任務,係明確地意欲不援引35 U.S.C.§ 112(f)對該請求項元件進行解讀。如果申請人意欲在基於本揭露的美國專利申請案的審查期間援引章節112(f),將使用「用以『執行一功能』之構件」這樣的句構來陳述請求項元件。
在本揭露中可描述不同的「電路(circuit)」。這些電路或「電路系統(circuitry)」構成包括各種類型電路元件的硬體,諸如組合式邏輯、時控儲存裝置(例如,正反器、暫存器、鎖存器等)、有限狀態機、記憶體(例如,隨機存取記憶體、嵌入式動態隨機存取記憶體)、可程式化邏輯陣列等。電路系統可經客製化設計或自標準程式庫取用。在各種實施方案中,電路系統可依需要包括數位組件、類比組件、或兩者之組合。某些類型的電路通常可稱為 「單元(unit)」(例如,解碼單元、算術邏輯單元(ALU)、功能單元、記憶體管理單元(memory management unit,MMU)等)。此類單元亦指電路或電路系統。
因此,所揭露之電路/單元/組件及圖式中所繪示與本文所揭露的其他元件包括硬體元件,諸如前述段落中所述者。在許多例項中,可藉由描述一特定電路之功能來指定在該電路內之硬體元件的內部配置。例如,一特定「解碼單元(decode unit)」可描述為執行「處理指令的作業碼,並將該指令路由到複數個功能單元中之一或多者(processing an opcode of an instruction and routing that instruction to one or more of a plurality of functional units)」的功能,其意指該解碼單元「經組態以(configured to)」執行此功能。本功能之說明書對電腦技術領域中具有通常知識者足以意味著用於該電路之一組可行結構。
在各種實施例中,如前述段落中所討論者,電路、單元、及由其等經組態以實施之功能或操作所定義的其他元件,該配置及此類電路/單元/組件相對於彼此及以其等互動的方式來形成硬體之微階層性定義,該硬體最終製造於積體電路中或經程式化至FPGA中,以形成微階層性定義之實體實施方案。因此,該微階層性定義係由所屬技術領域中具有通常知識者所認知為許多實體實施方案可自其衍生的結構,其等所有皆落入該微階層性定義係所描述之廣泛結構內。即,提出根據本揭露所提供之微階層性定義的具有通常知識的技術人員可在無需過度實驗且在應用通常知識之情況中,藉由以硬體描述語言(hardware description language,HDL)(諸如Verilog或VHDL)編碼電路/單元/組件的描述來實施該結構。HDL描述常以可呈功能性之方式表達。但是對於所屬技術領域中具有通常知識者,此HDL描述係用於將電路、單元、或組件的結構變換成下一層級之實施方案細節的方式。此一HDL描述可採取行為程式碼(其 一般並非可合成的)、暫存器傳送語言(register transfer language,RTL)程式碼(其一般係可合成,對比於行為程式碼)、或結構性程式碼(例如,指定邏輯閘及其等連接性的接線對照表)之形式。隨後,HDL描述可依據針對一給定積體電路製造技術所設計的元件庫而合成,且可針對時序、功率及其他原因進行修改以產生一最終設計資料庫,該最終設計資料庫傳送至製造廠以製造遮罩,最後生產出積體電路。一些硬體電路或其部分亦可在一簡圖編輯器(schematic editor)中經客製化設計,並隨合成電路系統被轉移至積體電路設計中。積體電路可包括電晶體及其他電路元件(例如,被動元件諸如電容器、電阻器、電感器等)及電晶體與電路元件間之互連件。一些實施例可實施多個積體電路,該多個積體電路經耦合在一起以實施硬體電路,且/或在一些實施例中可使用離散元件。替代地,HDL設計可經合成至一可程式化邏輯陣列,諸如現場可程式化閘陣列(FPGA),且可於FPGA中實施。此電路群組之設計與這些電路的後續下層實施方案之間的解耦通常導致以下情境,其中當此程序係在電路實施程序的一不同階段執行時,電路或邏輯設計者從不針對下層實施方案指定超出電路經組態以執行動作之描述的特定一組結構。
事實上,電路元件之許多不同的下層組合可用以實施相同規格電路,導致該電路的大量等效結構。如所提及,這些下層電路實施方案可根據製造技術的變化、經選擇以製造積體電路的製造廠、針對一特定專案所提供之元件庫等而變化。在許多情況中,由不同設計工具或方法論進行選擇,以產生此等不同實施方案可係任意的。
此外,對於電路之特定功能規格的單一實施方案常見的是,針對給定實施例,包括大量裝置(例如,數百萬的電晶體)。據此,數量龐大的 此資訊使得提供完整陳述用以實施單一實施例之下層結構係不切實際的,更別說是龐大陣列的等效可行實施方案。出於此原因,本揭露描述使用產業中通常採用的功能速記的電路結構。
0-7:節點
1520:ADS節點
P0-P3:基元

Claims (17)

  1. 一種用以偵測射線與圖形基元之間的相交的設備,其包含:圖形著色器電路系統(graphics shader circuitry),其經組態以執行指示用於在一圖形場景中之一組一或多個射線之原點及方向資訊的一射線相交指令;射線相交電路系統,其包括具有多個邊界區域測試器之邊界區域測試電路系統,其中該射線相交電路系統經組態以:回應於該射線相交指令而橫越一空間組織加速資料結構中之多個節點,其中該資料結構之節點指示對應於該圖形場景中之邊界區域的座標;在該橫越期間,同時使用多個邊界區域測試器並行地測試該組射線中之多個射線是否與由該資料結構之一節點所指示的多個不同邊界區域相交;其中該設備經組態以基於該橫越及測試來判定指定被該組一或多個射線中之各別射線所相交的一或多個圖形基元之資訊;且其中該圖形著色器電路系統經組態以基於相交射線來著色所指定之該一或多個圖形基元。
  2. 如請求項1之設備,其中該邊界區域測試電路系統包括:共同節點計算電路系統,其經組態以執行一或多個操作,該一或多個操作的輸出係由多個邊界區域測試器共用。
  3. 如請求項2之設備,其中該邊界區域測試電路系統進一步包括: 一邊界區域資料快取;一射線資料快取;及結果排序電路系統,其經組態以基於相距於一所測試射線之一原點的距離,排序來自該多個邊界區域測試器的相交結果。
  4. 如請求項1之設備,其中該設備經組態以將針對該組一或多個射線之射線資料儲存在該圖形著色器電路系統及該射線相交電路系統可存取的一著色器記憶體空間中。
  5. 如請求項1之設備,其中該圖形著色器電路系統經組態以:基於所指定之該一或多個圖形基元的著色而產生一或多個額外射線;及執行針對該一或多個額外射線的一第二射線相交指令。
  6. 如請求項1之設備,其中該加速資料結構係一階層結構,且一第一節點係在一上層加速資料結構之一葉節點,該葉節點具有在一下層加速資料結構中的一子節點;其中該下層加速資料結構對應於在該圖形場景中多次經具現化的一圖形模型;且其中該射線相交電路系統經組態以形成一單指令多資料(SIMD)群組,以將到達該第一節點的一或多個射線之座標變換成該圖形模型之一執行個體之一模型空間。
  7. 如請求項1之設備,其中該加速資料結構之一或多個節點包括四個或更多個邊界區域及四個或更多個子節點。
  8. 如請求項1之設備, 其中該加速資料結構包括具有一邊界區域的一節點,針對該邊界區域的多個基元經指示為子代;且其中該加速資料結構包括一基元,針對該基元的多個邊界區域經指示為親代。
  9. 如請求項1之設備,其中該射線相交電路系統經組態以形成一SIMD群組,以對照對應於該資料結構之一葉節點的一基元來測試一組射線。
  10. 如請求項1之設備,其中該射線相交電路系統經組態以使用分組電路系統基於其等下一個目標的該資料結構之該節點而將該組射線之部分分組成多個群組,其中該測試係基於該等群組。
  11. 如請求項1之設備,其中該設備係一運算裝置,其包括:一圖形處理器,其包括該射線相交電路系統;一中央處理單元;及網路介面電路系統。
  12. 一種用以偵測射線與圖形基元之間的相交的方法,其包含:由圖形著色器電路系統執行指示用於在一圖形場景中之一組一或多個射線之原點及方向資訊的一射線相交指令;由包含多個邊界區域測試器之射線相交電路系統回應於該射線相交指令而橫越一空間組織加速資料結構中之多個節點,其中該資料結構之節點指示對應於該圖形場景中之邊界區域的座標;在該橫越期間,由該射線相交電路系統同時使用多個邊界區域測試器,並行地測試該組射線中之多個射線是否與由該資料結構之一節點所指示的多個不同邊界區域相交, 基於該橫越及測試來判定指定被該組一或多個射線之各別射線所相交的一或多個圖形基元之資訊;及由該圖形著色器電路系統基於相交射線來著色所指定之該一或多個圖形基元。
  13. 如請求項12之方法,其進一步包含:基於所指定之該一或多個圖形基元的著色而產生一或多個額外射線;及執行針對該一或多個額外射線的一第二射線相交指令。
  14. 一種非暫時性電腦可讀儲存媒體,其具有儲存於其上的設計資訊,該設計資訊以一格式指定一硬體積體電路之至少一部分的一設計,該格式係藉由經組態以根據該設計使用該設計資訊生產該電路之一半導體製造系統來辨識,其中該設計資訊指定該電路包括:圖形著色器電路系統,其經組態以執行指示用於在一圖形場景中之一組一或多個射線之原點及方向資訊的一射線相交指令;射線相交電路系統,其包括具有多個邊界區域測試器之邊界區域測試電路系統,其中該射線相交電路系統經組態以:回應於該射線相交指令而橫越一空間組織加速資料結構中之多個節點,其中該資料結構之節點指示對應於該圖形場景中之邊界區域的座標;在該橫越期間,同時使用多個邊界區域測試器並行地測試該組射線中之多個射線是否與由該資料結構之一節點所指示的多個不同邊界區域相交; 其中該電路經組態以基於該橫越及測試來判定指定被該組一或多個射線之各別射線所相交的一或多個圖形基元之資訊;且其中該圖形著色器電路系統經組態以基於相交射線來著色所指定之該一或多個圖形基元。
  15. 如請求項14之非暫時性電腦可讀儲存媒體,其中該邊界區域測試電路系統包括:共同節點計算電路系統,其經組態以執行一或多個操作,該一或多個操作的輸出係由多個邊界區域測試器共用。
  16. 如請求項15之非暫時性電腦可讀儲存媒體,其中該邊界區域測試電路系統進一步包括:一邊界區域資料快取;一射線資料快取;及結果排序電路系統,其經組態以基於相距於一所測試射線之一原點的距離,排序來自該多個邊界區域測試器的相交結果。
  17. 如請求項14之非暫時性電腦可讀儲存媒體,其中該圖形著色器電路系統經組態以:基於所指定之該一或多個圖形基元的著色而產生一或多個額外射線;及執行針對該一或多個額外射線的一第二射線相交指令。
TW110127658A 2020-07-30 2021-07-28 具有並行射線測試之射線相交電路系統 TWI780839B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063058868P 2020-07-30 2020-07-30
US63/058,868 2020-07-30
US17/103,433 US11367242B2 (en) 2020-07-30 2020-11-24 Ray intersect circuitry with parallel ray testing
US17/103,433 2020-11-24

Publications (2)

Publication Number Publication Date
TW202215379A TW202215379A (zh) 2022-04-16
TWI780839B true TWI780839B (zh) 2022-10-11

Family

ID=77050824

Family Applications (4)

Application Number Title Priority Date Filing Date
TW110127658A TWI780839B (zh) 2020-07-30 2021-07-28 具有並行射線測試之射線相交電路系統
TW111136086A TWI808007B (zh) 2020-07-30 2021-07-28 用以偵測射線與圖形基元之間的相交的設備及方法,以及非暫時性電腦可讀儲存媒體
TW112122835A TWI829602B (zh) 2020-07-30 2021-07-28 用以偵測射線與圖形基元之間的相交的設備及方法,以及非暫時性電腦可讀儲存媒體
TW111136146A TWI808008B (zh) 2020-07-30 2021-07-28 用以偵測射線與圖形基元之間的相交的設備及方法,以及非暫時性電腦可讀儲存媒體

Family Applications After (3)

Application Number Title Priority Date Filing Date
TW111136086A TWI808007B (zh) 2020-07-30 2021-07-28 用以偵測射線與圖形基元之間的相交的設備及方法,以及非暫時性電腦可讀儲存媒體
TW112122835A TWI829602B (zh) 2020-07-30 2021-07-28 用以偵測射線與圖形基元之間的相交的設備及方法,以及非暫時性電腦可讀儲存媒體
TW111136146A TWI808008B (zh) 2020-07-30 2021-07-28 用以偵測射線與圖形基元之間的相交的設備及方法,以及非暫時性電腦可讀儲存媒體

Country Status (5)

Country Link
US (1) US11367242B2 (zh)
EP (2) EP4296959A3 (zh)
KR (2) KR102476973B1 (zh)
CN (2) CN115588068A (zh)
TW (4) TWI780839B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11494969B2 (en) 2020-08-20 2022-11-08 Sony Interactive Entertainment LLC System and method for accelerated ray tracing with asynchronous operation and ray transformation
US11704859B2 (en) * 2020-08-20 2023-07-18 Sony Interactive Entertainment LLC System and method for accelerated ray tracing
US20230252717A1 (en) * 2022-02-04 2023-08-10 Qualcomm Incorporated Ray tracing processor
US11908065B2 (en) 2022-03-21 2024-02-20 Advanced Micro Devices, Inc. Stack-based ray traversal with dynamic multiple-node iterations

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090322752A1 (en) * 2006-09-19 2009-12-31 Caustic Graphics, Inc. Ray tracing system architectures and methods
US20110050698A1 (en) * 2006-09-19 2011-03-03 Caustic Graphics, Inc. Architectures for parallelized intersection testing and shading for ray-tracing rendering
US20120139926A1 (en) * 2006-09-19 2012-06-07 Caustic Graphics Inc. Memory allocation in distributed memories for multiprocessing
TW201638883A (zh) * 2015-02-06 2016-11-01 英特爾公司 用於細分表面的直接和互動式射線追蹤之方法及設備
US20190355166A1 (en) * 2017-07-13 2019-11-21 Imagination Technologies Limited Hybrid Hierarchy of Bounding and Grid Structures for Ray Tracing
TW201946031A (zh) * 2017-04-17 2019-12-01 美商英特爾股份有限公司 具有額外情境的圖形系統

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6804128B2 (en) 2002-11-07 2004-10-12 Lionel O. Barthold Current modulation of direct current transmission lines
DE102004007835A1 (de) 2004-02-17 2005-09-15 Universität des Saarlandes Vorrichtung zur Darstellung von dynamischen komplexen Szenen
US7969434B2 (en) * 2006-09-19 2011-06-28 Caustic Graphics, Inc. Method, apparatus, and computer readable medium for accelerating intersection testing in ray-tracing rendering
US9665970B2 (en) 2006-09-19 2017-05-30 Imagination Technologies Limited Variable-sized concurrent grouping for multiprocessing
US8237711B2 (en) 2007-11-19 2012-08-07 Caustic Graphics, Inc. Tracing of shader-generated ray groups using coupled intersection testing
US8212816B1 (en) 2007-12-17 2012-07-03 Nvidia Corporation System, method, and computer program product for parallel ray tracing traversal and intersection utilizing a single instruction multiple data (SIMD) processing architecture
CN102037497B (zh) * 2008-03-21 2014-06-11 柯斯提克绘图公司 用于光线追踪渲染的并行相交测试及着色的架构
US8471845B1 (en) 2009-07-31 2013-06-25 Nvidia Corporation System and method for constructing a bounding volume hierarchical structure
US8700877B2 (en) 2009-09-25 2014-04-15 Nvidia Corporation Address mapping for a parallel thread processor
US9224235B2 (en) * 2013-03-20 2015-12-29 Nvidia Corporation System, method, and computer program product for compression of a bounding volume hierarchy
US9355492B2 (en) 2013-05-15 2016-05-31 Nvidia Corporation System, method, and computer program product for utilizing a wavefront path tracer
US8947447B1 (en) 2014-02-13 2015-02-03 Raycast Systems, Inc. Computer hardware architecture and data structures for ray binning to support incoherent ray traversal
US9978171B2 (en) * 2014-07-29 2018-05-22 Nvidia Corporation Control of a sample mask from a fragment shader program
GB2554587B (en) 2015-03-05 2018-09-19 Imagination Tech Ltd Systems and methods for distributed scalable ray processing
US9984492B2 (en) 2015-04-02 2018-05-29 Qualcomm Incorporated Efficient hierarchy traversal in ray tracing applications
US9773340B2 (en) * 2015-06-12 2017-09-26 Qualcomm Incorporated Rendering using ray tracing to generate a visibility stream
US10706608B2 (en) * 2016-01-19 2020-07-07 Nvidia Corporation Tree traversal with backtracking in constant time
US10210593B2 (en) 2016-01-28 2019-02-19 Qualcomm Incorporated Adaptive context switching
US11341110B2 (en) 2016-03-21 2022-05-24 Imagination Technologies Limited Hierarchy merging
US10614611B2 (en) 2017-04-07 2020-04-07 Intel Corporation Apparatus and method for implementing bounding volume hierarchy (BVH) operations on tesselation hardware
US11360808B2 (en) 2017-04-09 2022-06-14 Intel Corporation Efficient thread group scheduling
US10074210B1 (en) * 2017-07-25 2018-09-11 Apple Inc. Punch-through techniques for graphics processing
US10580195B2 (en) * 2017-11-20 2020-03-03 Microsoft Technology Licensing, Llc Ray-triangle intersection testing with tetrahedral planes
US10546393B2 (en) 2017-12-30 2020-01-28 Intel Corporation Compression in machine learning and deep learning processing
US10839475B2 (en) * 2018-04-11 2020-11-17 Intel IP Corporation Apparatus and method for compressing leaf nodes of a bounding volume hierarchy (BVH)
US10957095B2 (en) 2018-08-06 2021-03-23 Intel Corporation Programmable ray tracing with hardware acceleration on a graphics processor
US10672178B2 (en) 2018-08-08 2020-06-02 Alvin D. Zimmerman Ray traversal with virtual grids
US10930022B2 (en) 2018-08-09 2021-02-23 Nvidia Corporation Motion adaptive rendering using variable rate shading
US10825230B2 (en) 2018-08-10 2020-11-03 Nvidia Corporation Watertight ray triangle intersection
US10740952B2 (en) * 2018-08-10 2020-08-11 Nvidia Corporation Method for handling of out-of-order opaque and alpha ray/primitive intersections
US10867429B2 (en) * 2018-08-10 2020-12-15 Nvidia Corporation Query-specific behavioral modification of tree traversal
US10580196B1 (en) * 2018-08-10 2020-03-03 Nvidia Corporation Method for continued bounding volume hierarchy traversal on intersection without shader intervention
US10810785B2 (en) 2018-08-10 2020-10-20 Nvidia Corporation Method for forward progress tree traversal mechanisms in hardware
US11120608B2 (en) 2018-09-27 2021-09-14 Intel Corporation Apparatus and method for cross-instance front-to-back traversal for ray tracing heavily-instanced scenes
US10706609B1 (en) 2018-12-13 2020-07-07 Advanced Micro Devices, Inc. Efficient data path for ray triangle intersection
US10930050B2 (en) 2018-12-13 2021-02-23 Advanced Micro Devices, Inc. Mechanism for supporting discard functionality in a ray tracing context
US10909741B2 (en) * 2018-12-28 2021-02-02 Intel Corporation Speculative execution of hit and intersection shaders on programmable ray tracing architectures
US11915357B2 (en) * 2020-03-16 2024-02-27 Intel Corporation Apparatus and method for throttling a ray tracing pipeline
US11900498B2 (en) 2020-03-19 2024-02-13 Intel Corporation Apparatus and method for performing a stable and short latency sorting operation
US11315303B2 (en) 2020-03-25 2022-04-26 Arm Limited Graphics processing
US11302056B2 (en) 2020-06-10 2022-04-12 Nvidia Corporation Techniques for traversing data employed in ray tracing
US11373360B2 (en) * 2020-07-30 2022-06-28 Apple Inc. Grouping techniques for ray intersection traversal

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090322752A1 (en) * 2006-09-19 2009-12-31 Caustic Graphics, Inc. Ray tracing system architectures and methods
US20110050698A1 (en) * 2006-09-19 2011-03-03 Caustic Graphics, Inc. Architectures for parallelized intersection testing and shading for ray-tracing rendering
US20120139926A1 (en) * 2006-09-19 2012-06-07 Caustic Graphics Inc. Memory allocation in distributed memories for multiprocessing
TW201638883A (zh) * 2015-02-06 2016-11-01 英特爾公司 用於細分表面的直接和互動式射線追蹤之方法及設備
TW201946031A (zh) * 2017-04-17 2019-12-01 美商英特爾股份有限公司 具有額外情境的圖形系統
US20190355166A1 (en) * 2017-07-13 2019-11-21 Imagination Technologies Limited Hybrid Hierarchy of Bounding and Grid Structures for Ray Tracing

Also Published As

Publication number Publication date
EP3945499A1 (en) 2022-02-02
EP4296959A2 (en) 2023-12-27
EP4296959A3 (en) 2024-04-03
TWI829602B (zh) 2024-01-11
CN115588068A (zh) 2023-01-10
KR20220015342A (ko) 2022-02-08
CN114092614A (zh) 2022-02-25
KR102540775B1 (ko) 2023-06-13
TW202301281A (zh) 2023-01-01
KR20230087419A (ko) 2023-06-16
TW202215379A (zh) 2022-04-16
KR102476973B1 (ko) 2022-12-14
CN114092614B (zh) 2022-11-22
KR20230006416A (ko) 2023-01-10
TW202338744A (zh) 2023-10-01
TW202301280A (zh) 2023-01-01
TWI808008B (zh) 2023-07-01
US11367242B2 (en) 2022-06-21
TWI808007B (zh) 2023-07-01
US20220036639A1 (en) 2022-02-03

Similar Documents

Publication Publication Date Title
TWI780839B (zh) 具有並行射線測試之射線相交電路系統
CN116075863A (zh) 用于包括光线追踪的高效图形处理的装置和方法
US11107266B2 (en) Method and apparatus for the proper ordering and enumeration of multiple successive ray-surface intersections within a ray tracing architecture
US11120608B2 (en) Apparatus and method for cross-instance front-to-back traversal for ray tracing heavily-instanced scenes
US11521343B2 (en) Graphics memory space for shader core
CN115878278A (zh) 用于树结构数据减少的装置和方法
CN116391207A (zh) 用于包括光线追踪的高效图形处理的设备和方法
CN117581267A (zh) 用于同步光线追踪的栈访问扼制
CN115861517A (zh) 用于利用着色器调用图分析进行光线追踪的装置和方法
CN115775197A (zh) 用于利用重要性采样的随机拼贴照明的装置和方法
KR102668120B1 (ko) 병렬 광선 테스트를 갖는 광선 교차 회로
TW202416229A (zh) 用以偵測射線與圖形基元之間的相交的設備及方法,以及非暫時性電腦可讀儲存媒體
KR20240078413A (ko) 병렬 광선 테스트를 갖는 광선 교차 회로
US11676327B2 (en) Temporal split techniques for motion blur and ray intersection

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent