TW201724010A - 對於具有較寬單指令多資料(simd)執行寬度之3d管線增加執行緒酬載的技術 - Google Patents
對於具有較寬單指令多資料(simd)執行寬度之3d管線增加執行緒酬載的技術 Download PDFInfo
- Publication number
- TW201724010A TW201724010A TW105137856A TW105137856A TW201724010A TW 201724010 A TW201724010 A TW 201724010A TW 105137856 A TW105137856 A TW 105137856A TW 105137856 A TW105137856 A TW 105137856A TW 201724010 A TW201724010 A TW 201724010A
- Authority
- TW
- Taiwan
- Prior art keywords
- pipeline
- processor
- thread
- payload
- attribute
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
Abstract
在一單一硬體執行緒中對於32或甚至64個通道的SIMD執行寬度減少SIMD片段化產生較好EU利用。增加SIMD執行寬度至每個執行緒32或64個通道使得能夠每個EU硬體執行緒處置更多頂點、補塊、基元以及三角形。修改之3D管線繪圖酬載可在域繪圖之狀況下處置多個補塊,或在幾何繪圖之狀況下當基元物件實例計數大於一時處置多個基元,並在像素繪圖之狀況下處置多個三角形。
Description
本發明係關於對於具有較寬單指令多資料(SIMD)執行寬度之3D管線增加執行緒酬載的技術。
發明背景 在暫存器空間的限制內,編譯程式嘗試將儘可能多的通道(亦即像素)(高達32)映射至一個執行單元(EU)硬體執行緒。每一EU具有其自身執行緒控制,當執行緒分派程式(TDL)將執行緒載入至EU中時執行緒控制的功能性開始。執行緒控制有助於獨立地執行執行緒而不需與其他EU同步。執行緒控制佔用EU閘區域的較大部分。
一種方法,其包含將一個圖形管線級中之多個頂點、補塊、基元或三角形其中之一者封裝至一個執行單元硬體執行緒中。
每個執行緒控制之SIMD寬度經有利地增加以增加效能。舉例而言,每一執行緒控制可控制SIMD64的執行,而不是16的執行寬度(亦即4x執行緒控制區域減少)。
一個EU執行緒執行模型為所有通道(例如像素)來自同一基元。隨著在工作負載中三角形變小,常見的是較小三角形中沒有足夠像素以填充SIMD64 EU。此產生SIMD片段化,使得EU未充分利用。
3D管線的執行緒酬載變化可減輕隨較寬SIMD EU產生的SIMD片段化問題。酬載佈局可改良將頂點、殼、域、幾何及像素繪圖級中之多個頂點、補塊、基元及三角形封裝至一個EU硬體執行緒中的靈活性。
在一單一硬體執行緒中對於32或甚至64個通道的SIMD執行寬度減少SIMD片段化產生較好EU利用。每個執行緒增加SIMD執行寬度至32或64個通道使得能夠每個EU硬體執行緒處置更多頂點、補塊、基元以及三角形。否則,僅僅具有具有較大執行寬度的比其可能處置的量處理更少補塊、三角形或基元的執行緒導致EU未充分利用。現有3D管線繪圖酬載在域繪圖之狀況下不可處置多個補塊,或在幾何繪圖之狀況下當基元物件實例計數大於一時不可處置多個基元,且在像素繪圖之狀況下不可處置多個三角形。
圖1所展示之圖形管線10可作為單獨專用積體電路實施於圖形處理器中,或經由軟體實施通用處理器實施為軟體,或由軟體與硬體的組合實施。
圖1所展示之圖形管線10可(例如)實施於無線電話、併入有有線或無線通訊裝置的行動手持式計算裝置或任一電腦中。圖形管線可提供用於顯示之影像或視訊至顯示裝置。各種技術可用以處理提供至顯示器之影像。
為簡單及簡潔起見,將SIMD32用以解釋一個實施例。但涵蓋包括SIMD64之其他SIMD寬度。
命令串流器級12負責管理管線及沿管線傳遞命令。另外,命令串流器自記憶體緩衝器讀取常數資料並將其置放在統一回覆緩衝器(URB)32中。URB為由固定功能共用的晶載記憶體以便執行緒傳回將由固定功能或其他執行緒消耗的資料。固定功能為藉由專用(不可程式化)硬體執行的管線功能。
回應於基元處理命令,頂點提取14負責自記憶體讀取頂點資料,將其重新格式化並將結果寫入至頂點URB條目中。
頂點繪圖級16處理頂點,通常執行諸如蒙皮、照明及變換之操作。頂點繪圖(VS)取得單一輸入頂點並產生單一輸出頂點。VS級之主要功能為傳遞在VS快取記憶體中未命中的頂點至VS執行緒,且接著沿管線傳遞VS執行緒產生之頂點。在VS快取記憶體中命中的頂點已經著色且因此未經修改地沿管線傳遞。
典型SIMD8 VS執行模式在SIMD8執行緒中處理八個頂點。SIMD8執行緒之每一通路在一般暫存器檔案(GRF)空間之其自身分割區中含有所有頂點屬性資料以處理頂點。GRF為由執行單元共用的用於運算元源及目的地的大讀取/寫入暫存器。在較寬SIMD執行大小情況下,可加寬SIMD8頂點繪圖酬載。因此,如表1中所示在單一硬體執行緒中,SIMD16執行模式處理16個頂點且SIMD32執行模式處理32個頂點。
殼繪圖(HS)(在OpenGL中亦稱為棋盤形佈置控制繪圖)18為對於補塊之每個輸出控制點調用一次並將定義低階表面之輸入控制點變換成構成補塊之控制點的第一棋盤形佈置級。另外,HS亦執行一些每補塊計算以提供棋盤形佈置因子及補塊恆定資料至棋盤形佈置器及域繪圖級。
典型SIMD8八補塊棋盤形佈置執行模式在SIMD8執行緒中對8個棋盤形佈置補塊進行操作。每一SIMD通路在GRF空間的其自身分割區中含有補塊的輸入控制點資料及輸入控制點統一回覆緩衝器32(URB)控制代碼(handles)之全部屬性。在較寬SIMD執行大小情況下,加寬現有SIMD8 八補塊棋盤形佈置執行模式酬載。因此,如表2中所示在單一硬體執行緒中,SIMD16執行模式處理16個補塊且SIMD32執行模式處理32個補塊。 表2:展示用於在單一硬體執行緒中處理32個補塊的SIMD32執行模式之HS酬載佈局。
域繪圖(DS)(亦稱為OpenGL中之棋盤形佈置評估繪圖)20計算輸出補塊中之再分點的頂點位置。域繪圖每個棋盤形佈置器級域點執行一次並對域點之UV座標進行唯讀存取。在DS完成之後,棋盤形佈置完成且管線資料繼續至下一管線級(幾何繪圖、像素繪圖)。
在一個當前實施中存在兩個DS SIMD8執行模式。單一補塊執行模式處理屬於單一棋盤形佈置補塊的所有域點。然而,許多時候棋盤形佈置補塊經最低限度地棋盤形佈置,從而導致四個或少於四個域點。在彼情況下,雙重補塊執行模式在單一SIMD8執行緒中處理各含有四個或少於四個域點的兩個補塊(參看表3)。然而,即使在雙重補塊執行模式情況下,仍存在未使用的通路,此係由於補塊可不具有與執行模式之大小一樣多的域點。為有效使用SIMD通路,來自不同DS補塊之域點資料可封裝於單一SIMD執行緒中。為產生高效碼序列,每一域點佔據一個SIMD通路且域點之所有屬性駐留於GRF空間的其自身分割區中(參見表4)。 表3:雙重補塊SIMD8執行模式執行緒酬載。若每個補塊存在小於四個域點,則一些SIMD通路可未被利用。
表4:展示單一SIMD32 DS執行緒中之許多DS補塊執行模式的執行緒酬載。在所展示之執行緒酬載中,補塊0產生僅僅3個域點,補塊1產生3個域點等。來自不同DS補塊之域點資料封裝於單一SIMD執行緒中。為產生高效碼序列,每一域點佔據一個SIMD通路且域點的所有屬性駐留於GRF空間之其自身分割區中。
幾何繪圖(GS)(當存在時)22接收在先前級中組譯的整個基元作為輸入並傳遞基元物件頂點至圖形子系統以待由GS執行緒處理。因此,GS完全瞭解其正處理的基元,包括其所有頂點及任一鄰接資訊,若指定。由於GS支援基元之有限放大或減小,因此幾何繪圖的輸出可為零或多個基元。
存在目前基於基元物件實例化是否被啟用而存在的兩種不同GS執行緒酬載。當實例化未啟用(參見表5)時,此意謂再現的網格恰好用於彼基元一次。實例化允許同一網格之多個複本在不同位置處再現且每一實例係由唯一實例識別符(參見表6)識別。 表5:展示GS SIMD8執行緒酬載的當前#instance=1情況,其中執行緒之每一通路處理單一基元。在下文展示用於具有三個頂點的三角形基元之酬載頂點控制代碼。對於較大基元,將需要額外暫存器以保存額外頂點控制代碼。
表6:展示GS SIMD8執行緒酬載之當前#instance>1情況,其中對於5個實例處理具有三個頂點的單一三角形基元。每一實例係與唯一物件實例id相關聯。
如表6中所示,當基元需要處理少於八個實例時,SIMD通路不全部用於實例大於1情況。在較寬SIMD執行大小情況下,吾人可利用酬載之所有通路以處理基元物件,從而確保高效SIMD通路及執行單元利用。吾人可將基元統一回覆緩衝器(URB)控制代碼複製至含有基元之實例id的通路中(如表7(a)中所示),而不是具有基元URB輸入控制代碼的一個複本。此允許未使用通路處理額外基元實例。替代地,可如表7b)中所示對於多個基元(取決於所選擇的執行模式)每個硬體執行緒處理一個實例。
如表5中所示的單一實例情況有效使用SIMD通路且因此現有SIMD8執行緒酬載經加寬用於SIMD16/SIMD32情況。 表7a):展示當#instance>1時GS執行緒酬載之所有未利用通路可在SIMD32執行模式中如何用以處理額外基元物件實例。
表7b):展示當#instance>1時GS執行緒酬載之所有未利用通路可如何在SIMD32執行模式中用以處理額外基元物件的替代方法。在替代方法中,當#instance>1時,每一硬體執行緒處置與執行模式大小一樣多的基元之單一實例。
像素繪圖(PS)24為組合恆定變數、紋理資料、內插之每個頂點值以及其他資料以產生每個像素輸出的程式。對於由基元涵蓋的每一像素(片段),光柵處理器級調用PS一次。除對於每一片段執行應用程式介面(API)供應之PS程式以外,PS單元亦使用質心演算法計算待跨物件內插的各種頂點屬性之值。
具有頂點v0、v1、v2(圖2)之三角形可用以設置具有原點v0及基礎向量(v1-v0)及(v2-v0)之非正交座標系統(圖2A)。三角形內部的點P接著由P(α、β、γ)=α*v0+β*v1+γ*v2表示,其中(α、β、γ)為點P之質心座標(圖2B)。
(α、β、γ)對於在三角形內部之點P具有α+β+γ=1之質心特性。因此,可使用僅僅兩個質心座標β及γ及單一平面ISA指令而將像素P之屬性Ap計算為Ap=A0+β*(A1-A0)+γ*(A2-A0)。此處A0、A1、A2分別為在三角形頂點v0、v1以及v2處的輸入頂點屬性(圖2C)。上文所描述的像素P處的屬性Ap計算係在線性內插應用於PS屬性之狀況下。上文計算的內插屬性差量(delta)(A1
-A0
)及(A2
-A0
)基於所使用內插模式之類型而變化。一般而言,A0、A1以及A2表示無關於內插模式使用的屬性差量之集合。
硬體因此使用質心參數以輔助屬性內插,且此等參數係在硬體中對於每個像素(或每一取樣)計算並在執行緒酬載中遞送至PS。亦在酬載中遞送的係每一屬性之每個通道的頂點屬性差量(a0、a1以及a2)之集合。
在像素繪圖核心中,在給定對應屬性通道差量a0/a1/a2及像素/樣本之β/γ質心參數的情況下,針對每一像素/樣本的每一屬性通道進行以下計算,其中V為在彼像素/樣本處的屬性通道之更垂直空間值: V=a0+(a1*β)+(a2*γ)。
剪輯器(剪輯)26對傳入物件執行剪輯測試且(必要時)藉由固定功能硬體剪輯物件。
帶/扇形(SF)28藉由使用固定功能硬體執行物件設置。執行緒分派程式34仲裁來自固定功能單元之執行緒起始請求並在執行單元36上起始執行緒。執行單元為多執行緒處理器。每一執行單元為全能處理器,含有指令提取及解碼、暫存器檔案、源運算元拌和以及SIMD算術邏輯單元。
開窗程式遮蔽單元(WM)30可傳遞2個子跨度(8個像素)、4個子跨度(16個像素)或8個子跨度(32個像素)之群組至PS執行緒酬載(表8)。允許WM單元包括在PS執行緒酬載中的子跨度之群組係藉由在WM_STATE中程式化的32、16、8像素分派啟用狀態變數控制。使用此等狀態變數,WM單元嘗試分派最大允許子跨度群組。然而,PS之當前執行緒酬載僅僅支援屬於同一三角形的屬性差量。此意謂不管選擇什麼執行模式,子跨度全部需要屬於同一三角形。此常常導致在需要較少子跨度涵蓋三角形時硬體(WM)挑選較小SIMD執行模式(亦即SIMD8)。 表8:展示用於具有三個屬性及每個屬性兩個分量的現有SIMD8/SIMD16/SIMD32執行緒酬載的執行緒酬載屬性差量(a0、a1以及a2)。吾人視允許WM包括於執行緒酬載中的子跨度之群組及藉由硬體挑選的SIMD執行模式而具有像素之2個子跨度、4個子跨度或8個子跨度。然而,限制為所有子跨度需要屬於同一三角形。因此下文展示的所有屬性差量屬於單一三角形。
用於SIMD16(表9)及SIMD32(表10)執行模式之執行緒酬載佈局允許來自多個三角形之屬性差量包括於同一酬載中。此使硬體較容易始終選擇最高可能執行模式,此係由於來自多個三角形的子跨度可經一起分組於單一PS執行緒酬載中。此不僅由於PS執行緒分派涉及某一額外負擔數量且啟動較大執行緒通常係較好的而改良執行緒效率,而且改良現在泵送2-SIMD8指令而不是2-SIMD4指令的執行單元效率。 表9:展示具有8個子跨度之SIMD32酬載的執行緒酬載屬性差量(a0、a1以及a2)。每一子跨度可屬於不同三角形。如下文所示,三角形具有三個屬性及每個屬性三個分量(下文展示之部分屬性資料)。
表10:展示具有4個子跨度之SIMD16酬載的執行緒酬載屬性差量(a0、a1以及a2)。每一子跨度可屬於不同三角形,其中每一三角形具有三個屬性及每個屬性三個分量(下文展示之部分屬性資料)。
現參看圖3,序列40可實施於軟體、韌體及/或硬體中。在軟體及韌體實施例中,該序列可使用儲存在諸如磁性、光學或半導體儲存器之一或多個非暫時性電腦可讀媒體中的電腦執行指令來執行。大體上,此等儲存器可為圖形處理器之部分或耦接至圖形處理器。
序列40藉由如區塊42中所指示修改域繪圖酬載以處置多個補塊而開始。此可(例如)藉由將來自不同域繪圖補塊之域點資料封裝至一個SIMD執行緒中並將每一域點之屬性儲存在可藉由程式化執行緒定址的暫存器空間中之其自身分割區中而實現,其中每一域點佔據一個SIMD通路。接著如在區塊44中所示,幾何繪圖酬載可在基元物件實例計數大於一時經修改以處置多個基元。此可藉由將基元統一回覆緩衝器控制代碼複製至含有基元之實例ID的通路中實現。另外,質心參數可用於屬性內插且酬載可經遞送至像素繪圖,該酬載包括每個像素或每個樣本之質心參數以及每一屬性之每個通道的頂點屬性差量之集合。在一些實施例中,來自多個三角形之屬性差量可包括於同一像素繪圖酬載中,如區塊46中所指示。
圖4為根據一實施例的處理系統100之方塊圖。在各種實施例中,系統100包括一或多個處理器102及一或多個圖形處理器108,且可為單個處理器桌上型系統、多處理器工作站系統或具有大量處理器102或處理器核心107之伺服器系統。在一實施例中,系統100為併入於供用於行動、手持型或嵌式裝置中之晶片上系統(SoC)積體電路內的處理平台。
系統100之實施例可包括基於伺服器之遊戲平台、遊戲控制台(包括遊戲及媒體控制台、行動遊戲控制台、手持型遊戲控制台或線上遊戲控制台),或併入於前述各者內。在一些實施例中,系統100為行動電話、智慧型電話、平板計算裝置或行動網際網路裝置。資料處理系統100亦可包括可穿戴式裝置(諸如智慧型手錶可穿戴式裝置、智慧型護目鏡裝置、擴增實境裝置或虛擬實境裝置),與可穿戴式裝置耦接或整合於可穿戴式裝置內。在一些實施例中,資料處理系統100為具有一或多個處理器102及由一或多個圖形處理器108產生之圖形介面的電視或機上盒裝置。
在一些實施例中,一或多個處理器102各自包括用以處理指令之一或多個處理器核心107,該等指令在被執行時執行系統及使用者軟體之操作。在一些實施例中,一或多個處理器核心107中之每一者經組配以處理特定指令集109。在一些實施例中,指令集109可促進進行複雜指令集計算(CISC)、精簡指令集計算(RISC)或經由超長指令字(VLIW)進行之計算。多個處理器核心107可各自處理不同指令集109,其可包括用以促進其他指令集之仿真之指令。處理器核心107亦可包括其他處理裝置,諸如數位信號處理器(DSP)。
在一些實施例中,處理器102包括快取記憶體104。取決於架構,處理器102可具有單一內部快取記憶體或多級內部快取記憶體。在一些實施例中,在處理器102之各組件當中共用快取記憶體。在一些實施例中,處理器102亦使用可使用已知快取一致性技術在處理器核心107當中共用之外部快取記憶體(例如,第3級(L3)快取記憶體或最後一級快取記憶體(LLC))(未展示)。暫存器檔案106另外包括於處理器102中,其可包括不同類型之暫存器以用於儲存不同類型之資料(例如,整數暫存器、浮點暫存器、狀態暫存器以及指令指標暫存器)。一些暫存器可為通用暫存器,而其他暫存器可能為處理器102之設計所特有的。
在一些實施例中,處理器102耦接至處理器匯流排110以在處理器102與系統100中之其他組件之間傳輸通訊信號,諸如位址、資料或控制信號。在一個實施例中,系統100使用例示性「集線器」系統架構,包括記憶體控制器集線器116及輸入輸出(I/O)控制器集線器130。記憶體控制器集線器116促進記憶體裝置與系統100之其他組件之間的通訊,而I/O控制器集線器(ICH)130提供經由本端I/O匯流排至I/O裝置的連接。在一個實施例中,記憶體控制器集線器116之邏輯整合於處理器內。
記憶體裝置120可為動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、相變記憶體裝置或具有適合之效能以充當程序記憶體的一些其他記憶體裝置。在一個實施例中,記憶體裝置120可作為系統100之系統記憶體操作,以儲存資料122及指令121以供一或多個處理器102執行應用程式或程序時使用。記憶體控制器集線器116亦與可選外部圖形處理器112耦接,該外部圖形處理器可與處理器102中之一或多個圖形處理器108通訊以執行圖形及媒體操作。
在一些實施例中,ICH 130使得周邊裝置能夠經由高速I/O匯流排連接至記憶體裝置120及處理器102。I/O周邊裝置包括(但不限於)音訊控制器146、韌體介面128、無線收發器126(例如,Wi-Fi、藍芽)、資料儲存裝置124(例如,硬碟機、快閃記憶體等)、及用於將舊版(例如,個人系統2(PS/2))裝置耦接至系統之舊版I/O控制器140。一或多個通用串列匯流排(USB)控制器142連接輸入裝置,諸如,鍵盤與滑鼠144組合。網路控制器134亦可耦接至ICH 130。在一些實施例中,高效能網路控制器(未圖示)耦接至處理器匯流排110。應瞭解,所展示系統100為例示性且非限制性的,此係因為亦可使用經以不同方式組配之其他類型的資料處理系統。舉例而言,I/O控制器集線器130可整合於一或多個處理器102內,或記憶體控制器集線器116及I/O控制器集線器130可整合於離散外部圖形處理器(諸如外部圖形處理器112)中。
圖5為具有一或多個處理器核心202A至202N、整合式記憶體控制器214及整合式圖形處理器208的處理器200之一實施例的方塊圖。與本文中之任何其他圖之元件具有相同參考編號(或名稱)的圖5之彼等元件可以類似於本文其他處所描述之任何方式(但不限於此等方式)操作或工作。處理器200可包括多至且包括額外核心202N(由虛線框表示)之額外核心。處理器核心202A至202N中之每一者包括一或多個內部快取記憶體單元204A至204N。在一些實施例中,各處理器核心亦可存取一或多個共用快取單元206。
內部快取記憶體單元204A至204N及共用快取記憶體單元206表示在處理器200內之快取記憶體階層。快取記憶體階層可包括在每一處理器核心內之至少一級指令及資料快取記憶體,及一或多級共用中間級快取記憶體,諸如,第2級(L2)、第3級(L3)、第4級(L4)或其他級之快取記憶體,其中在外部記憶體前之最高級快取記憶體經分類為LLC。在一些實施例中,快取一致性邏輯維持各種快取記憶體單元206與204A至204N之間的一致性。
在一些實施例中,處理器200亦可包括一或多個匯流排控制器單元216之一集合及系統代理核心210。一或多個匯流排控制器單元216管理周邊匯流排之集合,諸如一或多個周邊組件互連匯流排(例如,PCI、快速PCI)。系統代理核心210提供用於各種處理器組件之管理功能性。在一些實施例中,系統代理核心210包括一或多個整合式記憶體控制器214以管理對各種外部記憶體裝置(未圖示)之存取。
在一些實施例中,處理器核心202A至202N中之一或多者包括對同時多執行緒處理之支援。在此實施例中,系統代理核心210包括用於在多緒執行處理期間協調及操作核心202A至202N之組件。系統代理核心210可另外包括功率控制單元(PCU),其包括用以調節處理器核心202A至202N及圖形處理器208之功率狀態的邏輯及組件。
在一些實施例中,處理器200另外包括用以執行圖形處理操作之圖形處理器208。在一些實施例中,圖形處理器208與共用快取記憶體單元206之集合及系統代理核心210(包括一或多個整合式記憶體控制器214)耦接。在一些實施例中,顯示控制器211與圖形處理器208耦接以將圖形處理器輸出驅動至一或多個耦接的顯示器。在一些實施例中,顯示控制器211可為經由至少一個互連件與圖形處理器耦接之單獨模組,或可整合於圖形處理器208或系統代理核心210內。
在一些實施例中,基於環形之互連單元212用以耦接處理器200之內部組件。然而,可使用一替代性互連單元,諸如,點對點互連件、切換式互連件或其他技術,包括此項技術中熟知之技術。在一些實施例中,圖形處理器208經由I/O鏈路213與環形互連件212耦接。
例示性I/O鏈路213表示多種I/O互連件中的至少一者,包括促進各種處理器組件與高效能嵌入式記憶體模組218(諸如eDRAM模組)之間的通訊之封裝上I/O互連件。在一些實施例中,處理器核心202至202N中之每一者及圖形處理器208將嵌入式記憶體模組218用作共用最後一級快取記憶體。
在一些實施例中,處理器核心202A至202N為執行同一指令集架構之均質核心。在另一實施例中,就指令集架構(ISA)而言,處理器核心202A至202N為異質的,其中處理器核心202A至202N中之一或多者執行第一指令集,而其他核心中之至少一者執行第一指令集之一子集或一不同指令集。在一個實施例中,處理器核心202A至202N就微架構而言為異質的,其中具有相對更高功率消耗之一或多個核心與具有較低功率消耗之一或多個功率核心耦接。另外,處理器200可實施於一或多個晶片上或實施為具有所說明之組件(除其他組件以外)的SoC積體電路。
圖6為圖形處理器300之方塊圖,該圖形處理器可為離散圖形處理單元,或可為與多個處理核心整合之圖形處理器。在一些實施例中,圖形處理器經由記憶體映射I/O介面與圖形處理器上之暫存器及與放置於處理器記憶體中之命令通訊。在一些實施例中,圖形處理器300包括用以存取記憶體之記憶體介面314。記憶體介面314可為至區域記憶體、一或多個內部快取記憶體、一或多個共用外部快取記憶體及/或至系統記憶體之介面。
在一些實施例中,圖形處理器300亦包括用以將顯示輸出資料驅動至顯示裝置320之顯示控制器302。顯示控制器302包括用於顯示及組合多層視訊或使用者介面元件的一或多個覆疊平面之硬體。在一些實施例中,圖形處理器300包括視訊編碼解碼器引擎306以將媒體編碼為一或多個媒體編碼格式、自一或多個媒體編碼格式解碼或在一或多個媒體編碼之間轉碼,該一或多個媒體編碼格式包括(但不限於)諸如MPEG-2之動畫專業團體(MPEG)格式、諸如H.264/MPEG-4 AVC之進階視訊寫碼(AVC)格式以及美國電影與電視工程師學會(SMPTE)421M/VC-1,及諸如JPEG及運動JPEG(MJPEG)格式之聯合圖像專家群(JPEG)格式。
在一些實施例中,圖形處理器300包括區塊影像傳送(BLIT)引擎304以執行包括(例如)位元邊界區塊傳送之二維(2D)光柵處理器操作。然而,在一個實施例中,使用圖形處理引擎(GPE)310之一或多個組件來執行2D圖形操作。在一些實施例中,圖形處理引擎310為用於執行圖形操作(包括三維(3D)圖形操作及媒體操作)之計算引擎。
在一些實施例中,GPE 310包括用於執行3D操作(諸如,使用對3D基元形狀(例如,矩形、三角形等)起作用之處理功能再現三維影像及場景)之3D管線312。3D管線312包括可程式化及固定功能元件,其執行元件內之各種任務及/或將執行緒繁衍至3D/媒體子系統315。儘管3D管線312可用於執行媒體操作,但GPE 310之實施例亦包括專門用於執行諸如視訊後處理及影像增強之媒體操作之媒體管線316。
在一些實施例中,媒體管線316包括代替或代表視訊編碼解碼器引擎306執行一或多個專業化媒體操作(諸如,視訊解碼加速、視訊解交錯及視訊編碼加速)之固定功能或可程式化邏輯單元。在一些實施例中,媒體管線316另外包括執行緒繁衍單元以繁衍用於執行於3D/媒體子系統315上之執行緒。繁衍之執行緒在包括於3D/媒體子系統315中之一或多個圖形執行單元上執行媒體操作的計算。
在一些實施例中,3D/媒體子系統315包括用於執行由3D管線312及媒體管線316繁衍之執行緒之邏輯。在一個實施例中,管線將執行緒執行請求發送至3D/媒體子系統315,該3D/媒體子系統包括用於仲裁各種請求及將各種請求分派至可用執行緒執行資源之執行緒分派邏輯。執行資源包括用以處理3D及媒體執行緒之圖形執行單元陣列。在一些實施例中,3D/媒體子系統315包括用於執行緒指令及資料之一或多個內部快取記憶體。在一些實施例中,子系統亦包括共用記憶體(包括暫存器及可定址記憶體)以在執行緒之間共用資料及儲存輸出資料。
圖7
為根據一些實施例之圖形處理器之圖形處理引擎410的方塊圖。在一個實施例中,GPE 410為圖6中所示之GPE 310的版本。與本文中之任何其他圖之元件具有相同參考編號(或名稱)的圖7之彼等元件可以類似於本文其他處所描述方式之任何方式(但不限於此等方式)操作或工作。
在一些實施例中,GPE 410與命令串流器403耦接,該串流器將命令流提供至GPE 3D及媒體管線412、416。在一些實施例中,命令串流器403耦接至記憶體,記憶體可為系統記憶體或內部快取記憶體及共用快取記憶體中之一或多者。在一些實施例中,命令串流器403自記憶體接收命令且將命令發送至3D管線412及/或媒體管線416。命令為自環形緩衝器提取之指令,環形緩衝器儲存3D管線412及媒體管線416之命令。在一個實施例中,環形緩衝器可另外包括儲存多個命令之分批的分批命令緩衝器。3D管線412及媒體管線416藉由經由各別管線內之邏輯執行操作或藉由將一或多個執行緒分派至執行單元陣列414來處理命令。在一些實施例中,執行單元陣列414為可調式的,使得該陣列包括基於GPE 410之目標功率及效能等級之可變數目的執行單元。
在一些實施例中,取樣引擎430與記憶體(例如,快取記憶體或系統記憶體)及執行單元陣列414耦接。在一些實施例中,取樣引擎430提供執行單元陣列414之記憶體存取機構,其允許執行陣列414自記憶體讀取圖形及媒體資料。在一些實施例中,取樣引擎430包括用以執行媒體之專業影像取樣操作的邏輯。
在一些實施例中,取樣引擎430中之專業媒體取樣邏輯包括去雜訊/解交錯模組432、運動估計模組434及影像縮放及濾波模組436。在一些實施例中,去雜訊/解交錯模組432包括用以對經解碼視訊資料執行去雜訊或解交錯演算法中之一或多者的邏輯。解交錯邏輯將經交錯之視訊內容的交替欄位組合至單一視訊圖框內。去雜訊邏輯減少或移除來自視訊及影像資料之資料雜訊。在一些實施例中,去雜訊邏輯及解交錯邏輯為運動自適應的,且基於在視訊資料中偵測到之運動量使用空間或時間濾波。在一些實施例中,去雜訊/解交錯模組432包括專用運動偵測邏輯(例如,位於運動估計引擎434內)。
在一些實施例中,運動估計引擎434藉由對視訊資料執行諸如運動向量估計及預測之視訊加速功能來提供視訊操作之硬體加速。運動估計引擎判定描述連續視訊圖框之間的影像資料之變換的運動向量。在一些實施例中,圖形處理器媒體編碼解碼器使用視訊運動估計引擎434來對巨集區塊層級之視訊執行操作,該等操作可能在計算上過於密集而無法藉由通用處理器執行。在一些實施例中,運動估計引擎434大體上可用於圖形處理器組件,以輔助進行對視訊資料內之運動之方向或量值敏感或自適應的視訊解碼及處理功能。
在一些實施例中,影像縮放及濾波模組436執行影像處理操作以增強產生之影像及視訊的視覺品質。在一些實施例中,縮放及濾波模組436在將資料提供至執行單元陣列414之前在取樣操作期間處理影像及視訊資料。
在一些實施例中,GPE 410包括資料埠444,該資料埠提供供圖形子系統存取記憶體之額外機構。在一些實施例中,資料埠444促進操作的記憶體存取,該等操作包括再現目標寫入、常數緩衝器讀取、暫時記憶體空間讀取/寫入及媒體表面存取。在一些實施例中,資料埠444包括快取記憶體空間以快取對記憶體之存取。快取記憶體可為單一資料快取記憶體或分成用於經由資料埠存取記憶體之多個子系統的多個快取記憶體(例如,再現緩衝器快取記憶體、常數緩衝器快取記憶體等)。在一些實施例中,執行於執行單元陣列414中之執行單元上之執行緒藉由經由資料分配互連件(其耦接GPE 410之子系統中之每一者)交換訊息來與資料埠通訊。
圖8為圖形處理器500之另一實施例之方塊圖。與本文中之任何其他圖之元件具有相同參考編號(或名稱)的圖8之元件可以類似於本文其他處所描述方式之任何方式(但不限於此等方式)操作或工作。
在一些實施例中,圖形處理器500包括環形互連件502、管線前端504、媒體引擎537及圖形核心580A至580N。在一些實施例中,環形互連件502將圖形處理器耦接至其他處理單元,包括其他圖形處理器或一或多個通用處理器核心。在一些實施例中,圖形處理器為整合於多核心處理系統內之許多處理器中之一者。
在一些實施例中,圖形處理器500經由環形互連件502接收分批命令。傳入命令由管線前端504中之命令串流器503解譯。在一些實施例中,圖形處理器500包括可調式執行邏輯以經由圖形核心580A至580N執行3D幾何處理及媒體處理。對於3D幾何處理命令,命令串流器503將命令供應至幾何管線536。對於至少一些媒體處理命令,命令串流器503將命令供應至與媒體引擎537耦接之視訊前端534。在一些實施例中,媒體引擎537包括用於視訊及影像後處理之視訊品質引擎(VQE)530,及多格式編碼/解碼(MFX)533引擎以提供硬體加速之媒體資料編碼及解碼。在一些實施例中,幾何管線536及媒體引擎537各自產生用於由至少一個圖形核心580A提供之執行緒執行資源的執行緒。
在一些實施例中,圖形處理器500包括具有模組核心580A至580N(有時稱為核心圖塊)之可調式執行緒執行資源,各模組核心具有多個子核心550A至550N、560A至560N(有時稱為核心子圖塊)。在一些實施例中,圖形處理器500可具有任何數目之圖形核心580A至580N。在一些實施例中,圖形處理器500包括具有至少一第一子核心550A及第二核心子核心560A之圖形核心580A。在其他實施例中,圖形處理器為具有單一子核心(例如,550A)之低功率處理器。在一些實施例中,圖形處理器500包括多個圖形核心580A至580N,各圖形核心包括第一子核心550A至550N之集合及第二子核心560A至560N之集合。第一子核心550A至550N之集合中的各子核心包括執行單元552A至552N及媒體/紋理取樣器554A至554N之至少一第一集合。第二子核心560A至560N之集合中的各子核心包括執行單元562A至562N及取樣器564A至564N之至少一第二集合。在一些實施例中,各子核心550A至550N,560A至560N共用共用資源570A至570N之集合。在一些實施例中,共用資源包括共用快取記憶體及像素操作邏輯。其他共用資源亦可包括於圖形處理器之各種實施例中。
圖9說明包括GPE之一些實施例中採用的處理元件陣列之執行緒執行邏輯600。與本文中之任何其他圖之元件具有相同參考編號(或名稱)的圖9之元件可以類似於本文其他處所描述方式之任何方式(但不限於此等方式)操作或工作。
在一些實施例中,執行緒執行邏輯600包括像素繪圖602、執行緒分派程式604、指令快取記憶體606、包括多個執行單元608A至608N之可調式執行單元陣列、取樣器610、資料快取記憶體612及資料埠614。在一個實施例中,所包括之組件經由連結至組件中之每一者之互連網狀架構互連。在一些實施例中,執行緒執行邏輯600包括經由指令快取記憶體606、資料埠614、取樣器610及執行單元陣列608A至608N中之一或多者而至記憶體(諸如系統記憶體或快取記憶體)之一或多個連接。在一些實施例中,各執行單元(例如,608A)為能夠執行多個同時執行緒且針對各執行緒並行處理多個資料元素的個別向量處理器。在一些實施例中,執行單元陣列608A至608N包括任何數目個個別執行單元。
在一些實施例中,執行單元陣列608A至608N主要用以執行「繪圖」程式。在一些實施例中,陣列608A至608N中之執行單元執行包括對於許多標準3D圖形繪圖指令之原生支援的指令集,使得來自圖形程式庫(例如,Direct 3D及OpenGL)之繪圖程式按最小平移予以執行。執行單元支援頂點及幾何處理(例如,頂點程式、幾何程式、頂點繪圖)、像素處理(例如,像素繪圖、片段繪圖)及通用處理(例如,計算及媒體繪圖)。
執行單元陣列608A至608N中之各執行單元對資料元素陣列進行操作。資料元素之數目為「執行大小」,或用於指令之通道之數目。執行通道為針對指令內之資料元素存取、遮蔽及流量控制的執行之邏輯單元。通道之數目可能與用於特定圖形處理器之實體算術邏輯單元(ALU)或浮點單元(FPU)之數目無關。在一些實施例中,執行單元608A至608N支援整數及浮點資料類型。
執行單元指令集包括單指令多資料(SIMD)指令。可將各種資料元素作為封裝資料類型儲存於暫存器中,且執行單元將基於元素之資料大小處理各種元素。舉例而言,當對256位元寬向量操作時,將向量之256個位元儲存於暫存器中,且執行單元按四個單獨的64位元封裝資料元素(四倍字組(QW)大小資料元素)、八個單獨的32位元封裝資料元素(雙字組(DW)大小資料元素)、十六個單獨的16位元封裝資料元素(字組(W)大小資料元素)或三十二個單獨的8位元資料元素(位元組(B)大小資料元素)形式對該向量操作。然而,不同向量寬度及暫存器大小係可能的。
一或多個內部指令快取記憶體(例如,606)包括於執行緒執行邏輯600中以快取用於執行單元之執行緒指令。在一些實施例中,包括一或多個資料快取記憶體(例如,612)以在執行緒執行期間快取執行緒資料。在一些實施例中,包括取樣器610以提供針對3D操作之紋理取樣及針對媒體操作之媒體取樣。在一些實施例中,取樣器610包括特殊化紋理或媒體取樣功能性以在將經取樣之資料提供至執行單元之前在取樣處理程序期間處理紋理或媒體資料。
在執行期間,圖形及媒體管線經由執行緒繁衍及分派邏輯將執行緒起始請求發送至執行緒執行邏輯600。在一些實施例中,執行緒執行邏輯600包括一區域執行緒分派程式604,其仲裁來自圖形及媒體管線之執行緒起始請求,且在一或多個執行單元608A至608N上實例化所請求之執行緒。舉例而言,幾何管線(例如,圖8之536)將頂點處理、棋盤形佈置或幾何處理執行緒分派至執行緒執行邏輯600(圖9)。在一些實施例中,執行緒分派程式604亦可處理來自執行繪圖程式之執行階段執行緒繁衍請求。
在幾何物件群已進行處理且經光柵化至像素資料中後,調用像素繪圖602以進一步計算輸出資訊且使得結果寫入至輸出表面(例如,色彩緩衝器、深度緩衝器、模板緩衝器等)。在一些實施例中,像素繪圖602計算待跨經光柵化物件內插之各種頂點屬性之值。在一些實施例中,像素繪圖602接著執行應用程式設計介面(API)供應之像素繪圖程式。為了執行像素繪圖程式,像素繪圖602經由執行緒分派程式604將執行緒分派至執行單元(例如,608A)。在一些實施例中,像素繪圖602使用取樣器610中之紋理取樣邏輯存取儲存於記憶體中之紋理圖中的紋理資料。對紋理資料及輸入幾何資料之算術運算計算每一幾何片段之像素色彩資料,或捨棄一或多個像素以免進一步處理。
在一些實施例中,資料埠614提供一記憶體存取機構,以供執行緒執行邏輯600將經處理之資料輸出至記憶體以用於在圖形處理器輸出管線上處理。在一些實施例中,資料埠614包括或耦接至一或多個快取記憶體(例如,資料快取記憶體612)以快取用於經由資料埠進行記憶體存取之資料。
圖10為說明根據一些實施例之圖形處理器指令格式700之方塊圖。在一或多個實施例中,圖形處理器執行單元支援具有呈多個格式之指令的指令集。實線框說明通常包括於執行單元指令中之組件,而虛線包括可選或僅包括於該等指令之子集中的組件。在一些實施例中,描述及說明之指令格式700為巨集指令,因為其為被供應至執行單元之指令,與處理指令時由指令解碼產生之微操作相反。
在一些實施例中,圖形處理器執行單元原生支援呈128位元格式710之指令。64位元緊密指令格式730基於所選指令、指令選項及運算元之數目而可供用於一些指令。原生128位元格式710提供對所有指令選項之存取,而一些選項及操作在64位元格式730中受到限制。在64位元格式730中可用之原生指令按實施例變化。在一些實施例中,使用索引欄位713中之索引值集合來部分壓縮指令。執行單元硬體基於索引值參考壓縮表集合,且使用壓縮表輸出來重新建構呈128位元格式710之原生指令。
對於各格式,指令作業碼712定義執行單元將執行之操作。執行單元跨各運算元之多個資料元素並行地執行各指令。舉例而言,回應於添加指令,執行單元跨表示紋理元素或像元之各色彩通道執行同時添加操作。按預設,執行單元跨運算元之所有資料通道執行每一指令。在一些實施例中,指令控制欄位714使得能夠控制某些執行選項,諸如通道選擇(例如,預測)及資料通道次序(例如,拌和)。對於128位元指令710,exec-size欄位716限制將並行執行的資料通道之數目。在一些實施例中,exec-size欄位716不可用於64位元緊密型指令格式730。
一些執行單元指令具有多達三個運算元,包括兩個源運算元src0 722、src1 722及一個目的地718。在一些實施例中,執行單元支援雙目的地指令,其中暗示目的地中之一者。資料操縱指令可具有第三源運算元(例如,SRC2 724),其中指令作業碼712判定源運算元之數目。指令之最後源運算元可為與指令一起傳遞的立即(例如,硬寫碼)值。
在一些實施例中,128位元指令格式710包括指定(例如)使用直接暫存器定址模式或間接暫存器定址模式之存取/定址模式資訊726。當使用直接暫存器定址模式時,一或多個運算元之暫存器位址直接由指令710中之位元提供。
在一些實施例中,128位元指令格式710包括存取/定址模式欄位726,其指定指令之定址模式及/或存取模式。在一個實施例中,存取模式用以界定指令之資料存取對準。一些實施例支援存取模式,包括16位元組對準存取模式及1位元組對準存取模式,其中存取模式之位元組對準判定指令運算元之存取對準。舉例而言,當在第一模式中時,指令710可將位元組對準定址用於源及目的地運算元,且當在第二模式中時,指令710可將16位元組對準定址用於所有源及目的地運算元。
在一個實施例中,存取/定址模式欄位726之定址模式部分判定指令將使用直接定址抑或間接定址。當使用直接暫存器定址模式時,指令710中之位元直接提供一或多個運算元之暫存器位址。當使用間接暫存器定址模式時,可基於指令中之位址暫存器值及位址立即欄位而計算一或多個運算元之暫存器位址。
在一些實施例中,基於作業碼712位元欄位將指令分群,以簡化作業碼解碼740。對於8位元作業碼,位元4、5及6允許執行單元判定作業碼之類型。所展示之精密作業碼分群僅僅為實例。在一些實施例中,移動及邏輯作業碼群組742包括資料移動及邏輯指令(例如,移動(mov)、比較(cmp))。在一些實施例中,移動及邏輯群組742共用五個最高有效位元(MSB),其中移動(mov)指令呈0000xxxxb之形式且邏輯指令呈0001xxxxb之形式。流量控制指令群組744(例如,呼叫、跳轉(jmp))包括呈0010xxxxb(例如,0x20)之形式的指令。雜項指令群組746包括指令之混合,包括呈0011xxxxb(例如,0x30)之形式的同步指令(例如,等待、發送)。平行數學指令群組748包括呈0100xxxxb(例如,0x40)之形式的逐個分量算術指令(例如,加、乘(mul))。平行數學群組748跨資料通道並行執行算術運算。向量數學群組750包括呈0101xxxxb(例如,0x50)之形式的算術指令(例如,dp4)。向量數學群組對向量運算元執行諸如點積計算之算術計算。
圖11為圖形處理器800之另一實施例之方塊圖。與本文中之任何其他圖之元件具有相同參考編號(或名稱)的圖11之元件可以類似於本文其他處所描述方式之任何方式(但不限於此等方式)操作或工作。
在一些實施例中,圖形處理器800包括圖形管線820、媒體管線830、顯示引擎840、執行緒執行邏輯850以及再現輸出管線870。在一些實施例中,圖形處理器800為包括一或多個通用處理核心之多核心處理系統內的圖形處理器。圖形處理器由至一或多個控制暫存器(未圖示)之暫存器寫入控制,或藉由經由環形互連件802發佈至圖形處理器800之命令來控制。在一些實施例中,環形互連件802將圖形處理器800耦接至其他處理組件,諸如其他圖形處理器或通用處理器。來自環形互連件802之命令由命令串流器803解譯,該命令串流器將指令供應至圖形管線820或媒體管線830之個別組件。
在一些實施例中,命令串流器803指導頂點提取器805之操作,該頂點提取器自記憶體讀取頂點資料且執行由命令串流器803提供之頂點處理命令。在一些實施例中,頂點提取器805將頂點資料提供至頂點繪圖807,頂點繪圖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及相關聯快取記憶體851、紋理及媒體取樣器854以及紋理/取樣器快取記憶體858經由資料埠856互連以執行記憶體存取及與處理器之再現輸出管線組件通訊。在一些實施例中,取樣器854、快取記憶體851、858及執行單元852A、852B各自具有單獨的記憶體存取路徑。
在一些實施例中,再現輸出管線870含有將基於頂點之物件轉換成相關聯之基於像素之表示的光柵處理器及深度測試組件873。在一些實施例中,光柵處理器邏輯包括用以執行固定功能三角形及線光柵化之開窗程式/遮蔽器單元。相關聯再現快取記憶體878及深度快取記憶體879亦在一些實施例中可用。像素操作組件877對資料執行基於像素之操作,但在一些情況下,與2D操作相關聯之像素操作(例如,藉由摻合進行之位元區塊影像傳送)由2D引擎841執行,或在顯示時由顯示控制器843用覆疊顯示平面取代。在一些實施例中,共用之L3快取記憶體875可用於所有圖形組件,從而允許在不使用主系統記憶體之情況下共用資料。
在一些實施例中,圖形處理器媒體管線830包括媒體引擎837及視訊前端834。在一些實施例中,視訊前端834自命令串流器803接收管線命令。在一些實施例中,媒體管線830包括單獨命令串流器。在一些實施例中,視訊前端834在將命令發送至媒體引擎837之前處理媒體命令。在一些實施例中,媒體引擎337包括執行緒繁衍功能性以繁衍經由執行緒分派程式831分派至執行緒執行邏輯850之執行緒。
在一些實施例中,圖形處理器800包括顯示引擎840。在一些實施例中,顯示引擎840在處理器800之外部且經由環形互連件802或一些其他互連件匯流排或網狀架構與圖形處理器耦接。在一些實施例中,顯示引擎840包括2D引擎841及顯示控制器843。在一些實施例中,顯示引擎840含有能夠獨立於3D管線操作之專用邏輯。在一些實施例中,顯示控制器843與顯示裝置(圖中未展示)耦接,該顯示裝置可為系統整合顯示裝置(如位於膝上型計算機中)或經由顯示裝置連接器附接之外部顯示裝置。
在一些實施例中,圖形管線820及媒體管線830可經組配以基於多個圖形及媒體程式化介面執行操作,且並非特定於任一個應用程式設計介面(API)。在一些實施例中,用於圖形處理器之驅動器軟體將特定於特定圖形或媒體程式庫之API呼叫轉譯成可由圖形處理器處理之命令。在一些實施例中,對來自科納斯集團(Khronos Group)之開放圖形程式庫(OpenGL)及開放計算語言(OpenCL)或來自微軟公司之Direct3D程式庫提供支援,或可將支援提供至OpenGL及D3D兩者。亦可對開放源電腦視覺程式庫(OpenCV)提供支援。若可進行自未來API之管線至圖形處理器之管線的映射,則亦將支援具有相容3D管線之未來API。
圖12A
為說明根據一些實施例之圖形處理器命令格式900之方塊圖。圖12B為說明根據實施例之圖形處理器命令序列910之方塊圖。圖12A中之實線框說明大體上包括於圖形命令中之組件,而虛線包括可選或僅包括於圖形命令之子集中的組件。圖12A之例示性圖形處理器命令格式900包括用以識別命令之目標用戶端902、命令操作碼(作業碼)904以及用於命令之相關資料906的資料欄位。子作業碼905及命令大小908亦包括於一些命令中。
在一些實施例中,用戶端902指定處理命令資料之圖形裝置的用戶端單元。在一些實施例中,圖形處理器命令剖析器檢查每一命令之用戶端欄位以調節命令之進一步處理及將命令資料路由至適當用戶端單元。在一些實施例中,圖形處理器用戶端單元包括記憶體介面單元、再現單元、2D單元、3D單元以及媒體單元。每一用戶端單元具有處理命令之對應處理管線。一旦用戶端單元接收到命令,用戶端單元便讀取作業碼904且在存在子作業碼905之情況下讀取子作業碼905以判定待執行之操作。用戶端單元使用資料欄位906中之資訊執行命令。對於一些命令,期望顯式命令大小908以指定命令之大小。在一些實施例中,命令剖析器基於命令作業碼自動判定命令之至少一些的大小。在一些實施例中,命令經由雙字之倍數而對準。
圖12B中之流程圖展示例示性圖形處理器命令序列910。在一些實施例中,具有圖形處理器之實施例的資料處理系統之軟體或韌體使用所展示之命令序列之版本來設定、執行及終止圖形操作集合。由於實施例不限於此等特定命令或限於此命令序列,僅出於實例之目的展示及描述樣本命令序列。此外,可按命令序列中之命令之批次發出命令,使得圖形處理器將以至少部分並行方式處理命令序列。
在一些實施例中,圖形處理器命令序列910可以管線清空命令912開始,以使任何作用中圖形管線完成該管線之當前未決之命令。在一些實施例中,3D管線922及媒體管線924不同時操作。執行管線清空以使得作用中圖形管線完成任何未決之命令。回應於管線清空,圖形處理器之命令剖析器將暫停命令處理,直至作用中繪圖引擎完成未決之操作且相關讀取快取記憶體為無效的為止。視情況,可將再現快取記憶體中之標記為「已變更」之任何資料清空至記憶體。在一些實施例中,管線清空命令912可用於管線同步或在將圖形處理器置於低功率狀態之前使用。
在一些實施例中,在命令序列需要圖形處理器在管線之間明確切換時使用管線選擇命令913。在一些實施例中,在發佈管線命令之前在執行上下文內僅需要管線選擇命令913一次,除非上下文將發佈用於兩個管線之命令。在一些實施例中,在經由管線選擇命令913的管線切換之前立即需要管線清空命令912。
在一些實施例中,管線控制命令914組配圖形管線以用於操作,且用於將3D管線922及媒體管線924程式化。在一些實施例中,管線控制命令914組配作用中管線之管線狀態。在一實施例中,管線控制命令914用於管線同步,且在處理一批命令之前自作用中管線內之一或多個快取記憶體清除資料。
在一些實施例中,回覆緩衝器狀態命令916用於組配各別管線之回覆緩衝器之集合以寫入資料。一些管線操作需要分配、選擇或組配一或多個回覆緩衝器,在處理期間操作將中間資料寫入至該一或多個回覆緩衝器中。在一些實施例中,圖形處理器亦使用一或多個回覆緩衝器來儲存輸出資料及執行跨執行緒通訊。在一些實施例中,回覆緩衝器狀態916包括選擇用於管線操作之集合的回覆緩衝器之大小及數目。
命令序列中之剩餘命令基於用於操作之作用中管線而不同。基於管線判定920,針對3D管線922以3D管線狀態930開始或針對媒體管線924以媒體管線狀態940開始定製命令序列。
用於3D管線狀態930之命令包括用於以下各者之3D狀態設定命令:頂點緩衝器狀態、頂點元素狀態、恆定色彩狀態、深度緩衝器狀態,及欲在處理3D基元命令之前組配之其他狀態變數。至少部分基於使用中之特定3D API判定此等命令之值。在一些實施例中,若將不使用某些管線元件,則3D管線狀態930命令亦能夠選擇性地停用或繞過彼等元件。
在一些實施例中,3D基元932命令用於提交待由3D管線處理之3D基元。經由3D基元932命令傳遞至圖形處理器之命令及相關聯之參數經轉遞至圖形管線中之頂點提取函數。頂點提取函數使用3D基元932命令資料產生頂點資料結構。頂點資料結構儲存於一或多個回覆緩衝器中。在一些實施例中,3D基元932命令用於經由頂點繪圖對3D基元執行頂點操作。為處理頂點繪圖,3D管線922將繪圖執行緒分派至圖形處理器執行單元。
在一些實施例中,經由執行934命令或事件而觸發3D管線922。在一些實施例中,暫存器寫入觸發命令執行。在一些實施例中,執行經由命令序列中之「移至」或「起動」命令而觸發。在一個實施例中,命令執行使用管線同步命令來觸發以經由圖形管線清空命令序列。3D管線將執行用於3D基元之幾何處理。一旦操作完成,便使所得幾何物件光柵化且像素引擎將所得像素著色。對於彼等操作,亦可包括用以控制像素著色及像素後端操作之額外命令。
在一些實施例中,圖形處理器命令序列910在執行媒體操作時遵循媒體管線924路徑。大體而言,媒體管線924之特定程式化用途及方式取決於待執行之媒體或計算操作。可在媒體解碼期間將特定媒體解碼操作卸載至媒體管線。在一些實施例中,亦可繞過媒體管線,且可使用由一或多個通用處理核心提供之資源整體或部分執行媒體解碼。在一個實施例中,媒體管線亦包括用於通用圖形處理器單元(GPGPU)操作之元件,其中圖形處理器用於使用與圖形基元之再現不明確相關之計算繪圖程式來執行SIMD向量操作。
在一些實施例中,媒體管線924以與3D管線922類似之方式而經組配。將媒體管線狀態命令940之集合在命令佇列中分派或置於在媒體物件命令942之前。在一些實施例中,媒體管線狀態命令940包括用以對將用於處理媒體物件之媒體管線元件進行組配的資料。此情形包括組配媒體管線內之視訊解碼及視訊編碼邏輯之資料,諸如編碼或解碼格式。在一些實施例中,媒體管線狀態命令940亦支援使用指向含有一批狀態設定之「間接」狀態元素之一或多個指標。
在一些實施例中,媒體物件命令942供應指向供媒體管線處理的媒體物件的指標。媒體物件包括含有待處理視訊資料之記憶體緩衝器。在一些實施例中,所有媒體管線狀態必須在發佈媒體物件命令942之前有效。一旦管線狀態經組配且媒體物件命令942經排入佇列,則經由執行命令944或等效執行事件(例如,暫存器寫入)觸發媒體管線924。來自媒體管線924之輸出可接著藉由由3D管線922或媒體管線924提供之操作進行後處理。在一些實施例中,以與媒體操作類似之方式組配及執行GPGPU操作。
圖13說明根據一些實施例之用於資料處理系統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作業系統。當Direct3D API在使用中時,作業系統1020使用前端繪圖編譯器1024將HLSL之任何繪圖指令1012編譯成較低級繪圖語言。編譯可為即時(JIT)編譯或應用程式可執行繪圖預編譯。在一些實施例中,在3D圖形應用程式1010之編譯期間將高級繪圖編譯成低級繪圖。
在一些實施例中,使用者模式圖形驅動器1026含有後端繪圖編譯器1027以將繪圖指令1012轉化成硬體特定表示。當OpenGL API在使用中時,將GLSL高階語言之繪圖指令1012傳遞至使用者模式圖形驅動器1026以供編譯。在一些實施例中,使用者模式圖形驅動器1026使用作業系統核心模式功能1028以與核心模式圖形驅動器1029通訊。在一些實施例中,核心模式圖形驅動器1029與圖形處理器1032通訊以分派命令及指令。
至少一個實施例之一或多個態樣可由儲存於機器可讀媒體上之代表性程式碼實施,該程式碼表示及/或界定諸如處理器之積體電路內的邏輯。舉例而言,機器可讀媒體可包括表示處理器內之各種邏輯的指令。當由機器讀取時,指令可使得機器製造邏輯以執行本文中所描述之技術。此等表示(稱為「IP核心」)為可作為描述積體電路之結構的硬體模型儲存於有形、機器可讀媒體上之積體電路的可再用邏輯單元。可將硬體模型供應至各種消費者或製造設施,其將硬體模型載入至製造製造積體電路之機器上。可製造積體電路,使得電路執行與本文中所描述之實施例中的任一者相關聯地描述之操作。
圖14為說明根據實施例之可用以製造積體電路以執行操作之IP核心開發系統1100的方塊圖。IP核心開發系統1100可用以產生可併入於較大設計中或用以構造完整積體電路(例如,SOC積體電路)之模組化可再用設計。設計設施1130可以高級程式設計語言(例如,C/C++)產生IP核心設計之軟體模擬1110。軟體模擬1110可用以使用模擬模型1112設計、測試及驗證IP核心的行為。模擬模型1112可包括功能、行為及/或時序模擬。接著可自模擬模型1112產生或合成暫存器轉移層次(RTL)設計。RTL設計1115為模型化硬體暫存器(包括使用模型化數位信號所執行之相關聯邏輯)之間的數位信號之流動的積體電路之行為的抽象化。除了RTL設計1115以外,亦可產生、設計或合成邏輯層級或電晶體層級之較低層級設計。因此,初始設計及模擬之特定細節可變化。
RTL設計1115或等效者可進一步由設計設施合成至硬體模型1120中,硬體模型1120可呈硬體描述語言(HDL),或實體設計資料之一些其他表示。可進一步模擬或測試HDL以驗證IP核心設計。IP核心設計可使用非依電性記憶體1140(例如,硬碟、快閃記憶體或任一非依電性儲存媒體)儲存以用於遞送至第3方製造設施1165。替代地,可經由有線連接1150或無線連接1160(例如,經由網際網路)傳輸IP核心設計。製造設施1165接著可製造至少部分基於IP核心設計之積體電路。所製造積體電路可經組配以根據本文中所描述之至少一個實施例而執行操作。
圖15為說明根據實施例之可使用一或多個IP核心製造的例示性系統單晶片積體電路1200之方塊圖。例示性積體電路包括一或多個應用程式處理器1205(例如,CPU)、至少一個圖形處理器1210,且可另外包括影像處理器1215及/或視訊處理器1220,其中任一者可為來自相同或多個不同設計設施的模組式IP核心。積體電路包括周邊或匯流排邏輯,包括USB控制器1225、UART控制器1230、SPI/SDIO控制器1235及I2
S/I2
C控制器1240。另外,積體電路可包括耦接至高清晰度多媒體介面(HDMI)控制器1250及行動工業處理器介面(MIPI)顯示介面1255中之一或多者的顯示裝置1245。儲存器可由包括快閃記憶體及快閃記憶體控制器之快閃記憶體子系統1260提供。記憶體介面可經由記憶體控制器1265提供以用於存取SDRAM或SRAM記憶體裝置。一些積體電路另外包括嵌入式安全性引擎1270。
另外,其他邏輯及電路可包括於積體電路1200之處理器中,包括額外圖形處理器/核心、周邊介面控制器或通用處理器核心。 以下條款及/或實例係關於另外實施例:
一個實例實施例可為包含將一個圖形管線級中之多個頂點、補塊、基元或三角形中的一者封裝至一個執行單元硬體執行緒中的方法。方法亦可包括修改管線域繪圖酬載以處置多個補塊。方法亦可包括將來自不同域繪圖補塊之域點資料封裝至一個單指令多資料(SIMD)執行緒中(其中每一域點佔據一個SIMD通路),及將每一域點的屬性儲存在可由程式化執行緒定址的暫存器空間中之其自身分割區中。方法亦可包括在基元物件實例計數大於一時修改管線幾何繪圖酬載以處置多個基元。方法亦可包括將基元統一回覆緩衝器控制代碼複製至含有該基元之實例ID的通路中。方法亦可包括修改管線像素繪圖酬載以處置多個三角形。方法亦可包括使用質心參數用於屬性內插。方法亦可包括遞送酬載至像素繪圖,該酬載包括每個像素或每個樣本之質心參數以及每一屬性之每個通道的頂點屬性差量之集合。方法亦可包括使得來自多個三角形之屬性差量能夠包括於同一像素繪圖酬載中。方法亦可包括對於每個執行緒32通道或更高之SIMD寬度進行封裝。
另一實例實施例可為儲存用以執行一包含將一個圖形管線級中之多個頂點、補塊、基元或三角形中的一者封裝至一個執行單元硬體執行緒中的序列的指令的一或多個非暫時性電腦可讀媒體。媒體可包括進一步儲存用以執行一包括修改管線域繪圖酬載以處置多個補塊的序列的指令。媒體可進一步包括儲存用以執行一包括將來自不同域繪圖補塊之域點資料封裝至一個單指令多資料(SIMD)執行緒中(其中每一域點佔據一個SIMD通路)及將每一域點之屬性儲存在可由程式化執行緒定址的暫存器空間中之其自身分割區中的序列的指令。媒體可進一步包括儲存用以執行一包括當基元物件實例計數大於一時修改管線幾何繪圖酬載以處置多個基元的序列的指令。媒體可進一步包括儲存用以執行一包括將基元統一回覆緩衝器控制代碼複製至含有該基元之實例ID的通路中之序列的指令。媒體可包括進一步儲存用以執行一包括修改管線像素繪圖酬載以處置多個三角形的序列的指令。媒體可進一步包括儲存用以執行一包括使用質心參數用於屬性內插的序列的指令。媒體可進一步包括儲存用以執行一包括遞送酬載至像素繪圖的序列的指令,該酬載包括每個像素或每個樣本之質心參數以及每一屬性之每個通道的頂點屬性差量之集合。媒體可進一步包括儲存用以執行一包括使得來自多個三角形之屬性差量能夠包括於同一像素繪圖酬載中的序列的指令。媒體可進一步包括儲存用以執行一包括對於每個執行緒32通道或更高之SIMD寬度進行封裝的序列的指令。
在另一實例實施例中,可包括一包含處理器及耦接至該處理器之記憶體的設備,該處理器用以將一個圖形管線級中之多個頂點、補塊、基元或三角形中的一者填充至一個執行單元硬體執行緒中。設備可包括用以修改管線域繪圖酬載以處置多個補塊的該處理器。設備可包括用以將來自不同域繪圖補塊之域點資料封裝至一個單指令多資料(SIMD)執行緒中(其中每一域點佔據一個SIMD通路),及用以將每一域點的屬性儲存在可由程式化執行緒定址的暫存器空間中之其自身分割區中的該處理器。設備可包括用以在基元物件實例計數大於一時修改管線幾何繪圖酬載以處置多個基元的該處理器。設備可包括用以將基元統一回覆緩衝器控制代碼複製至含有該基元之實例ID的通路中的該處理器。設備可包括用以修改管線像素繪圖酬載以處置多個三角形的該處理器。設備可包括用以使用質心參數用於屬性內插的該處理器。設備可包括用以遞送酬載至像素繪圖的該處理器,該酬載包括每個像素或每個樣本之質心參數以及每一屬性之每個通道的頂點屬性差量之集合。設備可包括用以使得來自多個三角形之屬性差量能夠包括於同一像素繪圖酬載中的該處理器。設備可包括用以對於每個執行緒32通道或更高之SIMD寬度進行封裝的該處理器。
本文中所描述之圖形處理技術可實施於各種硬體架構中。舉例而言,圖形功能性可整合於晶片組內。替代地,可使用離散圖形處理器。作為又一實施例,可由通用處理器(包括多核心處理器)實施圖形功能。
貫穿本說明書對「一個實施例」或「一實施例」之提及意謂結合該實施例所描述之一特定特徵、結構或特性包括在涵蓋於本發明內之至少一個實施中。因此,片語「一個實施例」或「在一實施例中」之出現未必指同一實施例。此外,可以不同於說明之特定實施例的其他合適形式來實行特定特徵、結構或特性,且所有此等形式可涵蓋於本申請案之申請專利範圍內。
雖然已描述了有限數目個實施例,但熟習此項技術者應瞭解其眾多修改及變化。希望隨附申請專利範圍涵蓋如在本發明之真實精神及範圍內的所有此等修改及變化。
10、820‧‧‧圖形管線
12‧‧‧命令串流器級
14‧‧‧頂點提取
16‧‧‧頂點繪圖級
18、811‧‧‧殼繪圖(HS)
20、817‧‧‧域繪圖(DS)
22、819‧‧‧幾何繪圖(GS)
24、602‧‧‧像素繪圖(PS)
26、829‧‧‧剪輯器
28‧‧‧帶/扇形(SF)
30‧‧‧開窗程式遮蔽單元(WM)
32‧‧‧統一回覆緩衝器(URB)
34、604、831‧‧‧執行緒分派程式
36、552A、552N、562A、562N、608A、608B、608C、608D、608N-1、608N、852A、852B‧‧‧執行單元
40、‧‧‧序列
42、44、46‧‧‧區塊
100‧‧‧系統
102、200、1030‧‧‧處理器
104‧‧‧快取記憶體
106‧‧‧暫存器檔案
107、202A、202N‧‧‧處理器核心
108、300、500、800、1032、1210‧‧‧圖形處理器
109‧‧‧指令集
110‧‧‧處理器匯流排
112‧‧‧外部圖形處理器
116‧‧‧記憶體控制器集線器
120‧‧‧記憶體裝置
121‧‧‧指令
122、906‧‧‧資料
124‧‧‧資料儲存裝置
126‧‧‧無線收發器
128‧‧‧韌體介面
130‧‧‧I/O控制器集線器(ICH)
134‧‧‧網路控制器
140‧‧‧舊版I/O控制器
142‧‧‧通用串列匯流排(USB)控制器
144‧‧‧鍵盤/滑鼠
146‧‧‧音訊控制器
204A、204N‧‧‧內部快取記憶體單元
206‧‧‧共用快取記憶體單元
208‧‧‧整合式圖形處理器
210‧‧‧系統代理核心
211、302、843‧‧‧顯示控制器
212、502、802‧‧‧環形互連件
213‧‧‧I/O鏈路
214‧‧‧整合式記憶體控制器
216‧‧‧匯流排控制器單元
218‧‧‧嵌入式記憶體模組
304‧‧‧區塊影像傳送(BLIT)引擎
306‧‧‧視訊編碼解碼器引擎
310‧‧‧圖形處理引擎(GPE)
312、412、922‧‧‧3D管線
314‧‧‧記憶體介面
315‧‧‧3D/媒體子系統
316、416、830、924‧‧‧媒體管線
320、1245‧‧‧顯示裝置
403、503、803‧‧‧命令串流器
410‧‧‧圖形處理引擎
414‧‧‧執行單元陣列
430‧‧‧取樣引擎
432‧‧‧去雜訊/解交錯模組
434‧‧‧運動估計模組
436‧‧‧影像縮放及濾波模組
444、614、856‧‧‧資料埠
504‧‧‧管線前端
530‧‧‧視訊品質引擎(VQE)
533‧‧‧多格式編碼/解碼(MFX)
534、834‧‧‧視訊前端
536‧‧‧幾何管線
537、837‧‧‧媒體引擎
550A、550N、560A、560N‧‧‧子核心
554A、554N‧‧‧媒體/紋理取樣器
564A、564N、610‧‧‧取樣器
570A、570N‧‧‧共用資源
580A、580N‧‧‧圖形核心
600、850‧‧‧執行緒執行邏輯
606‧‧‧指令快取記憶體
612‧‧‧資料快取記憶體
700‧‧‧圖形處理器指令格式
710‧‧‧128位元格式/128位元指令格式/指令
712‧‧‧指令作業碼
713‧‧‧索引欄位
714‧‧‧指令控制欄位
716‧‧‧exec-size欄位
718‧‧‧目的地
720、722、724‧‧‧源運算元
726‧‧‧存取/定址模式資訊/存取/定址模式欄位
730‧‧‧64位元緊密指令格式
740‧‧‧作業碼解碼
742‧‧‧移動及邏輯群組/移動及邏輯作業碼群組
744‧‧‧流量控制指令群組
746‧‧‧雜項指令群組
748‧‧‧平行數學指令群組/平行數學群組
750‧‧‧向量數學群組
805、807‧‧‧頂點提取器
813‧‧‧棋盤形佈置器/棋盤形佈置組件
823‧‧‧串流輸出單元
840‧‧‧顯示引擎
841‧‧‧2D引擎
851‧‧‧L1快取記憶體
854‧‧‧紋理及媒體取樣器
858‧‧‧紋理/取樣器快取記憶體
870‧‧‧再現輸出管線
873‧‧‧光柵處理器及深度測試組件
875‧‧‧L3快取記憶體
877‧‧‧像素操作組件
878‧‧‧再現快取記憶體
879‧‧‧深度快取記憶體
900‧‧‧圖形處理器命令格式
902‧‧‧用戶端
904‧‧‧操作碼
905‧‧‧子作業碼
908‧‧‧命令大小
910‧‧‧圖形處理器命令序列
912‧‧‧管線清空命令
913‧‧‧管線選擇命令
914‧‧‧管線控制命令
916‧‧‧回覆緩衝器狀態命令
920‧‧‧管線判定
930‧‧‧3D管線狀態
932‧‧‧3D基元
934‧‧‧執行
940‧‧‧媒體管線狀態
942‧‧‧媒體物件命令
944‧‧‧執行命令
1000‧‧‧資料處理系統
1010‧‧‧3D圖形應用程式
1012‧‧‧繪圖指令
1014‧‧‧可執行指令
1016‧‧‧圖形物件
1020‧‧‧作業系統
1022‧‧‧圖形API
1024、1027‧‧‧繪圖編譯器
1026‧‧‧使用者模式圖形驅動器
1028‧‧‧作業系統核心模式功能
1029‧‧‧核心模式圖形驅動器
1034‧‧‧通用處理器核心
1050‧‧‧系統記憶體
1100‧‧‧IP核心開發系統
1110‧‧‧軟體模擬
1112‧‧‧模擬模型
1115‧‧‧RTL設計
1120‧‧‧硬體模型
1130‧‧‧設計設施
1140‧‧‧非依電性記憶體
1150‧‧‧有線連接
1160‧‧‧無線連接
1165‧‧‧製造設施
1200‧‧‧系統單晶片積體電路
1205‧‧‧應用程式處理器
1215‧‧‧影像處理器
1220‧‧‧視訊處理器
1225‧‧‧USB控制器
1230‧‧‧UART控制器
1235‧‧‧SPI/SDIO控制器
1240‧‧‧I2 S/I2 C控制器
1250‧‧‧高清晰度多媒體介面(HDMI)控制器
1255‧‧‧行動行業處理器介面(MIPI)顯示介面
1260‧‧‧快閃記憶體子系統
1265‧‧‧記憶體控制器
1270‧‧‧嵌入式安全性引擎
12‧‧‧命令串流器級
14‧‧‧頂點提取
16‧‧‧頂點繪圖級
18、811‧‧‧殼繪圖(HS)
20、817‧‧‧域繪圖(DS)
22、819‧‧‧幾何繪圖(GS)
24、602‧‧‧像素繪圖(PS)
26、829‧‧‧剪輯器
28‧‧‧帶/扇形(SF)
30‧‧‧開窗程式遮蔽單元(WM)
32‧‧‧統一回覆緩衝器(URB)
34、604、831‧‧‧執行緒分派程式
36、552A、552N、562A、562N、608A、608B、608C、608D、608N-1、608N、852A、852B‧‧‧執行單元
40、‧‧‧序列
42、44、46‧‧‧區塊
100‧‧‧系統
102、200、1030‧‧‧處理器
104‧‧‧快取記憶體
106‧‧‧暫存器檔案
107、202A、202N‧‧‧處理器核心
108、300、500、800、1032、1210‧‧‧圖形處理器
109‧‧‧指令集
110‧‧‧處理器匯流排
112‧‧‧外部圖形處理器
116‧‧‧記憶體控制器集線器
120‧‧‧記憶體裝置
121‧‧‧指令
122、906‧‧‧資料
124‧‧‧資料儲存裝置
126‧‧‧無線收發器
128‧‧‧韌體介面
130‧‧‧I/O控制器集線器(ICH)
134‧‧‧網路控制器
140‧‧‧舊版I/O控制器
142‧‧‧通用串列匯流排(USB)控制器
144‧‧‧鍵盤/滑鼠
146‧‧‧音訊控制器
204A、204N‧‧‧內部快取記憶體單元
206‧‧‧共用快取記憶體單元
208‧‧‧整合式圖形處理器
210‧‧‧系統代理核心
211、302、843‧‧‧顯示控制器
212、502、802‧‧‧環形互連件
213‧‧‧I/O鏈路
214‧‧‧整合式記憶體控制器
216‧‧‧匯流排控制器單元
218‧‧‧嵌入式記憶體模組
304‧‧‧區塊影像傳送(BLIT)引擎
306‧‧‧視訊編碼解碼器引擎
310‧‧‧圖形處理引擎(GPE)
312、412、922‧‧‧3D管線
314‧‧‧記憶體介面
315‧‧‧3D/媒體子系統
316、416、830、924‧‧‧媒體管線
320、1245‧‧‧顯示裝置
403、503、803‧‧‧命令串流器
410‧‧‧圖形處理引擎
414‧‧‧執行單元陣列
430‧‧‧取樣引擎
432‧‧‧去雜訊/解交錯模組
434‧‧‧運動估計模組
436‧‧‧影像縮放及濾波模組
444、614、856‧‧‧資料埠
504‧‧‧管線前端
530‧‧‧視訊品質引擎(VQE)
533‧‧‧多格式編碼/解碼(MFX)
534、834‧‧‧視訊前端
536‧‧‧幾何管線
537、837‧‧‧媒體引擎
550A、550N、560A、560N‧‧‧子核心
554A、554N‧‧‧媒體/紋理取樣器
564A、564N、610‧‧‧取樣器
570A、570N‧‧‧共用資源
580A、580N‧‧‧圖形核心
600、850‧‧‧執行緒執行邏輯
606‧‧‧指令快取記憶體
612‧‧‧資料快取記憶體
700‧‧‧圖形處理器指令格式
710‧‧‧128位元格式/128位元指令格式/指令
712‧‧‧指令作業碼
713‧‧‧索引欄位
714‧‧‧指令控制欄位
716‧‧‧exec-size欄位
718‧‧‧目的地
720、722、724‧‧‧源運算元
726‧‧‧存取/定址模式資訊/存取/定址模式欄位
730‧‧‧64位元緊密指令格式
740‧‧‧作業碼解碼
742‧‧‧移動及邏輯群組/移動及邏輯作業碼群組
744‧‧‧流量控制指令群組
746‧‧‧雜項指令群組
748‧‧‧平行數學指令群組/平行數學群組
750‧‧‧向量數學群組
805、807‧‧‧頂點提取器
813‧‧‧棋盤形佈置器/棋盤形佈置組件
823‧‧‧串流輸出單元
840‧‧‧顯示引擎
841‧‧‧2D引擎
851‧‧‧L1快取記憶體
854‧‧‧紋理及媒體取樣器
858‧‧‧紋理/取樣器快取記憶體
870‧‧‧再現輸出管線
873‧‧‧光柵處理器及深度測試組件
875‧‧‧L3快取記憶體
877‧‧‧像素操作組件
878‧‧‧再現快取記憶體
879‧‧‧深度快取記憶體
900‧‧‧圖形處理器命令格式
902‧‧‧用戶端
904‧‧‧操作碼
905‧‧‧子作業碼
908‧‧‧命令大小
910‧‧‧圖形處理器命令序列
912‧‧‧管線清空命令
913‧‧‧管線選擇命令
914‧‧‧管線控制命令
916‧‧‧回覆緩衝器狀態命令
920‧‧‧管線判定
930‧‧‧3D管線狀態
932‧‧‧3D基元
934‧‧‧執行
940‧‧‧媒體管線狀態
942‧‧‧媒體物件命令
944‧‧‧執行命令
1000‧‧‧資料處理系統
1010‧‧‧3D圖形應用程式
1012‧‧‧繪圖指令
1014‧‧‧可執行指令
1016‧‧‧圖形物件
1020‧‧‧作業系統
1022‧‧‧圖形API
1024、1027‧‧‧繪圖編譯器
1026‧‧‧使用者模式圖形驅動器
1028‧‧‧作業系統核心模式功能
1029‧‧‧核心模式圖形驅動器
1034‧‧‧通用處理器核心
1050‧‧‧系統記憶體
1100‧‧‧IP核心開發系統
1110‧‧‧軟體模擬
1112‧‧‧模擬模型
1115‧‧‧RTL設計
1120‧‧‧硬體模型
1130‧‧‧設計設施
1140‧‧‧非依電性記憶體
1150‧‧‧有線連接
1160‧‧‧無線連接
1165‧‧‧製造設施
1200‧‧‧系統單晶片積體電路
1205‧‧‧應用程式處理器
1215‧‧‧影像處理器
1220‧‧‧視訊處理器
1225‧‧‧USB控制器
1230‧‧‧UART控制器
1235‧‧‧SPI/SDIO控制器
1240‧‧‧I2 S/I2 C控制器
1250‧‧‧高清晰度多媒體介面(HDMI)控制器
1255‧‧‧行動行業處理器介面(MIPI)顯示介面
1260‧‧‧快閃記憶體子系統
1265‧‧‧記憶體控制器
1270‧‧‧嵌入式安全性引擎
關於以下諸圖描述一些實施例: 圖1為根據一個實施例之圖形管線的示意描述; 圖2A為具有3個頂點v0、v1及v2的三角形以及在三角形中之(x、y)處的點P之描述; 圖2B為在點P處的三角形質心(α、β、γ)座標的描述且在頂點v0、v1及v2處的質心座標分別為(1、0、0)、(0、0、1)以及(0、1、0); 圖2C為在像素P處的屬性Ap及在三角形之輸入頂點位置處的屬性A0、A1、A2之描述; 圖3為一個實施例的流程圖; 圖4為根據一個實施例的處理系統之方塊圖; 圖5為根據一個實施例的處理器之方塊圖; 圖6為根據一個實施例的圖形處理器之方塊圖; 圖7為根據一個實施例的圖形處理引擎之方塊圖; 圖8為圖形處理器之另一實施例之方塊圖; 圖9為根據一個實施例之執行緒執行邏輯的描述; 圖10為根據一些實施例之圖形處理器指令格式之方塊圖。 圖11為圖形處理器之另一實施例之方塊圖; 圖12A為根據一些實施例之圖形處理器命令格式之方塊圖; 圖12B為說明根據一些實施例之圖形處理器命令序列之方塊圖; 圖13為根據一些實施例之例示性圖形軟體架構的描述; 圖14為說明根據一些實施例之IP核心開發系統的方塊圖;且 圖15為展示根據一些實施例之例示性系統單晶片積體電路的方塊圖。
10‧‧‧圖形管線
12‧‧‧命令串流器級
14‧‧‧頂點提取
16‧‧‧頂點繪圖級
18‧‧‧殼繪圖(HS)
20‧‧‧域繪圖(DS)
22‧‧‧幾何繪圖(GS)
24‧‧‧像素繪圖(PS)
26‧‧‧剪輯器
28‧‧‧帶/扇形(SF)
30‧‧‧開窗程式遮蔽單元(WM)
32‧‧‧統一回覆緩衝器(URB)
34‧‧‧執行緒分派程式
36‧‧‧執行單元
Claims (30)
- 一種方法,其包含: 將一個圖形管線級中之多個頂點、補塊、基元或三角形其中之一者封裝至一個執行單元硬體執行緒中。
- 如請求項第1項的方法,包括修改管線域繪圖酬載以處置多個補塊。
- 如請求項第2項的方法,其包括: 將來自不同域繪圖補塊之域點資料封裝至一個單指令多資料(SIMD)執行緒中,其中每一域點佔據一個SIMD通路;以及 將針對每一域點的一屬性儲存在可藉由一程式化執行緒定址的一暫存器空間中之其自身分割區中。
- 如請求項第1項的方法,包括修改管線幾何繪圖酬載以在基元物件實例計數大於一時處置多個基元。
- 如請求項第4項的方法,包括將基元統一回覆緩衝器控制代碼複製至含有該基元之一實例ID的通路中。
- 如請求項第1項的方法,包括修改管線像素繪圖酬載以處置多個三角形。
- 如請求項第6項的方法,包括使用質心參數而用於屬性內插。
- 如請求項第7項的方法,包括遞送一酬載至一像素繪圖,該酬載包括每個像素或每個樣本之質心參數以及每一屬性之每個通道的頂點屬性差量之一集合。
- 如請求項第1項的方法,包括使得來自多個三角形之屬性差量能夠被包括在同一像素繪圖酬載中。
- 如請求項第1項的方法,包括對於每個執行緒封裝大於等於32通道的一SIMD寬度。
- 一種包含一或多個構件之非暫時性電腦可讀媒體,該非暫時性電腦可讀媒體儲存有用於執行一序列的指令在內,該序列包含: 將一個圖形管線級中之多個頂點、補塊、基元或三角形其中之一者封裝至一個執行單元硬體執行緒中。
- 如請求項第11項的媒體,其進一步儲存有用於執行一序列的指令在內,該序列包括:修改管線域繪圖酬載以處置多個補塊。
- 如請求項第12項的媒體,其進一步儲存有用於執行一序列的指令在內,該序列包括: 將來自不同域繪圖補塊之域點資料封裝至一個單指令多資料(SIMD)執行緒中,其中,每一域點佔據一個SIMD通路;以及 將每一域點的一屬性儲存在可藉由一程式化執行緒定址的一暫存器空間中之其自身分割區中。
- 如請求項第11項的媒體,其進一步儲存有用於執行一序列的指令在內,該序列包括:當基元物件實例計數大於一時修改管線幾何繪圖酬載以處置多個基元。
- 如請求項第14項的媒體,其進一步儲存有用於執行一序列的指令在內,該序列包括:將基元統一回覆緩衝器控制代碼複製至含有該基元之一實例ID的通路中。
- 如請求項第11項的媒體,其進一步儲存有用於執行一序列的指令在內,該序列包括:修改管線像素繪圖酬載以處置多個三角形。
- 如請求項第16項的媒體,其進一步儲存有用於執行一序列的指令在內,該序列包括:使用質心參數而用於屬性內插。
- 如請求項第17項的媒體,其進一步儲存有用於執行一序列的指令在內,該序列包括:遞送一酬載至一像素繪圖,該酬載包括每個像素或每個樣本之質心參數以及每一屬性之每個通道的頂點屬性差量之一集合。
- 如請求項第11項的媒體,其進一步儲存有用於執行一序列的指令在內,該序列包括:使得來自多個三角形之屬性差量能夠被包括在同一像素繪圖酬載中。
- 如請求項第11項的媒體,其進一步儲存有用於執行一序列的指令在內,該序列包括:對於每個執行緒封裝大於等於32通道的一SIMD寬度。
- 一種設備,其包含: 一處理器,其將一個圖形管線級中之多個頂點、補塊、基元或三角形其中之一者封裝至一個執行單元硬體執行緒中;以及 一記憶體,其與該處理器耦接。
- 如請求項第21項的設備,該處理器修改管線域繪圖酬載以處置多個補塊。
- 如請求項第22項之設備,該處理器將來自不同域繪圖補塊之域點資料封裝至一個單指令多資料(SIMD)執行緒中,其中每一域點佔據一個SIMD通路,且該處理器將每一域點的一屬性儲存在可由一程式化執行緒定址的一暫存器空間中之其自身分割區中。
- 如請求項第21項的設備,該處理器修改管線幾何繪圖酬載以在基元物件實例計數大於一時處置多個基元。
- 如請求項第24項的設備,該處理器將基元統一回覆緩衝器控制代碼複製至含有該基元之一實例ID的通路中。
- 如請求項第21項的設備,該處理器修改管線像素繪圖酬載以處置多個三角形。
- 如請求項第26項的設備,該處理器使用質心參數而用於屬性內插。
- 如請求項第27項的設備,該處理器遞送一酬載至一像素繪圖,該酬載包括每個像素或每個樣本之質心參數以及每一屬性之每個通道的頂點屬性差量之一集合。
- 如請求項第21項的設備,該處理器使得來自多個三角形之屬性差量能夠被包括在同一像素繪圖酬載中。
- 如請求項第21項的設備,該處理器對於每個執行緒封裝大於等於32通道的一SIMD寬度。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US14/976,122 US20170178384A1 (en) | 2015-12-21 | 2015-12-21 | Increasing Thread Payload for 3D Pipeline with Wider SIMD Execution Width |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| TW201724010A true TW201724010A (zh) | 2017-07-01 |
Family
ID=59067081
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW105137856A TW201724010A (zh) | 2015-12-21 | 2016-11-18 | 對於具有較寬單指令多資料(simd)執行寬度之3d管線增加執行緒酬載的技術 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US20170178384A1 (zh) |
| EP (1) | EP3394748A4 (zh) |
| TW (1) | TW201724010A (zh) |
| WO (1) | WO2017112162A1 (zh) |
Families Citing this family (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10235811B2 (en) | 2016-12-29 | 2019-03-19 | Intel Corporation | Replicating primitives across multiple viewports |
| US10891774B2 (en) * | 2017-08-31 | 2021-01-12 | Intel Corporation | Method and apparatus for profile-guided graphics processing optimizations |
| CN108053481B (zh) * | 2017-12-26 | 2021-11-30 | 深圳市易尚展示股份有限公司 | 三维点云法向量的生成方法、装置和存储介质 |
| US10628910B2 (en) | 2018-09-24 | 2020-04-21 | Intel Corporation | Vertex shader with primitive replication |
| US11848980B2 (en) * | 2020-07-09 | 2023-12-19 | Boray Data Technology Co. Ltd. | Distributed pipeline configuration in a distributed computing system |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7259765B2 (en) * | 2003-04-04 | 2007-08-21 | S3 Graphics Co., Ltd. | Head/data scheduling in 3D graphics |
| US7079156B1 (en) * | 2004-05-14 | 2006-07-18 | Nvidia Corporation | Method and system for implementing multiple high precision and low precision interpolators for a graphics pipeline |
| US20070030277A1 (en) * | 2005-08-08 | 2007-02-08 | Via Technologies, Inc. | Method for processing vertex, triangle, and pixel graphics data packets |
| US7692660B2 (en) * | 2006-06-28 | 2010-04-06 | Microsoft Corporation | Guided performance optimization for graphics pipeline state management |
| US8963930B2 (en) * | 2007-12-12 | 2015-02-24 | Via Technologies, Inc. | Triangle setup and attribute setup integration with programmable execution unit |
| US8169437B1 (en) * | 2008-07-09 | 2012-05-01 | Nvidia Corporation | Distributed tessellation topology generator |
| US20100079454A1 (en) * | 2008-09-29 | 2010-04-01 | Legakis Justin S | Single Pass Tessellation |
| US8698802B2 (en) * | 2009-10-07 | 2014-04-15 | Nvidia Corporation | Hermite gregory patch for watertight tessellation |
| US8854365B2 (en) * | 2010-01-15 | 2014-10-07 | Microsoft Corporation | Rendering parametric surface patches |
| US9342334B2 (en) * | 2012-06-22 | 2016-05-17 | Advanced Micro Devices, Inc. | Simulating vector execution |
| US8982124B2 (en) * | 2012-09-29 | 2015-03-17 | Intel Corporation | Load balancing and merging of tessellation thread workloads |
-
2015
- 2015-12-21 US US14/976,122 patent/US20170178384A1/en not_active Abandoned
-
2016
- 2016-11-17 WO PCT/US2016/062463 patent/WO2017112162A1/en not_active Ceased
- 2016-11-17 EP EP16879654.8A patent/EP3394748A4/en not_active Withdrawn
- 2016-11-18 TW TW105137856A patent/TW201724010A/zh unknown
Also Published As
| Publication number | Publication date |
|---|---|
| EP3394748A4 (en) | 2019-07-31 |
| WO2017112162A1 (en) | 2017-06-29 |
| EP3394748A1 (en) | 2018-10-31 |
| US20170178384A1 (en) | 2017-06-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9704217B2 (en) | Apparatus and method for non-uniform frame buffer rasterization | |
| CN114549518B (zh) | 使用三角形的属性的加权平均来合并粗像素着色的片段 | |
| US10572288B2 (en) | Apparatus and method for efficient communication between virtual machines | |
| US10068307B2 (en) | Command processing for graphics tile-based rendering | |
| US20200371804A1 (en) | Boosting local memory performance in processor graphics | |
| TWI633518B (zh) | 分群調色板壓縮技術(二) | |
| US20160379400A1 (en) | Three-Dimensional Renderer | |
| US11068401B2 (en) | Method and apparatus to improve shared memory efficiency | |
| US10546362B2 (en) | Method and apparatus for adaptive pixel hashing for graphics processors | |
| TW201638883A (zh) | 用於細分表面的直接和互動式射線追蹤之方法及設備 | |
| TW201724010A (zh) | 對於具有較寬單指令多資料(simd)執行寬度之3d管線增加執行緒酬載的技術 | |
| US9990748B2 (en) | Corner texel addressing mode | |
| WO2017049583A1 (en) | Gpu-cpu two-path memory copy | |
| US10430229B2 (en) | Multiple-patch SIMD dispatch mode for domain shaders | |
| WO2017116779A1 (en) | A method of color transformation using at least two hierarchical lookup tables (lut) |