TWI474279B - 繪圖處理系統、快取系統以及資料處理方法 - Google Patents
繪圖處理系統、快取系統以及資料處理方法 Download PDFInfo
- Publication number
- TWI474279B TWI474279B TW97118073A TW97118073A TWI474279B TW I474279 B TWI474279 B TW I474279B TW 97118073 A TW97118073 A TW 97118073A TW 97118073 A TW97118073 A TW 97118073A TW I474279 B TWI474279 B TW I474279B
- Authority
- TW
- Taiwan
- Prior art keywords
- cache memory
- data
- shader
- vertex
- cache
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本發明係有關於一種三維的電腦繪圖系統,特別是有關於一種繪圖處理核心系統內的快取記憶體和控制系統。
用來將三維世界(真實或假想)的物件呈現於二維顯示螢幕之上的三維電腦繪圖系統目前正被廣泛地使用於各種的應用類型之中。例如,三維電腦繪圖可以用於即時互動的應用程式,像是電腦遊戲、虛擬實境、科學研究等等,以及離線應用程式,像是高解析度電影的製作、繪圖設計等。由於對三維電腦繪圖的需求與日俱增,此技術領域於過去幾年間有了長足的發展和進步。
為了將三維的物件以二維方式呈現,使用了空間座標和色彩特徵將欲顯示的物件定義於一個三維世界空間中。先決定一個物件表面的點之座標,並且用這些點(或頂點)來建立一連接這些點的線框以定義此物件的大致形狀。在某些情況,這些物件可具有骨幹和接合點,其可繞轉、旋轉等,或者具有使物件彎曲、壓縮和變形等特性。一個繪圖處理系統可集結物件線框的頂點來建立三角形或多邊形。舉例來說,對於一個具有簡單結構的物件,例如一面牆或一大樓的一個面,可簡單地以一個平面上形成一矩形多邊形或兩個三角形的四個頂點所定義。一更複雜的物
件,像是樹或球體,可能需要上百個頂點形成上百個三角形來定義此物件。
除了定義一物件的頂點,繪圖處理器亦可執行其他的工作,像是決定三維的物件將如何出現在一個二維的螢幕上。此過程包括將由朝向一特定方向的單一相機景像決定一個三維世界的視窗框架景象。從此景象,繪圖處理器可剪輯一物件其可能在鏡頭外面的部分、被其他物件遮蔽的部分或是偏離相機且被此物件其他部分所遮蔽的部分。此繪圖處理器也可決定三角形或多邊形之頂點的顏色,並且依照光線效應、反射特性和透明特性等等來做適當的調整。使用紋理貼圖可將平面圖片的紋理或顏色顯示於三維物件的表面之上,就好像覆蓋表皮層於物件之上。在某些情況,對於位於兩頂點之間的畫素,或位於由三個或更多個頂點所形成之一多邊形的表面之上的畫素,其畫素顏色值是可以被插值的,如果頂點的顏色值已知的話。其他的繪圖處理技術可用來將這些物件呈現於一平面螢幕之上。
如熟悉此技藝之人士所知,繪圖處理器包括了被稱為著色器的核心資料處理元件,軟體開發者或熟悉此技藝之人士可以利用這些著色器來建立影像且隨意控制連續影格的視訊。舉例來說,頂點著色器、幾何著色器和畫素著色器通常包含於繪圖處理器之內以執行上述的諸多工作。有些工作也由像是光柵化器、畫素插補器和三角設置單元等的固定功能單元所執行。藉著建構一具有上述個別元件的繪圖處理器,製造商可以提供建構逼真三維影像或視訊的
基本工具。
繪圖處理器於很多的處理階段使用到快取記憶體,一著色裝置的輸出通常傳送到一快取記憶體裝置,此快取記憶體裝置隨後提供這些資料值給下一級的著色裝置,此下一級的著色裝置又輸出它的結果給另一個快取記憶體裝置等等。當一特定的場景或物件需更常以某一特定的著色裝置來處理時,也會同樣地更常使用到此著色裝置的相關快取記憶體。因為不同的軟體開發者或此領域之人士基於他們的特殊應用類型而有不同的需求,因此不容易一開始就能決定每一種快取記憶體,其用來儲存處理核心中著色器所處理之資料的可能需求量。因此,對於此繪圖處理領域,有需要指出不同類型和大小的快取記憶體裝置於比例上的問題,因而需要提供一有能力於三維繪圖技術中克服這些和其他缺失的繪圖處理系統。
本發明揭露在一快取記憶體系統中處理和儲存繪圖資料的系統和方法。其中一個繪圖處理系統的實施例包括了一互相溝通的處理管線和快取記憶體系統,處理管線包括複數繪圖著色器器階段,處理管線內的每一繪圖著色器階段用來執行一或多個的著色運算。快取記憶體系統包括複數儲存單元,其中每一個儲存單元用來儲存關於處理管線之繪圖著色器階段的資料。快取記憶體系統包括一控制裝置,其建構來管理上述資料於快取記憶體系統之儲存單元
的配置。
在另一實施例揭露了一繪圖處理單元的一快取記憶體系統,此實施例的快取記憶體系統包括一資料儲存裝置以及一儲存裝置控制器。儲存裝置用來儲存一或多個著色器單元所處理(或要處理)的繪圖資料。儲存裝置控制器連接到資料儲存裝置,用來於資料儲存裝置內動態地控制繪圖資料的儲存配置。
另外,本發明揭露了繪圖處理裝置內的資料處理方法。此方法包括分析複數繪圖處理著色器的活動級別(activity level)。此方法亦包括根據每一繪圖處理著色器的個別活動級別來決定複數繪圖處理著色器的資料儲存需求,此方法更包括分配一部分的記憶裝置。
經過閱讀以下所述的圖示和詳細解釋,對熟悉此技藝之人士而言,本發明其他的系統、方法、特徵和優點將會是顯而易見的。本發明之保護範圍當視後附之申請專利範圍所界定者為準。
傳統上,繪圖處理器或繪圖處理單元(Graphics Processing Units,GPUs)係合併於一電腦系統內以專門地執行電腦的繪圖。隨著三維電腦繪圖的普遍使用,繪圖處理單元變得更加進步且功能強大,一些一向由中央處理單元(Central Processing Unit,CPU)所處理的工作現在都交由繪圖處理單元處理,以達成具有高度複雜性的繪圖處
理任務。一般來說,繪圖處理單元可嵌入於一附接到電腦處理系統之主機板,或與主機板溝通的繪圖卡之內。
繪圖處理單元包括許多獨立的單元來執行不同的工作以最終呈現三維的景象於二維的顯示螢幕之上。例如電視、電腦螢幕、視訊螢幕或其他適當的顯示裝置。這些獨立的處理單元就是一般所稱的著色器,其可包括頂點著色器、幾何著色器以及畫素著色器等等。繪圖處理單元亦包含了其他被稱為固定功能單元的處理單元,像是畫素插補器和光柵化器等。在設計一繪圖處理單元的時候,上述元件的每一種組合都會被考慮進去以便能執行各種工作。基於這些組合,繪圖處理單元在無法全力執行另外的工作時可具有較大的能力處理單一件工作。因此,硬體開發者始終嘗試將一些著色器單元放進一個元件中。然而,獨立單元結合在一起的程度卻是有限的。
另外,每一著色器單元的輸入和輸出都儲存於不同的快取記憶體裝置,每一個快取記憶體裝置皆被指定來處理一特定著色器單元的資料。因此,每一個快取記憶體裝置皆依照其對應之著色器單元的使用方式來利用。
本發明的相關美國專利說明書,公開編號___(案號S3U06-0030;252209-1810),討論了將這些著色器單元和固定功能單元結合成一單一單元(又稱為統一著色器)的相關機制。此統一著色器除了具備執行頂點著色、幾何著色和畫素著色的能力,同時亦能執行光柵化和畫素插值等之功能。
本發明揭露了一快取記憶體系統,其運算於上述的統一著色器、或運算於著色裝置其他形式的架構之上。此快取記憶體系統可將傳統技術中各個分離的快取記憶體集中起來。與傳統技術中以分散於處理器各處的快取記憶體裝置來設計繪圖處理器的方法有所不同,本發明可將統一快取記憶體裝置侷限於單一位置,因此於矽晶片或處理器基板上佔據較少的空間。
本發明也將先前技術的快取記憶體系統做了改進,其方式係藉著容許依照需求來配置該快取記憶體系統。因此,當有可能較常使用到某一著色器單元和其對應的快取記憶體時,可配置其他的可用資源來更佳符合使用需求。基於當時的特定需求,快取記憶體資源的配置是可以動態調整的,如此一來便可以更有效率地運用快取記憶體。傳統技術的處理器設計了對每一種快取記憶體裝置具備了最大的儲存量,但是這些儲存量不能更改。依照本發明的教述調整快取記憶體的配置,就不再需要針對各種快取記憶體裝置皆設計了最大的快取記憶體數量。反而,全部的快取記憶體與繪圖處理單元設計在一起以供著色器單元共同使用。如此一來,與傳統技術的處理器相比,快取記憶體的總儲存數量可維持不變,或著實際上是可以減少的。然而,當有需要的時候可以配置更大量的快取記憶體,因此為軟體開發者提供了較大的彈性。本技術另一個優勢是此重新配置的機制可以減少於處理器管線中可能會發生的瓶頸情況。
第1圖顯示一電腦繪圖系統10之一實施例的方塊圖,此電腦繪圖系統10包括一運算系統12、一繪圖軟體模組14和一顯示裝置16。除了上述的元件,運算系統12還包括一繪圖處理單元18以處理運算系統12中至少一部分的繪圖資料。在某些實施例中,繪圖處理單元18可設計於運算系統12內的繪圖卡之上。繪圖處理單元18處理這些圖形資料以產生圖框之每一畫素的顏色值及亮度值,並顯示於顯示裝置16之上,一般來說是以每秒30個圖框的比率來處理。繪圖軟體模組14包括一應用程式介面(Application Programming Interface,API)20和一軟體應用程式22。在本實施例中,應用程式介面20支援最新的OpenGL和(或)DirectX規格。
在最近幾年,對具有大量可程式邏輯之繪圖處理單元的使用需求漸增。在此實施例中,繪圖處理單元18設計了具有較高的可程式性,使用者可以藉著繪圖軟體模組14控制許多的輸入/輸出裝置來互動地輸入資料和(或)命令。應用程式介面20根據軟體應用程式22內的邏輯來控制繪圖處理單元18的硬體以建立繪圖處理單元18有用的繪圖功能。在本實施例中,使用者可以不需要了解繪圖處理單元18與其功能,特別是如果此繪圖軟體模組14是一電動遊戲操縱器且該使用者純粹是一個玩家。如果該繪圖軟體模組14是一用來建立三維繪圖視訊、電腦遊戲或是其他即時或離線成像的裝置,並且該使用者是軟體開發者或該領域之人士,則此使用者一般比較了解繪圖處理單元18
的功能。要了解的是,繪圖處理單元18可使用於諸多不同的應用類型中。然而為了簡化敘述,本發明特別著重影像於二維顯示裝置16上的即時成像。
第2圖顯示第1圖所示之繪圖處理單元18之一實施例的方塊圖。在此實施例中,繪圖處理單元18包括一繪圖處理管線24,其與快取記憶體系統26之間被一匯流排介面28所分離。管線24包括一頂點著色器30、一幾何著色器32、一光柵化器34和一畫素著色器36。管線24的輸出可被送到一回寫單元(圖未顯示)。快取記憶體系統26包括一頂點串流快取記憶體40、一第一級快取記憶體42、一第二級快取記憶體44、一Z快取記憶體46和一紋理快取記憶體48。
頂點串流快取記憶體40接收命令和圖形資料,並且傳送這些命令和資料給頂點著色器30,其係用以對這些資料執行頂點著色的運算。頂點著色器30使用頂點資訊建立欲顯示之物件的三角形和多邊形。頂點資料從頂點著色器30傳送到幾何著色器32和第一級快取記憶體42。如果有需要的話,某些資料可被第一級快取記憶體42和第二級快取記憶體44所共用。第一級快取記憶體也可傳送資料給幾何著色器32,其用以執行某些像是鑲嵌、陰影計算、點精靈的建立等等之功能。幾何著色器32也可藉著從單一頂點建立一三角形,或從單一三角形建立多個三角形來提供流暢的運算。
在此階段以後,管線24所包括的光柵化器34對幾何
著色器32和第二級快取記憶體44的資料進行運算。光柵化器34亦可利用Z快取記憶體46做深度分析,以及紋理快取記憶體48做有關顏色特性之處理。光柵化器34可包括固定功能之運算,像是三角設定、跨磚運算(span tile operations)、深度測試(Z測試)、預包裝、畫素插值、包裝等等。光柵化器34亦可包括一用來將世界空間中一個物件的頂點轉換至螢幕空間上之座標體系的轉換矩陣。
光柵化之後,光柵化器34將資料傳送給畫素著色器36來決定最後的畫素值,畫素著色器36的功能包括根據各種顏色特性處理每一個個別的畫素以及改變顏色值。舉例來說,畫素著色器36可包括根據光源的位置及頂點的法線來決定反射或高光色值和透明值之功能,然後從管線24輸出所完成的視訊圖框。誠如圖中所示,著色器單元和固定功能單元於許多階段使用到快取記憶體系統26。假如匯流排介面28是一非同步的介面,則於管線24和快取記憶體系統26之間的通訊可包括另外的緩衝機制。
在此實施例中,管線24的元件設計成分離的單元,這些單元在有需要的時候存取不同的快取記憶體元件。然而,著色器元件可被集中於一統一著色器之內,使得管線24可以較簡單的形式設計且仍提供相同的功能。資料流可被映射在一實體裝置之上,在此稱為執行單元,其係用於執行一部分的著色器功能。如此一來,管線24結合成至少一個有能力執行管線24之功能的執行單元。同樣的,快取記憶體系統26的某些快取記憶體單元也可併入這些執行
單元。藉著將這些元件合併成單一的單元可簡化繪圖處理的流量,並且可包括與非同步介面的切換。因此,可在侷限的範圍(local)內進行資料的處理,因而允許較快速度的執行。同理,快取記憶體系統26也可合併在一起建立統一快取記憶體系統。
第3A圖顯示第1圖中所示之繪圖處理單元18之一實施例的方塊圖(或其他繪圖處理裝置的方塊圖)。繪圖處理單元18包括一統一著色器單元50,其具有多個執行單元52和快取記憶體/控制裝置54。執行單元52平行地連接設置並透過快取記憶體/控制裝置54來存取,統一著色器單元50可包括無數的執行單元52以適當地根據各種規格執行所要的繪圖處理量。當一設計情況需要處理到更多的繪圖任務時可以加入更多的執行單元,如此一來,統一著色器單元50係具有可擴充性的特色。
在此實施例中,統一著色器單元50具有比傳統繪圖管線更具彈性的簡化設計。在其他實施例中,每一著色器單元可能需要較大量的資源以因應運作之需(例如快取記憶體和控制裝置)。在此實施例中的資源是可以共用的,每一個執行單元52也可以類似的方法製造,並且依照當前的工作負載量來做存取。根據此工作負載量,可以視需求來配置執行單元52以執行一或多個繪圖處理管線24的功能。因此,統一著色器單元50於繪圖處理中提供一個成本效能比更佳的解決方案。
此外,當應用程式介面20的設計和規格改變的時候
(此屬常見現象),統一著色器單元50不需要為了配合應用程式介面的改變而重新設計。反而,統一著色器單元50係可動態調整以便依照需求提供特定的著色功能。快取記憶體/控制裝置54包括一動態規劃裝置,其依照當前正在處理的物件或場景來平衡所處理之負載量。快取記憶體/控制裝置54也可包括一配置系統以平衡資料的儲存需求,此規劃裝置和配置系統可一起互相運作或獨立運算。
依照規劃裝置之決定,可分配更多的執行單元52來提供較大的處理能力於特定的繪圖處理之上,例著色功能或固定功能,如此一來就可以減少延遲。執行單元52也可運算於所有著色器功能的指令之上,進而簡化處理過程。
第3B圖顯示繪圖處理單元18之另一實施例的方塊圖,成對的執行單元56和紋理單元58平行並列,並且連接到快取記憶體/控制裝置60。在此實施例中,紋理單元58為執行單元集的一部分,執行單元56和紋理單元58可因此共用快取記憶體/控制裝置60內的快取記憶體,使得紋理單元58可比傳統紋理單元更快速地存取指令。此實施例中的快取記憶體/控制裝置60包括一指令/紋理快取記憶體62(唯讀),一資料快取記憶體64,一頂點著色器控制裝置66和一光柵介面68。繪圖處理單元18亦包括一命令串流處理器70、一記憶體存取單元72、一光柵裝置74以及一回寫單元76。
因為資料快取記憶體64為一讀/寫快取記憶體,並且比唯讀快取記憶體62貴,所以這兩個快取記憶體是分開
的。然而,不同的快取記憶體裝置是可以如下所述之方式結合的。唯讀快取記憶體62可包括約32個快取列,但這個數目是可以減少的,並且每一個快取列的大小是可以增加的,這樣的做法主要是為了減少所需的數目比較。唯讀快取記憶體62的尋到/誤失測試可與一般CPU的尋到/誤失測試不同,主要是因為繪圖資料持續地被串流化。對於一誤失的情況,快取記憶體純粹更新資料並且繼續動作而不需要將資料儲存於外部的記憶體。對於一尋到的情況,則稍微延遲讀取的動作以接收快取記憶體的資料。唯讀快取記憶體62和資料快取記憶體64可以是第一級快取記憶體裝置以減少延遲,其對使用第二級快取記憶體的傳統繪圖處理單元快取記憶體系統來說是更進步的。藉著結合更多的快取記憶體資源,更多的快取記憶體可以當成本地或第一級快取記憶體以減少資料讀取時間。
頂點著色器控制裝置66從命令串流處理器70接收命令和資料,執行單元56和紋理單元58接收唯讀快取記憶體62之紋理資訊、指令和常數的串流。執行單元56和紋理單元58也接收資料快取記憶體64的資料,以及將處理後的資料提供回資料快取記憶體64。唯讀快取記憶體62和資料快取記憶體64係與記憶體存取單元72連接。光柵介面68和頂點著色器控制裝置66提供信號給執行單元56以及從執行單元56接收回處理過的信號。光柵介面68與一光柵裝置74連接,執行單元56的輸出也接到回寫單元76。
第3C圖顯示此繪圖處理單元18之另一實施例的方塊圖。在此實施例中,繪圖處理單元18包括一包裝器(packer)78、一輸入閂80、一複數對的執行單元裝置82、一輸出閂84、一回寫單元86、一紋理定址產生器88、一第二級快取記憶體90、一快取記憶體/控制裝置92、一記憶體介面94、一記憶體存取單元96、一三角設定單元98以及一命令串流處理器100。
命令串流器處理器100提供一串的索引給快取記憶體/控制裝置92,這些索引係關於頂點的身分標籤。舉例來說,快取記憶體/控制裝置92可設計於一先進先出機制內一次辨識256個索引。包裝器78以一固定功能單元為佳,其送出一要求給快取記憶體/控制裝置92要求取得相關的資訊來執行畫素著色的功能。快取記憶體/控制裝置92送回畫素著色器資訊以及某一執行單元號碼和執行緒號碼的配置訊息。該執行單元號碼係指執行單元裝置82中的其中一個執行單元,而執行緒號碼係指每一個執行單元中用來處理資料之許多平行執行緒的其中一個執行緒。之後,包裝器78傳送畫素著色運算所需的相關紋理畫素和顏色資訊給輸入閂80。舉例來說,可把連接至輸入閂80的兩個輸入指定給紋理畫素資訊,另外兩個輸入指定給顏色資訊。每一個輸入具有傳送一特定位元數的能力,例如512位元。
輸入閂80可為一匯流排介面,其依照快取記憶體/控制裝置92所規定之分配任務將畫素著色器資料安排給特
定的執行單元和執行緒。此分配之任務可根據執行單元和執行緒的可用性、或是其他的因素來決定,且可依需求改變。在多個執行單元82平行連接的架構下,可同時執行更大量的繪圖處理任務。由於快取記憶體存取的便利性,資料流可維持在局部區域而不需要從一較不具存取性的快取記憶體獲取資料。另外,與傳統繪圖系統相比,流經輸入閂80和輸出閂84的資料流可以被減少,因而降低處理時間。
每一個執行單元82依照其被指派的方式使用頂點著色和幾何著色的功能來處理資料。另外,執行單元82可根據包裝器78的紋理畫素資訊和顏色資訊來執行畫素著色的功能。如同本實施例包括了五個執行單元,且每一個執行單元分成兩個部分,每一個部分代表許多的執行緒。每一部分可以第4-6圖來表示,執行單元裝置82的輸出係傳送到輸出閂84。
當繪圖資料完成的時候,這些資料從輸出閂84傳送到回寫單元86,其連接至一用來將圖框顯示在顯示裝置16之上的圖框緩衝器。在一或多個執行單元裝置82以畫素著色功能將資料處理完畢之後,回寫單元86會接收完成的圖框,此係繪圖處理的最後階段。然而,資料處理流可一或多次地透過快取記憶體/控制裝置92迴繞以防主從紋理讀取。在中間處理的期間,紋理定址產生器88從輸出閂84接收紋理座標以決定要取樣的位址。紋理定址產生器88傳送一紋理號碼(texture number)載入要求給第二級快取
記憶體90,所載入的資料可傳回至紋理定址產生器88。
輸出閂84的輸出是頂點資料,這些頂點資料被傳送至快取記憶體/控制裝置92。快取記憶體/控制裝置92可傳送關於頂點著色器或幾何著色器運算的資料輸入給輸入閂80做為回應。同樣地,讀取要求也從輸出閂84送到第二級快取記憶體90,第二級快取記憶體90也可傳送資料給輸入閂80做為回應。第二級快取記憶體90執行一尋到/誤失測試確定資料是否儲存於快取記憶體之內。如果不是儲存於快取記憶體之內,記憶體介面94可透過記憶體存取單元96存取記憶體以讀取所需的資料。第二級快取記憶體90依其需求以讀取的資料更新其記憶體並且把舊的資料丟給記憶體或是丟棄唯讀資料。快取記憶體/控制裝置92也包括一輸出,用來傳送頂點著色和幾何著色資料至三角設定單元98以執行三角設定處理。
第4圖顯示依照本發明之技術之一快取記憶體系統102的一實施例的方塊圖。除了之前所提到的元件,快取記憶體系統102更包括一儲存裝置控制器104和一資料儲存裝置106。儲存裝置控制器104用來連接多重著色器單元,例如頂點著色器、幾何著色器和畫素著色器,以及繪圖處理單元的固定功能單元。同樣地,儲存裝置控制器104也用來連接本發明所述的統一著色器單元或執行單元。然而,為了簡化本發明的描述,在此所述的快取記憶體系統係與著色器單元相連接。但必須知道的是,此快取記憶體系統也可與固定功能單元、統一著色器單元和執行單元等
連接。
儲存裝置控制器104設計來接收著色器所發出之資料讀取或寫入的要求。為了回應這些要求,儲存裝置控制器104可傳送資料於著色器單元和資料儲存裝置106之間。儲存裝置控制器104視資料儲存裝置106中記憶空間的可用性而相對應地分配資料,像是繪圖資料。如此一來,儲存裝置控制器104可根據目前的需求動態地調整所需的資料分配。當頂點著色功能的運算加重時,儲存裝置控制器104可分配更多的記憶單元於資料儲存裝置106之內以儲存相關的頂點資料。儲存裝置控制器104也設計來依需求協調讀取和寫入的運算。
第5圖顯示一快取記憶體系統108之另一實施例的方塊圖。快取記憶體系統108包括一要求接收器110、一控制裝置112、一資料接收器114、一資料發送器116、一資料介面118和許多的儲存單元120。在此實施例中,快取記憶體系統108可包括適當數目的儲存單元120,這些儲存單元120集合起來可建構成一具備適當架構快取記憶體通道、且被分成許多快取列的快取記憶體。同樣地,儲存單元120也可包括分離的可尋址暫存器或記憶元件。另一種選項就是,儲存單元120可代表不同形式,且放置於不同位置的快取記憶體。舉例來說,儲存單元120可包括第一級和第二級快取記憶體。
要求接收器110接收諸多著色器單元的要求,且在一時間點可接收超過一個的需求。如果要求接收器110接收
到多個要求,則這些要求會以預定的優先順序處理。控制裝置112用來處理這些要求以決定和管理資料的傳送。對於一寫入指令,控制裝置112致能資料接收器114以接收個別著色器單元的資料,控制裝置112也控制資料介面118以儲存資料於一或多個適當的儲存單元120中。對於一讀取指令,控制裝置112控制資料介面118以擷取可尋址儲存單元120的資料,然後資料發送器116發送資料給發出該要求的著色器單元。控制裝置112視目前運算中的處理功能來管理資料的分配。與傳統技術中對應至一特定著色器單元之每一個快取記憶體裝置係具備固定的儲存容量不同,快取記憶體系統108所具備之儲存單元120係可依照每一著色器單元之需求來分割其儲存容量。同樣地,由於處理不同類型之繪圖物件和(或)場景而產生處理需求的改變,此分配機制亦可根據上述情況來做調整。
第6圖顯示一快取記憶體系統122之一實施例的方塊圖,其可用於、或取代第2圖所示的快取記憶體系統26或第3A至3C圖所示的快取記憶體/控制裝置54。在此實施例中,快取記憶體系統122包括一頂點資料串流快取記憶體124、一垂直水平轉換器126、一第一級頂點快取記憶體128、一頂點著色器前端130、一頂點著色器識別表132、一幾何著色器識別表134、一幾何著色器基元建構器136、一串流輸出裝置138、一串流輸出索引緩衝器140、一幾何著色器前端142、一串流輸出前端144、一第二級快取記憶體146、一常數載入器148、一記憶體介面150以及一三角
設定單元152。如熟悉此技藝之人士將會了解的,其他的實施例亦可用上述部分或全部的元件,並以上述或其他的形式來設計。上述快取記憶體系統122係具備處理多重著色器單元的功能。
頂點著色器前端130從一源頭接收索引基元,例如從一命令串流處理器。頂點著色器前端130也可接收狀態訊息、命令以及幾何基元資訊。頂點著色器前端130傳送索引資訊給頂點著色器識別表132,其係眾所皆知的尋到測試裝置,其對第一級頂點快取記憶體128中的資料執行尋到/誤失測試。尋到/誤失的結果和頂點快取記憶體識別資訊會回傳給頂點著色器前端130,頂點著色器前端130也發送狀態、命令和誤失(頂點快取記憶體識別)訊息給頂點資料串流快取記憶體124。頂點資料串流快取記憶體124用來傳送一任務要求給一外部頂點著色器規劃器(圖未顯示),以及接收關於第3A圖中的執行單元數目和執行緒數目等資訊。頂點資料串流快取記憶體124也傳送頂點著色器的輸入給輸入閂80(圖3C)。
頂點資料串流快取記憶體124也傳送頂點著色器旁路訊息給垂直水平轉換器126。垂直水平轉換器126接收頂點著色器和幾何著色器資訊,並回送樣本給頂點資料串流快取記憶體124以作為回應,然後將這些資訊儲存於第一級頂點快取記憶體128中。垂直水平轉換器126也可傳送發出(emit)、剪輯(cut)和完成(done)的資訊給幾何著色器識別表134。
頂點著色器前端130也傳送狀態、命令和頂點著色器的頂點快取記憶體識別給串流輸出索引緩衝器140,其傳遞這些資訊給幾何著色器前端142,接著幾何著色器前端142又傳送這些資訊給串流輸出前端144,並且傳送頂點著色器的頂點快取記憶體識別資訊給幾何著色器基元建構器136。串流輸出前端144傳送頂點著色器和幾何著色器的頂點快取記憶體識別資訊給串流輸出裝置138。頂點著色器識別表132、幾何著色器識別表134、幾何著色器基元建構器136和串流輸出裝置138分別傳送頂點著色器無效資訊、幾何著色器無效資訊、頂點著色器的頂點快取記憶體識別和頂點著色器/幾何著色器的頂點快取記憶體識別給第一級頂點快取記憶體128。第一級頂點快取記憶體128傳送頂點資料給幾何著色器基元建構器136和串流輸出裝置138。
幾何著色器基元建構器136也傳送幾何著色資訊給輸入閂80。同樣地,幾何著色器基元建構器136傳送一任務要求給一外部幾何著色器規劃器(圖未顯示)以及從其接收執行單元數目和執行緒數目等資訊。
第二級快取記憶體146在有需要的時候儲存第一級頂點快取記憶體128的過量資料,並且在適當的時機提供預取機制。頂點著色器前端130和幾何著色器前端142傳送常數擷取訊息給常數載入器148,其將常數傳送至第二級快取記憶體146。第二級快取記憶體146透過輸入閂80傳送資訊給執行單元,並且透過輸出閂84從執行單元接收回
資訊。同樣地,串流輸出裝置138傳送頂點資料給記憶體介面150和三角設定單元152。第二級快取記憶體146和記憶體介面150之間可交換工作負載以及儲存資訊。
第7圖顯示一快取記憶體系統154之另一實施例的方塊圖,其可有關於第3A至3C圖中的快取記憶體/控制裝置。依照本實施例,快取記憶體系統154包括一串流快取記憶體格式器156、一頂點著色器控制158、一頂點著色器識別表160、一串流輸出索引緩衝器162、一串流輸出暫存器控制裝置164、一串流輸出裝置166、一記憶體存取單元168、一第二級紋理快取記憶體170、一第二級資料快取記憶體172、一常數載入器174、一光柵方塊176、一小區塊遮罩178、一畫素著色器控制裝置180以及一回寫單元182。在某些實施例中,頂點著色器控制158可以是一頂點著色器前端裝置。舉例來說,此實施例可與一具有幾何著色功能的統一著色器一起使用。如此一來,如第6圖之實施例中所述的幾何著色元件在此實施例中是被省略且被執行單元的元件所控制的。第7圖之快取記憶體系統154的運算原理與第6圖中所述的實施例是很類似的。
關於頂點著色器控制158和頂點著色器識別表160,頂點著色器識別表160在頂點著色連算之後執行頂點尋到/誤失測試,並且將後頂點(post-ertex)著色器的頂點快取記憶體識別分配給每一個接收到的頂點,這些頂點係由一源頭的VertexID和InstanceID所指定,例如從命令串流處理器到頂點著色器控制158。頂點著色器識別表160大
約每一週期從頂點著色器控制158接收一頂點,並且於一VertexID標籤隨機存取記憶體內(圖未顯示)執行VertexID和項目之間的完整集合相聯(fully set-associated)尋到/誤失比較,VertexID標籤隨機存取記憶體的大小可以是32K位元組,且每一個項目(Entry)可具有一寬度為32位元的VertexID。
如果發現一相合情況,相關的8位元頂點快取記憶體識別會被分配給頂點,並且頂點著色器識別表160內之頂點快取記憶體識別的參考計數會增加1。否則,當參考計數等於零的時候,頂點著色器識別表160內下個頂點快取記憶體識別的位置(根據頂點的大小,位置的數目可為1、2、3或4)會分配給頂點,並且起始的頂點快取記憶體識別將被儲存於VertexID標籤隨機存取記憶體內。VertexID標籤隨機存取記憶體的取代法則可以是先進先出,舉例來說。如果下個頂點快取記憶體識別位置的參考計數不等於零,頂點著色器識別表160將停止運作,並且停止從頂點著色器控制158接收頂點。
下個頂點快取記憶體識別之參考計數的查閱係藉著比較頂點著色器識別表160上的兩個指標來實現。一配置指標指向頂點著色器識別表160中下個要被失效的頂點快取記憶體識別。在尋到/誤失測試之後,分配到頂點的起始頂點快取記憶體識別回歸到頂點著色器控制158,其儲存頂點快取記憶體識別為針對於執行單元(藉由串流快取記憶體格式器156)和串流輸出索引緩衝器162的頂點項目。
頂點著色器識別表160可設計來包括256個項目。當頂點快取記憶體識別在VertexID標籤隨機存取記憶體內是尋到的情況時參考計數會增加,不然它會根據一誤失的情況而被分配。當幾何著色器基元建構器(第6圖)或串流輸出裝置166讀取頂點時參考計數會減少。頂點著色器識別表160可根據預先設定的額度分配一定數目的誤失頂點給一執行單元。舉例來說,假定每個執行單元有16個誤失的額度,則前16個誤失可被分配至執行單元0,下16個誤失可被分配至執行單元1等等。用來建構基元的索引也被送到執行單元,每一個基元跟隨其頂點並且移動到相同的執行單元。如果頂點儲存於一個以上的執行單元,這些基元將被分配至其中一個包含其最多頂點的執行單元。如果一誤失的頂點稍後被分配到不同執行單元的基元所尋到,頂點著色器識別表160將傳送一通知給包括此頂點的執行單元,並要求此執行單元提供資料給第二級資料快取記憶體172。因此,頂點著色器識別表160保有關於每一頂點快取記憶體識別分配到哪個執行單元的資訊,以及資料備妥旗標資訊。
第8圖顯示一紋理快取記憶體184之一實施例的方塊圖,其可代表第7圖中顯示的第二級紋理快取記憶體170。紋理快取記憶體184可設計來接收及儲存紋理資訊、常數和指令的串流。在此實施例中,紋理快取記憶體184包括執行單元輸入裝置186和188、串流快取記憶體190、要求合併裝置192和194、集合仲裁器196、第一尋到測試裝置
(集合0)198、第二尋到測試裝置(集合1)200、暫停要求裝置202、誤失要求表204、暫停要求裝置206、誤失要求表208、記憶體存取單元介面210、回歸資料緩衝器212、回歸要求控制214、讀/寫仲裁器216、第一區塊(區塊0)218、第二區塊(區塊1)220和輸出仲裁器222-0(GT)。
紋理快取記憶體184設計來以第二級快取記憶體的形式地運作,以讓執行單元集和紋理單元使用。紋理快取記憶體184包括對於頂點著色運算、幾何著色運算和畫素著色運算的常數和指令。紋理快取記憶體184也包括頂點串流資料、紋理資料以及被紋理單元所使用之暫存器的辨識號碼。
紋理快取記憶體184的儲存容量可以是64K到288K位元組,舉例來說。紋理快取記憶體184可包括256個2K位元的快取列,所以此快取列的尺寸是2048位元。其中每個快取列包括四個字元,所以每個快取列可分成四個512位元的字元,每個字元位於不同的區塊,並且26位元-512位元的位元[1:0]所選到的字元與其虛擬記憶體位址對齊。此快取記憶體也可是128路(way)的集合相聯,對快取記憶體的記憶體要求可以是512位元的字元要求。紋理快取記憶體184可建構成一個兩區塊之可讀取和可寫入的512x512快取記憶體,其總尺寸為64K位元組。快取記憶體中資料的替代機制可根據一虛擬最近最少使用算法(Pseudo Least Recently Used,PLRU),以每一週期每一集合一次尋到測試的條件下執行。快取
記憶體讀/寫吞吐量可以是每週期兩個512位元的讀取/寫入,以及一2x512位元的回歸資料緩衝器。
於運作中,紋理快取記憶體184可使用兩個區塊的儲存單元。為了於每個週期執行兩次的尋到測試,這256個快取列可被分成偶數和奇數區塊,每一偶數或奇數標籤可具有128個快取列,而且位址位元[2]可以被使用來區分偶數或奇數區塊。一巨型格子的實體大小可以是256個區塊。快取記憶體標籤可以是位址位元中的17個最重要的位元。紋理快取記憶體184可以是一第二級四路集合相聯快取記憶體,且此集合被512位元對齊位址的位元[8:3]所選擇。每一區塊可具有一1讀寫(1RW)的512位元埠,全部四個區塊可於每一週期提供四個讀/取存取。記憶體存取單元168的外部寫入可比要求裝置的讀/寫更具更高的優先順序。替代的方式可根據虛擬最近最少使用算法來執行。
位址可依照如下所述來決定:對於每一偶數或奇數區塊,集合位址等於512位元的對齊位址[8:3];對於每一快取列,快取記憶體位址為512位元的對齊位址[8:0]。
執行單元之一常數負載的指令可包括載入128/512位元資料,此資料個別對齊128/512位元的記憶體位址。對於載入指令,回歸的128位元資料可被複製成512位元,且當被寫入一執行單元共同暫存器檔案(圖未顯示)時被有效畫素/頂點遮罩和通道遮罩所遮罩。執行單元所有對於
指令和常數的讀取要求,以及紋理定址產生器的T#暫存器皆與512位元的記憶體位址對齊。
第一和第二尋到測試裝置198和200包括很多的測試階段以執行讀取或寫入動作的尋到測試。在第一階段中,執行了位址比較和要求合併。要求合併裝置192和194嘗試將一接收到的要求與此要求之最接近的前一個或後一個要求合併在一起,依此來達到改善效能的目的。合併的動作有兩個目的,第一就是減少尋到測試的流量。如果流量可以減少,不需要兩倍的尋到測試邏輯就可以維持巨型格子的效能。另一個目的是此要求位址傾向是一路線要求(course request),其提供一要求於此位址的鄰近位址。此合併動作一般於一快取列內執行,例如2048位元的快取列。為了於之後更順利地進行仲裁,要求合併裝置192和194在這些區塊彼此不衝突的時候可以進行合併。一項目其包括了一要求或合併要求,在尋到測試裝置198和200的認可下從要求合併裝置192和194送到集合仲裁器196。
關於尋到測試的第一階段,為了在單一個週期內執行兩次尋到測試,快取列可從256個區塊分成兩組128區塊。集合仲裁器196傳送尋到測試資訊至個別的尋到測試裝置198和200。第一尋到測試裝置198用於偶數區塊而第二尋到測試裝置200用於奇數區塊。集合仲裁器196可用循環的方式從執行單元輸入裝置186、188和串流快取記憶體190的輸入間發送要求。在仲裁之後,仲裁的要求進入一要求先進先出,其可深達四個或更多的項目,舉例來說。
在尋到測試的第二階段中確認了此要求是一尋到或誤失。因為每一個尋到測試裝置198和200只有一個要求,所以不需要使用到最近最少使用算法或其他複雜的機制。512位元對齊位址(集合位址)的位元[8:3]被當成一索引以查閱第二級快取標籤隨機存取記憶體的四個標籤。此位址最重要的17個位元與這四個標籤做比較以尋找一匹配。
如果第一尋到測試裝置198確認在第二級快取記憶體內是一尋到的情況,第一尋到測試裝置198傳送列位址至暫停要求表206,並伴隨著附屬於尋到測試項目的字元選擇、偏移、回歸目的識別以及多達四個的要求之位址一起傳送。如果第一尋到測試裝置198確認在第二級快取記憶體內是一誤失或誤失尋到(hit-on-miss)的情況,第一尋到測試裝置198將列位址和其他要求資訊寫入誤失要求表208內。
在一些實施例中,尋到測試裝置198和200包括特定的元件以執行尋到/誤失測試。舉例來說,這些裝置可包括一執行標籤尋到測試和標籤更新的TAG_COL、一藉著使用虛擬最近最少使用演算法來找尋下個可使用之快取列的LRU_TABLE,以及一保持每個快取列狀態的LOCK_TABLE。對於LOCK_TABLE而言,當資料從記憶體存取單元介面210回來的時候,使用了一有效的項目(An entry of valid)。如果不是誤失要求表204和208中的所有要求都被清除時,則使用一鎖定項目(An entry of locked)。另外,使用一已使用項目(An entry of dirty)來表示此快
取列已被執行單元的輸出所寫入。如果有一堵塞情況,可停止管線的運作並且可將循到結果先寫入一兩項目的尋到結果先進先出。
在第三階段的尋到測試中執行了讀/寫的仲裁。誤失要求表204和208的讀取要求被回歸要求控制裝置214所控制。記憶體存取單元介面210的寫入要求被送到回歸資料緩衝器212。寫入要求被讀/寫仲裁器216所仲裁,並且這些要求被送到第二級隨機存取記憶體,其包括第一區塊218和第二區塊220。如果不同來源的要求皆於同一週期送到同一個區塊,記憶體存取單元介面210的寫入會取得最高的優先權。在這些寫入之後,接著處理誤失要求表204和208的誤失結果,而尋到測試結果則於最後處理。優先順序可包括一循環的機制。為了將吞吐量最大化,同一來源之要求的優先順序是可被打亂的,只要讀/寫仲裁器216傳送它們至不同的區塊218和220。
要最佳使用巨型格子的頻寬,控制邏輯將會試著於單一週期內將要求填入區塊內。舉例來說,執行單元匯流排通道0可具有可用的區塊0和1、執行單元匯流排通道1可具有可用的區塊2和3、誤失要求暫停可具有可用的區塊2,以及記憶體存取單元可具有可用的區塊1。此週期內最後的要求包括選擇記憶體存取單元介面210來填補區塊1、選擇誤失要求暫停來填補區塊2、選擇執行單元匯流排通道0(186)來填補區塊0以及選擇執行單元匯流排通道1(188)來填補區塊3。
在尋到測試的第四階段執行了輸出的仲裁。巨型格子的讀取資料被放入每一區塊中單一項目或兩個項目的資料先進先出。紋理快取記憶體184一般無法停止回歸資料,對其之輸出將會立刻被送出。傳送到執行單元和紋理單元的回歸資料可能會經歷囤積的情況。
再次參照第6圖和第7圖,第一級資料快取記憶體可設計來包含一標籤表和一資料段。每一快取列中可具有四個512位元(或2048位元),其中快取列的總數是512。單一快取列內四個512位元的項目共用相同的標籤。除了標籤位址,還有四個一位元的狀態位元以區分快取列的狀態。對於一有效狀態,代表快取列係被分配且標籤位址是有效的。此狀態在重新開機後可被清除,而任何的配置動作將會設定此位元。
對於一已使用的狀態,表示此快取列已經被資料所寫入,但不包括記憶體存取單元介面210的記憶體存取資料。如果要進行此快取列的任何取代動作,則這些資料將寫入到記憶體。配置每一快取列後,其可被清除或失效。如果進行任何寫入動作的話其可被設定,除了記憶體存取單元的寫入動作。
當此狀態就緒的時候,會分配快取列並且設定記憶體存取單元的讀取要求。一備妥位元將於分配快取列之後被清除,並且於將於記憶體存取單元的資料送達之後被設定,這將避免更進一步的誤失尋到情況。
對於一鎖定的狀態,就此快取列來說,在誤失要求表
204和208中可以有超過一個的項目,其係誤失或誤失尋到的情況。此鎖定將於快取記憶體分配後被設定,此位元將會被清除如果屬於此快取列的所有項目都從誤失要求表204和208中移除的話。它將允許此快取記憶體被分配以進行取代。
再次參照第8圖,如果於第二級快取記憶體中有一讀取誤失或誤失尋到,則對誤失要求表204和208做搜尋的動作。選擇一項目來儲存快取列位址以及此要求的其他資訊(回歸目的單元識別、項目類型、執行緒識別、公用暫存器檔案索引、任務順序識別等)。記憶體存取單元介面210的資料傳送到快取記憶體內的一快取列號碼。因為有兩個表,每個表可包含128列。區塊有效信號指定哪個項目是有效的。
如果第二級快取記憶體內有一寫入誤失,則對誤失要求表204和208做搜尋的動作,並且選擇一可用的項目儲存於快取列位址。快取列將如讀取誤失般地分配,並且寫入資料可直接寫入快取記憶體內。為了不要覆寫快取列中的現有資料,故保有一寫入遮罩緩衝器以暫停由寫入誤失所引起的誤失要求。當資料從記憶體存取單元介面210送回的時候,讀/寫仲裁器216將檢查寫入遮罩,並且更新至對應的快取列。
在一快取記憶體誤失之上,一個針對記憶體存取單元介面210的讀取要求係送到誤失要求表204和208。有兩個要求表連接到每一尋到測試單元198和200,每一個要
求表包括多達32個的暫停讀取要求項目。對於讀取要求,回歸第二級快取列位址(9位元)與虛擬記憶體位址一起傳送,並且於稍後當資料從記憶體存取單元介面210回來時,可用來於誤失要求表中搜尋要求項目。每一讀取要求預計可取回一快取列(2048位元或4x512位元)。
暫停要求先進先出(pending request FIFO)202和206大致具有與誤失要求表204和208相同的大小。誤失要求表204和208中的項目在資料從記憶體存取單元介面210回來前通常不會被清除。因此可忽略此先進先出的整體情況,因為如果適當管理誤失要求表204和208的話其是不會被覆寫的。
可使用4x512位元之4R1W記憶體,將回歸要求控制裝置214建構成一資料緩衝器。為了得到存取巨型格子的最高效率,回歸要求控制裝置214將屬於一快取記憶體位址的四個連續群組的資料分組。一旦所有四組資料群組都準備妥當,回歸要求控制裝置214將這些資料傳送給讀/寫仲裁器216以回寫資料。回歸要求控制裝置214設計來確保從記憶體存取單元介面210來的資料不會與指定給一個不同快取記憶體位址的資料混合。也就是說,屬於相同讀取要求(一個讀取要求和四個資料回歸)的資料會分成同一組。當讀/寫仲裁器216收到資料時,它可檢查寫入遮罩緩衝器中的寫入遮罩資訊。同樣地,它也可以產生一項目於一回歸要求佇列中以通知誤失要求表204和208快取列已經備妥。當此快取列於備妥時,讀/寫仲裁器216通知
快取記憶體標籤以防止另外的誤失尋到測試結果。
回歸要求控制裝置214可包括一64個項目的回歸要求佇列,其包括9位元的快取列位址。當一個資料項目從回歸資料緩衝器212讀取出來,被並且送到快取隨機存取記憶體時,會新增一個新的項目到回歸要求佇列以儲存新的快取列位址。回歸要求控制裝置214從底部讀取第一個佇列項目,並且使用快取列位址於誤失要求表204和208中搜尋一個匹配。每一週期處理一個匹配的項目,並且把此要求送到讀/寫仲裁器216。此要求的優先順序可比回歸資料緩衝器212的寫入要求更低,但比尋到測試單元198和200的要求更高,在讀/寫仲裁器216藉此要求允許這些區塊對快取隨機存取記憶體的讀取之後,此項目被釋放出來且標記成無效。
對於列位址的一既定區塊而言,在誤失要求表204和208中所有的匹配項目都處理之後,回歸要求控制裝置214的回歸要求佇列內的項目會移除掉。在這期間,將傳送一信號到快取記憶體標籤表以解鎖快取記憶體標籤中的此快取列。
紋理快取記憶體184也可執行一連續檢查運算。由於採用了寫入能力,此快取列可以是已使用的,如果分配新的誤失列的話。輸出仲裁器222將此已使用的列移動到一寫入緩衝器(圖未顯示),並且等待記憶體介面讀取此列。舉例來說,假設一快取列於某一快取列位置的實體位址為A,並且假設此快取列已使用過,輸出仲裁器222可嘗試
以一新的誤失快取記憶體位址取代此使用過的快取列。讀取巨型格子已使用的資料、傳送這些資料至寫入緩衝器以及允許記憶體介面讀取這些資料等動作的執行可能要上花幾個週期。如果有一關於位址A的要求於其間傳送進來,輸出仲裁器222可於已使用資料送達之前傳送這些資料至記憶體介面,因為回讀的資料可能是不正確的。
要維持資料的連續性,在每一個尋到測試裝置198和200中皆有計數器。每次執行已使用替換(dirty replacement)的動作時計數器增加。誤失讀取要求和已使用快取列替換等動作皆假定(assume)此計數器的值。在執行單元集之記憶體介面單元的第二級快取記憶體中,第二級快取記憶體保留一個位置來儲存計數器的值。第二級快取記憶體中的複製可從寫入要求更新。紋理快取記憶體184可供那些讀取要求所使用,如果這些讀取要求的計數值與目前記憶體介面中所保有的值相等的話。
執行單元集的資料快取記憶體以第二級快取記憶體的形式供執行單元使用。它設計來容納多出的輸入、輸出和臨時陣列暫存器的資料,這些資料係屬於頂點著色器、幾何著色器和畫素著色器的資料。它亦容納頂點屬性緩衝器(圖未顯示)多出的內容。舉例來說,快取隨機存取記憶體的大小可以是32K位元組,並且包括128個2K位元的快取列,其中每一快取列有四個字元並且為全相聯的形式。記憶體要求以字元的形式接收,每一字元為512位元。此快取記憶體架構是1讀寫256X512位元,以及每週期一
個讀取或寫入測試。讀/寫吞吐量可以是一每週期512位元的讀/寫,並且回歸資料緩衝器可以是2X512位元。
第二級資料快取記憶體的功能描述包含使用兩個區塊的1讀寫512X512位元之記憶體,並且總大小是32K位元組。紋理快取記憶體184可具有256個快取列,每個快取列是2048位元。此快取列可分成四個512位元的字元,每一個字元在不同的區塊上,而且以字元的位元[1:0]來選擇動作,此字元係對齊虛擬記憶體位址。替代機制可根據最近最少使用算法。
關於針對紋理快取記憶體184的載入和儲存,執行單元載入/儲存指令LD4/8/16/64可載入128/512位元的資料,LD4/8/16/64分別與32/64/128/512位元的記憶體位址對齊。對於載入指令,回歸的32/64/128位元的資料被複製成512位元,並且當它被寫入執行單元共同暫存器檔案時被有效的畫素-頂點遮罩和通道遮罩所遮罩。其他所有針對多出暫存器的讀取要求以及執行單元的VAB內容係對齊至512位元的記憶體位址。
本發明所述的統一快取記憶體系統可以硬體、軟體、韌體或其組合等方式實現。在所揭露的實施例中,部分以軟體或韌體實現的統一著色和執行單元可儲存於記憶體之中,並且可以適當的指令執行單元執行。部分以硬體實現的統一著色和執行單元,可以任何具有邏輯閘、應用特殊整合電路(Application Specific Integrated Circuit,ASIC)、一可程式閘陣列(Programmable Gate Array,PGA)、場
可程式閘陣列(Field Programmable Gate Array,FPGA)等等之離散邏輯電路,或上述任何組合之離散邏輯電路所實現。。
第9圖顯示用於處理繪圖資料之一方法224的一實施例的流程圖。根據本發明,如方塊圖226所示,方法224包括分析眾多著色器的活動。著色器單元可包括頂點著色器、幾何著色器和畫素著色器等的任何組合。同樣地,著色器單元也可形成於統一著色器中,或建構於執行單元中。方塊圖226中所分析的活動可以是處理級別或處理數量,其可以是正在處理中的影像或場景的要素。
在方塊228中,著色單元的資料儲存需求係根據著色單元的個別活動級別來決定。關於資料的儲存,舉例來說,資料可儲存於快取記憶體中,其可為單一快取記憶體元件,於每一階段的著色器處理提供儲功能。此快取記憶體可供應資料給著色器單元,以及(或)接收著色器單元所處理的資料。此儲存需求可以每一著色器單元之處理活動的百分比表示。
在方塊230中,方法224更包括根據資料儲存需求動態地分配部分的快取記憶體資源。此配置處理可包括分配到每一特定著色器單元之快取記憶體的一個部分或一個百分比。此快取記憶體可以是用來提供資料給個別著色器單元的快取記憶體的部分,以及(或)用來接收個別著色器單元之資料的快取記憶體的部分。方塊230可另外包括將快取記憶體分割成分離的可定址部分並且依需求分配,當
物件或場景改變的時候也可依需求改變或調整快取的配置。
在此所描述之統一快取記憶體系統的功能可包括一用來實現邏輯功能的可執行指令之順序列表。這些可執行指令可被嵌入於任何電腦可讀取的媒體以讓一指令執行系統、機械或裝置使用,像是一基於電腦的系統、處理器控制的系統或其他系統。一電腦可讀取媒體可以是能容納、儲存、通訊、傳播程式以讓指令執行系統、機械或裝置所使用的任何媒體。舉例來說,此電腦可讀取媒體可以是一電子、磁力、光學、電磁、紅外線或半體導的系統、機械、裝置或傳播媒體。
本發明雖以較佳實施例揭露如上,然其並非用以限定本發明的範圍,任何熟習此項技藝者,在不脫離本發明之精神和範圍內,當可做些許的更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
12‧‧‧運算系統
14‧‧‧繪圖軟體模組
16‧‧‧顯示裝置
18‧‧‧繪圖處理單元
20‧‧‧應用程式介面
22‧‧‧軟體應用程式
24‧‧‧繪圖處理管線
26、102、108、122、154‧‧‧快取記憶體系統
28‧‧‧匯流排介面
30‧‧‧頂點著色器
32‧‧‧幾何著色器
34‧‧‧光柵化器
36‧‧‧畫素著色器
40‧‧‧頂點串流快取記憶體
42‧‧‧第一級快取記憶體
44、90、146‧‧‧第二級快取記憶體
46‧‧‧Z快取記憶體
48、184‧‧‧紋理快取記憶體
50‧‧‧統一著色器單元
52、56、82‧‧‧執行單元
54、60、92‧‧‧快取記憶體/控制裝置
58‧‧‧紋理單元
62‧‧‧唯讀快取記憶體
64‧‧‧資料快取記憶體
66‧‧‧頂點著色器控制裝置
68‧‧‧光柵介面
70、100‧‧‧命令串流處理器
72、96‧‧‧記憶體存取單元
74‧‧‧光柵裝置
76、86、182‧‧‧回寫單元
78‧‧‧包裝器
80‧‧‧輸入閂
84‧‧‧輸出閂
88‧‧‧紋理定址產生器
94、150‧‧‧記憶體介面
98、152‧‧‧三角設定單元
104‧‧‧儲存裝置控制器
106‧‧‧資料儲存裝置
110‧‧‧要求接收器
112‧‧‧控制裝置
114‧‧‧資料接收器
116‧‧‧資料發送器
118‧‧‧資料介面
120‧‧‧儲存單元
124‧‧‧頂點資料串流快取記憶體
126‧‧‧垂直水平轉換器
128‧‧‧第一級頂點快取記憶體
130‧‧‧頂點著色器前端
132‧‧‧頂點著色器識別表
134‧‧‧幾何著色器識別表
136‧‧‧幾何著色器基元建構器
138‧‧‧串流輸出裝置
140‧‧‧串流輸出索引緩衝器
142‧‧‧幾何著色器前端
144‧‧‧串流輸出前端
148、174‧‧‧常數載入器
156‧‧‧串流快取記憶體格式器
158‧‧‧頂點著色器控制
160‧‧‧頂點著色器識別表
162‧‧‧串流輸出索引緩衝器
164‧‧‧串流輸出暫存器控制裝置
166‧‧‧串流輸出裝置
168‧‧‧記憶體存取單元
170‧‧‧第二級紋理快取記憶體
172‧‧‧第二級資料快取記憶體
176‧‧‧光柵方塊
178‧‧‧小區塊遮罩
180‧‧‧畫素著色器控制裝置
186、188‧‧‧執行單元輸入裝置
190‧‧‧串流快取記憶體
192、194‧‧‧要求合併裝置
196‧‧‧集合仲裁器
198‧‧‧第一尋到測試裝置
200‧‧‧第二尋到測試裝置
202、206‧‧‧暫停要求裝置
204、208‧‧‧誤失要求表
210‧‧‧記憶體存取單元介面
212‧‧‧回歸資料緩衝器
214‧‧‧回歸要求控制裝置
216‧‧‧讀/寫仲裁器
218‧‧‧第一區塊
220‧‧‧第二區塊
222‧‧‧輸出仲裁器
226、228、230‧‧‧方塊
透過以下的圖示可更了解本發明所揭露之所有實施例的各個觀點。同一個標號於全文代表同一個元件。
第1圖顯示根據本發眀之一實施例的一繪圖處理系統的方塊圖;第2圖顯示第1圖中所示之繪圖處理單元之一實施例的方塊圖;第3A圖顯示第1圖中所示之繪圖處理單元之另一實施例的方塊圖;
第3B圖顯示第1圖中所示之繪圖處理單元之另一實施例的方塊圖;第3C圖還是顯示第1圖中所示之繪圖處理單元之另一實施例的方塊圖;第4圖顯示根據本發眀之教述的一快取記憶體系統的一實施例的方塊圖;第5圖顯示根據本發眀之教述的一快取記憶體系統的另一實施例的方塊圖;第6圖還是顯示根據本發明之教述的一快取記憶體系統的另一實施例的方塊圖;第7圖還是顯示根據本發眀之教述的一快取記憶體系統的另一實施例的方塊圖;第8圖顯示第6和7圖中所示之第二級快取記憶體的一實施例的方塊圖;第9圖顯示說明用來管理一繪圖處理器之一快取記憶體系統的一方法的一實施例的流程圖。
102‧‧‧快取記憶體系統
104‧‧‧儲存裝置控制器
106‧‧‧資料儲存裝置
Claims (19)
- 一種繪圖處理系統,包括:一處理管線,具有複數個繪圖著色器階段,上述處理管線的每一繪圖著色階段用以執行一或多個著色運算;以及一統一快取記憶體系統,耦接至上述處理管線,上述統一快取記憶體系統包括複數個儲存單元,每一儲存單元用以儲存關於上述處理管線之上述繪圖著色器階段的資料,其中上述統一快取記憶體系統包括一控制裝置,用以管理與上述繪圖著色器階段的要求以及上述快取記憶體系統的上述儲存單元的可用性有關之上述資料的分配,其中上述控制裝置係根據上述繪圖著色器階段的一活動以動態地調整上述儲存單元中上述資料的分配之儲存配置。
- 如申請專利範圍第1項所述之繪圖處理系統,其中上述處理管線係嵌入於一執行單元中。
- 如申請專利範圍第2項所述之繪圖處理系統,其中上述執行單元包括一頂點著色器階段、一幾何著色器階段和一畫素著色器階段。
- 如申請專利範圍第1項所述之繪圖處理系統,其中上述統一快取記憶體系統更包括一尋到測試裝置,用以對接收到的頂點資料執行一尋到/誤失測試。
- 如申請專利範圍第4項所述之繪圖處理系統,其中上述尋到測試裝置包括一頂點著色器識別表。
- 如申請專利範圍第5項所述之繪圖處理系統,其中上述頂點著色器識別表用以儲存多達256個頂點的相關資訊。
- 一種快取記憶體系統,適用於一繪圖處理系統,包括:一資料儲存裝置,用來儲存被或將被一或多個著色器單元所處理的繪圖資料;以及一儲存裝置控制器,耦接到上述資料儲存裝置,上述儲存裝置控制器用以動態地控制上述繪圖資料於上述資料儲存裝置內的儲存配置,其中該儲存裝置控制器係依據該一或多個著色器單元之一活動級別以動態地控制上述儲存配置。
- 如申請專利範圍第7項所述之快取記憶體系統,其中上述儲存裝置控制器包括一頂點著色器識別表。
- 如申請專利範圍第8項所述之快取記憶體系統,其中上述儲存裝置控制器更包括一幾何著色器識別表。
- 如申請專利範圍第9項所述之快取記憶體系統,其中上述儲存裝置控制器包括一第一級頂點快取記憶體,上述第一級頂點快取記憶體係耦接到上述頂點著色器識別表和上述幾何著色器識別表。
- 如申請專利範圍第7項所述之快取記憶體系統,其中上述一或多個著色器單元係嵌入於一統一著色器單元內。
- 如申請專利範圍第7項所述之快取記憶體系統, 其中上述儲存裝置控制器包括一第二級紋理快取記憶體,用來執行一尋到/誤失測試。
- 如申請專利範圍第12項所述之快取記憶體系統,其中上述第二級紋理快取記憶體於二或多個快取列集合內大致同時地執行平行尋到/誤失測試。
- 一種資料處理方法,適用於處理一繪圖處理裝置內的資料,包括:分析複數個繪圖處理著色器的一活動級別;根據每一繪圖處理著色器所對應之上述活動級別決定上述繪圖處理著色器的資料儲存需求;以及根據每一繪圖處理著色器的資料儲存需求分配部分的記憶裝置。
- 如申請專利範圍第14項所述之資料處理方法,其中上述活動級別根據目前正被處理的一目前影像或場景對應至一處理需求級別。
- 如申請專利範圍第14項所述之資料處理方法,更包括:提供具有一既定數目之複數個儲存單位之上述記憶裝置,上述儲存單位具有一既定大小,其中上述記憶裝置之分配更包括分配上述儲存單位之一第一數目給一第一繪圖處理著色器,並且分配上述儲存單位的一第二數目給一第二繪圖處理著色器。
- 如申請專利範圍第14項所述之資料處理方法,其中上述記憶體裝置係一第一級快取記憶體,用以提供資料 給每一繪圖處理著色器,以及從每一繪圖處理著色器接收資料。
- 如申請專利範圍第14項所述之資料處理方法,其中上述活動級別的分析更包括分析每一繪圖處理著色器的活動級別對於上述繪圖處理著色器的總活動級別之一百分比。
- 如申請專利範圍第14項所述之資料處理方法,更包括執行一尋到/誤失測試。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/019,845 US9214007B2 (en) | 2008-01-25 | 2008-01-25 | Graphics processor having unified cache system |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200933522A TW200933522A (en) | 2009-08-01 |
TWI474279B true TWI474279B (zh) | 2015-02-21 |
Family
ID=40477514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW97118073A TWI474279B (zh) | 2008-01-25 | 2008-05-16 | 繪圖處理系統、快取系統以及資料處理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9214007B2 (zh) |
CN (1) | CN101388109B (zh) |
TW (1) | TWI474279B (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8619087B2 (en) * | 2009-10-06 | 2013-12-31 | Nvidia Corporation | Inter-shader attribute buffer optimization |
TWI474280B (zh) * | 2010-04-21 | 2015-02-21 | Via Tech Inc | 增進繪圖處理單元之總處理量的方法與系統 |
US8681162B2 (en) * | 2010-10-15 | 2014-03-25 | Via Technologies, Inc. | Systems and methods for video processing |
GB201103699D0 (en) | 2011-03-03 | 2011-04-20 | Advanced Risc Mach Ltd | Graphic processing |
GB201103698D0 (en) * | 2011-03-03 | 2011-04-20 | Advanced Risc Mach Ltd | Graphics processing |
US9928179B2 (en) | 2011-12-16 | 2018-03-27 | Intel Corporation | Cache replacement policy |
TWI585583B (zh) * | 2011-12-19 | 2017-06-01 | 英特爾股份有限公司 | 快取更換策略 |
US9214008B2 (en) * | 2013-01-18 | 2015-12-15 | Nvidia Corporation | Shader program attribute storage |
US9299123B2 (en) * | 2013-01-22 | 2016-03-29 | Qualcomm Incorporated | Indexed streamout buffers for graphics processing |
US9324128B2 (en) * | 2013-03-14 | 2016-04-26 | Intel Corporation | Techniques for improving rendering efficiency |
US10096079B2 (en) * | 2013-06-10 | 2018-10-09 | Sony Interactive Entertainment Inc. | Fragment shaders perform vertex shader computations |
CN103677828B (zh) * | 2013-12-10 | 2017-02-22 | 华为技术有限公司 | 一种图层绘制方法、绘图引擎及终端设备 |
US9430394B2 (en) * | 2013-12-12 | 2016-08-30 | Mediatek Singapore Pte. Ltd. | Storage system having data storage lines with different data storage line sizes |
US9842428B2 (en) * | 2014-06-27 | 2017-12-12 | Samsung Electronics Co., Ltd. | Dynamically optimized deferred rendering pipeline |
KR102263326B1 (ko) * | 2014-09-18 | 2021-06-09 | 삼성전자주식회사 | 그래픽 프로세싱 유닛 및 이를 이용한 그래픽 데이터 처리 방법 |
GB2536964B (en) * | 2015-04-02 | 2019-12-25 | Ge Aviat Systems Ltd | Avionics display system |
CN105243685B (zh) * | 2015-11-17 | 2018-01-02 | 上海兆芯集成电路有限公司 | 数据单元的关联性检查方法以及使用该方法的装置 |
CN105427368B (zh) * | 2015-11-17 | 2018-03-20 | 上海兆芯集成电路有限公司 | 数据单元的关联性检查方法以及使用该方法的装置 |
CN105550443B (zh) * | 2015-12-11 | 2019-05-28 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于SystemC周期精确的统一染色器阵列TLM模型 |
GB2543866B (en) | 2016-03-07 | 2017-11-01 | Imagination Tech Ltd | Task assembly for SIMD processing |
GB2555929B (en) * | 2016-03-07 | 2018-11-28 | Imagination Tech Ltd | Task assembly |
US10489947B2 (en) * | 2016-03-09 | 2019-11-26 | Htc Corporation | Mobile device, application display method, and non-transitory computer readable storage medium |
US10535178B2 (en) * | 2016-12-22 | 2020-01-14 | Advanced Micro Devices, Inc. | Shader writes to compressed resources |
US10353591B2 (en) * | 2017-02-24 | 2019-07-16 | Advanced Micro Devices, Inc. | Fused shader programs |
CN108804219B (zh) | 2017-04-28 | 2024-01-12 | 超威半导体公司 | 多计算核中的灵活着色器导出设计 |
US10679317B2 (en) * | 2018-07-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Techniques for displaying a shader table associated with raytracing images |
CN109538189B (zh) * | 2018-09-27 | 2022-05-20 | 核工业北京地质研究院 | 基于超声成像测井数据采集过程中图像实时显示的方法 |
US11119922B1 (en) * | 2020-02-21 | 2021-09-14 | Nxp Usa, Inc. | Data processing system implemented having a distributed cache |
US11720499B2 (en) * | 2020-12-28 | 2023-08-08 | Advanced Micro Devices, Inc. | Selective generation of miss requests for cache lines |
CN113345067B (zh) * | 2021-06-25 | 2023-03-31 | 深圳中微电科技有限公司 | 一种统一渲染方法、装置、设备和引擎 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6597363B1 (en) * | 1998-08-20 | 2003-07-22 | Apple Computer, Inc. | Graphics processor with deferred shading |
US6665767B1 (en) * | 1999-07-15 | 2003-12-16 | Texas Instruments Incorporated | Programmer initiated cache block operations |
US20040196281A1 (en) * | 2003-04-04 | 2004-10-07 | Hsilin Huang | Head/data request in 3D graphics |
US20050091616A1 (en) * | 2003-09-18 | 2005-04-28 | Microsoft Corporation | Software-implemented transform and lighting module and pipeline for graphics rendering on embedded platforms using a fixed-point normalized homogenous coordinate system |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9011743D0 (en) | 1990-05-25 | 1990-07-18 | Plessey Telecomm | Data element switch |
US7454599B2 (en) | 2005-09-19 | 2008-11-18 | Via Technologies, Inc. | Selecting multiple threads for substantially concurrent processing |
US20070091088A1 (en) | 2005-10-14 | 2007-04-26 | Via Technologies, Inc. | System and method for managing the computation of graphics shading operations |
CN1928918B (zh) | 2005-10-14 | 2012-10-10 | 威盛电子股份有限公司 | 图形处理装置及于图形处理装置中执行着色操作的方法 |
US7468726B1 (en) * | 2005-12-01 | 2008-12-23 | Nvidia Corporation | Culling in a vertex processing unit |
US7692660B2 (en) | 2006-06-28 | 2010-04-06 | Microsoft Corporation | Guided performance optimization for graphics pipeline state management |
-
2008
- 2008-01-25 US US12/019,845 patent/US9214007B2/en active Active
- 2008-05-16 TW TW97118073A patent/TWI474279B/zh active
- 2008-11-03 CN CN2008101704162A patent/CN101388109B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6597363B1 (en) * | 1998-08-20 | 2003-07-22 | Apple Computer, Inc. | Graphics processor with deferred shading |
US6665767B1 (en) * | 1999-07-15 | 2003-12-16 | Texas Instruments Incorporated | Programmer initiated cache block operations |
US20040196281A1 (en) * | 2003-04-04 | 2004-10-07 | Hsilin Huang | Head/data request in 3D graphics |
US20050091616A1 (en) * | 2003-09-18 | 2005-04-28 | Microsoft Corporation | Software-implemented transform and lighting module and pipeline for graphics rendering on embedded platforms using a fixed-point normalized homogenous coordinate system |
Also Published As
Publication number | Publication date |
---|---|
CN101388109B (zh) | 2011-10-19 |
CN101388109A (zh) | 2009-03-18 |
TW200933522A (en) | 2009-08-01 |
US20090189909A1 (en) | 2009-07-30 |
US9214007B2 (en) | 2015-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI474279B (zh) | 繪圖處理系統、快取系統以及資料處理方法 | |
CN110827384B (zh) | 用于对数据路径调度的高速缓存请求进行高效分组的方法 | |
US11790595B2 (en) | Method for handling of out-of-order opaque and alpha ray/primitive intersections | |
JP5740704B2 (ja) | レイトレース・レンダリングのための並列化された交差テストおよびシェーディングのアーキテクチャ | |
US10867429B2 (en) | Query-specific behavioral modification of tree traversal | |
US20100123717A1 (en) | Dynamic Scheduling in a Graphics Processor | |
US10235338B2 (en) | Short stack traversal of tree data structures | |
US20090189896A1 (en) | Graphics Processor having Unified Shader Unit | |
US10242485B2 (en) | Beam tracing | |
JP3889195B2 (ja) | 画像処理装置、画像処理システムおよび画像処理方法 | |
US8174534B2 (en) | Shader processing systems and methods | |
US10217183B2 (en) | System, method, and computer program product for simultaneous execution of compute and graphics workloads | |
CN109643461B (zh) | 用于在光线追踪架构内对多个连续光线-表面相交点进行正确排序和枚举的方法和设备 | |
US8760460B1 (en) | Hardware-managed virtual buffers using a shared memory for load distribution | |
US20050219253A1 (en) | Render-cache controller for multithreading, multi-core graphics processor | |
CN108475441B (zh) | 光线追踪期间的详细级别选择 | |
US10810784B1 (en) | Techniques for preloading textures in rendering graphics | |
CN113822788B (zh) | 光线追踪硬件中对资源的早期释放 | |
CN113450445A (zh) | 临时密实渲染的自适应像素采样顺序 | |
US9916680B2 (en) | Low-power processing in depth read-only operating regimes | |
Kim et al. | T-ReX: Interactive global illumination of massive models on heterogeneous computing resources | |
CN113835753A (zh) | 用于在纹理处理管线中执行加速的点采样的技术 | |
US12124378B1 (en) | Method for efficient grouping of cache requests for datapath scheduling |