TW201439770A - 透過貼圖硬體執行記憶體存取操作之技術 - Google Patents

透過貼圖硬體執行記憶體存取操作之技術 Download PDF

Info

Publication number
TW201439770A
TW201439770A TW102145928A TW102145928A TW201439770A TW 201439770 A TW201439770 A TW 201439770A TW 102145928 A TW102145928 A TW 102145928A TW 102145928 A TW102145928 A TW 102145928A TW 201439770 A TW201439770 A TW 201439770A
Authority
TW
Taiwan
Prior art keywords
data
unit
memory
thread
texture
Prior art date
Application number
TW102145928A
Other languages
English (en)
Inventor
Brian Fahs
Eric T Anderson
Nick Barrow-Williams
Shirish Gadre
Joel James Mccormack
Bryon S Nordquist
Nirmal Raj Saxena
Lacky V Shah
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of TW201439770A publication Critical patent/TW201439770A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本發明揭示一種貼圖處理管線,其可構成服務代表貼圖資料存取操作或通用資料存取操作的記憶體存取要求。當該貼圖處理管線接收代表一貼圖資料存取操作的記憶體存取要求,則該貼圖處理管線可根據貼圖座標取得貼圖資料。當該記憶體存取要求代表一通用資料存取操作時,該貼圖管線從該記憶體存取要求擷取一虛擬位址,然後根據該虛擬位址取得資料。該貼圖處理管線也構成快取代表一群組執行緒取得的通用資料,然後在該群組執行緒離開時讓通用資料失效。

Description

透過貼圖硬體執行記憶體存取操作之技術
本發明通常有關記憶體存取操作,更具體地,有關透過貼圖硬體執行記憶體存取操作之技術。
一習知圖形處理單元(GPU,Graphics Processing Unit)包括貼圖硬體處理硬體,構成執行許多貼圖相關操作,包括貼圖載入操作及貼圖快取操作。一圖形程式設計師可產生著色器程式,其運用此貼圖處理硬體以著色三維圖形場景。
近年來,程式設計師已經開始設計著色器程式,其運用該圖形處理單元的平行處理架構,執行任意、非圖形導向操作。不過,在貼圖處理硬體的架構之下,這些記憶體存取操作必須小心設計類似於貼圖處理操作。例如:典型貼圖存取操作根據有關該貼圖的二維(2D,Two-Dimensional)座標與尺寸,從記憶體當中讀取貼圖資料。為了產生可載入非貼圖資料的著色器程式,程式設計師必須將所有資料元件明確宣告成具有2D座標與尺寸,反映出類似於貼圖的2D資料結構,而與有關該資料的實際尺寸無關。
上述方式有問題,因為建立執行任意計算的著色器程式需要對於貼圖處理操作有廣泛的知識,並且許多想要運用圖形處理單元的平行處理架構之程式設計師缺乏這種知識。這些需求對於許多程式設計師的入門樹立了可觀的障礙。
此問題的一種解決方案為除了現有的貼圖處理硬體以外,建立一般記憶體存取操作的個別資料通道。運用此方式,想要使用任意非貼圖資料執行處理操作的程式設計師,只要簡單撰寫依賴此個別通道的程式即可。不過,此方式有問題,因為習知圖形處理單元就是缺少整合額外資 料通道所需的空間,並且增加該圖形處理單元大小所費不貲。
因此,業界需要一種透過貼圖處理硬體執行一般資料存取操作的更有效率技術。
一種用於執行一資料存取操作之電腦實施方法,包括:從該執行緒群組內的一執行緒接收一記憶體存取要求;決定有關該記憶體存取要求的一資料部分是否不存在一快取記憶體單元;從全域記憶體取得有關該記憶體存取要求的該資料部分;在執行該執行緒群組內的該等執行緒期間,儲存該快取記憶體單元內的該資料部分;及在決定該執行緒群組內的每一執行緒已經在該處理單元上完成執行時,從該快取記憶體單元當中清除該資料部分。
所揭示技術之一優點在於,該貼圖處理硬體可快取於該執行緒群組的持續期間針對執行緒群組取得之通用資料,藉此有效運用該貼圖硬體內的快取資源。
100‧‧‧電腦系統
102‧‧‧中央處理單元
103‧‧‧裝置驅動程式
104‧‧‧系統記憶體
105‧‧‧記憶體橋接器
106‧‧‧通訊路徑
107‧‧‧輸入/輸出橋接器
108‧‧‧使用者輸入裝置
110‧‧‧顯示裝置
112‧‧‧平行處理子系統
113‧‧‧第二通訊路徑
114‧‧‧系統磁碟
116‧‧‧開關
118‧‧‧網路配接器
120-121‧‧‧外接卡
202‧‧‧平行處理單元
204‧‧‧平行處理記憶體
205‧‧‧輸入/輸出橋接器
206‧‧‧主介面
207‧‧‧任務/工作單元
208‧‧‧一般處理叢集
210‧‧‧記憶體交換開關單元
212‧‧‧前端
214‧‧‧記憶體介面
215‧‧‧劃分單元
220‧‧‧動態隨機存取記憶體
230‧‧‧處理叢集陣列
300‧‧‧任務管理單元
302‧‧‧執行單元
303‧‧‧載入儲存單元
304‧‧‧本機暫存檔
305‧‧‧管線管理員
306‧‧‧共用記憶體
310‧‧‧串流多重處理器
312‧‧‧線程束排程器與指令單元
315‧‧‧貼圖單元
320‧‧‧L1快取
321‧‧‧排程器表
322‧‧‧任務中繼資料
325‧‧‧preROP
328‧‧‧記憶體管理單元
330‧‧‧工作分配交換開關
335‧‧‧第一點五層快取
340‧‧‧工作分配單元
345‧‧‧任務表
352‧‧‧統一位址映射單元
370‧‧‧指令L1快取
380‧‧‧記憶體與快取互連
400‧‧‧圖形處理管線
410‧‧‧資料組合器
415‧‧‧頂點處理單元
420‧‧‧圖元組合器
425‧‧‧幾何處理單元
450‧‧‧視埠縮放、消隱及裁切單元
455‧‧‧光柵器
460‧‧‧片段處理單元
465‧‧‧光柵操作單元
500‧‧‧貼圖處理管線
502‧‧‧貼圖輸入單元
504‧‧‧狀態快取
506‧‧‧細節程度單元
508‧‧‧定址單元
510‧‧‧標籤單元
512‧‧‧誤失處理單元
514‧‧‧資料單元
516‧‧‧先進先出
518‧‧‧快取單元
525‧‧‧佇列
601-1‧‧‧虛擬位址
600‧‧‧標籤表
602-1‧‧‧輸入
604-1‧‧‧狀態索引
604‧‧‧狀態索引
606‧‧‧u座標
608‧‧‧v座標
610‧‧‧虛擬位址
700‧‧‧方法
800‧‧‧方法
如此上面簡單彙總可詳細了解本發明上述特色的方式,本發明的更特定說明則參照具體實施例,某些具體實施例說明於附圖內。不過吾人應該注意,附圖只說明本發明的典型具體實施例,因此並不對本發明範疇產生限制,本發明承認其他等效具體實施例。
第一圖為例示構成實施本發明之一或多個態樣的電腦系統的方塊圖;第二圖為根據本發明的一具體實施例之用於第一圖中該電腦系統之一平行處理子系統的方塊圖;第三A圖為根據本發明之一具體實施例之第二圖中前端的方塊圖;第三B圖為根據本發明之一具體實施例之第二圖中平行處理單元之一者內之一般處理叢集的方塊圖;第三C圖為根據本發明之一具體實施例之第三B圖中該串流多重處理器之一部分的方塊圖; 第四圖為根據本發明之一具體實施例之可構成第二圖中平行處理單元之一或多者來實施的概念圖;第五圖為根據本發明之一具體實施例之可構成第三B圖中該一般處理叢集內的一貼圖單元來實施一貼圖處理管線的概念圖;第六圖為根據本發明具體實施例之一標籤表的概念圖;第七圖為根據本發明之一具體實施例之用於透過第五圖所示該貼圖處理管線以實施一記憶體存取操作之方法步驟的流程圖;及第八圖為根據本發明之一具體實施例之用於快取及使有關在第三B圖所示該串流多重處理器上執行的執行緒群組之資料無效之方法步驟的流程圖。
在以下描述中,揭示許多特定細節以對本發明有更徹底之理解。但是,精通技術人士應瞭解,在無一或多個該等特定細節之下還是可實施本發明。
系統概觀
第一圖為例示構成實施本發明之一或多個態樣的電腦系統100的方塊圖。電腦系統100包括一中央處理單元(CPU,Central Processing Unit)102,及通過一互連路徑通訊的一系統記憶體104,其中該路徑可包括一記憶體橋接器105。例如可為北橋晶片的記憶體橋接器105透過匯流排或其他通訊路徑106(例如超傳輸連結),連接一輸入/輸出(I/O)橋接器107。例如可為南僑晶片的輸入/輸出橋接器107接收來自一或多個使用者輸入裝置108(例如鍵盤、滑鼠)的使用者輸入,並透過通訊路徑106和記憶體橋接器105將該輸入轉送至中央處理單元102。一平行處理子系統112透過匯流排或第二通訊路徑113(例如週邊組件互連(PCI)Express、加速圖形連接埠(Accelerated Graphics Port)或HyperTransport連結)連接記憶體橋接器105;在一具體實施例中,平行處理子系統112為傳遞畫素給顯示裝置110(例如傳統陰極射線管或液晶監視器)的圖形子系統。系統磁碟114也連接輸入/輸出橋接器107。一開關116提供輸入/輸出橋接器107與其他組件,像是網路配接器118及許多外接卡120和121之間的連接。其他組件(未明確顯 示),包括萬用序列匯流排(USB,Universal Serial Bus)或其他連接埠連接、CD光碟機、DVD光碟機、檔案記錄裝置等等,也可連接輸入/輸出橋接器107。第一圖顯示許多通訊路徑,包括特地指名的通訊路徑106和113,都可使用任何合適的協定來實施,例如PCI Express、AGP(加速圖形連接埠)、HyperTransport或任何其他匯流排或點對點通訊協定,及不同組件之間的連接都可使用業界內已知的不同協定。
在一具體實施例中,平行處理子系統112併入將圖形與視訊處理最佳化的電路,包括例如視訊輸出電路,並且建構一圖形處理單元(GPU,Graphics Processing Unit)。在另一具體實施例中,平行處理子系統112併入將一般用途處理最佳化的電路,同時保留底層計算架構,本說明書內有更詳細描述。尚且在另一具體實施例中,平行處理子系統112可在單一子系統內合併一或多個其他系統元件,例如結合記憶體橋接器105、中央處理單元102和輸入/輸出橋接器107來形成一晶片上系統(SoC,system on chip)。
吾人應瞭解,本說明書中顯示的該系統為例示,所以可進行改變與修改。包括橋接器的數量與配置、中央處理單元102的數量及平行處理子系統112的數量這類連接拓撲可依照需求修改。例如在某些具體實施例中,系統記憶體104直接連接中央處理單元102,而不是透過橋接器,並且其他裝置透過記憶體橋接器105及中央處理單元102與系統記憶體104通訊。在其他替代拓撲中,平行處理子系統112連接輸入/輸出橋接器107或直接連接中央處理單元102,而不是連接記憶體橋接器105。仍舊在其他具體實施例中,輸入/輸出橋接器107和記憶體橋接器105可整合成為單一晶片,替代現有的一或多個分散裝置。大型具體實施例可包括兩或多個CPU 102及兩或多個平行處理子系統112。本說明書中顯示的該等特定組件為選擇性;例如可支援任何數量的外接卡或周邊裝置。在某些具體實施例中,省略開關116,並且網路配接器118和外接卡120、121都直接連接輸入/輸出橋接器107。
第二圖例示根據本發明之一具體實施例的平行處理子系統112。如所示,平行處理子系統112包括一或多個平行處理單元(PPU,Parallel Processing Unit)202,每一者都耦結至本機平行處理(PP,parallel processing)記憶體204。一般來說,一平行處理子系統包括數量為U的平行處理單元,其中U1。(本說明書中多個類似物體的實例都用參考號碼標示出該物體,並且括號標示所需的實例。)平行處理單元202及平行處理記憶體204可使用一或多個積體電路裝置來實施,例如可程式處理器、特殊應用積體電路(ASIC,Application Specific Integrated Circuit)或記憶體裝置,或以任何其他技術可行方式。
請即重新參考第一圖以及第二圖所示,在一具體實施例中,平行處理子系統112內的某些或全部平行處理單元202為具有著色管線的圖形處理器,其可構成執行許多操作,這些操作有關透過記憶體橋接器105和第二通訊路徑113,從中央處理單元102及/或系統記憶體104供應的圖形資料產生畫素資料、與本機平行處理記憶體204(可用來當成圖形記憶體,包括例如傳統訊框緩衝區)互動來儲存與更新畫素資料、傳遞畫素資料給顯示裝置110等等。在某些具體實施例中,平行處理子系統112可包括操作當成圖形處理器的一或多個平行處理單元202,及用於一般用途計算的一或多個其他平行處理單元202。該等平行處理單元可相同或不同,並且每一平行處理單元都可擁有一專屬的平行處理記憶體裝置或無專屬的平行處理記憶體裝置。平行處理子系統112內的一或多個平行處理單元202可輸出資料至顯示裝置110,或平行處理子系統112內的每一平行處理單元202都可輸出資料至一或多個顯示裝置110。
在操作上,中央處理單元102為電腦系統100的主要處理器,控制與協調其他系統組件的操作。尤其是,中央處理單元102發出指令以控制平行處理單元202的操作。在某些具體實施例中,中央處理單元102將每一平行處理單元202的指令串流寫入一資料結構(第一圖或第二圖內未明確顯示),其可位於系統記憶體104、平行處理記憶體204或可存取中央處理單元102和平行處理單元202的其他儲存位置。每一資料結構的指標已經寫入一推送緩衝區,以開始在該資料結構內處理該指令串流。平行處理單元202讀取來自一或多個推送緩衝區的指令串流,然後非同步執行有關中央處理單元102操作的指令。透過裝置驅動程式103,利用應用程 式以指定每一推送緩衝區的執行優先順序,以控制不同推送緩衝區的排程。
請即重新參考第二圖以及第一圖,每一平行處理單元202都包括一I/O(輸入/輸出)單元205,其透過連接記憶體橋接器105(或在替代具體實施例中,直接至中央處理單元102)的通訊路徑113,與電腦系統100的剩餘組件通訊。平行處理單元202與電腦系統100剩餘組件的連接也可改變。在某些具體實施例中,平行處理子系統112實施成為可插入電腦系統100內擴充槽的外接卡。在其他具體實施例中,平行處理單元202可與例如記憶體橋接器105或輸入/輸出橋接器107這類匯流排橋接器整合在單一晶片上。仍舊在其他具體實施例中,平行處理單元202的某些或全部元件可與中央處理單元102整合在單一晶片上。
在一具體實施例中,通訊路徑113為一PCI Express連結,其中分配專屬通道給每一平行處理單元202,如業界內所熟知。在一具體實施例中,通訊路徑113為一PCI Express連結,其中分配專屬通道給每一平行處理單元202,如業界內所熟知。一輸入/輸出單元205產生在通訊路徑113上傳輸的封包(或其他信號),也從通訊路徑113上接收所有傳入封包(或其他信號),將該等傳入封包導引至平行處理單元202的適當組件。例如:有關處理任務的指令可導引至主介面206,而有關記憶體操作的指令(例如讀取或寫入平行處理記憶體204)可導引至記憶體交換開關單元210。主介面206讀取每一推送緩衝區,並將該推送緩衝區內儲存的該指令串流輸出至一前端212。
每一平行處理單元202都有利地實施一高平行處理架構。如細節內所示,平行處理單元202(0)包括一處理叢集陣列230,其包括數量為C的一般處理叢集(GPC,General Processing Cluster)208,其中C1。每個一般處理叢集208都可同時執行大量的(例如數百或數千)執行緒,其中每一執行緒都是一程式的實例。在許多應用當中,不同的一般處理叢集208可分配用於處理不同種類的程式,或用於執行不同種類的計算。一般處理叢集208的分配絕大部分取決於針對每一種程式或計算所賦予的工作負擔。
一般處理叢集208從任務/工作單元207內的工作分配單元當中接收要執行的處理任務,該工作分配單元接收指標來處理任務,其編 碼為任務中繼資料(TMD,Task Metadata)並儲存在記憶體內。該指標至任務中繼資料包括在指令串流內,其儲存當成一推送緩衝區並由前端單元212從主介面206接收。可編碼為任務中繼資料的處理任務包括要處理的資料索引,及定義如何處理該資料的狀態參數與指令(例如要執行哪個程式)。任務/工作單元207從前端212接收任務,並且確定在每一任務中繼資料指定的處理開始之前已經將一般處理叢集208構成有效狀態。一優先順序可指定給每一任務中繼資料,用來排定該處理任務的執行時間。處理任務也可從處理叢集陣列230接收。或者,該任務中繼資料可包括一參數,其控制該任務中繼資料是否加入處理任務清單(或處理任務指標清單)的頭部或尾部,藉此提供控制優先順序的另一等級。
記憶體介面214包括數量為D的劃分單元215,這些單元每一都直接連接一部分平行處理記憶體204,其中D1。如所示,劃分單元215的數量一般等於動態隨機存取記憶體(DRAM,Dynamic Random Access Memory)220的數量。在其他具體實施例中,劃分單元215的數量可不等於記憶體裝置的數量。精通技術人士應瞭解,動態隨機存取記憶體220可用其他合適的裝置取代,並且可為一般傳統設計,因此省略其詳細說明。像是訊框緩衝區或貼圖地圖這類著色目標可通過動態隨機存取記憶體220儲存,允許劃分單元215平行寫入每一著色目標的部分,以有效使用平行處理記憶體204的可用頻寬。
一般處理叢集208之任一者都可處理寫入平行處理記憶體204內任一動態隨機存取記憶體220的資料。交換開關單元210構成將每一一般處理叢集208的輸出繞送至任意劃分單元215的輸入或至用於進一步處理的其他一般處理叢集208。一般處理叢集208透過交換開關單元210與記憶體介面214通訊,來讀取或寫入許多外部記憶體裝置。在一具體實施例中,交換開關單元210具有一連接記憶體介面214以溝通輸入/輸出單元205,及一連接本機平行處理記憶體204,藉此讓不同一般處理叢集208內的處理核心與系統記憶體104或不在平行處理單元202本機上的其他記憶體通訊。在第二圖的具體實施例中,交換開關單元210直接連接輸入/輸出單元205。交換開關單元210可使用虛擬通道,以分隔一般處理叢集208與 劃分單元215之間的流量串流。
一般處理叢集208同樣可程式編輯來執行有關廣泛應用的處理任務,包括但不受限於線性與非線性資料傳輸、視訊及/或音訊資料篩選、模型化運算(例如套用實體規則來決定位置、速度及其他物體屬性)、影像著色運算(例如曲線細分著色、影點著色、幾何著色及/或畫素著色程式)等等。平行處理單元202可從系統記憶體104及/或本機平行處理記憶體204將資料傳輸進入內部(晶片上)記憶體、處理該資料並將結果資料寫回系統記憶體104及/或本機平行處理記憶體204,其中這種資料可由其他系統組件存取,包括中央處理單元102或另一平行處理子系統112。
一平行處理單元202可提供任何數量的本機平行處理記憶體204,包括非本機記憶體,並且可任何情況下使用本機記憶體和系統記憶體。例如:平行處理單元202可為統一記憶體架構(UMA,Unified Memory Architecture)具體實施例內的圖形處理器。在這種具體實施例中,提供一些或無專屬圖形(平行處理)記憶體,並且平行處理單元202完全或幾乎完全使用系統記憶體。在統一記憶體架構具體實施例中,平行處理單元202可整合至橋接器晶片或處理器晶片,或提供當成分散式晶片,具有高速連結(例如PCI Express)透過橋接器晶片或其他通訊方式將平行處理單元202連接系統記憶體。
如上述,任何數量的平行處理單元202都可包括在一平行處理子系統112內。例如:單一外接卡上可提供多個平行處理單元202,或多張外接卡可連接通訊路徑113,或一或多個平行處理單元202可整合到一橋接器晶片上。多平行處理單元系統內的平行處理單元202可彼此相同或不同。例如:不同的平行處理單元202可具有不同數量的處理核心、不同大小的本機平行處理記憶體等等。當存在多個平行處理單元202時,這些平行處理單元可平行操作,以比單一平行處理單元202還要高產量的方式來處理資料。合併一或多個平行處理單元202的系統可在許多設置與外型因素之下實施,包括桌上型、膝上型或手持式個人電腦、伺服器、工作站、遊戲機、嵌入式系統等等。
多重平行任務排程
多重處理任務可在一般處理叢集208上同時執行,並且一處理任務可在執行期間產生一或多個「子」處理任務。任務/工作單元207接收該等任務,並且動態排定要由一般處理叢集208執行的處理任務及子處理任務。
第三A圖為根據本發明之一具體實施例之第二圖中任務/工作單元207的方塊圖。任務/工作單元207包括一任務管理單元300及工作分配單元340。任務管理單元300根據執行優先順序等級來組織要排程的任務。針對每一優先順序等級,任務管理單元300儲存指標清單到對應排程器表321內任務的任務中繼資料322,其中該清單可用鏈結清單來實施。任務中繼資料322可儲存在PP記憶體204或系統記憶體104內。任務管理單元300接受任務並且將該等任務儲存在排程器表321內的速率與任務管理單元300排定任務來執行的速率無關,因此任務管理單元300可在排定該等任務之前集中許多任務。然後根據優先順序資訊或使用其他技術,例如輪轉排程,來排定集中的任務。
工作分配單元340包括一任務表345,該任務表具有時槽,執行任務的每一時槽會由任務中繼資料322佔用。當任務表345內有空時槽時,任務管理單元300可排定要執行的任務。當無空時槽時,未佔用時槽的較高優先順序任務會驅逐未佔用時槽的較低優先順序任務。一任務遭到驅逐時,該任務會停止,並且若該任務尚未執行完畢,則該任務的指標會加入要排定的任務指標清單中,如此稍後會恢復執行該任務。在一任務執行期間產生子處理任務時,將該子任務的指標加入要排定的任務指標清單內。由在處理叢集陣列230內執行的任務中繼資料322可產生一子任務。
不像任務/工作單元207從前端212接收的任務,子任務從處理叢集陣列230接收。子任務並未插入推送緩衝區或傳輸至該前端。子任務已經產生或該子任務的資料已經儲存在記憶體內時,並不會通知中央處理單元102。透過推送緩衝區提供的該等任務與子任務間之另一差異在於,透過推送緩衝區提供的該等任務由該應用程式定義,而該等子任務則在該等任務執行期間動態產生。
任務處理概觀
第三B圖為根據本發明之一具體實施例之第二圖中平行處理單元202之一者內之一般處理叢集208的方塊圖。每個一般處理叢集208都可構成同時執行大量執行緒,其中「執行緒」一詞代表在特定輸入資料集上執行的特定程式之實例。在某些具體實施例中,單一指令、多重資料(SIMD,Single-Instruction,Multiple-Data)指令發行技術用於支援大量執行緒的平行執行,而不用提供多個獨立指令單元。在其他具體實施例中,單一指令、多重執行緒(SIMT,Single-Instruction,Multiple-Thread)技術利用一共用指令單元,用於支援平行執行大量通常同步的執行緒,該共用指令單元構成發出指令給一般處理叢集208之每一者內的處理引擎集。不同於一單一指令、多重資料執行引擎,其中所有處理系統一般都執行相同的指令,單一指令、多重執行緒執行允許不同執行緒更迅速遵循分散的執行路徑通過一已知執行緒程式。業界內精通技術人士應瞭解,單一指令、多重資料處理系統代表一單一指令、多重執行緒處理系統的函數子集。
透過將處理任務分配至串流多重處理器(SM,Streaming Multiprocessor)310的管線管理員305可有利地控制一般處理叢集208的操作。管線管理員305也可構成利用指定串流多重處理器310所輸出已處理資料的目的地,控制一工作分配交換開關330。
在一具體實施例中,每個一般處理叢集208都包括數量為M的串流多重處理器310,其中M1,每一串流多重處理器310都構成處理一或多個執行緒群組。另外,每一串流多重處理器310有利地包括可管路化的一致功能執行單元集(例如執行單元與載入儲存單元,在第三C圖顯示為執行單元302及載入儲存單元303),允許完成先前指令之前發出新指令,如先前技術所知。在一具體實施例中,該等功能單元支援許多種運算,包括整數與浮點演算(例如加法與乘法)、比較運算、布林運算(AND、OR、XOR)、位元位移和許多代數函數的計算(例如平面插值、三角函數及對數函數等等);並且可運用該相同功能單元來執行不同運算。
傳輸給特定一般處理叢集208的指令系列建構一執行緒,如本說明書先前所定義,且跨串流多重處理器310內平行處理引擎(未顯示)的特定數量同時執行的執行緒之集合在此稱為「線程束」或「執行緒群組」。 如本說明書所使用,「執行緒群組」代表在不同輸入資料上同時執行相同程式的執行緒群組,其中該群組的一執行緒指派給串流多重處理器310內不同的處理引擎。一執行緒群組可包括數量比串流多重處理器310內處理引擎數量還要少的執行緒,在此案例中,某些處理引擎會在循環期間處理該執行緒群組時閒置。執行緒群組也可包括數量比串流多重處理器310內處理引擎數量還要多的執行緒,在此案例中,將在連續時脈循環上進行處理。因為每一串流多重處理器310都可同時支援最多G個執行緒群組,所以在任何已知時間上一般處理叢集208內都可執行最多G*M個執行緒群組。
此外,在串流多重處理器310內可同時啟用複數個相關執行緒群組(在不同執行相位內)。此執行緒群組的集合稱為「協作執行緒陣列」(CAT,Cooperative Thread Array)或「執行緒陣列」。特定協作執行緒陣列的大小等於m*k,其中k為執行緒群組內同時執行的執行緒數量,通常為串流多重處理器310內平行處理引擎數量的整數倍數,並且m為串流多重處理器310內同時啟用的執行緒群組數量。協作執行緒陣列的大小一般由程式設計師及該協作執行緒陣列可用的硬體資源數量,例如記憶體或暫存器,來決定。
每一串流多重處理器310都包括第一層(L1)快取(如第三C圖所示),或使用串流多重處理器310之外的一對應L1快取內的空間,其用於執行載入與儲存操作。每一串流多重處理器310也要存取所有一般處理叢集208之間共用的第二層(L2)快取,並且可用於在執行緒之間傳輸資料。最後,串流多重處理器310也要存取至晶片外「全域」記憶體,其可包括例如平行處理記憶體204及/或系統記憶體104。應瞭解,平行處理單元202之外的任何記憶體都可用來當成全域記憶體。此外,第1.5層(L1.5)快取335可包括在一般處理叢集208內,構成接收及保持透過由串流多重處理器310要求記憶體介面214從記憶體擷取的資料,包括指令、同型資料及常數資料,並且將該要求的資料提供給串流多重處理器310。具有一般處理叢集208內多個串流多重處理器310的具體實施例得利於共用指令和在L1.5快取335內快取的資料。
每個一般處理叢集208都可包括一記憶體管理單元 (MMU,Memory Management Unit)328,其構成將虛擬位址映射至實體位址。在其他具體實施例中,記憶體管理單元328可位於記憶體介面214內。記憶體管理單元328包括一組頁面表記錄(PTE,Page Table Entry),用於將一拼貼及選擇性一快取線索引的虛擬位址映射至實體位址。記憶體管理單元328可包括能夠位於多重處理器串流多重處理器310或L1快取或一般處理叢集208內的位址轉換後備暫存器(TLB,Translation Lookaside Buffer)或快取。該實體位址經過處理以區域分配表面資料存取,以在劃分單元215之間允許有效要求交錯。該快取線索引可用於決定一快取線的要求是否命中與否。
在圖形與計算應用當中,一般處理叢集208可構成使得每一串流多重處理器310都耦接至一貼圖單元315,用於執行貼圖映射操作,例如決定貼圖樣本位置、讀取貼圖資料及篩選該貼圖資料。貼圖資料從內部貼圖L1快取(未顯示)讀取,或在某些具體實施例內從串流多重處理器310內的該L1讀取,並且依照需求從所有一般處理叢集208之間共用的L2快取、平行處理記憶體204或系統記憶體104擷取。每一串流多重處理器310都輸出處理過的任務至工作分配交換開關330,以將該處理過的任務提供至另外一般處理叢集208供進一步處理,或透過交換開關單元210將該處理過的任務儲存在L2快取、平行處理記憶體204或系統記憶體104內。preROP(預先光柵運算)325構成從串流多重處理器310接收資料、將資料引導至劃分單元215內的ROP單元,並且執行顏色混合、組織畫素顏色資料及執行位址轉譯的最佳化。
應瞭解,本說明書中顯示的該核心架構為例示,所以可進行改變與修改。任何數量的處理單元,例如串流多重處理器310或貼圖單元315、preROP 325都可包括在一般處理叢集208內。此外,如第二圖所示,平行處理單元202可包括任意數量功能彼此類似的一般處理叢集208,使得執行行為並不取決於接收特定處理任務的一般處理叢集208。此外,每個一般處理叢集208都得利於與其他一般處理叢集208無關的操作,運用分離並分散的處理單元、L1快取,來執行一或多個應用程式的任務。
精通此技術人士應瞭解,第一圖、第二圖、第三A圖和第 三B圖內描述的架構並非用於限制本發明範疇,本說明書內的技術可在任何正確設置的處理單元上實施,在不悖離本發明範疇之下包括但不受限於一或多個中央處理單元、一或多個多核心中央處理單元、一或多個平行處理單元202、一或多個一般處理叢集208、一或多個圖形或特殊用途處理單元等等。
在本發明的具體實施例中,吾人想要使用一計算系統的平行處理單元202或其他處理器,運用執行緒陣列來執行一般用途計算。該執行緒陣列內的每一執行緒都可指派獨一的執行緒識別碼(「執行緒ID」),其可在該執行緒執行期間存取該執行緒。該執行緒ID可定義為一維度或多維度數值,控制該執行緒處理行為的許多態樣。例如:一執行緒ID可用於決定設定一執行緒的哪個輸入資料部分要處理及/或決定設定一執行緒的哪個輸入資料部分要產生或寫入。
每個執行緒指令的序列可包括至少一指令,其定義該代表性執行緒與該執行緒陣列的一或多個其他執行緒之間的協作行為。例如:每一執行緒指令的順序可包括將在該順序內特定點上該代表執行緒運算執行中斷,直到一或多個其他執行緒到達該特定點上為止之指令、讓該代表執行緒將一或多個其他執行緒可存的資料儲存至一共用記憶體內之指令、讓該代表執行緒根據其執行緒ID自動讀取與更新一共用記憶體內一或多個該等其他執行緒已經存取過的資料之指令等等。該協作執行緒陣列程式也可包括一指令,計算該共用記憶體內所要讀取資料的位址,其中該位址為執行緒ID的函數。利用定義合適的功能並且提供同步技術,資料可利用CAT的一執行緒寫入共用記憶體內的一已知位置,並且以可預測方式用相同協作執行緒陣列的不同執行緒從該位置當中讀取。因此,支援在執行緒之間共用的任何資料圖案,並且一協作執行緒陣列內的任何執行緒都可與相同協作執行緒陣列內的任何其他執行緒共用資料。在協作執行緒陣列執行緒之間共用的資料內容(若有的話)由該協作執行緒陣列程式決定;如此,應瞭解,在使用協作執行緒陣列的特定應用當中,根據該協作執行緒陣列程式,協作執行緒陣列的執行緒彼此之間可以或不確實共用資料,並且在本說明書中同時使用「協作執行緒陣列」與「執行緒陣列」等詞。
第三C圖為根據本發明的一具體實施例之第三B圖中串流多重處理器310的方塊圖。串流多重處理器310包括一指令L1快取370,其構成透過L1.5快取335接收指令與常數。線程束排程器與指令單元312接收來自指令L1快取370的指令與常數,並且根據該等指令與常數控制本機暫存檔304及串流多重處理器310功能單元。串流多重處理器310功能單元包括N個執行(執行或處理)單元302及P個載入儲存單元(LSU,Load-Store Unit)303。
串流多重處理器310提供具備不同存取階層的晶片上(內部)資料儲存。特殊暫存器(未顯示)可由載入儲存單元303讀取但是無法寫入,並且可用於儲存定義每一執行緒「位置」的參數。在一具體實施例中,特殊暫存器包括每一執行緒(或串流多重處理器310內的每一執行單元302)一暫存器,其儲存一執行緒ID;每一執行緒ID暫存器都只能由執行單元302之個別一者所存取。特殊暫存器也可包括額外暫存器,可由執行任務中繼資料322(或由所有載入儲存單元303)所呈現相同處理任務的所有執行緒讀取,其儲存一協作執行緒陣列識別碼、該協作執行緒陣列維度、該協作執行緒陣列所屬網格的維度(或若任務中繼資料322編碼一佇列任務而非一網格任務時的佇列位置)、及指派協作執行緒陣列的任務中繼資料322之識別碼。
若任務中繼資料322為一網格任務中繼資料,則執行任務中繼資料322會導致啟動並執行固定數量的協作執行緒陣列,來處理佇列525內所儲存的固定數量資料。協作執行緒陣列的數量依照網格寬度、高度與深度的乘積來指定。該固定數量的資料可儲存在任務中繼資料322內,或任務中繼資料322可儲存將由協作執行緒陣列處理的資料之指標。任務中繼資料322也儲存該協作執行緒陣列所執行程式的開始位址。
若任務中繼資料322為佇列任務中繼資料,然後使用任務中繼資料322的佇列功能,表示要處理的資料量並不需要固定。佇列記錄儲存資料,供指派給任務中繼資料322的該等協作執行緒陣列處理。該等佇列記錄也呈現執行緒執行期間由另一任務中繼資料322產生的子任務,藉此提供巢狀平行。一般來說,執行緒的執行或包括該執行緒的協作執行緒 陣列會中止,直到完成子任務執行為止。該佇列可儲存在任務中繼資料322內,或與任務中繼資料322分開,在此案例中,任務中繼資料322儲存至該佇列的佇列指標。有利的是,由該子任務產生的資料可寫入該佇列,同時任務中繼資料322代表已經執行的該子任務。該佇列可實施為一圓形佇列,如此資料總量並不受限於該佇列的大小。
屬於一網格的協作執行緒陣列具有暗示的網格寬度、高度和深度參數,指示該網格內個別協作執行緒陣列的位置。在初始化期間會寫入特殊暫存器,以回應透過前端212從裝置驅動程式103接收命令,並且在一處理任務期間不會改變。前端212排程要執行的每一處理任務。每一協作執行緒陣列都有關一特定任務中繼資料322,以同時執行一或多個任務。此外,單個一般處理叢集208可同時執行多個任務。
一參數記憶體(未顯示)儲存可由相同協作執行緒陣列(或任何載入儲存單元303)內任何執行緒讀取但無法寫入的執行時間參數(常數)。在一具體實施例中,裝置驅動程式103在導引至串流多重處理器310以開始執行使用這些參數的任務之前,提供參數給該參數記憶體。任何協作執行緒陣列內的任何執行緒(或串流多重處理器310內的任何執行單元)都可透過記憶體介面214存取全域記憶體。全域記憶體的部分可儲存在L1快取320內。
每一執行緒都使用本機暫存檔304當成暫存空間;每一暫存器都分配給一執行緒專用,並且任何本機暫存檔304內的資料都只能由分配給該暫存器的該執行緒存取。本機暫存檔304可實施為實體上或邏輯上區分成P個通路的暫存檔,每一通路都具有某些數量的記錄(在此每一記錄都可儲存例如32位元字)。一通路指派給該N個執行單元302及P個載入儲存單元載入儲存單元303之每一者,並且不同通路內的對應記錄可填入執行相同程式的不同執行緒之資料,來幫助單一指令、多重資料執行。通路的不同部分可分配給該G個同時執行緒群組中不同的執行緒,如此本機暫存檔304內的一已知記錄只能由特定執行緒存取。在一具體實施例中,本機暫存檔304內的特定記錄保留用於儲存執行緒識別碼,實施該等特殊暫存器之一者。此外,一同型L1快取375儲存N個執行單元302及P個載 入儲存單元303之每一通路的同型或常數值。
共用記憶體306可由單一協作執行緒陣列內的執行緒存取;換言之,共用記憶體306內任何位置都可由相同協作執行緒陣列內任何執行緒(或串流多重處理器310內任何處理引擎)來存取。共用記憶體306可實施為具有互連的一共用暫存檔或共用晶片上記憶體,允許任何處理引擎從該共用記憶體內任何位置讀取或寫入。在其他具體實施例中,共用的狀態空間可映射至晶片外記憶體的每一協作執行緒陣列區域,並且快取在L1快取320內。該參數記憶體可實施為該相同共用暫存檔或實施共用記憶體306的共用快取記憶體內的一指定區段,或實施成載入儲存單元303具有唯讀存取的一個別共用暫存檔或晶片上快取記憶體。在一具體實施例中,實施該參數記憶體的區域也用於儲存該協作執行緒陣列ID和任務ID,及協作執行緒陣列和網格尺寸或佇列位置,實施該特殊暫存器的位置。串流多重處理器310內的每一載入儲存單元303都耦接至統一位址映射單元352,將提供用於載入與儲存統一記憶體空間內所指定指令的一位址轉換成每一分散記憶體空間內的一位址。因此,利用指定該統一記憶體空間內的一位址,可使用一指令來存取區域、共用或全域記憶體空間之任一者。
每一串流多重處理器310內的L1快取320都可用於快取私用每一執行緒區域資料,並且也快取每一應用程式全域資料。在某些具體實施例中,該每一協作執行緒陣列共用資料可快取在L1快取320內。載入儲存單元303可透過一記憶體與快取互連380耦接至共用記憶體306及L1快取320。
圖形管線架構
第四圖為根據本發明之一具體實施例之可構成第二圖中平行處理單元202之一或多者來實施之一圖形處理管線400的概念圖。例如:串流多重處理器310之一者可構成執行頂點處理單元415、幾何處理單元425及片段處理單元460之一或多者的功能。資料組合器410、圖元組合器420、光柵器455及光柵操作單元465的功能也可由一般處理叢集208與一對應劃分單元215內的其他處理引擎所執行。或者,可使用一或多個功能的專屬處理單元,實施圖形處理管線400。
資料組合器410處理單元匯集高階表面、圖元等等的頂點資料,並且將包括該等頂點屬性的該頂點資料輸出至頂點處理單元415。頂點處理單元415為一可程式執行單元,其構成執行頂點著色程式,依照該頂點著色程式所規定照明與轉換頂點資料。例如:頂點處理單元415可程式編輯成將該頂點資料從一物件型座標代表(物件空間)轉換成一替代型座標系統,例如世界空間或標準化裝置座標(NDC,Normalized Device Coordinates)空間。頂點處理單元415可用資料組合器410讀取L1快取320、平行處理記憶體204或系統記憶體104內儲存的資料,用來處理該頂點資料。
圖元組合器420接收來自頂點處理單元415的頂點屬性,依照需求讀取儲存的頂點屬性,並且建構圖形圖元讓幾何處理單元425處理。圖形圖元包括三角形、線段、點等等。幾何處理單元425為一可程式執行單元,其構成執行幾何著色程式,依照該幾何著色程式所規定轉換接收自圖元組合器420的圖形圖元。例如:幾何處理單元425可程式編輯成將該等圖形圖元分成一或多個新圖形圖元,並且計算參數,例如平面等式係數,用來將該等新圖形圖元光柵化。
在某些具體實施例中,幾何處理單元425也可新增或刪除該幾何串流內的元件。幾何處理單元425輸出將新圖形圖元指定至一視埠縮放、消隱及裁切單元450的該等參數與頂點。幾何處理單元425可讀取儲存在平行處理記憶體204或系統記憶體104內的資料,用來處理該幾何資料。視埠縮放、消隱與裁切單元450執行裁切、消隱與視埠縮放,並且將處理過的圖形圖元輸出至一光柵器455。
光柵器455掃描轉換新圖形圖元,並且將片段與覆蓋資料輸出至片段處理單元460。此外,光柵器455可構成執行z消隱及其他z型最佳化。
片段處理單元460為一可程式執行單元,其構成執行片段著色程式,依照該片段著色程式所規定轉換接收自光柵器455的片段。例如:片段處理單元460可程式編輯成執行操作,例如透視修正、貼圖映射、著色、混色等等,以產生輸出至光柵操作單元465的已著色片段。在一具體實施例中,片段處理單元460與第三B圖所示的貼圖單元315結合操作, 以執行貼圖映射操作。片段處理單元460可讀取儲存在平行處理記憶體204或系統記憶體104內的資料,用來處理該片段資料。根據該程式編輯的取樣率,片段可依照像素、取樣或其他粒度來著色。
光柵操作單元465為一種處理單元,其執行光柵操作,例如模板、z測試、混色等等,並且將像素資料當成處理過的圖形資料,以儲存在圖形記憶體內。該處理過的圖形資料可儲存在圖形記憶體內,例如平行處理記憶體204,及/或系統記憶體104,用於顯示在顯示裝置110上或用於由中央處理單元102或平行處理子系統112進一步處理。在本發明的某些具體實施例中,光柵操作單元465構成將寫入記憶體的z或顏色資料壓縮,並且將從記憶體讀取的z或顏色資料解壓縮。
如上面結合第三B圖所述,第三B圖所示的貼圖單元315構成由串流端重處理器310執行貼圖處理操作(另如第三B圖所示)。如此時,貼圖單元315構成從第一圖至第三C圖所示的任何記憶體單元讀取貼圖資料。此外,貼圖單元315也可構成執行全域記憶體載入操作,以使用現有的貼圖資料通道讀取這些任意記憶體單元。當串流多重處理器310構成執行一般用途處理操作,貼圖單元315可構成實施一貼圖處理管線,以下結合第五圖進行討論。以下討論的該貼圖處理管線允許貼圖單元315透過相同資料通道讀取資料或通用、全域資料。
透過貼圖硬體執行記憶體存取操作
第五圖為根據本發明的一具體實施例之可構成第三B圖中該一般處理叢集208內一貼圖單元315來實施之一貼圖處理管線500的概念圖。如所示,貼圖處理管線500包括一貼圖輸入(TEXIN)單元502,其耦合至一狀態快取504;一細節程度(LOD,Level Of Detail)單元506;一定址單元508;一標籤單元510;一誤失處理單元512;及一資料單元514,其包含一先進先出(FIFO,First-In First-Out)516與一快取單元518。
貼圖處理管線500構成處理接收自第三B圖所示串流多重處理器310的記憶體存取要求。已知的記憶體存取要求應該代表一貼圖資料存取操作,例如從記憶體讀取一貼圖的一讀取操作。或者,一已知的記憶體存取要求應該代表一通用資料存取操作,例如一全域記憶體載入操作。
一已知的記憶體存取要求包括一「狀態索引」,貼圖輸入單元502用來決定該記憶體存取要求代表一貼圖資料存取操作或是一通用資料存取操作。當貼圖處理管線500接收一記憶體存取要求時,貼圖輸入單元502從該記憶體存取要求擷取狀態索引,然後將該狀態索引一部分與貼圖輸入單元502內一要求狀態暫存器比較。該要求狀態暫存器指示有關通用資料存取操作的一特定索引。當有關一已知記憶體存取要求的該狀態索引吻合該要求狀態暫存器時,貼圖輸入單元502設置貼圖處理管線500來執行一通用資料存取操作。貼圖輸入單元502也可修改該記憶體存取要求,反映出有關該通用資料存取操作的資料之特定快取位準。在一具體實施例中,貼圖輸入單元502由在串流多重處理器310上執行的軟體應用程式來設置,以反映出特定快取位準。
在貼圖輸入單元502決定該記憶體存取要求代表一貼圖資料存取操作的情況下,貼圖輸入單元502設置貼圖處理管線500執行一貼圖資料存取操作。在一具體實施例中,軟體應用程式,例如第一圖所示的驅動程式103,可執行以便設置該要求狀態暫存器。
處理記憶體存取代表貼圖資料存取操作的要求時,貼圖輸入單元502使用該狀態索引來存取狀態快取504。貼圖輸入單元502從狀態快取504擷取額外貼圖資訊,其對應要從記憶體存取的該貼圖資料。該額外貼圖資訊可包括紋路大小、貼圖起點、貼圖尺寸及貼圖邊界資料,還有其他種貼圖相關資訊。貼圖輸入單元502可將此額外貼圖資訊併入該記憶體存取要求,然後將該記憶體存取要求傳遞至細節程度單元506。
細節程度單元506構成根據該記憶體存取要求內含的一組座標之位置與方位,計算要從記憶體存取的該貼圖資料之「細節程度」。該組座標可代表位於一圖形場景內的貼圖之位置與方位。細節程度單元506可將該計算出來的細節程度併入該記憶體存取要求,然後將該記憶體存取要求傳遞至定址單元508。定址單元508構成根據該記憶體存取要求內的該等座標,執行許多位址計算。該位址計算結果可用來識別標籤單元510內含的一標籤表內的一輸入。定址單元508將該記憶體存取要求及位址計算結果傳遞至標籤單元510。
標籤單元510包括一標籤表,其中儲存一組輸入。每一輸入都代表快取單元518內的一行。快取單元518可代表位於貼圖單元315內的一快取記憶體,或除了其他快取記憶體單元以外,也可代表位於第三C圖所示串流多重處理器310內的L1快取320。在接收該記憶體存取要求及來自定址單元508的位址計算結果時,標籤單元510決定該標籤表是否包括對應要擷取的該貼圖資料之一輸入。以下將結合第六圖,更詳細討論標籤單元510內含的該標籤表。
該標籤表包括對應要存取的該貼圖資料之一輸入時,則發生快取命中,並且標籤單元510決定要存取的該貼圖資料位於快取單元518內。標籤單元510利用搜尋該標籤表,取得該輸入,並且在快取單元518內取得實際存在該貼圖資料的一偏移。該輸入可包括一u座標及一v座標。標籤單元510將該偏移傳遞至先進先出516,然後快取單元518將該快取的貼圖資料提供給串流多重處理器310。
當該標籤表不包括對應要存取的該貼圖資料之一輸入時,則發生快取誤失,並且標籤單元510從全域記憶體當中存取該要求的貼圖資料。誤失處理單元512可根據該記憶體存取要求內含的資料來計算一虛擬位址、執行虛擬至實體位址轉譯、然後從一實體位置讀取該要求的資料,以存取該要求的貼圖資料。在一具體實施例中,誤失處理單元512位於第三B圖所示的記憶體管理單元328。然後,誤失處理單元512使用從全域記憶體存取的該貼圖資料以填充快取單元518,並且更新標籤單元512內的標籤表,以反映新快取的貼圖資料。然後該貼圖資料提供給串流多重處理器310。
如上述,貼圖處理管線500也可構成處理沒有與該貼圖資料特別關聯的通用資料存取操作,例如全域記憶體載入操作及其他。貼圖處理管線500接收有關通用資料存取操作的一記憶體存取要求時,貼圖輸入單元502根據該記憶體存取要求內含的該狀態索引,即是以類似上述的方式,藉由比較該狀態索引與該要求狀態暫存器,決定該記憶體存取要求是否有關通用資料存取操作。如上述,貼圖輸入單元502也可修改該記憶體存取要求,以反映出有關該通用資料存取操作的資料之特定快取位準。
在貼圖輸入單元502決定該記憶體存取要求係與通用資料存取操作有關聯時,則貼圖輸入單元502據此建構貼圖處理管線500。如此,貼圖輸入單元502可導致細節程度單元506直接將該記憶體存取要求傳遞至定址單元508(即是不使用該記憶體存取要求執行任何處理操作)。貼圖輸入單元502也可導致定址單元508直接將來自細節程度單元506的該記憶體存取要求傳遞至標籤單元510(即是不使用該記憶體存取要求執行任何處理操作)。在此方式中,該記憶體存取要求可有效繞過細節程度單元506及定址單元508。
標籤單元510接收該記憶體存取要求,並且擷取該記憶體存取要求內含的一虛擬位址。該虛擬位址對應要利用執行有關該記憶體存取要求的該通用資料存取操作來擷取之通用資料,然後標籤單元510決定該標籤表是否包括對應已擷取虛擬位址的一輸入。該標籤表構成儲存有關貼圖資料的輸入,如上面所討論,及有關通用資料的虛擬位址。如上述,以下將結合第六圖,更詳細討論標籤單元510內的該標籤表。
該標籤表包括對應該已擷取虛擬位址之一輸入時,則發生快取命中,並且要取得的該通用資料位於快取單元518內。標籤單元510從該虛擬位址擷取一偏移,並且將該偏移推入先進先出516。當先進先出516內預先存在的偏移已經離開先進先出516,則資料單元514可從先進先出516彈出該偏移,然後根據該偏移從快取單元518擷取要求的資料。然後資料單元514提供有關該偏移的資料給串流多重處理器310。
該標籤表不包括對應該已擷取虛擬位址之一輸入時,則發生快取誤失,並且標籤單元510導致誤失處理單元512從全域記憶體當中取得該要求的通用資料,即是利用執行一虛擬至實體位址轉譯,並且從一實體位址讀取該要求的資料。然後,誤失處理單元512使用該擷取的通用資料填充快取單元518,並且更新標籤單元512內的標籤表,以反映出新快取的通用資料。然後該通用資料提供給串流多重處理器310。
利用實施貼圖處理管線500,如上面討論,貼圖單元315可構成執行貼圖資料存取操作,及透過相同資料通道進行通用資料存取操作。此外,在中央處理單元及/或平行處理子系統112上執行的軟體,包括 驅動程式103,可構成包括簡化的記憶體存取命令,其將該通用資料存取操作揭露給軟體設計師。運用此方式,軟體設計師可產生包括通用記憶體存取操作,可供串流多重處理器310及貼圖處理管線500使用的程式碼。再者,軟體設計師不需要包括任何貼圖導向程式碼,就可實施這些記憶體存取操作。
第六圖為根據本發明具體實施例之結合上面第五圖所討論標籤表600的概念圖。如所示,標籤表600包括一組輸入602-1、602-2、602-3和602-N。每一輸入602都包括一對應的狀態索引604。輸入602-1包括狀態索引604-1,輸入602-2包括狀態索引604-2,輸入602-3包括狀態索引604-3,且輸入602-N包括狀態索引604-N。每一輸入602都對應儲存在第五圖所示快取單元518內的資料部分,儲存在快取單元518內的資料部分可為貼圖資料或通用資料。
一對應貼圖資料的已知輸入602包括一u座標606及一v座標608。如所示,一輸入602-1對應貼圖資料,因此包括u座標606-1及v座標608-1。同樣地,輸入602-N對應貼圖資料,因此包括u座標606-N及v座標608-N。一對應通用資料的已知輸入602包括有關該通用資料的一虛擬位址610。如所示,輸入602-2對應通用資料且因此包括一虛擬位址610-2,而輸入602-3也對應通用資料,且因此包括一虛擬位址610-3。
第五圖所示的貼圖處理管線500構成處理記憶體存取要求時,如上面有關第五圖的討論,標籤單元510可查詢每一此記憶體存取要求的標籤表600。針對一已知記憶體存取要求,標籤單元510查詢標籤表600,以決定與該記憶體存取要求結合取得的資料是否位於快取單元內,或應該從全域記憶體取得。
一已知記憶體存取要求代表一貼圖資料存取要求時,標籤單元510可識別標籤表600內的一輸入602,以指出一快取命中。然後標籤單元510擷取要從該輸入內取得該貼圖資料的一快取位址。一已知記憶體存取要求代表一通用資料存取要求時,標籤單元510也可識別標籤表600內一輸入602,以指出一快取命中。然後標籤單元510擷取要從該輸入內取得該貼圖資料的一快取位址。
運用上述方式,貼圖資料與通用資料同樣可在快取單元518內快取,且透過標籤表600加以管理。請即重新參考第五圖,串流多重處理器310(另如第三B圖所示)執行一或多個執行緒群組時,貼圖處理管線500可由第三B圖所示的貼圖單元315來實施。一已知執行緒群組可透過上面結合第五圖描述的技術,來執行貼圖資料存取操作或通用資料存取操作。
當處理表示一通用資料存取操作的一記憶體存取要求,而該資料存取操作代表一已知執行緒群組內的一執行緒之時,標籤單元510可決定該記憶體存取要求所指示的該通用資料不在快取單元518內(即是發生快取誤失)。在回應上,標籤單元510構成導致誤失處理單元512取得該全域資料,並且將該資料儲存在快取單元518,如先前所討論。利用快取有關該執行緒群組內的一已知執行緒的資料,標籤單元510可啟用該執行緒群組內的其他執行緒,以存取取得用於該已知執行緒的該資料快取版本。運用此方式,標籤單元510可避免該執行緒群組內的每一執行緒嘗試存取資料相同部分,因而導致多個同時快取對資料相同部分誤失之情況。此一情況會導致誤失處理單元512多次取得該資料的相同部分(即是每一執行緒一次)。
此外,代表一已知執行緒群組快取通用資料時,標籤單元510構成更新標籤表600,以反映出只有在該執行緒群組取得該資料期間快取該已快取的資料。因為後續執行緒群組可能不需要一已知執行緒群組快取的通用資料,因此該資料離開該執行緒群組之後就無效,藉此節省快取資源。在一具體實施例中,有關標籤表600內的一已知輸入的狀態索引604指出有關該輸入的該資料是否於目前執行緒群組持續時間快取、或於超過一執行緒群組而快取。在另一具體實施例中,貼圖輸入單元502根據該狀態索引更新該記憶體存取要求,以包括指出有關該記憶體存取要求的資料快取程度之標籤,並且標籤單元510將該標籤併入該標籤表內有關該記憶體存取要求的一輸入。
稍後以下將分別結合第七圖與第八圖,更詳細描述用於透過貼圖管線500執行通用資料存取操作,及用於使一執行緒群組期間快取的 通用資料無效之技術。
第七圖為根據本發明之一具體實施例,用於透過第五圖所示該貼圖處理管線來執行一全域記憶體載入操作之方法步驟流程圖。雖然已經結合第一圖、第二圖、第三A圖、第三B圖和第三C圖的系統來描述該等方法步驟,精通技術人士應瞭解,構成執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
如所示,方法700從步驟702開始,其中貼圖處理管線500內的貼圖輸入單元502接收來自串流多重處理器310之一記憶體存取要求。該記憶體存取要求可代表一貼圖資料存取操作,或可代表一通用資料存取操作。
在步驟704,貼圖輸入單元502決定該記憶體存取要求是否代表一通用資料存取操作。在一具體實施例中,貼圖輸入單元502從該記憶體存取要求當中擷取一狀態索引,並且將該狀態索引的一部分與一要求暫存器比較,以決定該記憶體存取要求是否代表一通用資料存取操作。該要求暫存器儲存對應通用資料存取操作的一狀態索引,並且可由在串流多重處理器310上執行的軟體應用程式來設置。
在步驟706,貼圖輸入單元502構成貼圖處理管線500執行一通用資料存取操作。如此,貼圖輸入單元502可導致細節程度單元506及定址單元508單純將一接收的記憶體存取要求傳遞至貼圖處理管線500內的一後續單元,而不用在該記憶體存取要求上執行任何處理操作。在此方式中,貼圖輸入單元502可導致該記憶體存取要求繞過細節程度單元506及定址單元508。
在步驟708,貼圖處理管線500內的標籤單元510從該記憶體存取要求擷取一虛擬位址,並且決定該虛擬位址是否存在於一標籤表內。該標籤表可為例如第六圖所示的標籤表600。若標籤單元510決定該虛擬位址存在於該標籤表內,則發生一快取命中,並且方法700前往步驟710。
在步驟710,標籤單元510導致資料單元514從快取單元518取得有關該虛擬位址的該資料。標籤單元510可將有關該虛擬位址的一偏移推入先進先出516,然後當先進先出516內的預先存在的偏移已經離開先 進先出516時,資料單元514從先進先出516彈出偏移。然後資料單元514根據該偏移,從快取單元518取得該要求的資料。然後方法700前往步驟714,在此資料單元514將該快取資料提供給串流多重處理器310。
在步驟708,若標籤單元510決定該虛擬位址不存在於該標籤表內,則發生一快取誤失,並且方法700前往步驟712。在步驟712,誤失處理單元512從全域記憶體取得該要求資料。如此,誤失處理單元514可執行虛擬至實體位址轉譯,然後從實體位址存取該要求的資料。誤失處理單元514構成快取該快取單元518內的該要求資料。然後方法700前往步驟714,在此資料單元514用上述類似的方式,將該新快取的資料提供給串流多重處理器310。
利用實施方法,貼圖單元315可構成實施貼圖處理管線500,以執行貼圖資料存取操作,及透過相同資料通道執行通用資料存取操作。
第八圖為根據本發明之一具體實施例之用於快取及使有關在第三B圖所示該串流多重處理器上執行的執行緒群組之資料無效之方法步驟的流程圖。雖然已經結合第一圖、第二圖、第三A圖、第三B圖和第三C圖的系統來描述該等方法步驟,不過精通技術人士應瞭解,構成執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
如所示,方法800從步驟802開始,其中串流多重處理器310啟動一執行緒群組。該執行緒群組可產生代表貼圖資料存取操作或通用資料存取操作的記憶體存取要求。串流多重處理器310構成導致貼圖單元315服務這些記憶體存取要求。如此,貼圖單元315可實施第五圖所示的貼圖處理管線500,並且可執行上面有關第七圖討論的方法700。
在步驟804,貼圖處理管線500內的標籤單元510決定由該執行緒群組內的一執行緒所產生的通用資料存取操作是否導致發生快取誤失。該通用資料存取操作由貼圖處理管線500從該執行緒群組內的該執行緒接收的一記憶體存取操作所表示,該記憶體存取操作包括對應要取得該資料的虛擬位址。標籤單元510構成決定一快取誤失是否藉由決定該虛擬位址不存在於標籤單元510內含的一標籤表而發生。
在步驟806,標籤單元510導致誤失處理單元512從全域記憶體取得有關該通用資料存取操作的資料。如此,誤失處理單元512可將該記憶體存取要求內含的該虛擬位址轉譯成一實體位址。然後,誤失處理單元512可從有關該實體位址的實體位置讀取該要求的資料。
在步驟808,標籤單元510分配快取單元518內的一快取線以儲存由誤失處理單元512取得的該資料,然後導致該資料儲存在該已分配的快取線內。在步驟810,標籤單元510指定標籤單元510內含的該標籤表內一輸入用於該新快取的資料。該標籤表可為例如第六圖所示的標籤表600。該指定的輸入指出該新快取的資料只快取用於該執行緒群組期間,其中該群組包括負責導致該快取誤失的該執行緒。在一具體實施例中,由該執行緒群組內的該執行緒產生的該記憶體存取要求指出有關該新快取資料之一快取程度,包括一驅逐政策及其他。
方法800在步驟812等待,直到該執行緒群組內的所有執行緒都已經完成執行。當該執行緒群組的最後執行緒或執行緒子集離開,則方法800前往步驟814,其中標籤單元510使快取單元518內有關代表該執行緒群組取得的該資料之該輸入無效。然後從快取單元518清除代表該執行緒群組之快取的該通用資料,然後方法800結束。
運用此方式,當處理一執行緒群組內有關執行緒的一通用資料存取操作所取得的資料可於該執行緒群組持續時間快取,然後離開該執行緒群組之後就失效。這種功能性可避免由該執行緒群組內的不同執行緒引起的多次快取誤失,並且可導致更好的快取資源使用率。
總結來說,一貼圖處理管線可構成服務代表貼圖資料存取操作或代表通用資料存取操作的記憶體存取要求。當該貼圖處理管線接收代表貼圖資料存取操作的一記憶體存取要求,則該貼圖處理管線可根據貼圖座標取得貼圖資料。當該記憶體存取要求代表一通用資料存取操作時,該貼圖管線從該記憶體存取要求擷取一虛擬位址,然後根據該虛擬位址取得資料。該貼圖處理管線也構成快取代表執行緒群組取得的通用資料,然後在該執行緒群組離開時讓通用資料失效。
所具備的優勢為,一圖形處理單元(GPU,Graphics Processing Unit)內的該貼圖處理硬體可構成執行通用資料存取操作。此方式可讓軟體設計師產生程式碼,其運用該圖形處理單元的該平行架構,而不需要實施貼圖導向記憶體存取操作。此外,該貼圖硬體可快取在執行緒群組期間針對執行緒群組取得之通用資料,藉此有效運用該貼圖硬體內的快取資源。
本發明的一具體實施例可實施當成搭配電腦系統使用的程式產品。該程式產品的程式定義該等具體實施例(包括本說明書所述的方法)的功能,並且可包括在電腦可讀取儲存媒體上。例示的電腦可讀取儲存媒體包括但不受限於:(i)其上資訊永久儲存的不可抹寫儲存媒體(例如電腦內的唯讀記憶體裝置,例如小型碟片唯讀記憶體(CD-ROM)光碟機可讀取的CD-ROM光碟、快閃記憶體、ROM晶片或任何一種固態非揮發性半導體記憶體);及(ii)上其儲存可變資訊的可抹寫儲存媒體(例如磁碟機或硬碟內的磁碟或任何一種固態隨機存取半導體記憶體)。
在此已經參考特定具體實施例說明本發明。不過精通此技術的人士應瞭解,在不悖離申請專利範圍內公佈之本發明廣泛精神及範疇下,可進行許多修改與變更。因此前述說明與圖式僅供參考而不做限制。

Claims (10)

  1. 一種用於執行在一處理單元上執行有關執行緒群組的一通用資料存取操作之電腦實施方法,該方法包括:從該執行緒群組內的一執行緒接收一記憶體存取要求;決定有關該記憶體存取要求的一資料部分是否不存在一快取記憶體單元;從全域記憶體取得有關該記憶體存取要求的該資料部分;在執行該執行緒群組內的該等執行緒期間,儲存該快取記憶體單元內的該資料部分;及在決定該執行緒群組內的每一執行緒都已經在該處理單元上完成執行時,從該快取記憶體單元當中清除該資料部分。
  2. 如申請專利範圍第1項之電腦實施方法,其中決定有關該第一記憶體存取要求的該資料部分未呈現在該快取記憶體單元包括:決定該記憶體存取要求內含的一虛擬位址是否未呈現在一標籤表內。
  3. 如申請專利範圍第2項之電腦實施方法,其中從全域記憶體取得有關該記憶體存取要求的該資料部分包括:將該記憶體存取要求內含的該虛擬位址轉譯成一實體位址;及從有關該實體位址的一實體位置取得該資料部分。
  4. 如申請專利範圍第1項之電腦實施方法,更包括更新一標籤表內的一輸入,以反映有關該快取記憶體單元內的該資料部分之一位置。
  5. 如申請專利範圍第4項之電腦實施方法,其中該標籤表內的該輸入反映有關該記憶體存取要求的一可建構快取位準,該可建構快取位準指出使該標籤表內的該輸入失效之條件。
  6. 如申請專利範圍第5項之電腦實施方法,其中該條件指出該標籤表內的該輸入應該在該執行緒群組內的每一執行緒都已經在該處理單元上完成執行時失效,並且更包括在決定該執行緒群組內的每一執行緒都已經在該處理單元上完成執行時,使該標籤表內的該輸入失效。
  7. 如申請專利範圍第1項之電腦實施方法,其中該處理單元構成實施一貼圖處理管線,該執行緒群組內的每一執行緒都構成在該貼圖處理管線上執行,並且更包括建構該貼圖處理管線,以執行該執行緒群組內的執行緒之通用、非貼圖資料存取操作,取代貼圖資料存取操作。
  8. 如申請專利範圍第1項之電腦實施方法,其中該記憶體存取要求反映一通用、非貼圖資料存取操作。
  9. 一種夠成執行在一處理單元上執行有關執行緒群組的一通用資料存取操作之計算裝置,包括:該處理單元,其構成:從該執行緒群組內的一執行緒接收一記憶體存取要求;決定有關該記憶體存取要求的一資料部分是否不存在一快取記憶體單元;從全域記憶體取得有關該記憶體存取要求的該資料部分;在執行該執行緒群組內的該等執行緒期間,儲存該快取記憶體單元內的該資料部分;及在決定該執行緒群組內的每一執行緒都已經在該處理單元上完成執行時,從該快取記憶體單元當中清除該資料部分。
  10. 如申請專利範圍第9項之計算裝置,更包括:一記憶體單元,其耦合至該處理單元並且儲存程式指令,其中該等指令由該處理單元執行時導致該處理單元:決定有關該記憶體存取要求的該資料部分是否不存在該快取記憶體單元;從全域記憶體取得有關該記憶體存取要求的該資料部分;在執行該執行緒群組內的該等執行緒期間,儲存該快取記憶體單元內的該資料部分;及在決定該執行緒群組內的每一執行緒都已經在該處理單元上完成執行時,從該快取記憶體單元當中清除該資料部分。
TW102145928A 2012-12-19 2013-12-12 透過貼圖硬體執行記憶體存取操作之技術 TW201439770A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/720,746 US9697006B2 (en) 2012-12-19 2012-12-19 Technique for performing memory access operations via texture hardware

Publications (1)

Publication Number Publication Date
TW201439770A true TW201439770A (zh) 2014-10-16

Family

ID=50878806

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102145928A TW201439770A (zh) 2012-12-19 2013-12-12 透過貼圖硬體執行記憶體存取操作之技術

Country Status (4)

Country Link
US (1) US9697006B2 (zh)
CN (1) CN103885902A (zh)
DE (1) DE102013020485A1 (zh)
TW (1) TW201439770A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI747881B (zh) * 2016-03-31 2021-12-01 美商英特爾股份有限公司 將來源緊縮資料劃分為巷道的處理器、方法、系統及指令

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9165396B2 (en) * 2013-02-26 2015-10-20 Nvidia Corporation Graphics processing unit with a texture return buffer and a texture queue
US9171525B2 (en) 2013-02-26 2015-10-27 Nvidia Corporation Graphics processing unit with a texture return buffer and a texture queue
US9519668B2 (en) * 2013-05-06 2016-12-13 International Business Machines Corporation Lock-free creation of hash tables in parallel
KR20150096226A (ko) * 2014-02-14 2015-08-24 삼성전자주식회사 멀티미디어 데이터 프로세싱 방법 및 그에 따른 멀티미디어 데이터 프로세싱 시스템
US9811875B2 (en) * 2014-09-10 2017-11-07 Apple Inc. Texture state cache
CN106127673B (zh) * 2016-07-19 2019-02-12 腾讯科技(深圳)有限公司 一种视频处理方法、装置及计算机设备
US10402937B2 (en) * 2017-12-28 2019-09-03 Nvidia Corporation Multi-GPU frame rendering
US10949853B2 (en) * 2018-11-07 2021-03-16 Paypal, Inc. Systems and methods for providing concurrent data loading and rules execution in risk evaluations
CN109769115B (zh) * 2019-01-04 2020-10-27 武汉烽火众智数字技术有限责任公司 一种优化智能视频分析性能的方法、装置和设备
CN111736915B (zh) * 2020-06-05 2022-07-05 浪潮电子信息产业股份有限公司 云主机实例硬件加速设备的管理方法、装置、设备及介质

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5798762A (en) 1995-05-10 1998-08-25 Cagent Technologies, Inc. Controlling a real-time rendering engine using a list-based control mechanism
US6476816B1 (en) 1998-07-17 2002-11-05 3Dlabs Inc. Ltd. Multi-processor graphics accelerator
US7537773B1 (en) 1998-08-25 2009-05-26 Botulinum Toxin Research Associates, Inc. Chemodenervating pharmaceutical as anti-inflammatory agent
US6851038B1 (en) 2000-05-26 2005-02-01 Koninklijke Philips Electronics N.V. Background fetching of translation lookaside buffer (TLB) entries
US6664958B1 (en) 2000-08-23 2003-12-16 Nintendo Co., Ltd. Z-texturing
US6885378B1 (en) 2000-09-28 2005-04-26 Intel Corporation Method and apparatus for the implementation of full-scene anti-aliasing supersampling
EP1563380B1 (en) 2002-11-18 2006-07-19 ARM Limited Virtual to physical memory address mapping within a system having a secure domain and a non-secure domain
US6973557B2 (en) * 2003-02-04 2005-12-06 Sun Microsystems, Inc. Apparatus and method for dual access to a banked and pipelined data cache memory unit
TWI221221B (en) 2003-02-27 2004-09-21 Via Tech Inc Address decoding method and related apparatus by comparing mutually exclusive bit-patterns of address
US7532537B2 (en) 2004-03-05 2009-05-12 Netlist, Inc. Memory module with a circuit providing load isolation and memory domain translation
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US6972769B1 (en) * 2004-09-02 2005-12-06 Nvidia Corporation Vertex texture cache returning hits out of order
US8144149B2 (en) * 2005-10-14 2012-03-27 Via Technologies, Inc. System and method for dynamically load balancing multiple shader stages in a shared pool of processing units
CN1928918B (zh) * 2005-10-14 2012-10-10 威盛电子股份有限公司 图形处理装置及于图形处理装置中执行着色操作的方法
US20070113055A1 (en) * 2005-11-15 2007-05-17 Dale Jason N Apparatus and method for improving single thread performance through speculative processing
US7492368B1 (en) 2006-01-24 2009-02-17 Nvidia Corporation Apparatus, system, and method for coalescing parallel memory requests
US20080028181A1 (en) 2006-07-31 2008-01-31 Nvidia Corporation Dedicated mechanism for page mapping in a gpu
US7685409B2 (en) * 2007-02-21 2010-03-23 Qualcomm Incorporated On-demand multi-thread multimedia processor
US7793038B2 (en) 2007-06-26 2010-09-07 International Business Machines Corporation System and method for programmable bank selection for banked memory subsystems
US8325184B2 (en) * 2007-09-14 2012-12-04 Qualcomm Incorporated Fragment shader bypass in a graphics processing unit, and apparatus and method thereof
US8200939B2 (en) 2008-01-31 2012-06-12 Arm Norway As Memory management unit in a microprocessor system
US7945757B1 (en) 2008-02-13 2011-05-17 Nvidia Corporation Conserving and shaping address space with arrays
US8219778B2 (en) 2008-02-27 2012-07-10 Microchip Technology Incorporated Virtual memory interface
US20100123717A1 (en) * 2008-11-20 2010-05-20 Via Technologies, Inc. Dynamic Scheduling in a Graphics Processor
US8489801B2 (en) 2009-03-04 2013-07-16 Henry F. Huang Non-volatile memory with hybrid index tag array
US8698823B2 (en) * 2009-04-08 2014-04-15 Nvidia Corporation System and method for deadlock-free pipelining
TWI379195B (en) 2009-04-13 2012-12-11 Realtek Semiconductor Corp Method and device for accessing memory and central processing unit using the same
US8806144B2 (en) * 2009-05-12 2014-08-12 Stec, Inc. Flash storage device with read cache
US8799553B2 (en) 2010-04-13 2014-08-05 Apple Inc. Memory controller mapping on-the-fly
US8626989B2 (en) 2011-02-02 2014-01-07 Micron Technology, Inc. Control arrangements and methods for accessing block oriented nonvolatile memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI747881B (zh) * 2016-03-31 2021-12-01 美商英特爾股份有限公司 將來源緊縮資料劃分為巷道的處理器、方法、系統及指令
US11204764B2 (en) 2016-03-31 2021-12-21 Intel Corporation Processors, methods, systems, and instructions to Partition a source packed data into lanes

Also Published As

Publication number Publication date
DE102013020485A1 (de) 2014-06-26
CN103885902A (zh) 2014-06-25
US9697006B2 (en) 2017-07-04
US20140173258A1 (en) 2014-06-19

Similar Documents

Publication Publication Date Title
TWI531974B (zh) 管理巢狀執行串流的方法和系統
TWI624791B (zh) 用於在多緒處理單元中改善性能之技術
TWI529626B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
TWI512466B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
TW201439770A (zh) 透過貼圖硬體執行記憶體存取操作之技術
US8982140B2 (en) Hierarchical memory addressing
TWI525438B (zh) 透過貼圖硬體執行記憶體存取操作之技術
TWI525437B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
TWI588653B (zh) 針對記憶體存取的動態記憶列模式定址
TWI466027B (zh) 解決執行緒發散的方法及系統
TWI498819B (zh) 執行成型記憶體存取作業的系統和方法
CN109978751A (zh) 多gpu帧渲染
US8917271B2 (en) Redistribution of generated geometric primitives
TWI488118B (zh) 處理系統中動態產生任務的傳訊、排序和執行
TW201435591A (zh) 存取內容可定址記憶體之技術
US20110072235A1 (en) Efficient memory translator with variable size cache line coverage
US20130014118A1 (en) Simultaneous submission to a multi-producer queue by multiple threads
TW201432609A (zh) 已分配的拼貼快取
TWI489392B (zh) 多個應用程式分享的圖形處理單元
TW201337750A (zh) 多層指令快取預先擷取
TWI633516B (zh) 曲面細分及幾何著色器的功率效率屬性處理
US20220100391A1 (en) Efficient memory-semantic networking using scoped memory models
TW201337829A (zh) 暫存器檔案型讀取
TWI501156B (zh) 多頻時間切面組
TW201351276A (zh) 計算工作的排程和執行