TW201435591A - 存取內容可定址記憶體之技術 - Google Patents

存取內容可定址記憶體之技術 Download PDF

Info

Publication number
TW201435591A
TW201435591A TW102145593A TW102145593A TW201435591A TW 201435591 A TW201435591 A TW 201435591A TW 102145593 A TW102145593 A TW 102145593A TW 102145593 A TW102145593 A TW 102145593A TW 201435591 A TW201435591 A TW 201435591A
Authority
TW
Taiwan
Prior art keywords
bit
unit
memory
virtual address
processing
Prior art date
Application number
TW102145593A
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 TW201435591A publication Critical patent/TW201435591A/zh

Links

Classifications

    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本發明揭示一種標籤單元,其構成管理一快取單元,其包括實施一集合雜湊函數的一接合器。該集合雜湊函數將一虛擬位址映射至一特定內容可定址記憶體單元(CAM,Content-Addressable Memory Unit)。該接合器利用將該虛擬位址分成上、中間與下部分,以實施該集合雜湊函數。該上部分更分成偶數索引位元及奇數索引位元,該等偶數索引位元使用一XOR樹以減少至單一位元,且該等奇數索引位元用類似方式減少。這些單一位元組合該虛擬位址的中間部分,以提供用以識別一特定內容可定址記憶體單元之一內容可定址記憶體單元數。該已識別的內容可定址記憶體單元則經由查詢以決定該虛擬位址的一標籤部分是否存在,以指出一快取是否命中或快取誤失。

Description

存取內容可定址記憶體之技術
本發明通常關於記憶體存取操作,更具體地,關於用於存取內容可定址記憶體之技術。
一習知快取記憶體單元係組合一標籤單元操作,維持有關目前位在該快取記憶體單元內的資料之虛擬位址標籤。當處理一記憶體存取要求時,該標籤單元查詢儲存這些虛擬位址標籤的一或多個內容可定址記憶體單元(CAM,Ccontent Addressable Memory Unit),以決定該等內容可定址記憶體單元之一者是否包括有關該記憶體存取要求的一虛擬位址標籤。每一內容可定址記憶體單元通常都對應該快取記憶體單元內的一「集合」。當一已知內容可定址記憶體單元包括該虛擬位址標籤時,有關該標籤的資料位在該快取記憶體內的一對應集合內(即是發生快取命中)。當一已知內容可定址記憶體單元不包括該虛擬位址標籤時,則有關該標籤的資料不在該快取記憶體內(即是發生快取誤失)。
該標籤單元通常運用一特定集合雜湊函數,其根據該虛擬位址標籤來決定一特定集合。決定該特定集合之後,然後標籤單元以上述方式查詢該對應的內容可定址記憶體單元,且決定是否發生快取命中或快取誤失。典型集合雜湊函數會緊密組合該快取記憶體單元的預期使用率模式。例如,一習知集合雜湊函數可根據該虛擬位址的索引部分,計算一已知虛擬位址的該集合。此方式對於依序記憶體存取包括不同索引部分的使用率模式來說是足夠,因為在這種情況下,依序內容可定址記憶體單元存取應該分散在不同內容可定址記憶體單元。
不過,某些使用率模式牽涉到非依序記憶體存取,其中該順序當中每一記憶體存取的該標籤部分改變,不過該索引部分則保持不變。 在這些情況下,上述該習知集合雜湊函數只重複識別一內容可定址記憶體單元。因此,一內容可定址記憶體單元可能在多個查詢之下變成過載,因此降低該標籤單元可運作的速度。此外,此方式允許瞭解其餘的內容可定址記憶體單元,如此無法有效運用標籤單元資源。
因此,業界需要一種更有效存取內容可定址記憶體單元之技術。
一種用於存取複數個記憶體模組內的一記憶體模組之電腦實施方法,包括:將一虛擬位址解析成一第一部分、一第二部分及一第三部分;將該第一部分解析成偶數索引位元及奇數索引位元,其中該等偶數索引位元之每一者在該虛擬位址內具有一不同的偶數編號索引,且該等奇數索引位元之每一者在該虛擬位址內具有一不同的奇數編號索引;將該等偶數索引位元減少至一第一位元;將該等奇數索引位元減少至一第二位元;及利用組合該第一位元和該第二位元與該第二部分來產生一記憶體模組數,其中該記憶體模組數識別該等複數個記憶體模組內的該記憶體模組。
所揭示技術之一優點為可避免過度使用一特定記憶體模組,如此相較於習知方式能更有效率運用記憶體模組集合。
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‧‧‧第1.5快取單元
340‧‧‧工作分配單元
345‧‧‧任務表
352‧‧‧統一位址映射單元
370‧‧‧指令L1快取單元
380‧‧‧記憶體與快取單元互連
400‧‧‧圖形處理管線
410‧‧‧資料組合器
415‧‧‧頂點處理單元
420‧‧‧圖元組合器
425‧‧‧幾何處理單元
450‧‧‧視埠縮放、消隱及裁切單元
455‧‧‧光柵器
460‧‧‧片段處理單元
465‧‧‧光柵操作單元
500‧‧‧貼圖處理管線
502‧‧‧定址單元
504‧‧‧標籤單元
506‧‧‧誤失處理單元
508‧‧‧資料單元
510‧‧‧先進先出單元
512‧‧‧快取單元
525‧‧‧佇列
602‧‧‧接合器
604‧‧‧內容可定址記憶體單元
606‧‧‧組合器
700‧‧‧方法
800‧‧‧範例電路
802‧‧‧虛擬位址
804‧‧‧奇數位元部分
806‧‧‧偶數位元部分
808‧‧‧XOR樹
810‧‧‧XOR樹
812‧‧‧第二位元
814‧‧‧第一位元
816‧‧‧合併
818‧‧‧中間部分
820‧‧‧2位元加算
如此上面簡單彙總可詳細了解本發明上述特色的方式,本發明的更特定說明則參照具體實施例,某些具體實施例說明於附圖。不過吾人應該注意,附圖只說明本發明的典型具體實施例,因此並不對本發明的範疇產生限制,本發明承認其他等效具體實施例。
第一圖為例示構成實施本發明之一或多個態樣之電腦系統的方塊圖;第二圖為根據本發明之一具體實施例之用於第一圖中該電腦系統之一平行處理子系統的方塊圖;第三A圖為根據本發明之一具體實施例之第二圖中前端的方塊圖;第三B圖為根據本發明之一具體實施例之第二圖中平行處 理單元之一者內的一般處理叢集的方塊圖;第三C圖為根據本發明之一具體實施例之第三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、平行處理記憶體204、或系統記憶體104之間共用的一L2快取單元擷取。每一串流多重處理器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可讀取儲存在平行處理記憶體204或系統記憶體104內的資料,用來處理該片段資料。根據該程式編輯的取樣率,片段可依照像素、取樣或其他粒度來著色。
光柵操作單元465為一種處理單元,其執行光柵操作,例如模板、z測試、混色等等,且將像素資料當成處理過的圖形資料,以便儲存在圖形記憶體內。該處理過的圖形資料可儲存在圖形記憶體內,例如平行處理記憶體204,及/或系統記憶體104,用於顯示在顯示裝置110上或用於由中央處理單元102或平行處理子系統112進一步處理。在本發明的某些具體實施例中,光柵操作單元465構成將寫入記憶體的z或顏色資料壓縮,且將從記憶體讀取的z或顏色資料解壓縮。
存取內容可定址記憶體
如上面組合第三B圖所述,第三B圖所示的貼圖單元315構成由串流端重處理器310執行貼圖處理操作(另如第三B圖所示)。例如:串流多重處理器310可實施貼圖單元315,以執行有關第四圖所示圖形處理管線400的一或多個貼圖相關操作。此外,串流多重處理器310也可實施貼圖單元315,來執行使用現有貼圖資料通道的通用處理操作。
當與串流多重處理器310組合操作時,貼圖單元315構成從第一圖至第三C圖所示任何記憶體單元讀取貼圖資料。此外,貼圖單元315也可構成執行通用記憶體存取操作,以使用上述現有的貼圖資料通道從這些記憶體單元讀取任意資料。當串流多重處理器310構成執行一般用途處理操作,貼圖單元315可構成實施一貼圖處理管線,以下組合第五圖進行討論。以下討論的該貼圖處理管線允許貼圖單元315執行通用資料存取操作或透過相同資料通道執行貼圖資料存取操作。
第五圖為根據本發明之一具體實施例之可構成第三B圖中該一般處理叢集208內的一貼圖單元315來實施的一貼圖處理管線500之 概念圖。如所示,貼圖處理管線500包括一定址單元502、一標籤單元504、一誤失處理單元506及一資料單元508,該資料單元包括一先進先出(FIFO,First-In First-Out)單元510和一快取單元512。
貼圖處理管線500構成處理接收自第三B圖所示串流多重處理器310的記憶體存取要求。已知的記憶體存取要求應該代表一貼圖資料存取操作,例如從記憶體讀取貼圖的一讀取操作。另外,已知的記憶體存取要求應該代表一通用資料存取操作,例如一全域記憶體載入操作。貼圖處理管線500可服務有關一已知執行緒群組的多個不同執行緒之記憶體存取要求,且這些記憶體存取要求可代表通用(即是非貼圖)資料存取操作或貼圖資料存取操作。
在貼圖處理管線500構成執行通用資料存取操作的情況下,定址單元502可從第三B圖所示的串流多重處理器310接收包括虛擬位址的一記憶體存取要求。該虛擬位址包括一標籤部分、一索引部分及一偏移部分。該標籤部分可代表該虛擬位址的最高有效位元(MSB,Most Significant Bit),而該偏移部分可代表該虛擬位址的最低有效位元(LSB,Least Significant Bit)。定址單元502構成將該記憶體存取要求內的該虛擬位址解析成該標籤、索引及偏移部分。
標籤單元504從定址單元502接收該虛擬位址的該標籤、索引及偏移部分,且執行一標籤查閱程序。如此,標籤單元504決定有關該記憶體存取要求的資料是否位在快取單元512內。標籤單元504藉由整個存取內容可定址記憶體單元(CAM,Content-Addressable Memory Unit)及識別可儲存該標籤的一特定內容可定址記憶體單元,以執行該標籤查閱程序。標籤單元504利用實施一集合雜湊函數,其根據該虛擬位址的該標籤部分來計算一內容可定址記憶體單元。例如:該集合雜湊函數可根據該虛擬位址的該標籤部分,識別四個內容可定址記憶體單元集合當中的第一、第二、第三和第四內容可定址記憶體單元。以下組合第六圖,更詳細描述用來識別一特定內容可定址記憶體單元的標籤單元504內之該等內容可定址記憶體單元及該集合雜湊函數。
當標籤單元504決定該標籤部分位在上述該等內容可定址 記憶體單元之一者內,表示快取命中,然後標籤單元504從該內容可定址記憶體單元當中擷取一槽位數,該槽位數代表快取單元512內的一快取線。標籤單元504將該槽位數推送進入先進先出單元510。快取單元512填入來自先進先出單元510的該槽位數,當該槽位數變成可用時,然後從該對應快取線取得有關該槽位數的資料。
當標籤單元504決定該標籤部分並未位在上述該等內容可定址記憶體單元之一者內,表示快取誤失,然後標籤單元504將該虛擬位址的該標籤與偏移部分傳遞至誤失處理單元506。接著根據該標籤部分存取該等內容可定址記憶體單元之一者可判定為命中,因為將取得有關該標籤部分的資料,並推入快取單元512。這些存取可判定為命中,直到有關該標籤部分的一內容可定址記憶體單元輸入為失效或被取代。誤失處理單元506執行虛擬至實體位址轉譯,然後存取儲存在有關該結果實體位址的實體位置上的資料。然後誤失處理單元506提供該取得的資料給資料單元508。
一旦有關該記憶體存取要求的資料變成可用,例如從快取單元512讀取該資料或由誤失處理單元506從全域記憶體取得該資料,則資料單元508提供該要求的資料回給串流多重處理器310。在此方式中,貼圖處理管線500可構成代表一執行緒群組內的一或多個執行緒服務的一記憶體存取要求。
第六圖為根據本發明的一具體實施例之位在第五圖中該貼圖處理管線500內之標籤單元504的概念圖。如所示,標籤單元504包括耦合至內容可定址記憶體單元604-0、604-1、604-2和604-3的接合器602。內容可定址記憶體單元604之每一者耦合至一組合器606。
標籤單元504處理一記憶體存取操作時,接合器602從定址單元502接收有關該記憶體存取要求的一虛擬位址之標籤、索引及偏移部分。接合器602也可同時接收標籤、索引及偏移部分,其中每一組標籤、索引及偏移部分都對應不同的記憶體存取要求。如上述,每一此記憶體存取要求可與在第五圖所示貼圖處理管線500上執行的一執行緒群組內的不同執行緒有關聯。
針對已知記憶體存取要求及有關虛擬位址的對應標籤、索引 與偏移部分而言,接合器602構成決定該標籤部分是否位在內容可定址記憶體單元604之一者內。如此,接合器602構成實施上面組合第五圖描述的該集合雜湊函數。在一具體實施例中,第五圖所示的定址單元502實施本說明書所述的該集合雜湊函數。該集合雜奏功能根據該虛擬位址的該標籤、索引及偏移部分,計算一內容可定址記憶體單元數。在一具體實施例中,接合器602可接收針對相同資料的多個記憶體存取要求,且可將這些要求「接合」成一要求。接合器606可將此「已接合」要求當成單一要求來處理,且針對該已接合要求實施該集合雜湊函數一次。
一旦已經識別已知的內容可定址記憶體單元604,則接合器602將該虛擬位址的該標籤部分傳遞給已識別的內容可定址記憶體單元604。然後已識別的內容可定址記憶體單元604該標籤位在該內容可定址記憶體單元604內(指示快取命中),或可判定該標籤不在該內容可定址記憶體單元604內(指示快取誤失)。
在快取命中的情況下,已識別的內容可定址記憶體單元604將內容可定址記憶體單元604內儲存的槽位數連同該標籤部分提供給組合器606。組合器606構成累積槽位數,然後採用和上面組合第五圖所描述相同的方式,將這些槽位數傳遞至先進先出單元510。
在快取誤失的情況下,已識別的內容可定址記憶體單元604將該虛擬位址的該標籤、索引與偏移部分提供給組合器606,然後累積有關快取誤失的虛擬位址部分,且將這些資訊傳遞給誤失處理單元506。然後誤失處理單元506採用上面組合第五圖所描述的方式,處理這些快取誤失。
接合器602構成實施本發明的該集合雜湊函數,以利用執行一系列步驟來計算一內容可定址記憶體單元數。首先,接合器606將該虛擬位址分成下、中間及上部分,其中該上部分包括一些最高有效位元,且該下部分包括一些最低有效位元。接合器606忽略該下部分,然後將該上部分分成一偶數位元部分及一奇數位元部分,該偶數位元部分包括該上部分具有偶數索引的位元,且該奇數位元部分包括該上部分具有奇數索引的位元。
然後,接合器602使用一XOR樹,將該偶數位元部分減少 至一第一位元,且也使用一XOR樹,將該奇數位元部分減少至一第二位元。然後接合器602組合該第一位元和該第二位元與該虛擬位址的中間部分。在一具體實施例中,該虛擬位址的中間部分包括兩位元,且接合器602利用將該第一和第二位元串連成兩位元,然後將該結果加入該虛擬位址的中間部分,以組合該第一位元、第二位元及該中間部分。組合該第一位元、第二位元及中間部分的結果為代表內容可定址記憶體單元數的兩位元二進位數。
接合器602構成當由在一般處理叢集208上執行的一軟體應用程式設置時,實施上述的該集合雜湊函數。接合器602也可由該軟體應用程式構成實施其他集合雜湊函數。在一具體實施例中,該集合雜湊函數使用根據本源多項式的Galois除法,以產生除法餘數。利用將當作XOR過濾器的基元多項式反覆套用在每次反覆之後都左移的一輸入位址,以計算該餘數。該過濾結果饋送回至該餘數計算的最低位元,直到該處理完成為止。當左移已經消耗原始輸入位址的所有位元,則完成該處理。
一硬體實施可使用計算該除法餘數當中採用的該反覆步驟,根據該本源多項式定義一平行XOR樹。每一輸出位元都由個別XOR樹所定義,不過該樹內許多項都可在所有輸出位元中多次使用,如此造成更有效率的實施。該等樹以此方式指定以確保該集合雜湊函數在完整範圍的輸入虛擬位址產生值得均勻分布。然後,此計算的位元相對數量可用來代表該內容可定址記憶體單元數。接合器602構成實施一集合雜湊函數,例如本說明書所描述,以在處理一虛擬位置,或在更新這些內容可定址記憶體單元以包括最近已快取資料的虛擬位址標籤部分時,查詢內容可定址記憶體單元604。
第七圖為根據本發明之一具體實施例之用於執行一集合雜湊函數之方法步驟的流程圖。雖然已經組合第一圖至第三圖的系統來描述該等方法步驟,精通技術人士應瞭解,構成執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
如所示,方法700從步驟702開始,其中第六圖所示的接合器602接收來自第五圖所示定址單元502的一虛擬位址。該虛擬位址是與 一記憶體存取要求有關連,該記憶體存取要求是由貼圖處理管線500針對一執行緒群組內的一或多個執行緒進行處理。
在步驟704,接合器606將該虛擬位址分成下、中間及上部分,其中該上部分包括一些最高有效位元,且該下部分包括一些最低有效位元。在步驟706,接合器606忽略該下部分。在步驟708,接合器606將該上部分分成一偶數位元部分及一奇數位元部分,該偶數位元部分包括該具偶數索引之上部分的位元,且該奇數位元部分包括該具奇數索引之上部分的位元。
在步驟710,接合器606使用一XOR樹將該偶數位元部分減少至一第一位元。在步驟712,接合器606使用一XOR樹將該奇數位元部分減少至一第二位元。在步驟714,接合器602組合該第一位元和該第二位元與該虛擬位址的中間部分。在一具體實施例中,該虛擬位址的中間部分包括兩位元,且接合器602藉由將該第一和第二位元串連成兩位元,然後將該結果兩位元加入該虛擬位址的中間部分,以組合該第一位元、第二位元及該中間部分。在步驟716,接合器602從該組合值當中擷取一內容可定址記憶體單元數。利用組合該第一位元、第二位元及中間部分產生的該組合值為代表內容可定址記憶體單元數的兩位元二進位數。然後方法700結束。
第八圖為根據本發明具體實施例,構成執行組合第七圖所描述的該集合雜湊函數之範例電路800概念圖。如所示,電路800將虛擬位址802的中間部分分成奇數位元部分804及偶數位元部分806。而虛擬位址802的下方8位元則可忽略。XOR樹810將偶數位元部分806減少至第一位元814,且XOR樹808將奇數位元部分804減少至第二位元812。合併816連接第一位元814與第二位元812,然後2位元加算820將該結果兩位元加入中間部分818。中間部分818代表虛擬位址802的第7和第8位元。2位元加算820的輸出為代表該內容可定址記憶體單元數的兩位元二進位數。
利用實施本說明書所述的該集合雜湊函數,接合器602可將有關不同記憶體存取要求的內容可定址記憶體單元存取分散通過不同內容 可定址記憶體單元604,藉此改善內容可定址記憶體單元資源使用率。運用此方式,不同的內容可定址記憶體單元604可同時取得有關不同記憶體存取要求的標籤資訊,藉此提高標籤單元504整體服務多個記憶體存取要求的速度。
總結來說,一標籤單元構成管理一快取單元,其包括實施一集合雜湊函數的一接合器。該集合雜湊函數將一虛擬位址映射至一特定內容可定址記憶體單元(CAM,Content-Addressable Memory Unit)。該接合器利用將該虛擬位址分成上、中間與下部分,以實施該集合雜湊函數。該上部分進一步分成偶數索引位元及奇數索引位元,該等偶數索引位元使用一XOR樹減少至單一位元,且該等奇數索引位元使用類似方式減少。這些單一位元可組合該虛擬位址的中間部分,以提供一內容可定址記憶體單元數識別一特定內容可定址記憶體單元。然後查詢該已識別的內容可定址記憶體單元,以決定是否存在該虛擬位址的一標籤部分,以指示快取命中或快取誤失。
就優點來說,本說明書描述的該集合雜湊函數避免特定內容可定址記憶體單元過度使用,如此相較於傳統方式能更有效率運用內容可定址記憶體單元資源。
本發明的一具體實施例可實施當成搭配電腦系統使用的程式產品。該程式產品的程式定義該等具體實施例(包括本說明書所述的方法)的功能,且可包括在電腦可讀取儲存媒體上。例示的電腦可讀取儲存媒體包括但不受限於:(i)其上資訊永久儲存的不可抹寫儲存媒體(例如電腦內的唯讀記憶體裝置,例如小型碟片唯讀記憶體(CD-ROM)光碟機可讀取的CD-ROM光碟、快閃記憶體、ROM晶片或任何一種固態非揮發性半導體記憶體);及(ii)上其儲存可變資訊的可抹寫儲存媒體(例如磁碟機或硬碟內的磁碟或任何一種固態隨機存取半導體記憶體)。
在此已經參考特定具體實施例說明本發明。不過精通此技術的人士應瞭解,在不悖離申請專利範圍內公佈之本發明廣泛精神及範疇下,可進行許多修改與變更。因此前述說明與圖式僅供參考而不做限制。
602‧‧‧接合器
604‧‧‧內容可定址記憶體單元
606‧‧‧組合器

Claims (10)

  1. 一種用於存取複數個記憶體模組內的一記憶體模組之電腦實施方法,該方法包括:將一虛擬位址解析成一第一部分、一第二部分及一第三部分;將該第一部分解析為偶數索引位元及奇數索引位元,其中該等偶數索引位元之每一者在該虛擬位址內具有一不同的偶數編號索引,且該等奇數索引位元之每一者在該虛擬位址內具有一不同的奇數編號索引;將該等偶數索引位元減少至一第一位元;將該等奇數索引位元減少至一第二位元;及利用組合該第一位元和該第二位元與該第二部分以產生一記憶體模組數,其中該記憶體模組數識別該等複數個記憶體模組內的該記憶體模組。
  2. 如申請專利範圍第1項之電腦實施方法,其中將該等偶數索引位元減少至該第一位元包括透過一第一XOR樹處理該等偶數索引位元,且其中將該等奇數索引位元減少至該第二位元包括透過一第二XOR樹處理該等奇數索引位元。
  3. 一種構成存取複數個記憶體模組內的一記憶體模組之子系統,包括:一接合器單元,其構成:將一虛擬位址解析成一第一部分、一第二部分及一第三部分;將該第一部分解析為偶數索引位元及奇數索引位元,其中該等偶數索引位元之每一者在該虛擬位址內具有一不同的偶數編號索引,且該等奇數索引位元之每一者在該虛擬位址內具有一不同的奇數編號索引;將該等偶數索引位元減少至一第一位元;將該等奇數索引位元減少至一第二位元;及利用組合該第一位元和該第二位元與該第二部分以產生一記憶體模組數,其中該記憶體模組數識別該等複數個記憶體模組內的該記憶 體模組。
  4. 如申請專利範圍第3項之子系統,其中該第一部分包括該虛擬位址的一或多個最高有效位元,且該第三部分包括該虛擬位址的一或多個最低有效位元。
  5. 如申請專利範圍第3項之子系統,其中該接合器單元更構成利用透過一第一XOR樹處理該等偶數索引位元,將該等偶數索引位元減少至該第一位元,且利用透過一第二XOR樹處理該等奇數索引位元,將該等奇數索引位元減少至該第二位元。
  6. 如申請專利範圍第3項之子系統,其中該第二部分包括二位元,且該接合器單元更構成利用以下將該第一位元和該第二位元與該第二部分組合:連結該第一位元與該第二位元以產生一位元串流;及在該位元串流與該第二部分之間執行一兩位元加算,以產生該記憶體模組索引。
  7. 如申請專利範圍第3項之子系統,其中該記憶體模組包括一內容可定址記憶體單元(CAM,Content-Addressable Memory Unit),構成儲存有關一快取記憶體單元的虛擬位址的標籤部及槽位數。
  8. 如申請專利範圍第7項之子系統,其中該接合器單元更構成:使用該虛擬位址的一標籤部分查詢該記憶體模組;決定該記憶體模組的該標籤部分是否存在該虛擬位址內;從該快取記憶體單元當中擷取一槽位數,其反映該快取記憶體單元內有關該虛擬位置的資料所在之一位置;及根據該槽位數讀取有關該虛擬位址的該資料。
  9. 如申請專利範圍第7項之子系統,其中該接合器單元更構成:使用該虛擬位址的一標籤部分查詢該記憶體模組;決定該記憶體模組的該標籤部分是否不存在該虛擬位址內;使用該虛擬位址執行一虛擬至實體位址轉譯,以產生一實體位址;從有關該實體位址的一實體位置讀取有關該虛擬位址的資料。
  10. 如申請專利範圍第9項之子系統,其中該接合器單元更構成更新該快 取記憶體單元,以包括有關該虛擬位址並且從有關該實體位址的該實體位置讀取之資料。
TW102145593A 2012-12-19 2013-12-11 存取內容可定址記憶體之技術 TW201435591A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/720,755 US9348762B2 (en) 2012-12-19 2012-12-19 Technique for accessing content-addressable memory

Publications (1)

Publication Number Publication Date
TW201435591A true TW201435591A (zh) 2014-09-16

Family

ID=50878815

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102145593A TW201435591A (zh) 2012-12-19 2013-12-11 存取內容可定址記憶體之技術

Country Status (4)

Country Link
US (1) US9348762B2 (zh)
CN (1) CN103885893A (zh)
DE (1) DE102013020968A1 (zh)
TW (1) TW201435591A (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140354658A1 (en) * 2013-05-31 2014-12-04 Microsoft Corporation Shader Function Linking Graph
DE102015205827A1 (de) * 2015-03-31 2016-10-06 Siemens Aktiengesellschaft Verfahren zum Schutz sicherheitsrelevanter Daten in einem Cachespeicher
US9514061B1 (en) * 2015-05-20 2016-12-06 Qualcomm Incorporated Method and apparatus for cache tag compression
US9934150B1 (en) * 2015-10-21 2018-04-03 Marvell International Ltd. Data caching circuit and method
US20170301382A1 (en) * 2016-04-14 2017-10-19 Cavium, Inc. Method and apparatus for shared multi-port memory access
GB2551529B (en) * 2016-06-21 2018-09-12 Advanced Risc Mach Ltd Switching between private cache and shared memory to handle atomic operations
US10909037B2 (en) * 2017-04-21 2021-02-02 Intel Corpor Ation Optimizing memory address compression
US10325341B2 (en) 2017-04-21 2019-06-18 Intel Corporation Handling pipeline submissions across many compute units
CN109992529B (zh) * 2018-01-03 2021-07-16 华为技术有限公司 虚拟地址确定方法及装置、处理器、存储介质
US11442867B2 (en) * 2018-12-20 2022-09-13 Micron Technology, Inc. Using a second content-addressable memory to manage memory burst accesses in memory sub-systems
US11487671B2 (en) * 2019-06-19 2022-11-01 Advanced Micro Devices, Inc. GPU cache management based on locality type detection
US11403217B2 (en) * 2019-10-30 2022-08-02 Qualcomm Incorporated Memory bank group interleaving
CN113377684B (zh) * 2020-03-09 2024-03-08 瑞昱半导体股份有限公司 数据写入系统与方法
US11972140B2 (en) 2021-04-26 2024-04-30 Apple Inc. Hashing with soft memory folding
US11693585B2 (en) 2021-04-26 2023-07-04 Apple Inc. Address hashing in a multiple memory controller system
US11934313B2 (en) 2021-08-23 2024-03-19 Apple Inc. Scalable system on a chip

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6476816B1 (en) 1998-07-17 2002-11-05 3Dlabs Inc. Ltd. Multi-processor graphics accelerator
US6851038B1 (en) * 2000-05-26 2005-02-01 Koninklijke Philips Electronics N.V. Background fetching of translation lookaside buffer (TLB) entries
JP3895909B2 (ja) 2000-08-01 2007-03-22 株式会社東芝 携帯型情報機器及び携帯型情報機器の駆動方法
DE60306952T2 (de) 2002-11-18 2007-02-08 Arm Ltd., Cherry Hinton Zuordnung von virtuellen zu physischen speicheradressen in einem system mit einem sicheren bereich und einem nicht sicheren bereich
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
US20080028181A1 (en) 2006-07-31 2008-01-31 Nvidia Corporation Dedicated mechanism for page mapping in a gpu
US7793038B2 (en) * 2007-06-26 2010-09-07 International Business Machines Corporation System and method for programmable bank selection for banked memory subsystems
US8219778B2 (en) 2008-02-27 2012-07-10 Microchip Technology Incorporated Virtual memory interface
US8489801B2 (en) 2009-03-04 2013-07-16 Henry F. Huang Non-volatile memory with hybrid index tag array
TWI379195B (en) 2009-04-13 2012-12-11 Realtek Semiconductor Corp Method and device for accessing memory and central processing unit using the same
US8719652B2 (en) 2009-05-12 2014-05-06 Stec, Inc. Flash storage device with read disturb mitigation
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
US20130262787A1 (en) * 2012-03-28 2013-10-03 Venugopal Santhanam Scalable memory architecture for turbo encoding

Also Published As

Publication number Publication date
CN103885893A (zh) 2014-06-25
US20140173193A1 (en) 2014-06-19
US9348762B2 (en) 2016-05-24
DE102013020968A1 (de) 2014-06-26

Similar Documents

Publication Publication Date Title
TW201435591A (zh) 存取內容可定址記憶體之技術
TWI531974B (zh) 管理巢狀執行串流的方法和系統
TWI525584B (zh) 多執行緒處理單元內之可程式繫結
TWI529626B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
TWI512466B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
US8982140B2 (en) Hierarchical memory addressing
TWI498819B (zh) 執行成型記憶體存取作業的系統和方法
US9329988B2 (en) Parallel dynamic memory allocation using a nested hierarchical heap
US8751771B2 (en) Efficient implementation of arrays of structures on SIMT and SIMD architectures
TWI475386B (zh) 有記憶體分配限制的協同處理器的虛擬記憶體結構
TWI466027B (zh) 解決執行緒發散的方法及系統
TWI525437B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
TWI588653B (zh) 針對記憶體存取的動態記憶列模式定址
TWI489385B (zh) 一種用於預先擷取快取線的電腦實作方法與子系統
TWI525438B (zh) 透過貼圖硬體執行記憶體存取操作之技術
US20130014118A1 (en) Simultaneous submission to a multi-producer queue by multiple threads
TWI502489B (zh) 叢集多階暫存檔的暫存器分配
TW201439770A (zh) 透過貼圖硬體執行記憶體存取操作之技術
TWI489392B (zh) 多個應用程式分享的圖形處理單元
TW201439970A (zh) 儲存共用頂點之技術
TWI633516B (zh) 曲面細分及幾何著色器的功率效率屬性處理
US9720842B2 (en) Adaptive multilevel binning to improve hierarchical caching
TW201443826A (zh) 儲存共用頂點之技術
GB2491490A (en) Emitting coherent output from multiple execution threads using the printf command
TWI501156B (zh) 多頻時間切面組