TW201351277A - 平行執行緒子集合的均衡載入處理 - Google Patents

平行執行緒子集合的均衡載入處理 Download PDF

Info

Publication number
TW201351277A
TW201351277A TW102107244A TW102107244A TW201351277A TW 201351277 A TW201351277 A TW 201351277A TW 102107244 A TW102107244 A TW 102107244A TW 102107244 A TW102107244 A TW 102107244A TW 201351277 A TW201351277 A TW 201351277A
Authority
TW
Taiwan
Prior art keywords
thread
memory
parallel
threads
equalization
Prior art date
Application number
TW102107244A
Other languages
English (en)
Inventor
Michael Fetterman
Stewart Glenn Carlton
Douglas J Hahn
Rajeshwaran Selvanesan
Shirish Gadre
Steven James Heinrich
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 TW201351277A publication Critical patent/TW201351277A/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/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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

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)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

本發明一具體實施例提出一種用於當該等平行執行緒要求相同的記憶體位址時處理一執行緒群組之平行執行緒的載入指令之技術。該載入/儲存單元基於一或多種均衡樣式決定平行執行緒的每一子集合之該等記憶體位址是否匹配。當針對該等均衡樣式中至少一者可達成一匹配時,該載入/儲存單元傳送一讀取要求來取得該等平行執行緒之子集合的資料。相較於針對在該子集合中每一執行緒執行一獨立的讀取要求,被傳送之讀取要求的數目即可減少。基於出現在程式指令中常用的存取樣式可定義出多種均衡樣式。基於當並無一完整交叉開關互連接可使用時在該載入/儲存單元和該記憶體之間的互連接限制,亦可定義出多種均衡樣式。

Description

平行執行緒子集合的均衡載入處理
本發明概略關於平行處理,尤指一種用於利用降低的頻寬存取均衡資料的平行架構。
在一種單一指令多重執行緒(SIMT,Single-instruction multiple-thread)處理環境中,執行緒被組織成被稱為執行相同程式之包繞的P個平行執行緒之群組。雖然一執行緒群組的該等P個執行緒平行地執行該程式的每一指令,一執行緒群組中每一執行緒使用其本身的資料和暫存器來獨立地執行該指令。一執行緒群組中每一執行緒依序地執行一程式指令。一種常見的平行程式化型式包含一指令序列,該指令序列包括用於載入兩個單元的資料之兩個分開的載入指令,和用於進一步處理該等兩個單元的資料之一算術指令。因此,當處理該指令序列時,該P個執行緒的群組於該等載入指令被執行時發出2P個記憶體讀取要求。
許多種平行演算法,包括塊狀矩陣乘法、影像迴旋濾波和影像移動估測等,皆可被組織成使得針對在該指令序列中的一載入指令,該相對應記憶體位址針對在該P個執行緒的群組中每一執行緒皆相同。當處理該載入指令時,在該P個執行緒的群組中每一執行緒發出一獨立的記憶體讀取要求來由記憶體取得該相對應單元的資料。但是,因為由每一執行緒提供給該載入指令的該記憶體位址在整個該執行緒群組中皆相同,當在處理時,每一獨立的記憶體讀取要求造成由記憶體取得相同單元的資料。在這種案例中,一次針對在該P個執行緒的群組中每一執行緒,該記憶體取得頻寬在針對取得相同單元的資料有P次時即被不必要地浪費。
因此,本技術中需要一種針對由記憶體取得相同資料時,能夠有效率地處理自一平行執行緒的群組中每一執行緒所接收的多個讀取要 求之方法。
本發明提出一種用於處理一執行緒群組的平行執行緒之一載入指令的系統和方法,在當該等平行執行緒的一子集合要求相同的記憶體位址時,可降低讀取要求和被傳送來處理該載入指令的資料之數量。該載入/儲存單元基於一或多種均衡樣式決定平行執行緒的每一子集合之該等記憶體位址是否匹配。當針對該等均衡樣式中至少一者可達成一匹配時,該載入/儲存單元傳送一讀取要求來取得該等平行執行緒之子集合的資料。相較於針對在該子集合中每一執行緒執行一獨立的讀取要求,被傳送之讀取要求的數目即可減少。基於出現在程式指令中常用的存取樣式可定義出多種均衡樣式。基於當並無一完整交叉開關互連接可使用時,在該載入/儲存單元和該記憶體之間的互連接限制,亦可定義出多種均衡樣式。
本發明之一種用於自記憶體取得關聯於一載入指令的資料之方法的多種具體實施例包括接收一第一載入指令來由在一執行緒群組中每一執行緒來平行執行,其中該第一載入指令針對在該執行緒群組中每一個別的執行緒指定一個別的記憶體位址。辨識出僅包括在該執行緒群組中該等執行緒之一部份的一平行執行緒子集合。關聯於包括在該平行執行緒子集合中該等執行緒的該部份之該等個別的記憶體位址(包括一第一記憶體位址)基於一均衡樣式進行比較以產生一比較結果。當該比較結果指明該平行執行緒子群組的該等個別記憶體位址符合該均衡樣式時,一讀取要求被傳送至該記憶體以取得儲存在該第一記憶體位址處的資料。
本發明之多種具體實施例包括一種用於取得關聯於一載入指令的記憶體資料之處理子系統。該處理子系統包含一均衡載入單元,其設置成接收一第一載入指令用於由在一執行緒群組中每一執行緒進行平行執行,其中該第一載入指令針對在該執行緒群組中每一個別執行緒指定一個別的記憶體位址。該均衡載入單元辨識出僅包括在該執行緒群組中該等執行緒之一部份的一平行執行緒子集合。該均衡載入單元基於一均衡樣式比較關聯於包括在該平行執行緒子集合中該等執行緒的該部份之該等個別的記憶體位址(包括一第一記憶體位址)以產生一比較結果。當該均衡載入單 元決定該比較結果指明關聯於該平行執行緒子集合的該等個別記憶體位址符合該均衡樣式時,耦合在該均衡負載單元和一記憶體之間的一載入/儲存單元傳送一讀取要求至該記憶體以取得儲存在該第一記憶體位址處的資料。
該揭示方法之一種好處為要求讀取相同記憶體位址的多個執行緒僅執行單一記憶體讀取要求,藉此保留記憶體頻寬。此外,因為基於一或多種均衡樣式而由該載入/儲存單元偵測到一均衡載入,該編譯器可有彈性來指明即使該編譯器無法保證在該執行緒群組中每一執行緒將在執行期間存取該相同記憶體位址時,一載入指令可為均衡。
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‧‧‧預先掃描場化作業
328‧‧‧記憶體管理單元
330‧‧‧工作分配交叉開關
335‧‧‧L1.5快取
340‧‧‧工作分配單元
345‧‧‧任務表
370‧‧‧指令L1快取
375‧‧‧載入儲存單元陣列
380‧‧‧記憶體和快取互連接
405‧‧‧位址產生單元
410‧‧‧均衡載入單元
415‧‧‧非均衡載入單元
420‧‧‧平行執行緒子集合
421‧‧‧第一均衡樣式
422‧‧‧第二均衡樣式
423‧‧‧第三均衡樣式
430‧‧‧包繞位址
431‧‧‧比較結果
432‧‧‧比較結果
433‧‧‧比較結果
所以,可以詳細瞭解本發明上述特徵之方式中,本發明的一更為特定的說明簡述如上,其可藉由參照到具體實施例來進行,其中一些例示於所附圖式中。但應注意所附圖式僅例示本發明的典型具體實施例,因此其並非要做為本發明之範圍的限制,本發明自可包含其它同等有效的具體實施例。
第一圖例示設置成實施本發明一或多種態樣之電腦系統的方塊圖;第二圖為根據本發明一具體實施例中第一圖之電腦系統的一平行處理子系統之方塊圖;第三A圖為根據本發明一具體實施例中第二圖的該前端的方塊圖;第三B圖為根據本發明一具體實施例中第二圖之該等平行處理單元中之一者內一通用處理叢集的方塊圖;第三C圖為根據本發明一具體實施例第三B圖的該串流多處理器之一部份的方塊圖;以及第四A圖係根據本發明一具體實施例中第三C圖之該載入/儲存單元(LSU,Load/store unit)陣列的方塊圖;第四B圖例示根據本發明一具體實施例中一平行執行緒子集合和用於產生一比較結果的第一均衡樣式的概念圖;第四C圖例示根據本發明一具體實施例中一平行執行緒子集合和用於產生一比較結果的第二均衡樣式的另一概念圖; 第四D圖例示根據本發明一具體實施例中一平行執行緒子集合和用於產生一比較結果的第三均衡樣式的另一概念圖;第五圖提出根據本發明一具體實施例用於處理一載入指令之方法步驟的流程圖。
在以下的說明中,許多特定細節係被提出來提供對於本發明之更為完整的瞭解。但是本技術專業人士將可瞭解到本發明可不利用一或多個這些特定細節來實施。
系統概述
第一圖係例示設置成實施本發明一或多種態樣之一電腦系統100的方塊圖。電腦系統100包括一中央處理單元(CPU,central processing unit)102與一系統記憶體104,其經由包括一記憶體橋接器105的互連接路徑進行通訊。記憶體橋接器105可為例如一北橋晶片,經由一匯流排或其它通訊路徑106(例如HyperTransport鏈路)連接到一I/O(輸入/輸出(input/output))橋接器107。輸入/輸出橋接器107可為例如一南橋晶片,接收來自一或多個使用者輸入裝置108(例如鍵盤、滑鼠)的使用者輸入,並經由通訊路徑106及記憶體橋接器105轉送該輸入到CPU 102。一平行處理子系統112經由一匯流排或第二通訊路徑113(例如PCI(周邊組件互連接(Peripheral Component Interconnect))Express、加速圖形處理埠、或HyperTransport鏈路)耦合至記憶體橋接器105;在一具體實施例中,平行處理子系統112為一繪圖子系統,其傳遞像素到一顯示器110(例如一習用陰極射線管或液晶式的監視器)。一系統碟114亦連接至輸入/輸出橋接器107。一交換器116提供輸入/輸出橋接器107與其它像是網路轉接器118與多種嵌入卡120、121之其它組件之間的連接。其它組件(未明確顯示),包括有通用串列匯流排(USB,Universal serial bus)或其它埠連接、光碟(CD,Compact disc)驅動器、數位視訊碟(DVD,Digital video disc)驅動器、薄膜記錄裝置及類似者,該等組件亦可連接至輸入/輸出橋接器107。第一圖所示之該等多種通訊路徑(包括特定名稱的通訊路徑106與113)可使用任何適當的協定來實施,例如PCI快速(PCI Express)、AGP(加速圖形通訊埠 (Accelerated Graphics Port))、HyperTransport(超輸送)、或任何其它匯流排或點對點通訊協定、及不同裝置之間的連接,皆可使用如本技術中所知的不同協定。
在一具體實施例中,平行處理子系統112加入可針對圖形及視訊處理最佳化的電路,其包括例如視訊輸出電路,且構成一圖形處理單元(GPU,graphics processing unit)。在另一具體實施例中,平行處理子系統112加入可針對一般性目的處理最佳化的電路,而可保留底層的運算架構,在此處會有更為詳細的說明。在又另一具體實施例中,平行處理子系統112在一單一子系統中可被整合於一或多個其它系統元件,例如結合記憶體橋接器105、中央處理單元102、及輸入/輸出橋接器107而形成一系統上晶片(SoC,System on chip)。
將可瞭解到此處所示的系統僅為例示性,且有可能有多種變化及修正。該連接拓樸,包括橋接器的數目與配置、中央處理單元102的數目及平行處理子系統112的數目皆可視需要修改。例如,在一些具體實施例中,系統記憶體104直接連接至CPU 102而非透過一橋接器連接,而其它裝置透過記憶體橋接器105及中央處理單元102與系統記憶體104進行通訊。在其它可替代的拓樸中,平行處理子系統112連接至輸入/輸出橋接器107或直接連接至中央處理單元102,而非連接至記憶體橋接器105。在又其它具體實施例中,除了做為一或多個分散的裝置之外,I/O橋接器107及記憶體橋接器105可被整合到一單一晶片當中。大型具體實施例可包括兩個或更多的中央處理單元102,及兩個或更多的平行處理子系統112。此處所示的該等特定組件皆為選擇性;例如可支援任何數目的嵌入卡或周邊裝置。在一些具體實施例中,交換器116被省略,且網路轉接器118及嵌入卡120、121直接連接至輸入/輸出橋接器107。
第二圖例示根據本發明一具體實施例之一平行處理子系統112。如所示,平行處理子系統112包括一或多個平行處理單元(PPU,Parallel processing unit)202,該等平行處理單元每一者耦合於一局部平行處理(PP,Parallel processing)記憶體204。概言之,一平行處理子系統包括數目為U的PPU,其中U1。(在此處類似物件的多個實例標示為辨識該物件之參考 編號,而括號中的數目辨識所需要的實例)。PPU 202及平行處理記憶體204可以使用一或多個積體電路裝置來實施,例如可程式化處理器,特殊應用積體電路(ASIC,Application specific integrated circuits),或記憶體裝置,或以任何其它技術上可行的方式來實施。
請再次參照第一圖以及第二圖,在一些具體實施例中,平行處理子系統112中部份或所有的平行處理單元202為圖形處理器,其具有顯像管線,能夠設置成執行關於自中央處理單元102及/或系統記憶體104經由記憶體橋接器105及第二通訊路徑113所供應的圖形資料產生像素資料的多種作業,與局部平行處理記憶體204進行互動(其能夠做為圖形記憶體,包括例如一習用幀緩衝器),以儲存及更新像素資料,傳遞像素資料到顯示器110及類似者。在一些具體實施例中,平行處理子系統112可以包括可操作為圖形處理器的一或多個平行處理單元202,及用於通用型運算的一或多個其它平行處理單元202。該等平行處理單元可為相同或不同,且每個平行處理單元可以具有一專屬的平行處理記憶體裝置或並無專屬的平行處理記憶體裝置。在平行處理子系統112中一或多個平行處理單元202可以輸出資料到顯示裝置110,或在平行處理子系統112中每個平行處理單元202可以輸出資料到一或多個顯示器110。
在作業中,中央處理單元102為電腦系統100的主控處理器,其控制及協調其它系統組件的作業。特別是CPU 102發出控制平行處理單元202之作業的命令。在一些具體實施例中,中央處理單元102對每一平行處理單元202寫入一命令串流至一資料結構(未明確示於第一圖或第二圖中),該資料結構可位於系統記憶體104、平行處理記憶體204或可同時由中央處理單元102與平行處理單元202存取的其它儲存位置。指向至每一資料結構的一指標被寫入至一推入緩衝器來啟始在該資料結構中該命令串流之處理。平行處理單元202自一或多個推入緩衝器讀取命令串流,然後相對於中央處理單元102的該作業非同步地執行命令。執行優先性可針對每一推入緩衝器藉由一應用程式經由裝置驅動器103來指定,以控制該等不同推入緩衝器的排程。
現在請回頭參照第二圖以及第一圖,每個平行處理單元202 包括一I/O(輸入/輸出)單元205,經由通訊路徑113與電腦系統100的其它部份進行通訊,其連接至記憶體橋接器105(或在另一具體實施例中直接連接至CPU 102)。平行處理單元202與電腦系統100的其餘部份之連接亦可改變。在一些具體實施例中,平行處理子系統112係實施成可被插入到電腦系統100的一擴充槽中之一嵌入卡。在其它具體實施例中,平行處理單元202可利用一匯流排橋接器整合在一單一晶片上,例如記憶體橋接器105或輸入/輸出橋接器107。在又其它的具體實施例中,平行處理單元202之部份或所有元件可與CPU 102整合在一單一晶片上。
在一具體實施例中,通訊路徑113為一PCI-EXPRESS鏈路,其中如本技術中所熟知具有專屬的線路會分配給每個平行處理單元202。亦可使用其它通訊路徑。一輸入/輸出單元205產生封包(或其它信號)在通訊路徑113上傳輸,且亦自通訊路徑113接收所有進入的封包(或其它信號),導引該等進入封包到平行處理單元202的適當組件。例如,關於處理工作的命令可被導引到一主控介面206,而關於記憶體作業的命令(例如自平行處理記憶體204讀取或寫入該平行處理記憶體204)可被導引到一記憶體交叉開關單元210。主控介面206讀取每個推入緩衝器,並輸出儲存在該推入緩衝器中的該命令串流至一前端212。
每一平行處理單元202較佳地是實施一高度平行的處理架構。如詳細所示,平行處理單元202(0)包括一處理叢集陣列230,其包括數目為C的通用處理叢集(GPC,General processing clusters)208,其中C 1。每一GPC 208能夠同時執行大量(例如數百或數千)的執行緒,其中每個執行緒為一程式的一實例。在多種應用中,不同的通用處理叢集208可分配來處理不同種類的程式,或執行不同種類的運算。通用處理叢集208的分配可根據每種程式或運算所提升的工作負荷而改變。
通用處理叢集208由一任務/工作單元207內的一工作分配單元接收要被執行的處理任務。該工作分配單元接收指向至被編碼成任務中介資料(TMD,Task metadata)且儲存在記憶體中的處理任務的指標。該等指向至任務中介資料的指標被包括在儲存成一推入緩衝器且由前端單元212自主控介面206接收的該命令串流中。可被編碼成TMD的處理任務包 括要被處理之資料的索引,以及定義了該資料要如何被處理的狀態參數和命令(例如那一個程式要被執行)。任務/工作單元207自前端212接收任務,並確保通用處理叢集208在由該等任務中介資料之每一者所指定的該處理啟始之前被設置成一有效狀態。一優先性可針對用於排程該處理任務之執行的每一任務中介資料來指定。處理任務亦可自處理叢集陣列230接收。視需要,該任務中介資料可包括一參數,其控制該任務中介資料是否要被加入一處理任務清單(或指向至該等處理任務的指標清單)的頭端或尾端,藉此提供在優先性之上的另一控制層級。
記憶體介面214包括數目為D的區隔單元215,其每一者被直接耦合至平行處理記憶體204的一部份,其中D 1。如所示,區隔單元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之間的流量串流。
再次地,GPC 208可被程式化來執行關於許多種應用之處理工作,其中包括但不限於線性及非線性資料轉換、影片及/或聲音資料的過濾、模型化作業(例如應用物理定律來決定物體的位置、速度及其它屬性)、影像顯像作業(例如鑲嵌遮影器、頂點遮影器、幾何遮影器及/或像素遮影器程式)等等。平行處理單元202可將來自系統記憶體104及/或局部平行處理記憶體204的資料轉移到內部(晶片上)記憶體、處理該資料、及將結果資料寫回到系統記憶體104及/或局部平行處理記憶體204,其中這些資料可由其它系統組件存取,包括中央處理單元102或另一個平行處理子系統112。
一平行處理單元202可具有任何數量的局部平行處理記憶體204,並不包括局部記憶體,並可用任何的組合來使用局部記憶體及系統記憶體。例如,一平行處理單元202可為在一統一記憶體架構(UMA,Unified memory architecture)具體實施例中的一圖形處理器。在這些具體實施例中,將可提供少數或沒有專屬的圖形(平行處理)記憶體,且平行處理單元202將專有地或大致專有地使用系統記憶體。在UMA具體實施例中,一平行處理單元202可被整合到一橋接器晶片中或處理器晶片中,或提供成具有一高速鏈路(例如PCI-EXPRESS)之一分離的晶片,其經由一橋接器晶片或其它通訊手段連接平行處理單元202到系統記憶體。
如上所述,任何數目的平行處理單元202可以包括在一平行處理子系統112中。例如,多個平行處理單元202可提供在一單一嵌入卡上,或多個嵌入卡可被連接至通訊路徑113,或一或多個平行處理單元202可被整合到一橋接器晶片中。在一多平行處理單元系統中的平行處理單元202可彼此相同或彼此不相同。例如,不同的平行處理單元202可具有不同數目的處理核心、不同數量的局部平行處理記憶體等等。當存在有多個平行處理單元202時,那些平行處理單元可平行地作業而以高於一單一平行處理單元202所可能的流量來處理資料。加入有一或多個平行處理單元202之系統可實施成多種組態及型式因子,其中包括桌上型、膝上型、或掌上型個人電腦、伺服器、工作站、遊戲主機、嵌入式系統及類似者。
多並行任務排程
多個處理任務可在通用處理叢集208上並行地執行,且一處 理任務於執行期間可以產生一或多個「子」(child)處理任務。任務/工作單元207接收該等任務,並動態地排程該等處理任務和子處理任務來由通用處理叢集208執行。
第三A圖係根據本發明一具體實施例中第二圖之任務/工作單元207的方塊圖。任務/工作單元207包括一任務管理單元300和工作分配單元340。任務管理單元300基於執行優先性程度組織要被排程的任務。針對每一優先性程度,任務管理單元300儲存指向至對應於在排程器表321中該等任務的該等任務中介資料322的一指標清單,其中該清單被實施成一鏈接串列。任務中介資料322可被儲存在平行處理記憶體204或系統記憶體104中。任務管理單元300接受任務並儲存該等任務在排程器表321中的速率與任務管理單元300排程任務來執行的速率脫離。因此,任務管理單元300可在排程該等任務之前收集數個任務。然後該等經收集的任務可基於優先性資訊或使用其它技術進行排程,例如循環式排程。
工作分配單元340包括一任務表345,其具有位置,而每一位置可由將要被執行的一任務之任務中介資料322佔用。任務管理單元300在當任務表345中有空的位置時即可排程任務來執行。當沒有空位置時,不會佔用一位置的一較高優先性的任務可以逐出佔用一空位置的一較低優先性的任務。當一任務被逐出時,該任務即停止,且如果該任務的執行尚未完成,則指向至該任務的一指標被加入到要被排程的一任務指標清單,使得該任務的執行將在稍後恢復。當於一任務執行期間產生一子處理任務時,指向該子任務的一指標被加入到要被排程的該任務指標清單。一子任務可由在處理叢集陣列230中執行的一任務中介資料322來產生。
不像是任務/工作單元207自前端212接收的一任務,子任務係自處理叢集陣列230接收。子任務不會被插入到推入緩衝器中或被傳送至該前端。當產生一子任務或該子任務的資料被儲存在記憶體中時,不會通知中央處理單元102。經由推入緩衝器提供的該等任務和子任務之間另一個差別在於經由該等推入緩衝器提供的該等任務由該應用程式定義,然而該等子任務係於該等任務的執行期間被動態地產生。
任務處理概述
第三B圖為根據本發明一具體實施例中第二圖之該等平行處理單元202中之一者內一通用處理叢集208的方塊圖。每個通用處理叢集208可設置成平行地執行大量的執行緒,其中術語「執行緒」(thread)代表在一特定組合的輸入資料上執行的一特定程式之實例。在一些具體實施例中,使用單一指令、多重資料(SIMD,Single-instruction,multiple-data)指令發行技術來支援大量執行緒之平行執行,而不需要提供多個獨立指令單元。在其它具體實施例中,單一指令、多重執行緒(SIMT,Single-instruction,multiple-thread)技術係用來支援大量概略同步化執行緒的平行執行,其使用一共用指令單元,該共用指令單元設置成發出指令到通用處理叢集208之每一者內的一組處理引擎。不像是一SIMD執行方式,其中所有處理引擎基本上執行相同的指令,SIMT的執行係允許不同的執行緒經由一給定執行緒程式而更可立即地遵循相異的執行路徑。本技術專業人士將可瞭解到一SIMD處理規範代表一SIMT處理規範的一功能子集合。
通用處理叢集208的作業較佳地是經由一管線管理員305控制,該管線管理員305可分配處理任務至串流多處理器(SM,Streaming multiprocessor)310。管線管理員305亦可設置成藉由指定串流多處理器310之已處理資料輸出的目的地來控制一工作分配交叉開關330。
在一具體實施例中,每個通用處理叢集208包括M個數目的串流多處理器310,其中M1,每個串流多處理器310設置成處理一或多個執行緒群組。同時,每個串流多處理器310較佳地是包括可被管線化的相同組合的功能性執行單元(例如執行單元和載入儲存單元,如第三C圖中所示的執行單元302和載入儲存單元303),允許在一先前指令已經完成之前發出一新指令,其為本技術中已知。並可提供任何功能性執行單元的組合。在一具體實施例中,該等功能單元支援多種運算,其中包括整數及浮點數算術(例如加法及乘法)、比較運算、布林運算(AND、OR、XOR)、位元偏位,及多種代數函數的運算(例如平面內插、三角函數、指數、及對數函數等);及相同的功能單元硬體可被利用來執行不同的運算。
傳送到一特定通用處理叢集208之該等系列的指令構成一執行緒,如先前此處所定義者,橫跨一串流多處理器310內該等平行處理 引擎(未示出)並行地執行某個數目之執行緒的集合在此稱之為「包繞」(warp)或「執行緒群組」(thread group)。如此處所使用者,一「執行緒群組」代表同步地對於不同輸入資料執行相同程式的一執行緒的群組,該群組的每一執行緒被指定給一串流多處理器310內的一不同處理引擎。一執行緒群組可包括比串流多處理器310內處理引擎的數目要少的執行緒,其中當該執行緒群組正在被處理的循環期間一些處理引擎將為閒置。一執行緒群組亦可包括比串流多處理器310內處理引擎之數目要更多的執行緒,其中處理將發生在連續的時脈循環之上。因為每個串流多處理器310可並行地支援最多到G個執行緒群組,因此在任何給定時間在通用處理叢集208中最高可執行G * M個執行緒群組。
此外,在相同時間於一串流多處理器310內可以啟動複數相關的執行緒群組(在不同的執行階段)。此執行緒群組的集合在此處被稱為「協同執行緒陣列」(CTA,Cooperative thread array)或「執行緒陣列」(thread array)。一特定CTA之大小等於m*k,其中k為在一執行緒群組中並行地執行的執行緒之數目,且基本上為串流多處理器310內平行處理引擎數目之整數倍數,而m為在串流多處理器310內同時啟動的執行緒群組之數目。一CTA的大小概略由程式設計師及該CTA可使用之硬體資源(例如記憶體或暫存器)的數量所決定。
每一串流多處理器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 entries),用於將一虛擬位址映射到一塊狀記憶體的一實體位址,或是一快取線索引。記憶體管理單元328可以包括位址轉譯後備緩衝器(TLB,Translation lookaside buffer)或可以存在於多處理器串流多處理器310或L1快取或通用處理叢集208內的快取。該實體位址被處理成分佈表面資料存取局部性,以允許在區隔單元215之間有效率的要求交叉。該快取線索引可用於決定一快取線的一要求為一命中或錯失。
在圖形和運算應用中,一通用處理叢集208可設置成使得每個串流多處理器310耦合於一紋路單元315,用於執行紋路映射作業,例如決定紋路樣本位置、讀取紋路資料及過濾該紋路資料。紋路資料自一內部紋路L1快取(未示出)讀取,或是在一些具體實施例中自串流多處理器310內的L1快取讀取,且視需要自所有通用處理叢集208、平行處理記憶體204或系統記憶體104所共用的一L2快取來擷取。每一串流多處理器310輸出已處理的任務至工作分配交叉開關330,藉以提供該已處理的任務至另一通用處理叢集208進行進一步處理,或是將該已處理的任務經由交叉開關單元210儲存在一L2快取、平行處理記憶體204或系統記憶體104中。一preROP(預先掃描場化作業)325設置成自串流多處理器310接收資料、導引資料到隔間單元215內的ROP單元、並進行色彩混合的最佳化、組織像素色彩資料、並執行位址轉譯。
將可瞭解到此處所示的核心架構僅為例示性,且有可能有多種變化及修正。在一通用處理叢集208內可包括任何數目的處理單元,例如串流多處理器310或紋路單元315、預先掃描場化作業325。再者,如第二圖所示,一平行處理單元202可以包括任何數目的通用處理叢集208,其較佳地是在功能上彼此類似,使得執行行為並不會根據是那一個通用處理叢集208接收一特定處理任務而決定。再者,每個通用處理叢集208較佳 地是與其它使用分開且不同的處理單元、L1快取的通用處理叢集208獨立地運作,以針對一或多個應用程式來執行任務。
本技術專業人士將可瞭解到在第一圖、第二圖、第三A圖和第三B圖中所述之該架構並未以任何方式限制本發明之範圍,而此處所教示的技術可以實施在任何適當設置的處理單元上,該處理單元包括但不限於一或多個中央處理單元、一或多個多核心中央處理單元、一或多個平行處理單元202、一或多個通用處理叢集208、一或多個圖形或特殊目的處理單元或類似者,其皆不背離本發明之範圍。
在本發明之具體實施例中,需要使用平行處理單元202或一運算系統的其它處理器來使用執行緒陣列執行一般性運算。在該執行緒陣列中每一執行緒被指定一唯一執行緒識別(thread ID),該識別可在該執行緒的執行期間由該執行緒存取。可被定義成一維或多維度數值的執行緒ID控制該執行緒的處理行為之多種態樣。例如,一執行緒ID可用於決定一執行緒要做處理的是該輸入資料集的那一部份,及/或決定一執行緒要產生或寫入的是在一輸出資料集的那一部份。
每個執行緒指令的一序列可以包括至少一指令來定義該代表性執行緒和該執行緒陣列的一或多個其它執行緒之間的一協同行為。例如,每個執行緒的該指令序列可以包括一指令來在該序列中一特定點處中止該代表性執行緒之作業的執行,直到當該等其它執行緒中一或多者到達該特定點為止,該代表性執行緒的一指令係儲存資料在該等其它執行緒中一或多者可存取的一共用記憶體中,該代表性執行緒的一指令係基於它們的執行緒ID原子性地讀取和更新儲存在該等其它執行緒中一或多者可存取的一共用記憶體中的資料,或類似者。該CTA程式亦可包括一指令來運算資料在該共用記憶體中要被讀取的一位址,利用該位址為執行緒ID的函數。藉由定義適當的函數和提供同步化技術,資料可藉由一CTA的一執行緒被寫入到共用記憶體中一給定的位置,並以一可預測的方式由該相同CTA的一不同執行緒自該位置讀取。因此,即可支援可在執行緒當中共用任何需要的資料型式,且在一CTA中任何執行緒能夠與該相同CTA中任何其它執行緒共用資料。如果有的話,在一CTA的執行緒當中資料共用的程 度係由該CTA程式決定;因此,應瞭解到在使用CTA的一特定應用中,根據該CTA程式,一CTA的該等執行緒可以或不需要實際地彼此共用資料,該等術語「CTA」和「執行緒陣列」在此處為同義地使用。
第三C圖為根據本發明一具體實施例中第三B圖的串流多處理器310的方塊圖。串流多處理器310包括一指令L1快取370,其設置成經由L1.5快取335自記憶體接收指令和常數。一包繞排程器和指令單元312自指令L1快取370接收指令和常數,並根據該等指令和常數控制局部暫存器檔案304和串流多處理器310功能性單元。串流多處理器310功能性單元在一載入儲存單元陣列375之內包括N個執行(執行或處理)單元302和P個載入儲存單元(LSU,Load-store unit)303。
串流多處理器310提供具有不同程度存取性的晶片上(內部)資料儲存。特殊暫存器(未示出)可由載入儲存單元303讀取但不能寫入,並用於儲存定義每一執行緒的「位置」之參數。在一具體實施例中,特殊暫存器包括每一執行緒(或串流多處理器310內每一執行單元302)的一暫存器,用於儲存一執行緒ID;每一執行緒ID暫存器僅可由執行單元302的個別單元存取。特殊暫存器亦可包括額外的暫存器,其可由執行由儲存一CTA識別的一任務中介資料322(或由所有載入儲存單元303)所代表的相同處理任務的所有執行緒來讀取;該等CTA維度、該CTA所屬的一網格的該等維度(或如果任務中介資料322編碼一佇列任務而非一網格任務時的佇列位置),以及該CTA被指定到的任務中介資料322之一識別。
如果任務中介資料322為一網格任務中介資料,任務中介資料322的執行造成固定數目的CTA被啟動及執行,以處理儲存在佇列525中固定數量的資料。該等CTA的數目被指定為該網格寬度、高度和深度的乘積。該固定數量的資料可以儲存在任務中介資料322中,或者任務中介資料322可以儲存指向將由該等CTA處理的資料之一指標。任務中介資料322亦儲存由該等CTA執行的該程式之一開始位址。
如果任務中介資料322為一佇列任務中介資料,則使用任務中介資料322的一佇列特徵,代表要被處理的資料量並不一定是固定的。佇列項目儲存資料來由指定給任務中介資料322的該等CTA做處理。該等 佇列項目亦可代表於一執行緒的執行期間由另一任務中介資料322產生的一子任務,藉此提供巢化的平行度。基本上,該執行緒或包括該執行緒的CTA之執行被中止,直到該子任務的執行完成為止。該佇列可儲存在任務中介資料322中或隔離於任務中介資料322,其中任務中介資料322儲存指向該佇列的一佇列指標。較佳地是,當代表該子任務的任務中介資料322正在執行時,由該子任務產生的資料可被寫入到該佇列。該佇列可實施成一圓形佇列,使得資料的總量並不限於該佇列的大小。
屬於一網格的CTA具有隱式網格寬度、高度和深度參數以指明該網格內個別CTA的位置。特殊暫存器在初始化期間回應於經由前端212自裝置驅動器103接收的該等命令而被寫入,且於一處理任務的執行期間不會改變。前端212排程每一處理任務來執行。每一CTA關聯於一特定任務中介資料322來用於一或多個任務的並行執行。此外,一單一通用處理叢集208可以並行地執行多個任務。
一參數記憶體(未示出)儲存運行時間參數(常數),其可被相同CTA(或任何載入儲存單元303)內任何執行緒讀取但無法寫入。在一具體實施例中,裝置驅動器103在導引串流多處理器310開始使用這些參數的一項任務之執行之前提供參數至該參數記憶體。任何CTA(或串流多處理器310內的任何執行單元302)內的任何執行緒能夠經由一記憶體介面214存取共通記憶體。共通記憶體的一些部份可被儲存在L1快取320中。
局部暫存器檔案304由每一執行緒使用做為暫存空間;每一暫存器被分配做為一執行緒的專屬使用,而在任何局部暫存器檔案304中的資料僅可由該暫存器被分配到的該執行緒來存取。局部暫存器檔案304可實施成被實體或邏輯性地區分成P條線路的一暫存器檔案,該線路每一者具有某個數目的項目(其中每個項目可以儲存例如32位元的字元)。一條線路被指定給N個執行單元302和P個載入儲存單元LSU 303的每一者,且在不同線路中的相對應的項目可存在有執行相同程式的不同執行緒之資料來實施SIMD執行。該等線路的不同部份可被分配給該等G個並行執行緒群組之不同的執行緒群組,使得在局部暫存器檔案304中一給定項目僅可由一特定執行緒存取。在一具體實施例中,局部暫存器檔案304內某些 項目被保留來儲存執行緒識別及實施該等特殊暫存器之一。
共用的記憶體306可由一單一CTA內的執行緒存取;換言之,在共用記憶體306中任何位置可由該相同CTA內任何執行緒存取(或可由串流多處理器310內任何處理引擎存取)。共用的記憶體306可實施成利用一互連接的一共用暫存器檔案或共用的晶片上快取記憶體,其可允許任何處理引擎可讀取或寫入到該共用記憶體中的任何位置。在其它具體實施例中,共用的狀態空間可映射到晶片外記憶體的每一CTA的區域之上,且被快取在L1快取320中。該參數記憶體可被實施成該相同共用的暫存器檔案或實施共用記憶體306的共用快取記憶體內一指定的區段,或是實施成一獨立的共用暫存器檔案或載入儲存單元303具有唯讀性存取的晶片上快取記憶體。在一具體實施例中,實施該參數記憶體的該區域亦用於儲存該CTA ID與任務ID,以及CTA與網格維度或佇列位置,實施該等特殊暫存器的某些部份。在載入儲存單元陣列375中每一載入儲存單元303包括一位址產生單元(如第四A圖所示),其轉換提供用於載入和儲存被指定在一統一記憶體空間中的指令之一位址成為在每一不同記憶體空間中的一位址。因此,一指令可用於藉由指定在該統一記憶體空間中一位址來存取該等局部、共用、或共通記憶體空間之任一者。
在每一串流多處理器310中的L1快取320可用於快取私密的每一執行緒之局部資料,以及每一應用程式的共通資料。在一些具體實施例中,該由每一CTA共用的資料可被快取在L1快取320中。載入儲存單元303經由一記憶體和快取互連接380耦合至共用記憶體306和L1快取320。
在該應用和編譯器層級中,該等不同記憶體空間出現在一單一統一位址空間之內。因此,針對每一不同的記憶體空間使用統一記憶體存取指令,而非分開的載入和儲存指令。一C/C++程式可以使用一統一指標和一統一存取指令,藉以有效率地存取該等三個不同位址空間中的任一者。一示例載入指令格式為LD.32 Rd,[Ra+offset];其在一P個平行執行緒的群組上執行,並於位在於每一執行緒的暫存器Ra加上偏置量的總和所指定的每一統一位元組位址處的記憶體載入具有32位元資料的每一執行緒 的暫存器Rd。一示例儲存指令格式為ST.32[Ra+offset],Rb;其在一P個平行執行緒的群組上執行,並儲存來自每一執行緒的暫存器Rb的32位元資料到位在由每一執行緒的暫存器Ra加上偏置量的總和所指定的每一統一位元組位址處的記憶體。目前,執行單元302設置成處理64和128位元資料,使得該等載入和儲存指令可分別讀取和寫入64和128位元的資料。
處理平行執行緒子集合的均衡載入指令
一編譯器(未示出)將一應用程式編譯成由一單一指令、多重執行緒(SIMT)環境中每一執行緒所執行的指令,例如平行處理子系統112。在該編譯程序期間,該編譯器偵測在當於該SIMT環境中執行時有高度可能性使得在一執行緒群組內的多個執行緒將存取相同記憶體位址的程式敘述。更特定而言,如此處進一步之說明,該編譯器偵測是否一程式敘述中在一執行緒群組中該等執行緒的該等記憶體位址有可能匹配一記憶體位址之均衡樣式。針對每一個這種程式敘述,該編譯器插入一指示使得該載入指令可當做一均衡載入指令來處理而非一標準載入指令來進入到該被編譯的應用程式當中。一示例載入指令格式為LD.U.128 Rd,[Ra+offset];其在一P個平行執行緒的群組上執行,並於位在於每一執行緒的暫存器Ra加上偏置量的總和所指定的每一位元組位址處的記憶體載入具有128位元資料的每一執行緒的暫存器Rd。
該等載入指令的LD和LD.U變化對於功能而言係為同等。一均衡載入指令LD.U指明由一執行緒群組的該等P個執行緒所提供的該等P個位址中至少一部份可以參照到相同的記憶體位址或記憶體位址組合。有可能在一執行緒群組中要執行一LD.U指令的每一執行緒參照到一不同的記憶體位址,在此例中該LD.U將以如同一LD指令相同的方式由載入儲存單元陣列375執行。重要地是,該LD.U指令之處理並不需要在該執行緒群組中所有執行緒參照到一單一共用記憶體位址。當在該執行緒群組中的執行緒參照到一記憶體位址之均衡樣式而非不同的記憶體位址時即可產生效能上的效益。一示例性均衡樣式包含具有相同記憶體位址之執行緒的配對。在一執行緒配對中該等執行緒在該相同執行緒群組中被偏置i,其中i為小於或等於P/2的一整數。例如i=1即對應於相鄰執行緒的執行緒配對, 例如thread0和thread1,...,thread30和thread31。
如以下更為詳細的說明,當載入儲存單元陣列375決定在一執行緒群組中的平行執行緒符合於一均衡載入指令之一記憶體位址之均衡樣式時,該均衡載入指令針對該等平行執行緒的該子集合執行,以及一單一記憶體讀取要求被傳送以取得儲存於由該等平行執行緒所參照的該等記憶體位址處的資料。然後該經取得的資料被廣播至參照該等個別記憶體位址之該等執行緒之每一執行緒。相較於針對多個執行緒取得相同資料而言,可降低對於載入儲存單元陣列375的記憶體頻寬需求。
第四A圖係根據本發明一具體實施例中第三C圖之載入儲存單元陣列375的方塊圖。如所示,載入儲存單元陣列375包括不同的載入儲存單元303、一位址產生單元405、一均衡載入單元410和一非均衡載入單元415。
在一種SIMT架構中,類似於在第三A圖到第三C圖中所述者,一單一指令連同用於該包繞的一啟動遮罩被廣播至P個平行執行緒的一執行緒群組(包繞)。該啟動遮罩指明在一包繞中個別的執行緒有那些被致能來執行該包繞的指令。啟動執行緒執行該指令,而非啟動執行緒不執行該指令。在當於一程式的執行期間由於分支或類似者而發生發散時,執行緒可能成為啟動和非啟動。同時間最多有P個啟動執行緒可執行該指令。P個執行緒的一算術指令由P個平行執行單元302來執行。P個執行緒的一記憶體載入/儲存指令由P個平行載入儲存單元303來執行。因此P個執行緒的一記憶體指令得到P個位址,該位址可為P個或更少的不同記憶體位址。
位址產生單元405針對該載入/儲存指令執行位址計算任務,例如位址映射作業。在一具體實施例中,位址產生單元405可設置成在多個循環之上處理來自一包繞的一要求,使得該等執行緒的一子集合於該等多個循環的每一循環期間進行處理。例如,一8個執行緒的子集合在當該包繞包括32個執行緒時於四個循環之上進行處理。
該啟動遮罩和在一包繞中該等執行緒中至少一子集合的該等記憶體位址由位址產生單元405輸出至均衡載入單元410。當一載入指令 被指定為一均衡載入指令時,均衡載入單元410比較該等執行緒的每一子集合中啟動執行緒之該等記憶體位址,以決定在每一子集合中該等平行執行緒是否符合於一記憶體位址的均衡樣式。均衡載入單元410可以使用一或多個不同均衡樣式進行比較。每一均衡樣式可被設置成被獨立地除能或致能來進行比較。重要地是,根據該啟動遮罩,未啟動的執行緒之記憶體位址被視為匹配任何的記憶體位址。
當該載入指令被指定為一均衡載入指令,且在該等執行緒之每一子集合中該等啟動執行緒的該等記憶體位址匹配至少一均衡樣式時,該載入指令即可當成一均衡載入指令來執行。均衡載入單元410將該等啟動執行緒的每一個唯一記憶體位址輸出到非均衡載入單元415進行處理。請注意到當該載入指令由均衡載入單元410判定為一均衡載入指令時,唯一記憶體位址的數目相較於指定未匹配一均衡樣式的記憶體位址之一載入指令最多為其一半(假設匹配一均衡樣式並非非啟動執行緒的結果)。因此,由載入儲存單元陣列375輸出的讀取/寫入要求之數目可以減少,而且經由該記憶體和快取互連接380被傳回到載入儲存單元303的資料量亦可減少。
當該載入指令未被指定為一均衡載入指令時,均衡載入單元410輸出該啟動遮罩和該等記憶體位址到非均衡載入單元415進行處理。非均衡載入單元415傳送由在該包繞中一啟動執行緒所參照的每一唯一記憶體位址到載入儲存單元303。然後載入儲存單元303傳送包括一或多個該等唯一記憶體位址的一讀取要求到該記憶體和快取互連接308來取得在該包繞中該等啟動平行執行緒的資料。在一單一時脈循環中被傳送之唯一記憶體位址的最大數目基本上受限於該記憶體架構以及載入儲存單元陣列375和記憶體與快取互連接308之間的介面。
在一具體實施例中,均衡載入單元410和非均衡載入單元415可設置成僅輸出該等唯一記憶體位址之數目到可由載入儲存單元303傳送的載入儲存單元303做為一單一讀取要求。當一包繞的該等唯一記憶體位址之數目大於該數目時,一重播要求由非均衡載入單元415輸出至包繞排程器和指令單元312。然後包繞排程器和指令單元312將在稍後重新遞送該載入指令來執行,並保留額外的時脈循環用於該載入指令的執行,以容 納載入儲存單元303所需要之多個讀取要求之傳輸。相同包繞的任何後續指令被排除,或是被防止執行,直到該載入指令被重播且由載入儲存單元陣列375成功地執行之後。
第四B圖例示根據本發明一具體實施例中一平行執行緒子集合420和用於產生一比較結果431的第一均衡樣式421的概念圖。平行執行緒子集合420包括一32執行緒包繞的八個平行執行緒。均衡載入單元410接收該等包繞位址430,並辨識關聯於平行執行緒子集合420的該等個別記憶體位址。然後均衡載入單元410基於均衡樣式421比較關聯於平行執行緒子集合420的該等個別記憶體位址,以產生比較結果431。均衡樣式421群組化平行執行緒子集合420中相鄰的執行緒來進行記憶體位址比較。在每一執行緒配對中該等執行緒由該等執行緒索引值n和(n XOR 1)所定義。
平行執行緒中具有索引0和1、索引2和3、索引16和17、及索引18和19之該等個別記憶體位址由均衡載入單元410進行比較以產生四個匹配結果。在其它具體實施例中,可以比較具有不同索引的記憶體位址。然後該等四個匹配結果被用於產生比較結果431。比較結果431指明一均衡載入指令是否可用於讀取平行執行緒子集合420的資料。額外的第二、第三和第四平行執行緒子集合可分別包括執行緒4到7和執行緒20-23、執行緒8-11和執行緒24-27、以及執行緒12-15和執行緒28-31。
在一具體實施例中,每一執行緒具有頻寬可傳回64位元的資料,該資料為當執行128位元作業時所需要之資料的一半。當執行緒被配對時,該資料的一半在保留給該第一執行緒的該頻寬之上傳回,該資料的另一半在保留給該第二執行緒的該頻寬之上傳回。然後該資料的這些半部於載入儲存單元陣列375內該第一和第二執行緒之間共用。
第四C圖例示根據本發明一具體實施例中平行執行緒子集合420和用於產生一比較結果432的第二均衡樣式422的另一概念圖。均衡載入單元410辨識關聯於平行執行緒子集合420的該等個別記憶體位址,然後基於均衡樣式422比較該等個別記憶體位址,以產生比較結果432。均衡樣式422群組化在平行執行緒子集合420中被偏置16的一索引之執行 緒來進行記憶體位址比較。
在一具體實施例中,該等包繞位址430由均衡載入單元410在兩個或更多的時脈循環之上接收,所以在該執行緒配對中該等兩個執行緒於時脈t和(t XOR 1)處在相同的線路(例如該等相同信號)中被接收。平行執行緒中具有索引0和16、索引1和17、索引2和18、及索引3和19之該等個別記憶體位址由均衡載入單元410進行比較以產生四個匹配結果。然後該等四個匹配結果用於產生針對均衡樣式422的比較結果432。比較結果432指明基於均衡樣式422一均衡載入指令是否可用於讀取平行執行緒子集合420的資料。
如果在平行執行緒子集合420中所有該等啟動執行緒符合於均衡樣式421或均衡樣式422,則該載入指令由均衡載入單元410決定成為至少平行執行緒子集合420之一均衡載入指令。如果在平行執行緒子集合420中該等執行緒同時符合均衡樣式421和均衡樣式422,則該等兩個均衡樣式之一者基於一優先性設定來選出。但是如果在平行執行緒子集合420中該等執行緒不符合任何的均衡樣式,則該載入指令針對在平行執行緒子集合420中該等執行緒由非均衡載入單元415當作一非均衡載入指令來處理。
在一具體實施例中,在一包繞內所有平行執行緒子集合必須符合該載入指令的該相同均衡樣式來當作一均衡載入指令來處理。換言之,該均衡樣式係於該包繞層級處被應用,而非在該執行緒子集合層級處。
第四D圖例示根據本發明一具體實施例中平行執行緒子集合420和用於產生一比較結果433的第三均衡樣式423的另一概念圖。均衡載入單元410辨識關聯於平行執行緒子集合420的該等個別記憶體位址,然後基於均衡樣式423比較該等個別記憶體位址,以產生比較結果433。均衡樣式423群組化在平行執行緒子集合420中被偏置1、2和3的一索引之執行緒來進行記憶體位址比較。特定而言,平行執行緒中具有索引0、1、2和3、索引16、17、18和19之該等個別記憶體位址由均衡載入單元410進行比較以產生兩個匹配結果。然後該等兩個匹配結果用於產生針對均衡樣式423的比較結果433。比較結果433基於均衡樣式423指明一均衡載入 指令是否可用於讀取平行執行緒子集合420的資料。在一具體實施例中均衡樣式423可用於LD.U.128,其中每一執行緒具有頻寬可傳回32位元資料,該資料為當執行128位元作業時所需要的該資料之四分之一。額外的均衡樣式可定義成不同地群組化一包繞的該等執行緒來比較該等個別執行緒記憶體位址。
第五圖提出根據本發明一具體實施例用於處理一載入指令之方法步驟的流程圖。雖然該等方法步驟係配合第一圖、第二圖、第三A圖、第三B圖和第三C圖之該等系統做說明,本技術專業人士將可瞭解到設置成以任何順序執行該等方法步驟的任何系統皆在本發明之範圍內。
方法500開始於步驟505,其中位址產生單元405接收一載入指令,其中包括一包繞的至少一部份的位址,以及該包繞的一相對應啟動遮罩。在步驟510,位址產生單元405執行位址計算任務以針對每一平行執行緒產生個別的記憶體位址。在步驟515,均衡載入單元410決定該載入指令是否被指定為一均衡載入指令,即是否一「均衡」提示被包括於該指令。如果一「均衡」提示未被包括於該載入指令,則在步驟530,非均衡載入單元415當作一非均衡載入指令來處理該存取。
否則,在步驟522,均衡載入單元410辨識該包繞之內的平行執行緒子集合。在步驟524,均衡載入單元410根據一或多種均衡樣式比較關聯於一或多個該等平行執行緒子集合的該等個別記憶體位址來產生每一均衡樣式的一比較結果。該包繞的該啟動遮罩亦由均衡載入單元410使用,使得非啟動執行緒被視為可匹配任何個別記憶體位址。該等個別記憶體位址並未針對未被致能的均衡樣式的符合度來做比較。在步驟528,均衡載入單元410決定該等比較結果是否指明在該平行執行緒子集合內該等執行緒符合包括一第一記憶體位址之至少一個記憶體位址的均衡樣式。
如果均衡載入單元410決定該等比較結果指明每一平行執行緒子集合並不符合至少一記憶體位址的均衡樣式,則在步驟530,非均衡載入單元415將該載入指令當作一非均衡載入指令來處理。否則,在步驟535,載入儲存單元陣列375傳送包括該第一記憶體位址和該平行執行緒子集合的任何其它唯一記憶體位址的一讀取要求到記憶體和快取互連接 380,以取得該平行執行緒子集合的該資料,藉以當作一均衡載入指令來處理該平行執行緒子集合的存取。
該揭示方法之一種好處為要求讀取相同記憶體位址的多個執行緒僅執行單一記憶體讀取要求,藉此保留記憶體頻寬以傳送要求和接收資料。此外,因為基於一或多種均衡樣式而由載入儲存單元陣列375偵測到一均衡載入,該編譯器可有彈性來指明即使該編譯器無法保證在該執行緒群組中每一執行緒將在執行期間存取該相同記憶體位址時,一載入指令可為均衡。該等均衡樣式可基於由載入儲存單元陣列375和共用記憶體306與L1快取320之間的記憶體和快取互連接380所提供的該連接(或路由)所定義。
本發明一具體實施例可以實施成由一電腦系統使用的一程式產品。該程式產品的程式定義該等具體實施例的功能(包括此處所述的方法),並可包含在多種電腦可讀取儲存媒體上。例示性的電腦可讀取儲存媒體包括但不限於:(i)不可寫入儲存媒體(例如在一電腦內的唯讀記憶體裝置,例如可由CD-ROM光碟機讀取的光碟唯讀記憶體(CD-ROM,Compact disc read only memory)碟片、快閃記憶體、唯讀記憶體(ROM)晶片,或任何其它種類的固態非揮發性半導體記憶體),在該不可寫入儲存媒體上可永久儲存資訊;及(ii)可寫入儲存媒體(例如在一磁碟機內的軟碟片、或硬碟機、或任何種類的固態隨機存取半導體記憶體),在該可寫入儲存媒體上可儲存可改變的資訊。
本發明已經參照特定具體實施例在以上進行說明。但是本技術專業人士將可瞭解到在不背離附屬申請專利範圍所提出之本發明的廣義精神與範圍之下可對其進行多種修正與改變。因此前述的說明及圖面係在以例示性而非限制性的角度來看待。
303‧‧‧載入儲存單元
304‧‧‧局部暫存器檔案
312‧‧‧包繞排程器和指令單元
375‧‧‧載入儲存單元陣列
405‧‧‧位址產生單元
410‧‧‧均衡載入單元
415‧‧‧非均衡載入單元

Claims (10)

  1. 一種用於自記憶體取得關聯於一載入指令之資料的方法,該方法包含:接收要由在一執行緒群組中每一執行緒平行執行的一第一載入指令,其中該第一載入指令針對在該執行緒群組中每一個別執行緒指定一個別記憶體位址;辨識出僅包括在該執行緒群組中該等執行緒之一部份的一平行執行緒子集合;基於一均衡樣式比較關聯於包括在該平行執行緒子集合中該等執行緒的該部份之該等個別的記憶體位址(包括一第一記憶體位址)以產生一比較結果;決定該比較結果指明該平行執行緒子集合的該等個別記憶體位址符合該均衡樣式;以及傳送一讀取要求至該記憶體,以取得儲存在該第一記憶體位址處的資料。
  2. 一種處理子系統,包含:一均衡載入單元,其設置成:接收要由在一執行緒群組中每一執行緒平行執行的一第一載入指令,其中該第一載入指令針對在該執行緒群組中每一個別執行緒指定一個別記憶體位址;辨識出僅包括在該執行緒群組中該等執行緒之一部份的一平行執行緒子集合;基於一均衡樣式比較關聯於包括在該平行執行緒子集合中該等執行緒的該部份之該等個別的記憶體位址(包括一第一記憶體位址)以產生一比較結果;決定該比較結果指明關聯於該平行執行緒子集合的該等個別記憶體位址符合該均衡樣式;以及一載入/儲存單元,其耦合於該均衡載入單元和一記憶體之間,並設置成傳送一讀取要求至該記憶體以取得儲存在該第一記憶體位址處的資料。
  3. 如申請專利範圍第2項之處理子系統,其中該比較結果指明該平行執行緒子集合內至少兩個執行緒係關聯於該第一記憶體位址。
  4. 如申請專利範圍第2項之處理子系統,其中該比較結果指明該平行執行緒子集合內至少兩個執行緒係關聯於一第二記憶體位址,且該讀取要求指定該第一記憶體位址和該第二記憶體位址。
  5. 如申請專利範圍第2項之處理子系統,其中在辨識出該平行執行緒子集合之前該均衡載入單元設置成決定該第一載入指令指定一提示,其中該第一載入指令可當作該平行執行緒子集合和該執行緒群組中該等執行緒之額外平行執行緒子集合的一均衡載入指令來處理。
  6. 如申請專利範圍第2項之處理子系統,其中該均衡樣式指定關聯於該平行執行緒子集合內每一相鄰執行緒配對的個別記憶體位址做比較。
  7. 如申請專利範圍第2項之處理子系統,其中該均衡樣式指定關聯於該平行執行緒子集合內每一不相鄰執行緒配對的個別記憶體位址做比較。
  8. 如申請專利範圍第2項之處理子系統,其中該均衡載入單元被進一步設置成:接收該執行緒群組的一啟動遮罩,其指明在該執行緒群組中必須執行該第一載入指令的執行緒;以及使用該啟動遮罩來產生該比較結果。
  9. 一種運算系統,包含:一記憶體,其設置成儲存在執行緒群組中平行執行緒的資料;以及一處理子系統,包含:一均衡載入單元,其設置成:接收要由在一執行緒群組中每一執行緒平行執行的一第一載入指令,其中該第一載入指令針對在該執行緒群組中每一個別執行緒指定一個別記憶體位址;辨識出僅包括在該執行緒群組中該等執行緒之一部份的一平行執行緒子集合;基於一均衡樣式比較關聯於包括在該平行執行緒子集合中該等執 行緒的該部份之該等個別的記憶體位址(包括一第一記憶體位址)以產生一比較結果;決定該比較結果指明關聯於該平行執行緒子集合的該等個別記憶體位址符合該均衡樣式;以及一載入/儲存單元,其耦合於該均衡載入單元和該記憶體之間,並設置成傳送一讀取要求至該記憶體以取得儲存在該第一記憶體位址處的資料。
  10. 如申請專利範圍第9項之運算系統,其中該比較結果指明該平行執行緒子集合內至少兩個執行緒係關聯於該第一記憶體位址。
TW102107244A 2012-03-05 2013-03-01 平行執行緒子集合的均衡載入處理 TW201351277A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/412,438 US10007527B2 (en) 2012-03-05 2012-03-05 Uniform load processing for parallel thread sub-sets

Publications (1)

Publication Number Publication Date
TW201351277A true TW201351277A (zh) 2013-12-16

Family

ID=48985205

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102107244A TW201351277A (zh) 2012-03-05 2013-03-01 平行執行緒子集合的均衡載入處理

Country Status (4)

Country Link
US (1) US10007527B2 (zh)
CN (1) CN103309702A (zh)
DE (1) DE102013202173A1 (zh)
TW (1) TW201351277A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI724505B (zh) * 2019-03-08 2021-04-11 開曼群島商創新先進技術有限公司 提升cpu並行性能的方法及裝置和電子設備
TWI802275B (zh) * 2022-02-16 2023-05-11 昱文 李 晶片系統架構

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2524063B (en) * 2014-03-13 2020-07-01 Advanced Risc Mach Ltd Data processing apparatus for executing an access instruction for N threads
US10255547B2 (en) * 2014-12-04 2019-04-09 Nvidia Corporation Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system
US9772852B2 (en) * 2015-04-23 2017-09-26 Google Inc. Energy efficient processor core architecture for image processor
US9720691B2 (en) 2015-09-23 2017-08-01 Qualcomm Incorporated Speculative scalarization in vector processing
US10649770B2 (en) * 2017-01-31 2020-05-12 Facebook, Inc. κ-selection using parallel processing
US10325344B2 (en) * 2017-04-17 2019-06-18 Intel Corporation Efficient merging of atomic operations at computing devices
US10489877B2 (en) * 2017-04-24 2019-11-26 Intel Corporation Compute optimization mechanism
US10726514B2 (en) 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations
US10691455B2 (en) * 2017-05-23 2020-06-23 Samsung Electronics Co., Ltd Power saving branch modes in hardware
CN107333282B (zh) * 2017-06-05 2021-02-19 惠州Tcl移动通信有限公司 一种基于gpp的5g终端通用平台优化方法及系统
US10474822B2 (en) * 2017-10-08 2019-11-12 Qsigma, Inc. Simultaneous multi-processor (SiMulPro) apparatus, simultaneous transmit and receive (STAR) apparatus, DRAM interface apparatus, and associated methods
US10877757B2 (en) * 2017-11-14 2020-12-29 Nvidia Corporation Binding constants at runtime for improved resource utilization
CN110399235B (zh) * 2019-07-16 2020-07-28 阿里巴巴集团控股有限公司 Tee系统中的多线程数据传输方法和装置
US10699015B1 (en) 2020-01-10 2020-06-30 Alibaba Group Holding Limited Method and apparatus for data transmission in a tee system
CN110442462B (zh) 2019-07-16 2020-07-28 阿里巴巴集团控股有限公司 Tee系统中的多线程数据传输方法和装置
CN111343239B (zh) * 2020-02-10 2022-11-04 中国银联股份有限公司 通信请求处理方法、通信方法、通信请求处理装置以及交易系统
CN114510271B (zh) * 2022-02-09 2023-08-15 海飞科(南京)信息技术有限公司 用于在单指令多线程计算系统中加载数据的方法和装置
CN117033298A (zh) * 2022-10-21 2023-11-10 上海天数智芯半导体有限公司 一种瓦片处理器、soc芯片以及电子设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5854638A (en) 1996-02-02 1998-12-29 Opti Inc. Unified memory architecture with parallel access by host and video controller
KR100324279B1 (ko) 1999-08-24 2002-02-25 서평원 교환기에서 이중화 프로세서 간 메모리 일치 시스템 및 방법
CN100426268C (zh) 2004-08-06 2008-10-15 华为技术有限公司 光模块寻址装置及其方法
US20080244080A1 (en) * 2007-03-29 2008-10-02 James Thomas H Prefetching Based on Streaming Hints
US8056080B2 (en) 2009-08-31 2011-11-08 International Business Machines Corporation Multi-core/thread work-group computation scheduler
US8458440B2 (en) * 2009-09-25 2013-06-04 Nvidia Corporation Deferred complete virtual address computation for local memory space requests
US8271763B2 (en) * 2009-09-25 2012-09-18 Nvidia Corporation Unified addressing and instructions for accessing parallel memory spaces

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI724505B (zh) * 2019-03-08 2021-04-11 開曼群島商創新先進技術有限公司 提升cpu並行性能的方法及裝置和電子設備
US11080094B2 (en) 2019-03-08 2021-08-03 Advanced New Technologies Co., Ltd. Method, apparatus, and electronic device for improving parallel performance of CPU
TWI802275B (zh) * 2022-02-16 2023-05-11 昱文 李 晶片系統架構

Also Published As

Publication number Publication date
US10007527B2 (en) 2018-06-26
CN103309702A (zh) 2013-09-18
DE102013202173A1 (de) 2013-09-05
US20130232322A1 (en) 2013-09-05

Similar Documents

Publication Publication Date Title
TW201351277A (zh) 平行執行緒子集合的均衡載入處理
TWI490782B (zh) 來源運算元收集器快取的方法和裝置
TWI498819B (zh) 執行成型記憶體存取作業的系統和方法
US10037228B2 (en) Efficient memory virtualization in multi-threaded processing units
US10310973B2 (en) Efficient memory virtualization in multi-threaded processing units
US8732713B2 (en) Thread group scheduler for computing on a parallel thread processor
US8938598B2 (en) Facilitating simultaneous submission to a multi-producer queue by multiple threads with inner and outer pointers
US10169091B2 (en) Efficient memory virtualization in multi-threaded processing units
TWI489385B (zh) 一種用於預先擷取快取線的電腦實作方法與子系統
US9262174B2 (en) Dynamic bank mode addressing for memory access
US8982140B2 (en) Hierarchical memory addressing
TWI490779B (zh) 無鎖的先進先出裝置
US9606808B2 (en) Method and system for resolving thread divergences
TWI533222B (zh) 處理任務的工作分配控制
US20130198760A1 (en) Automatic dependent task launch
US9069609B2 (en) Scheduling and execution of compute tasks
TW201333829A (zh) 分配運算工作的參考運數器
US20110072438A1 (en) Fast mapping table register file allocation algorithm for simt processors
US9798544B2 (en) Reordering buffer for memory access locality
TW201337829A (zh) 暫存器檔案型讀取
US9715413B2 (en) Execution state analysis for assigning tasks to streaming multiprocessors
TW201432573A (zh) 工作佇列型圖形處理單元工作創建
TW201351276A (zh) 計算工作的排程和執行
US10235208B2 (en) Technique for saving and restoring thread group operating state
US9286256B2 (en) Sharing data crossbar for reads and writes in a data cache