TWI529620B - 推理執行和回復 - Google Patents
推理執行和回復 Download PDFInfo
- Publication number
- TWI529620B TWI529620B TW101140669A TW101140669A TWI529620B TW I529620 B TWI529620 B TW I529620B TW 101140669 A TW101140669 A TW 101140669A TW 101140669 A TW101140669 A TW 101140669A TW I529620 B TWI529620 B TW I529620B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- instructions
- thread
- thread group
- reply
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims description 109
- 238000012545 processing Methods 0.000 claims description 106
- 238000000034 method Methods 0.000 claims description 26
- 230000008569 process Effects 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 7
- 238000010968 computed tomography angiography Methods 0.000 description 26
- 238000010586 diagram Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 13
- 239000000872 buffer Substances 0.000 description 10
- 238000007726 management method Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000012884 algebraic function Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005293 physical law Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000011273 social behavior Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
- G06F9/38885—Divergence aspects
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)
Description
本發明概略關於電腦任務的執行,尤指指令的推理執行和回復。
以往的管線式處理器已經藉由預測條件式分支的那一側將要被執行來執行條件式分支指令的推理執行。當該預測不正確時,該等指令被回復,所以即可執行該條件式分支的另一側。當該等指令被回復時,處理管線的管線平台被閒置,直到該條件式分支的另一側之該等指令到達那些管線平台。
因此,本技術需要一種用於推理式發出指令之系統和方法,其可允許處理管線在其它指令的回復期間繼續處理一些指令。重要地是,該推理執行必須不受限於條件式分支指令。
一種用於推理式發出指令的系統和方法可允許一處理管線於其它指令的回復期間繼續處理一些指令。一排程器電路發出指令來由多執行緒執行單元來執行,其係假設在數個循環之後,當該等指令到達該等多執行緒執行單元時,該等指令之間的相依性將被解決,資源將可使用,運算元資料將可使用,而其它條件將不會防止該等指令的執行。當於執行一特定執行緒群組的一指令中存在有一回復條件時,該指令不會被分派到該等多執行緒執行單元。但是,由該排程器電路發出的其它指令在由不同執行緒群組執行且其不存在有一回復條件者,即由該等多執行緒執行單元來執行。引致該回復條件的該指令於該回復條件不再存在之後被重新發出。
本發明之一種用於執行推理性發出指令的回復之方法的多種具體實施例包括發出一第一執行緒群組的一第一組指
令,及發出一第二執行緒群組的一第二組指令。於在該第一組指令中一指令的預執行處理且停止發出該第一執行緒群組的額外指令間,針對在該第一執行緒群組中至少一執行緒偵測到一回復條件。已經發出而尚未在該第一組指令中被執行的進行中指令被丟棄,並執行該第二執行緒群組的該第二組指令。
本發明之多種具體實施例包括一種用於執行推理式發出的指令之回復的系統。該系統包括一記憶體、一排程器單元、一分派單元、和多個執行單元。該記憶體設置成儲存一第一執行緒群組的一第一組指令和一第二執行緒群組的一第二組指令。設置成發出該第一執行緒群組的該第一組指令的該排程器單元發出該第二執行緒群組的該第二組指令,且當偵測到一回復條件時,停止發出該第一執行緒群組的額外指令。該分派單元設置成於在該第一組指令中一指令的預執行處理期間,偵測在該第一執行緒群組中至少一執行緒的回復條件,且丟棄在該第一組指令中已經發出而尚未被執行的進行中指令。該等多個執行單元設置成執行該第二執行緒群組的該第二組指令。
重要地是,指令的推理性發出並不受限於條件式分支指令。排程器電路並不解碼該等指令,因此不會執行預測性作業。最晚在執行時,如果一特定執行緒群組的任何指令引致一回復條件,該指令不被執行,且針對該指令和其它已經針對該特定執行緒群組所發出的指令執行回復。
在以下的說明中,許多特定細節係被提出來提供對於本發明之更為完整的瞭解。但是本技術專業人士將可瞭解到本發明可不利用一或多個這些特定細節來實施。在其它實例中,並未說明熟知的特徵,以避免混淆本發明。
系統概述
第一圖例示設置成實作本發明一或多種態樣之一電腦系
統100的方塊圖。電腦系統100包括一中央處理單元(CPU)102與一系統記憶體104,其經由包括一記憶體橋接器105的互連接路徑進行通訊。記憶體橋接器105可為例如一北橋晶片,其經由一匯流排或其它通訊路徑106(例如一超輸送(HyperTransport)聯結)連接到一輸入/輸出(I/O,Input/Output)橋接器107。I/O橋接器107可為例如一南橋晶片,其接收來自一或多個使用者輸入裝置108(例如鍵盤、滑鼠)的使用者輸入,並經由路徑106及記憶體橋接器105轉送該輸入到CPU 102。一平行處理子系統112經由一匯流排或其它通訊路徑113(例如快速周邊組件互連(PCI Express,Peripheral Component Interconnect Express)、加速繪圖埠或超輸送(HyperTransport)聯結)耦合至記憶體橋接器105;在一具體實施例中,平行處理子系統112為一繪圖子系統,其傳遞像素到一顯示裝置110(例如一習用陰極射線管(CRT,Cathode Ray Tube)或液晶顯示器(LCD,Liquid Crystal Display)式的監視器)。一系統碟114亦連接至I/O橋接器107。一交換器116提供I/O橋接器107與像是網路轉接器118與多種嵌入卡120及121之其它組件之間的連接。其它組件(未明確顯示),包括有USB或其它埠連接、CD驅動器、DVD驅動器、薄膜記錄裝置及類似者,其亦可連接至I/O橋接器107。互連接第一圖中該等多種組件的通訊路徑可使用任何適當的協定來實作,例如周邊組件互連(PCI,Peripheral Component Interconnect)、快速周邊組件互連(PCI Express)、加速圖形通訊埠(AGP,Accelerated Graphics Port)、超輸送(HyperTransport),或任何其它匯流排或點對點通訊協定及不同裝置之間的連接,皆可使用如本技術中所知的不同協定。
在一具體實施例中,平行處理子系統112加入可針對圖形及視訊處理最佳化的電路,其包括例如視訊輸出電路,且構成一圖形處理單元(GPU,Graphics Processing Unit)。在另一具體實施例中,平行處理子系統112加入可針對一般性目的處理最
佳化的電路,而可保留底層的運算架構,在此處會有更為詳細的說明。在又另一具體實施例中,平行處理子系統112可被整合於一或多個其它系統元件,例如記憶體橋接器105、CPU 102及I/O橋接器107而形成一系統上晶片(SoC,System On Chip)。
將可瞭解到此處所示的系統僅為例示性,其有可能有多種變化及修正。連接拓樸,包括橋接器的數目與配置,CPU 102的數目及平行處理子系統112的數目皆可視需要修改。例如,在一些具體實施例中,系統記憶體104直接連接至CPU 102而非透過一橋接器耦接,而其它裝置透過記憶體橋接器105及CPU 102與系統記憶體104進行通訊。在其它可替代的拓樸中,平行處理子系統112連接至I/O橋接器107或直接連接至CPU 102,而非連接至記憶體橋接器105。在又其它具體實施例中,I/O橋接器107及記憶體橋接器105可被整合到一單一晶片當中。大型具體實施例可包括兩個或更多的CPU 102及兩個或更多的平行處理子系統112。此處所示的該等特定組件皆為選擇性的;例如其可支援任何數目的嵌入卡或周邊裝置。在一些具體實施例中,交換器116被省略,且網路轉接器118及嵌入卡120、121直接連接至I/O橋接器107。
第二圖例示根據本發明一具體實施例之一平行處理子系統112。如所示,平行處理子系統112包括一或多個平行處理單元(PPU,Parallel Processing Unit)202,其每一者耦合於一局部平行處理(PP,Parallel Processing)記憶體204。概言之,一平行處理子系統112包括數目為U的PPU,其中U1。(在此處,類似物件的多個實例標示為辨識該物件之參考編號,而括號中的數目辨識所需要的實例)。PPU 202及平行處理記憶體204可以使用一或多個積體電路裝置來實作,例如可程式化處理器,特殊應用積體電路(ASIC,Application Specific Integrated Circuits),或記憶體裝置,或以任何其它技術上可行的方式來實作。
請再次參照第一圖,在一些具體實施例中,平行處理子系統112中部份或所有的PPU 202為圖形處理器,其具有顯像管線,其能夠設置成執行關於自CPU 102及/或系統記憶體104經由記憶體橋接器105及匯流排113所供應的圖形資料來產生像素資料的多種作業,與局部平行處理記憶體204進行互動(其能夠做為圖形記憶體,其包括例如一習用圖框緩衝器),以儲存及更新像素資料,傳遞像素資料到顯示裝置110及類似者。在一些具體實施例中,平行處理子系統112可以包括可操作為圖形處理器的一或多個PPU 202,及用於通用型運算的一或多個其它PPU 202。該等PPU可為相同或不同,且每個PPU可以具有其本身專屬的平行處理記憶體裝置或無專屬的平行處理記憶體裝置。一或多個PPU 202可以輸出資料到顯示裝置110,或每個PPU 202可以輸出資料到一或多個顯示裝置110。
在作業中,CPU 102為電腦系統100的主控處理器,其控制及協調其它系統組件的作業。特別是CPU 102發出控制PPU 202之作業的命令。在一些具體實施例中,CPU 102對每一PPU 202寫入一命令串流至一資料結構(未明確示於第一圖或第二圖中),其可位於系統記憶體104、平行處理記憶體204或可同時由CPU 102與PPU 202存取的其它儲存位置。至每一資料結構的一指標被寫入至一推入緩衝器來啟始在該資料結構中該命令串流之處理。PPU 202自一或多個推入緩衝器讀取命令串流,然後相對於CPU 102的該作業非同步地執行命令。執行優先性可針對每一推入緩衝器來指定,以控制該等不同推入緩衝器的排程。
現在請回頭參照第二B圖,每個PPU 202包括一輸入/輸出(I/O,Input/Output)單元205,其經由通訊路徑113與電腦系統100的其它部份進行通訊,其連接至記憶體橋接器105(或在一替代性具體實施例中直接連接至CPU 102)。PPU 202與電腦系統100的其它部份之連接亦可改變。在一些具體實施例中,平
行處理子系統112係實作成一嵌入卡,其可被插入到電腦系統100的一擴充槽中。在其它具體實施例中,PPU 202可與一匯流排橋接器整合在一單一晶片上,例如記憶體橋接器105或I/O橋接器107。在又其它的具體實施例中,PPU 202之部份或所有元件可與CPU 102整合在一單一晶片上。
在一具體實施例中,通訊路徑113為一快速周邊組件互連(PCI-EXPRESS)鏈路,其中如本技術中所熟知,專屬的線路會分配給每個PPU 202。其亦可使用其它通訊路徑。一I/O單元205產生封包(或其它信號)在通訊路徑113上傳輸,且亦自通訊路徑113接收所有進入的封包(或其它信號),導引該等進入封包到PPU 202的適當組件。例如,關於處理任務的命令可被導引到一主控介面206,而關於記憶體作業的命令(例如自平行處理記憶體204讀取或寫入其中)可被導引到一記憶體交叉開關單元210。主控介面206讀取每個推入緩衝器,並輸出儲存在該推入緩衝器中的該命令串流至一前端部212。
每一PPU 202較佳地是實作一高度平行的處理架構。如詳細所示,PPU 202(0)包括一處理叢集陣列230,其包括數目為C的通用處理叢集(GPCs,General Processing Clusters)208,其中C1。每一GPC 208能夠同時執行大量(例如數百或數千)的執行緒,其中每個執行緒為一程式的一實例。在多種應用中,不同的GPC 208可分配來處理不同種類的程式,或執行不同種類的運算。GPC 208的分配可依據每種程式或運算所提升的工作負荷而改變。
GPC 208由一任務/工作單元207內的一工作分配單元接收要被執行的處理任務。該工作分配單元接收指標來計算被編碼成佇列中介資料(QMD,Queue Metadata)且儲存在記憶體中的處理任務。該等至QMD的指標被包括在儲存成一推入緩衝器且由前端部單元212自主控介面206接收的該命令串流中。可被編碼成QMD的處理任務包括要被處理之資料的索引,以及定
義了該資料要如何被處理(例如那一個程式要被執行)的狀態參數和命令。任務/工作單元207自前端部212接收任務,並確保GPC 208在由該等QMD之每一者所指定的該處理啟始之前被設置成一有效狀態。一優先性可針對用於排程該處理任務之執行的每一QMD來指定。
記憶體介面214包括數目為D的區隔單元215,其每一者被直接耦合至平行處理記憶體204的一部份,其中D1。如所示,區隔單元215的該數目大致上等於動態隨機存取記憶體(DRAM,Dynamic Random Access Memory)220的數目。在其它具體實施例中,區隔單元215的數目可能不等於記憶體裝置的數目。本技術專業人士將可瞭解到DRAM 220可由其它適當儲存裝置取代,並可為一般的習用設計。因此可省略詳細說明。顯像目標,例如圖框緩衝器或紋路地圖,其可儲存在不同DRAM 220中,其允許區隔單元215平行地寫入每個顯像目標之部份而有效率地使用平行處理記憶體204之可使用頻寬。
GPC 208之任何一者可處理要被寫入到平行處理記憶體204內DRAM 220中任一者的資料。交叉開關單元210設置成導引每個GPC 208之輸出到任何區隔單元215的輸入或到另一個GPC 208做進一步處理。GPC 208經由交叉開關單元210與記憶體介面214進行通訊,以自多個外部記憶體裝置讀取或寫入其中。在一具體實施例中,交叉開關單元210具有到記憶體介面214的一連接來與I/O單元205進行通訊,以及到局部平行處理記憶體204的一連接,藉此使得不同GPC 208內該等處理核心能夠與系統記憶體104或並非位在PPU 202局部之其它記憶體進行通訊。在第二圖所示的該具體實施例中,交叉開關單元210直接連接於I/O單元205。交叉開關單元210可使用虛擬通道來隔開GPC 208與區隔單元215之間的流量串流。
再次地,GPC 208可被程式化來執行關於許多種應用之處理任務,其中包括但不限於線性及非線性資料轉換、影片及/
或聲音資料的過濾、模型化作業(例如應用物理定律來決定物體的位置、速度及其它屬性)、影像顯像作業(例如鑲嵌遮影器、頂點遮影器、幾何遮影器及/或像素遮影器程式)等等。PPU 202可將來自系統記憶體104及/或局部平行處理記憶體204的資料轉移到內部(晶片上)記憶體、處理該資料及將結果資料寫回到系統記憶體104及/或局部平行處理記憶體204,其中這些資料可由其它系統組件存取,包括CPU 102或另一個平行處理子系統112。
一PPU 202可具有任何數量的局部平行處理記憶體204,並不包括局部記憶體,並可用任何的組合來使用局部記憶體及系統記憶體。例如,一PPU 202可為在一統一記憶體架構(UMA,Unified Memory Architecture)具體實施例中的一圖形處理器。在這些具體實施例中,將可提供少數或沒有專屬的圖形(平行處理)記憶體,且PPU 202將專有地或大致專有地使用系統記憶體。在UMA具體實施例中,一PPU 202可被整合到一橋接器晶片中或處理器晶片中,或提供成具有一高速鏈路(例如PCI-EXPRESS)之一分離的晶片,其經由一橋接器晶片或其它通訊手段連接PPU 202到系統記憶體。
如上所述,任何數目的PPU 202可以包括在一平行處理子系統112中。例如,多個PPU 202可提供在一單一嵌入卡上,或多個嵌入卡可被連接至通訊路徑113,或一或多個PPU 202可被整合到一橋接器晶片中。在一多PPU系統中,PPU 202可彼此相同或彼此不相同。例如,不同的PPU 202可具有不同數目的處理核心、不同數量的局部平行處理記憶體等等。當存在有多個PPU 202時,那些PPU可平行地作業而以高於一單一PPU 202所可能的流量來處理資料。加入有一或多個PPU 202之系統可實作成多種組態及形式因子,其中包括桌上型、膝上型或掌上型個人電腦、伺服器、工作站、遊戲主機、嵌入式系統及類似者。
多並行任務排程
多個處理任務可在GPC 208上同時地執行,且一處理任務於執行期間可以產生一或多個「子」(child)處理任務。任務/工作單元207接收該等任務,並動態地排程該等處理任務和子處理任務來由GPC 208執行。
第三A圖係根據本發明一具體實施例中第二圖之任務/工作單元207的方塊圖。任務/工作單元207包括一任務管理單元300和工作分配單元340。任務管理單元300基於執行優先程度組織要被排程的任務。對於每一優先程度,任務管理單元300對應於在排程器表321中該等任務,儲存一指標的鏈接串列至QMD 322。QMD 322可被儲存在PP記憶體204或系統記憶體104中。任務管理單元300接受任務並儲存該等任務在排程器表321中的速率與任務管理單元300排程任務做執行的速率相脫離,使得任務管理單元300可基於優先性資訊或使用其它技術來排程任務。
工作分配單元340包括一任務表345,其具有位置,而每一位置可由將要被執行的一任務之QMD 322佔用。任務管理單元300在任務表345中有空的位置時即可排程任務來執行。當沒有空位置時,不會佔用一位置的一較高優先性之任務可以逐出佔用一空位的一較低優先性之任務。當一任務被逐出時,該任務即停止,且如果該任務的執行並未完成,該任務被加入到排程器表321中一鏈接串列。當一子處理任務被產生時,該子任務被加入到排程器表321中一鏈接串列。一任務會自位置被移除當該任務被逐出時。
任務處理概述
第三B圖為根據本發明一具體實施例中第二圖之該等PPU 202中之一者內一GPC 208的方塊圖。每個GPC 208可設置成平行地執行大量的執行緒,其中術語「執行緒」(thread)代表在一特定組合的輸入資料上執行的一特定程式之實例。在
一些具體實施例中,使用單一指令、多重資料(SIMD,Single-instruction、Multiple-data)指令發行技術來支援大量執行緒之平行執行,而不需要提供多個獨立指令單元。在其它具體實施例中,單一指令、多重執行緒(SIMT,Single-instruction、Multiple-thread)技術係用來支援大量概略同步化執行緒的平行執行,其使用一共用指令單元,設置成發出指令到GPC 208之每一者內一組處理引擎。不像一SIMD執行方式,其中所有處理引擎基本上執行相同的指令,SIMT執行允許不同的執行緒經由一給定執行緒程式而更可立即地遵循相異的執行路徑。本技術專業人士將可瞭解到一SIMD處理方式代表一SIMT處理方式的一功能子集合。
GPC 208的作業較佳地是經由一管線管理員305控制,其可分配處理任務至串流多處理器(SM)310。管線管理員305亦可設置成藉由指定SM 310之已處理資料輸出的目的地來控制一工作分配交叉開關330。
在一具體實施例中,每個GPC 208包括M個數目的SM 310,其中M1,每個SM 310設置成處理一或多個執行緒群組。同時,每個SM 310較佳地是包括可被管線化的相同組合的功能性執行單元(如第三C圖中所示的執行單元302),允許在一先前指令已經完成之前發出一新指令,其為本技術中已知。並可提供任何功能性執行單元的組合。在一具體實施例中,該等功能單元支援多種運算,其中包括整數及浮點數算術(例如加法及乘法)、比較運算、布林運算(布林乘積(AND)、布林總和(OR)、互斥或(XOR))、位元移位及多種代數函數的運算(例如平面內插、三角函數、指數及對數函數等);及相同的功能單元硬體可被利用來執行不同的運算。
傳送到一特定GPC 208之該等系列的指令構成一執行緒,如先前此處所定義,橫跨一SM 310內該等平行處理引擎(未示出)同步執行某個數目之執行緒的集合在此稱之為「包繞」
(warp)或「執行緒群組」(thread group)。如此處所使用者,一「執行緒群組」代表同步地對於不同輸入資料執行相同程式的一執行緒的群組,該群組的每一執行緒被指定給一SM 310內的一不同處理引擎。一執行緒群組可包括比SM 310內處理引擎的數目要少的執行緒,其中當該執行緒群組正在被處理的循環期間,一些處理引擎將為閒置。一執行緒群組亦可包括比SM 310內處理引擎之數目要更多的執行緒,其中處理將發生在連續的時脈循環之上。因為每個SM 310可同步地支援最多到G個執行緒群組,因此在任何給定時間在GPC 208中最高可執行G x M個執行緒群組。
此外,在相同時間於一SM 310內可以啟動複數個相關的執行緒群組(在不同的執行階段)。此執行緒群組的集合在此處稱之為「協同執行緒陣列」(CTA,Cooperative Thread Array)或「執行緒陣列」(thread array)。一特定CTA之大小等於m x k,其中k為在一執行緒群組中同步執行的執行緒之數目,其基本上為SM 310內平行處理引擎數目之整數倍數,而m為在SM 310內同時啟動的執行緒群組之數目。一CTA的大小概略由程式師及該CTA可使用之硬體資源(例如記憶體或暫存器)的量所決定。
每一SM 310包含一階(L1)快取(如第三C圖所示),或使用在SM 310外部一相對應L1快取中用於執行負載與儲存作業的空間。每個SM 310亦可存取到所有GPC 208之間共用的二階(L2)快取,並可用於在執行緒之間傳送資料。最後,SM 310亦可存取到晶片外的「通用」記憶體,其可包括例如平行處理記憶體204及/或系統記憶體104。應瞭解到在PPU 202外部的任何記憶體皆可做為通用記憶體。此外,一1.5階(L1.5)快取335可包括在GPC 208之內,設置成由SM 310要求經由記憶體介面214接收及保持自記憶體提取的資料,其中包括指令、一致性資料與恆定資料,並提供該要求的資料至SM 310。在GPC
208中具有多個SM 310的具體實施例較佳地是共用被快取在L1.5快取335中的共通指令和資料。
每一GPC 208可包括一記憶體管理單元(MMU,Memory Management Unit)328,其設置成將虛擬位址映射到實體位址。在其它具體實施例中,MMU 328可存在於記憶體介面214內。MMU 328包括一組頁表項(PTEs,Page Table Entries),用於將一虛擬位址映射到一瓷磚的一實體位址,或是一快取線索引。MMU 328可包括位址轉譯旁查緩衝器(TLB,Translation Lookaside Buffer),或是可以存在於多處理器SM 310或L1快取或GPC 208內的快取。該實體位址被處理來分配表面資料存取局部性,而允許交錯在間隔單元當中的有效率要求。該快取線索引可用於決定一快取線的一要求是否為達成或錯失。
在圖形和運算應用中,一GPC 208可設置成使得每個SM 310耦合於一紋路單元315,用於執行紋路映射作業,例如決定紋路樣本位置、讀取紋路資料及過濾該紋路資料。紋路資料自一內部紋路L1快取(未示出)讀取,或是在一些具體實施例中自SM 310內的L1快取讀取,且視需要自一L2快取、平行處理記憶體204或系統記憶體104提取。每一SM 310輸出已處理的任務至工作分配交叉開關330,藉以提供該已處理的任務至另一GPC 208進行進一步處理,或是將該已處理的任務經由交叉開關單元210儲存在一L2快取、平行處理記憶體204或系統記憶體104中。一預先掃描場化作業(preROP,Pre-raster Operations)325設置成自SM 310接收資料、導引資料到區隔單元215內的ROP單元並進行色彩混合的最佳化、組織像素色彩資料並執行位址轉譯。
將可瞭解到此處所示的核心架構僅為例示性,其有可能有多種變化及修正。在一GPC 208內可包括任何數目的處理單元,例如SM 310或紋路單元315、preROP 325。再者,雖僅顯示一個GPC 208,一PPU 202可以包括任何數目的GPC 208,
其較佳地是在功能上彼此類似,所以執行行為並不會依據是那一個GPC 208接收一特定處理任務而決定。再者,每個GPC 208較佳地是與其它GPC 208獨立地運作,其使用獨立及不同的處理單元、L1快取等等。
本技術專業人士將可瞭解到在第一、二、三A及三B圖中所述之該架構並未以任何方式限制本發明之範疇,而此處所教示的技術可以實作在任何適當設置的處理單元上,其包括但不限於一或多個CPU、一或多個多核心CPU、一或多個PPU 202、一或多個GPC 208、一或多個圖形或特殊目的處理單元或類似者,其皆不背離本發明之範疇。
在本發明之具體實施例中,需要使用PPU 202或一運算系統的其它處理器來使用執行緒陣列執行一般性目的之運算。在該執行緒陣列中每一執行緒被指定一唯一執行緒識別(thread ID),其可在該執行緒的執行期間由該執行緒存取。可被定義成一維或多維度數值的執行緒ID控制該執行緒的處理行為之多種態樣。例如,一執行緒ID可用於決定一執行緒要做處理的是該輸入資料集的那一部份,及/或決定一執行緒要產生或寫入的是一輸出資料集的那一部份。
每個執行緒的指令的一序列可以包括至少一指令來定義該代表性執行緒和該執行緒陣列的一或多個其它執行緒之間的一協同行為。例如,每個執行緒的該指令序列可以包括一指令來在該序列中一特定點處中止該代表性執行緒之作業的執行,直到當該等其它執行緒中一或多者到達該特定點為止,該代表性執行緒的一指令係儲存資料在該等其它執行緒中一或多者可存取的一共用記憶體中,該代表性執行緒的一指令係基於它們的執行緒ID原子性地讀取和更新儲存在該等其它執行緒中一或多者可存取的一共用記憶體中的資料,或類似者。該CTA程式亦可包括一指令來運算資料在該共用記憶體中要被讀取的一位址,利用該位址為執行緒ID的函數。藉由定義適
當的函數和提供同步化技術,資料可藉由一CTA的一執行緒被寫入到共用記憶體中一給定的位置,並以一可預測的方式由該相同CTA的一不同執行緒自該位置讀取。因此,即可支援在執行緒當中共用任何需要的資料型式,且在一CTA中任何執行緒能夠與該相同CTA中任何其它執行緒共用資料。如果有的話,在一CTA的執行緒當中資料共用的程度係由該CTA程式決定;因此,應瞭解到在使用CTA的一特定應用中,依據該CTA程式,一CTA的該等執行緒可以或不可以實際地彼此共用資料,該等術語「CTA」和「執行緒陣列」在此處為同義地使用。
推理指令發出和回復
第三C圖為根據本發明一具體實施例中第三B圖的SM 310的方塊圖。SM 310包括一指令L1快取370,其設置成經由L1.5快取335自記憶體接收指令。一包繞排程器和指令單元312自指令L1快取370接收指令,並發出指令至指令管線324。該指令發出程序為推理式,因為包繞排程器和指令單元312並未設置成執行任何該等指令的解碼。因此,該等指令在未決定關於該等指令的任何事之下被推理性地發出,例如該指令種類、來源或目的地作業的數目及類似者。
指令管線324執行預執行指令作業,例如指令解碼與資料驗證。指令管線324根據該等指令收集該等指令的運算元、存取局部暫存器檔案304、記憶體和快取互連接380、共用記憶體306和L1快取320來讀取和寫入運算元。在該預執行指令作業期間,指令管線324可決定已經發生一回復條件。指令管線324藉由設定一回復旗標來指明是否已經發生一回復條件,並提供一回復碼來辨識該回復條件的原因。指令管線324輸出已處理的指令、回復旗標和回復碼至分派單元326。
分派單元326針對執行緒和在N個執行(執行或處理)單元302的該等執行緒群組來維持一資源計分板和狀態資訊。分派
單元326自指令管線324接收已處理的指令、回復旗標和回復碼,且當一回復條件尚未被指令管線324辨識時,分派單元326可以基於該資源計分板和狀態資訊決定已經發生一回復條件。該回復狀態包括造成該回復的該指令之位址。當發生一回復條件時,分派單元326輸出回復旗標與回復碼至包繞排程器和指令單元312。否則,分派單元326分派該等經處理的指令來由執行單元302執行。在一具體實施例中,當發生多個回復條件時,回報給排程器312的該回復條件指明已經發生兩個或更多的回復條件。在另一具體實施例中,優先程度針對該等不同回復條件來指定,而具有最高優先性的該回復條件被回報給排程器312。
回復可用於處理多種錯誤條件,而同時造成指令之推理性發出。當辨識出一回復條件時,啟始該回復的執行緒群組之所有進行中指令必須使其無效。進行中指令包括該執行緒群組中已經發出但尚未被分派(提交)來由執行單元302執行的任何指令。在該回復作業的第一階段中,該執行緒群組的指令之發出及該執行緒群組的新指令之提取皆停止。當該執行緒群組的進行中指令到達分派單元326時,該等進行中指令被丟棄。在一替代的具體實施例中,該等進行中指令被包繞排程器和指令單元312、指令管線324和分派單元326丟棄,所以該等進行中指令並未通過到分派單元326。一旦該回復條件被移除或修正,該回復作業的第二階段開始於包繞排程器和指令單元312來更新該執行緒群組的該程式計數器。然後包繞排程器和指令單元312自指令L1快取370提取開始於該程式計數器的該等已回復的指令,並發出該等經回復的指令。
SM 310提供具有不同程度存取性的晶片上(內部)資料儲存。特殊暫存器(未示出)可由分派單元326讀取但不能寫入,並用於儲存定義每一執行緒的「位置」之參數。在一具體實施例中,特殊暫存器包括每一執行緒(或SM 310內每一執行單元
302)的一暫存器,用於儲存一執行緒ID;每一執行緒ID暫存器僅可由執行單元302的個別單元存取。特殊暫存器亦可包括額外的暫存器,其可由相同的網格或佇列中所有的執行緒讀取並儲存一CTA識別、CTA維度,該CTA所屬的一網格的該等維度(或如果是一佇列時的佇列位置)及該CTA所屬的該網格或佇列之一識別。屬於一網格的CTA具有隱式x、y、z參數,指明該網格內個別CTA的位置。特殊暫存器回應於經由前端部212自裝置驅動器103接收的命令而在一初始化期間被寫入,且於一處理任務的執行期間不會改變。前端部212排程每一處理任務成為一網格或佇列來執行。每一CTA關聯於一特定網格或佇列用於一或多個任務的同時執行。此外,一單一GPC 208可以同時執行多個任務。
一參數記憶體(未示出)儲存運行時間參數(常數),其可被相同CTA(或任何LSU 303)內任何執行緒讀取但無法寫入。在一具體實施例中,裝置驅動器103在導引SM 310開始使用這些參數的一項任務之執行之前提供參數至該參數記憶體。任何CTA(或SM 310內任何執行單元302)內的任何執行緒能夠經由一記憶體介面214存取通用記憶體。通用記憶體的一些部份可被儲存在L1快取320中。
局部暫存器檔案304由每一執行緒使用做為暫存空間;每一暫存器被分配做為一執行緒的專屬使用,而在任何局部暫存器檔案304中的資料僅可由該暫存器被分配到的該執行緒來存取。局部暫存器檔案304可實作成被實體或邏輯性地區分成N條線路的一暫存器檔案,其每一者具有某個數目的項目(其中每個項目可以儲存例如32位元的字元)。一條線路被指定給N個執行單元302的每一執行單元302,且在不同線路中的相對應的項目可存在有執行相同程式的不同執行緒之資料來促進SIMD執行。該等線路的不同部份可被分配給該等G個並行執行緒群組之不同的執行緒群組,所以在局部暫存器檔案304中
一給定項目僅可由一特定執行緒存取。在一具體實施例中,局部暫存器檔案304內某些項目被保留來儲存執行緒識別及實作該等特殊暫存器之一。此外,一一致L1快取可被包括在SM 310內,以針對該等N個執行單元302之每一線路儲存一致或固定值。
共用記憶體306可由一單一CTA內的執行緒存取;換言之,在共用記憶體306中任何位置可由該相同CTA內任何執行緒存取(或可由SM 310內任何處理引擎存取)。共用記憶體306可實作成利用一互連接的一共用暫存器檔案或共用的晶片上快取記憶體,其可允許任何處理引擎讀取或寫入到該共用記憶體中任何位置。在其它具體實施例中,共用的狀態空間可映射到晶片外記憶體的一每一CTA的區域之上,且被快取在L1快取320中。該參數記憶體可被實作成該相同共用的暫存器檔案或實作共用記憶體306的共用快取記憶體內一指定的區段,或是實作成一獨立的共用暫存器檔案或LSU 303具有唯讀性存取的晶片上快取記憶體。在一具體實施例中,實作該參數記憶體的該區域亦用於儲存該CTA ID與任務ID,以及CTA與網格維度或佇列位置,實作該等特殊暫存器的某些部份。SM 310亦可包括一統一位址映射單元352,其轉換提供用於載入與儲存在一統一記憶體空間中指定的指令之一位址,成為在每一不同記憶體空間中的一位址。因此,一指令可用於藉由指定在該統一記憶體空間中一位址來存取該等局部、共用或通用記憶體空間之任一者。
在每一SM 310中的L1快取320可用於快取私密的每一執行緒之局部資料,以及每一應用程式的通用資料。在一些具體實施例中,該每一CTA的共用資料可被快取在L1快取320中。指令管線324經由一記憶體和快取互連接380耦合至共用記憶體306和L1快取320。指令管線324設置成偵測多種回復條件,其中包括由於一快取錯失或因為一運算元尚未被儲存而無法
使用的運算元。例如,當一常數在一常數快取中無法使用時(即發生一快取錯失),指令管線324指明存在有一回復條件。一編譯器基本上組織該等指令,所以藉由確保相依的指令所需要的任何運算元可由在該相同或不同的執行緒群組中稍早的指令做運算(視需要)及儲存,該等相依的指令即可被執行而不會延遲。但是,一回復條件可造成一或多個執行緒群組之指令被延遲。因此,指令管線324可設置成決定當一來源或目的地運算元在記憶體中無法使用,且為一相依指令所需要時即存在一回復條件。
指令管線324亦可設置成當一指令指定無法平行地執行的兩個作業時,偵測一無效的超純量配對。當偵測到一無效的超純量配對時,即存在一回復條件,且包繞排程器和指令單元312將發出每一作業做為一獨立指令,意即該原始指令將被序列化。指令管線324亦可設置成藉由使用一錯誤修正碼(ECC,Error-correcting Code)偵測何時一來源運算元值被破壞。在一具體實施例中,指令管線324設置成使用該ECC修正該來源運算元值。在其它具體實施例中,指令管線324藉由設定回復旗標和回復碼而指明存在有一回復條件。
分派單元326設置成偵測多種回復條件,其中包括由於資源競爭之指令的計分板互鎖,及被用於同步化不同執行緒群組的一同步化障礙所阻隔的一指令。該同步化障礙可能無法完成,直到尚未被發出的指令被執行為止。因此,重要地是如果需要的話,允許那些未發出的指令被執行,略過遇到該回復條件的該指令。
當一項目在計分板或用於儲存一執行緒或執行緒群組的狀態資訊中無法使用時,分派單元326亦可決定存在有一回復條件。此外,當該計分板指明於尚未被分派的一指令與正在執行的一指令之間存在有記憶體或處理資源的競爭時,分派單元326依此藉由設定回復旗標和回復碼而指明存在一回復條件。
編譯器可設置成假設一些作業的預定潛時之下組織每一執行緒群組的指令。當由於多種狀況(例如快取錯失、回復作業)而超過該等預定潛時時,分派單元326基於計分板內容而決定存在有一回復條件。在等待該等狀況被解除時並不會停滯該等進入的要處理之指令,相反地,分派單元326決定存在有一回復條件,且該等進入的要處理指令可在無停滯之下被處理。
因為包繞排程器和指令單元312在發出指令至指令管線324之前不會解碼指令,該等指令在假設未採取分支之下被發出,意即通過程式的「通過」(fall-through)路徑的指令被推理式地發出。當未採取該通過路徑時,即存在一回復條件。但是,每當一分支或跳躍指令的一通過路徑為有效時,意即執行緒群組在某一時間必須執行在該通過路徑中之指令,該回復即不會發生,直到執行了在該通過路徑中之該等指令之後為止。換言之,該回復被延緩,且給定優先性給該通過路徑。分派單元326藉由推入一發散代符到不會採取該通過路徑的執行緒群組中任何執行緒之執行堆疊上來延緩該回復,且將執行分支或跳躍指令。該發散代符包括該分支或跳躍指令的程式計數器,及一有效遮罩,其指明在該執行緒群組中將執行該分支或跳躍路徑的執行緒。
正在執行的每一執行緒群組之有效遮罩由分派單元326維持,並由包繞排程器和指令單元312利用每一發出的指令來輸出。該有效遮罩在當一執行緒群組開始執行一運算任務時,及當取出一發散代符時,即被初始化。分派單元326可設置成除了自執行堆疊推入及取出項目之外可解決分支作業。
在一具體實施例中,該等通過路徑的執行被最佳化,以避免一回復針對特定的狀況採取該通過路徑。例如,當該非通過路徑指令為一「取出式」的指令而造成執行該非通過路徑的執行緒在與採取該通過路徑的執行緒之相同指令處恢復執行(在執行該通過路徑之後)時,則不會發生回復。當偵測到觸發回
復條件的該分支或跳躍指令時,一發散代符不會被推入到執行堆疊上。「取出式」指令的示例包括退出(Exit)、返回(Return)、中斷(Break)、繼續(Continue)、長跳躍(Longjump)及具有一.S選項的指令,其指明執行緒群組的該等所有有效執行緒需要在繼續執行之前同步化。相反地,包括一相對呼叫(CAL,Call-relative)、絕對呼叫(JCAL,Call Absolute)、中斷點(BPT,Breakpoint)或中斷、自封閉返回(RTT,Return-from-trap)或自中斷返回、間接分支(BRX,Branch-indirect)及間接跳躍(JMX,Jump-indirect)的無條件分支指令的確會造成需要回復作業的一回復條件。
當執行堆疊設置成儲存一些項目在一快取中,及儲存在該堆疊中更下方的其它項目在圖形記憶體中時,分派單元326可設置成當該執行堆疊無法使用時即指明已經發生一回復條件。該執行堆疊在當項目由該快取轉移到該圖形記憶體或由該圖形記憶體轉移到該快取時可能無法使用。
第四A圖例示根據本發明一具體實施例之一種推理指令發出和指令回復方法400。雖然該等方法步驟係配合第一、二、三A、三B和三C圖之系統做說明,本技術專業人士將可瞭解到設置成以任何順序執行該等方法步驟的任何系統皆在本發明之範疇內。
在步驟405,包繞排程器和指令單元312在每一時脈循環發出至少一指令,針對一或多個執行緒群組交錯指令。在步驟410,指令管線324和分派單元326對於該等指令執行預執行指令處理,並辨識該等指令的任何回復條件。在步驟415,就在提交一經處理指令來執行之前,分派單元326檢查該經處理的指令之回復旗標,以決定針對該經處理的指令是否發生一回復條件。如果未發生一回復條件,則在步驟445,分派單元326分派該經處理的指令來由一或多個執行單元302執行。否則,在步驟425,分派單元326發信給包繞排程器和指令單元312來
停止發出關聯於該設定的回復旗標之該經處理的指令之相關的該執行緒群組之指令。分派單元326亦提供給包繞排程器和指令單元312指定該回復條件型式的回復碼。
在步驟430,分派單元326移除在當偵測到回復條件時正在進行中的該執行緒群組之經處理的指令。分派單元326亦繼續針對未發生一回復條件的其它執行緒群組來分派經處理的指令,所以其它執行緒群組之指令的執行將在完成該回復作業時繼續。在步驟435,包繞排程器和指令單元312決定該回復作業是否完成,而被回復的指令可針對該執行緒群組重新發出。當該回復條件被移除或修正時,該回復作業即完成。該回復之執行緒群組的所有進行中指令不需要針對要被重新發出的該等指令而移除。在該回復作業完成之後,該等回復指令由包繞排程器和指令單元312針對該執行緒群組重新發出。
一些回復條件不需要針對在一執行緒群組中所有執行緒的一回復作業。而是可以執行一部份回復作業。在不需要回復的一執行緒群組中的執行緒由分派單元326提交,並由執行單元302執行,而一(部份)回復作業針對在該執行緒群組中其它執行緒來執行。分派單元326針對該執行緒群組運算和儲存一回復有效遮罩,以指明將要執行該部份回復作業的該等執行緒。該回復有效遮罩在當該等指令針對該執行緒群組被重新發出時由包繞排程器和指令單元312輸出。當針對一執行緒群組有一部份回復在等待中時,不允許該執行緒群組的補捉作業,且指令和重新發出的指令必須在採取任何補捉之前完成執行。
可被執行一部份回復作業的指令包括一像素屬性內插指令和一索引化常數載入指令。當在一執行緒群組中執行緒的一部份針對這些指令發散時,針對該等發散的執行緒執行一部份回復。當造成該回復的指令再次被發出時,僅有該等發散的執行緒執行該指令(根據該回復有效遮罩)。
第四B圖例示根據本發明一具體實施例之一種推理指令發出和部份指令回復方法450。雖然該等方法步驟係配合第一、二、三A、三B和三C圖之系統做說明,本技術專業人士將可瞭解到設置成以任何順序執行該等方法步驟的任何系統皆在本發明之範疇內。
在步驟405,包繞排程器和指令單元312在每一時脈循環發出至少一指令,針對一或多個執行緒群組交錯指令。在步驟410,指令管線324和分派單元326對於該等指令執行預執行指令處理,並辨識該等指令的任何回復條件。在步驟415,就在提交一經處理指令來執行之前,分派單元326檢查該經處理的指令之回復旗標,以決定針對該經處理的指令是否發生一回復條件。如果未發生一回復條件,則在步驟445,分派單元326分派該經處理的指令來由一或多個執行單元302執行。
否則,在步驟420,分派單元326決定一部份回復作業是否可針對該指令來執行,如果不執行,則在步驟425,分派單元326發信給包繞排程器和指令單元312來停止發出關聯於該設定的回復旗標之該經處理的指令相關的該執行緒群組之指令。分派單元326亦提供給包繞排程器和指令單元312指定該回復條件型式的回復碼。
在步驟430,分派單元326移除在當偵測到回復條件時正在進行中的該執行緒群組之經處理的指令。分派單元326亦繼續針對未發生一回復條件的其它執行緒群組來分派經處理的指令,所以其它執行緒群組之指令的執行將在完成該回復作業時繼續。在步驟435,包繞排程器和指令單元312決定該回復作業是否完成,而被回復的指令可針對該執行緒群組重新發出。
如果在步驟420,分派單元326決定一部份回復作業可針對該指令來執行,則在步驟455,分派單元326運算和儲存部份回復有效遮罩,並將該執行緒群組旗標為正在執行一部份回復作業。在步驟460,分派單元326分派該指令和任何進行中的指令
來由在該執行緒群組中未發散的執行緒來執行。在步驟465,分派單元326更新該執行緒群組的有效遮罩至該部份回復有效遮罩,並進行到步驟440來重新發出經回復的指令。在該等經回復的指令於步驟445中執行之後,分派單元326即在步驟475清除部份回復旗標,藉此能夠執行該執行緒群組的補捉作業。
一或多個執行緒群組的指令針對預執行處理被推理式地發出,且在防止執行的一回復條件被解決之後,不能夠提交來執行的任何指令被丟棄並針對一執行緒群組重新發出。丟棄由於一回復條件而無法提交的該等指令可在解決了該回復條件時,允許其它執行緒群組的其它指令被提交與執行,而不會停滯。因此,指令處理流量可針對未遇到一回復條件的執行緒群組來維持。
本發明一具體實施例可以實作成由一電腦系統使用的一程式產品。該程式產品的程式定義該等具體實施例的功能(包括此處所述的方法),並可包含在多種電腦可讀取儲存媒體上。例示性的電腦可讀取儲存媒體包括但不限於:(i)不可寫入儲存媒體(例如在一電腦內唯讀記憶體裝置,例如可由CD-ROM讀取的CD-ROM碟片、快閃記憶體、ROM晶片,或任何其它種類的固態非揮發性半導體記憶體),其上可永久儲存資訊;及(ii)可寫入儲存媒體(例如在一磁碟機內的軟碟片或硬碟機,或任何種類的固態隨機存取半導體記憶體),其上可儲存可改變的資訊。
本發明已經參照特定具體實施例在以上進行說明。但是本技術專業人士將可瞭解到在不背離所附申請專利範圍所提出之本發明的廣義精神與範疇之下,可對其進行多種修正與改變。因此前述的說明及圖面係在以例示性而非限制性的角度來看待。
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‧‧‧執行單元
304‧‧‧局部暫存器檔案
305‧‧‧管線管理員
306‧‧‧共用記憶體
310‧‧‧串流多處理器
312‧‧‧包繞排程器和指令單元
315‧‧‧紋路單元
320‧‧‧L1快取
321‧‧‧排程器表
322‧‧‧佇列中介資料
324‧‧‧指令管線
325‧‧‧預先掃描場化作業
326‧‧‧分派單元
328‧‧‧記憶體管理單元
330‧‧‧工作分配交叉開關
335‧‧‧L1.5快取
340‧‧‧工作分配單元
345‧‧‧任務表
370‧‧‧指令L1快取
380‧‧‧記憶體和快取互連接
所以,可以詳細瞭解本發明上述特徵之方式當中,本發明之一更為特定的說明簡述如上,其可藉由參照具體實施例來進行,其中一些例示於所附圖式中。但是應要注意到,該等所附圖式僅例示本發明的典型具體實施例,因此其並非要做為本發明之範疇的限制,其可允許其它同等有效的具體實施例。
第一圖例示設置成實作本發明一或多種態樣之一電腦系統的方塊圖;第二圖係根據本發明一具體實施例中第一圖之該電腦系統的一平行處理子系統的方塊圖;第三A圖為根據本發明一具體實施例中第二圖的該前端的方塊圖;第三B圖為根據本發明一具體實施例中第二圖之該等平行處理單元中之一者內一通用處理叢集的方塊圖;第三C圖為根據本發明一具體實施例中第三B圖的該串流多處理器(SM,Streaming Multiprocessor)之一部份的方塊圖;第四A圖例示根據本發明一具體實施例之一種推理指令發出和指令回復方法;以及第四B圖例示根據本發明一具體實施例之一種推理指令發出和部份指令回復方法。
Claims (10)
- 一種執行推理式發出指令的回復之方法,該方法包含:為一第一執行緒群組發出一第一組指令;為一第二執行緒群組發出一第二組指令;於在該第一組指令中一指令之預執行處理期間,偵測在該第一執行緒群組中至少一執行緒的一回復條件;對該第一執行緒群組停止發出額外的指令;丟棄在該第一組指令中已經發出而尚未被執行的進行中指令;以及執行該第二執行緒群組的該第二組指令。
- 一種用於排程計算任務來執行的系統,該系統包含:一記憶體,其設置成儲存一第一執行緒群組的一第一組指令和一第二執行緒群組的一第二組指令;一排程器,其設置成:為該第一執行緒群組發出該第一組指令;為該第二執行緒群組發出該第二組指令;以及當偵測到一回復條件時針對該第一執行緒群組停止發出額外的指令;一分派器,其設置成:於在該第一組指令中一指令之預執行處理期間偵測在該第一執行緒群組中至少一執行緒的該回復條件;以及丟棄在該第一組指令中已經發出而尚未被執行的進行中指令;以及多個處理器,其設置成執行該第二執行緒群組的該第二組指令。
- 如申請專利範圍第2項之系統,其中該排程器進一步設置成:發出一第三執行緒群組的一第三組指令,該分派器進一步設置成:於在該第三組指令中一第一指令之預執行處理期間偵 測在該第三執行緒群組中至少一執行緒的一部份回復條件;以及儲存一部份回復有效遮罩,以指明在該第三執行緒群組中針對該第一指令發散的一第一部份的執行緒,以及該等多個處理器進一步設置成:執行針對在該第三執行緒群組中針對該第一指令未發散的一第二部份的該等執行緒之該第一指令。
- 如申請專利範圍第3項之系統,其中該排程器進一步設置成重新發出該第三執行緒群組的該第一指令,而該等多個處理器進一步設置成基於該部份回復有效遮罩執行該第一部份的執行緒之該第一指令。
- 如申請專利範圍第2項之系統,其中在該第一組指令中該指令指定無法平行執行之兩個作業的一無效超純量配對。
- 如申請專利範圍第5項之系統,其中該排程器進一步設置成:發出該無效超純量配對的一第一作業做為該第一執行緒群組的一第一指令;以及發出該無效超純量配對的一第二作業做為該第一執行緒群組的一第二指令。
- 如申請專利範圍第2項之系統,其中在該第一組指令中該指令為一障礙同步化指令,其設置成將該第一執行緒群組與該第二執行緒群組同步化。
- 如申請專利範圍第2項之系統,其中在該第一組指令中該指令指定被破壞的一運算元。
- 如申請專利範圍第2項之系統,其中該排程器進一步設置成在該回復條件被移除之後重新發出該第一執行緒群組的該第一組指令。
- 如申請專利範圍第2項之系統,其中該分派器進一步設置成在完成該等進行中指令的該預執行處理之後丟棄該等進行中指令。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/289,643 US9830158B2 (en) | 2011-11-04 | 2011-11-04 | Speculative execution and rollback |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201331836A TW201331836A (zh) | 2013-08-01 |
TWI529620B true TWI529620B (zh) | 2016-04-11 |
Family
ID=48129133
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101140669A TWI529620B (zh) | 2011-11-04 | 2012-11-02 | 推理執行和回復 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9830158B2 (zh) |
CN (1) | CN103197953B (zh) |
DE (1) | DE102012220029A1 (zh) |
TW (1) | TWI529620B (zh) |
Families Citing this family (153)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104756078B (zh) * | 2012-08-20 | 2018-07-13 | 唐纳德·凯文·卡梅伦 | 处理资源分配的装置和方法 |
US9158667B2 (en) | 2013-03-04 | 2015-10-13 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US8964496B2 (en) | 2013-07-26 | 2015-02-24 | Micron Technology, Inc. | Apparatuses and methods for performing compare operations using sensing circuitry |
US8971124B1 (en) | 2013-08-08 | 2015-03-03 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9153305B2 (en) | 2013-08-30 | 2015-10-06 | Micron Technology, Inc. | Independently addressable memory array address spaces |
US9019785B2 (en) | 2013-09-19 | 2015-04-28 | Micron Technology, Inc. | Data shifting via a number of isolation devices |
US9449675B2 (en) | 2013-10-31 | 2016-09-20 | Micron Technology, Inc. | Apparatuses and methods for identifying an extremum value stored in an array of memory cells |
US9430191B2 (en) | 2013-11-08 | 2016-08-30 | Micron Technology, Inc. | Division operations for memory |
GB2524063B (en) | 2014-03-13 | 2020-07-01 | Advanced Risc Mach Ltd | Data processing apparatus for executing an access instruction for N threads |
US9934856B2 (en) | 2014-03-31 | 2018-04-03 | Micron Technology, Inc. | Apparatuses and methods for comparing data patterns in memory |
US9711206B2 (en) | 2014-06-05 | 2017-07-18 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9830999B2 (en) | 2014-06-05 | 2017-11-28 | Micron Technology, Inc. | Comparison operations in memory |
US10074407B2 (en) | 2014-06-05 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for performing invert operations using sensing circuitry |
US9496023B2 (en) | 2014-06-05 | 2016-11-15 | Micron Technology, Inc. | Comparison operations on logical representations of values in memory |
US9910787B2 (en) | 2014-06-05 | 2018-03-06 | Micron Technology, Inc. | Virtual address table |
US9711207B2 (en) | 2014-06-05 | 2017-07-18 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9704540B2 (en) | 2014-06-05 | 2017-07-11 | Micron Technology, Inc. | Apparatuses and methods for parity determination using sensing circuitry |
US9455020B2 (en) | 2014-06-05 | 2016-09-27 | Micron Technology, Inc. | Apparatuses and methods for performing an exclusive or operation using sensing circuitry |
US9779019B2 (en) | 2014-06-05 | 2017-10-03 | Micron Technology, Inc. | Data storage layout |
US9449674B2 (en) | 2014-06-05 | 2016-09-20 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9786335B2 (en) | 2014-06-05 | 2017-10-10 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9589602B2 (en) | 2014-09-03 | 2017-03-07 | Micron Technology, Inc. | Comparison operations in memory |
US9898252B2 (en) | 2014-09-03 | 2018-02-20 | Micron Technology, Inc. | Multiplication operations in memory |
US9747961B2 (en) | 2014-09-03 | 2017-08-29 | Micron Technology, Inc. | Division operations in memory |
US10068652B2 (en) | 2014-09-03 | 2018-09-04 | Micron Technology, Inc. | Apparatuses and methods for determining population count |
US9847110B2 (en) | 2014-09-03 | 2017-12-19 | Micron Technology, Inc. | Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector |
US9904515B2 (en) | 2014-09-03 | 2018-02-27 | Micron Technology, Inc. | Multiplication operations in memory |
US9740607B2 (en) | 2014-09-03 | 2017-08-22 | Micron Technology, Inc. | Swap operations in memory |
US10102002B2 (en) * | 2014-09-30 | 2018-10-16 | International Business Machines Corporation | Dynamic issue masks for processor hang prevention |
US9836218B2 (en) | 2014-10-03 | 2017-12-05 | Micron Technology, Inc. | Computing reduction and prefix sum operations in memory |
US9940026B2 (en) | 2014-10-03 | 2018-04-10 | Micron Technology, Inc. | Multidimensional contiguous memory allocation |
US10163467B2 (en) | 2014-10-16 | 2018-12-25 | Micron Technology, Inc. | Multiple endianness compatibility |
US10147480B2 (en) | 2014-10-24 | 2018-12-04 | Micron Technology, Inc. | Sort operation in memory |
US9779784B2 (en) | 2014-10-29 | 2017-10-03 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9747960B2 (en) | 2014-12-01 | 2017-08-29 | Micron Technology, Inc. | Apparatuses and methods for converting a mask to an index |
US10073635B2 (en) | 2014-12-01 | 2018-09-11 | Micron Technology, Inc. | Multiple endianness compatibility |
US10061590B2 (en) | 2015-01-07 | 2018-08-28 | Micron Technology, Inc. | Generating and executing a control flow |
US10032493B2 (en) | 2015-01-07 | 2018-07-24 | Micron Technology, Inc. | Longest element length determination in memory |
US9583163B2 (en) | 2015-02-03 | 2017-02-28 | Micron Technology, Inc. | Loop structure for operations in memory |
EP3254287A4 (en) | 2015-02-06 | 2018-08-08 | Micron Technology, INC. | Apparatuses and methods for memory device as a store for program instructions |
CN107408405B (zh) | 2015-02-06 | 2021-03-05 | 美光科技公司 | 用于并行写入到多个存储器装置位置的设备及方法 |
WO2016126472A1 (en) | 2015-02-06 | 2016-08-11 | Micron Technology, Inc. | Apparatuses and methods for scatter and gather |
WO2016144724A1 (en) | 2015-03-10 | 2016-09-15 | Micron Technology, Inc. | Apparatuses and methods for shift decisions |
US9898253B2 (en) | 2015-03-11 | 2018-02-20 | Micron Technology, Inc. | Division operations on variable length elements in memory |
US9741399B2 (en) | 2015-03-11 | 2017-08-22 | Micron Technology, Inc. | Data shift by elements of a vector in memory |
US10365851B2 (en) | 2015-03-12 | 2019-07-30 | Micron Technology, Inc. | Apparatuses and methods for data movement |
US10146537B2 (en) | 2015-03-13 | 2018-12-04 | Micron Technology, Inc. | Vector population count determination in memory |
US10049054B2 (en) | 2015-04-01 | 2018-08-14 | Micron Technology, Inc. | Virtual register file |
US10140104B2 (en) | 2015-04-14 | 2018-11-27 | Micron Technology, Inc. | Target architecture determination |
US9959923B2 (en) | 2015-04-16 | 2018-05-01 | Micron Technology, Inc. | Apparatuses and methods to reverse data stored in memory |
US10073786B2 (en) | 2015-05-28 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for compute enabled cache |
US9704541B2 (en) | 2015-06-12 | 2017-07-11 | Micron Technology, Inc. | Simulating access lines |
US9921777B2 (en) | 2015-06-22 | 2018-03-20 | Micron Technology, Inc. | Apparatuses and methods for data transfer from sensing circuitry to a controller |
US9996479B2 (en) | 2015-08-17 | 2018-06-12 | Micron Technology, Inc. | Encryption of executables in computational memory |
US9905276B2 (en) | 2015-12-21 | 2018-02-27 | Micron Technology, Inc. | Control of sensing components in association with performing operations |
US9952925B2 (en) | 2016-01-06 | 2018-04-24 | Micron Technology, Inc. | Error code calculation on sensing circuitry |
US10048888B2 (en) | 2016-02-10 | 2018-08-14 | Micron Technology, Inc. | Apparatuses and methods for partitioned parallel data movement |
US9892767B2 (en) | 2016-02-12 | 2018-02-13 | Micron Technology, Inc. | Data gathering in memory |
US9971541B2 (en) | 2016-02-17 | 2018-05-15 | Micron Technology, Inc. | Apparatuses and methods for data movement |
US9899070B2 (en) | 2016-02-19 | 2018-02-20 | Micron Technology, Inc. | Modified decode for corner turn |
US10956439B2 (en) | 2016-02-19 | 2021-03-23 | Micron Technology, Inc. | Data transfer with a bit vector operation device |
US9697876B1 (en) | 2016-03-01 | 2017-07-04 | Micron Technology, Inc. | Vertical bit vector shift in memory |
US9997232B2 (en) * | 2016-03-10 | 2018-06-12 | Micron Technology, Inc. | Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations |
US10262721B2 (en) | 2016-03-10 | 2019-04-16 | Micron Technology, Inc. | Apparatuses and methods for cache invalidate |
US10379772B2 (en) | 2016-03-16 | 2019-08-13 | Micron Technology, Inc. | Apparatuses and methods for operations using compressed and decompressed data |
US9910637B2 (en) | 2016-03-17 | 2018-03-06 | Micron Technology, Inc. | Signed division in memory |
US10388393B2 (en) | 2016-03-22 | 2019-08-20 | Micron Technology, Inc. | Apparatus and methods for debugging on a host and memory device |
US11074988B2 (en) | 2016-03-22 | 2021-07-27 | Micron Technology, Inc. | Apparatus and methods for debugging on a host and memory device |
US10120740B2 (en) | 2016-03-22 | 2018-11-06 | Micron Technology, Inc. | Apparatus and methods for debugging on a memory device |
US10977033B2 (en) | 2016-03-25 | 2021-04-13 | Micron Technology, Inc. | Mask patterns generated in memory from seed vectors |
US10474581B2 (en) | 2016-03-25 | 2019-11-12 | Micron Technology, Inc. | Apparatuses and methods for cache operations |
US10430244B2 (en) | 2016-03-28 | 2019-10-01 | Micron Technology, Inc. | Apparatuses and methods to determine timing of operations |
US10074416B2 (en) | 2016-03-28 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for data movement |
US10453502B2 (en) | 2016-04-04 | 2019-10-22 | Micron Technology, Inc. | Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions |
US10607665B2 (en) | 2016-04-07 | 2020-03-31 | Micron Technology, Inc. | Span mask generation |
US9818459B2 (en) | 2016-04-19 | 2017-11-14 | Micron Technology, Inc. | Invert operations using sensing circuitry |
US9659605B1 (en) | 2016-04-20 | 2017-05-23 | Micron Technology, Inc. | Apparatuses and methods for performing corner turn operations using sensing circuitry |
US10153008B2 (en) | 2016-04-20 | 2018-12-11 | Micron Technology, Inc. | Apparatuses and methods for performing corner turn operations using sensing circuitry |
US10042608B2 (en) | 2016-05-11 | 2018-08-07 | Micron Technology, Inc. | Signed division in memory |
US9659610B1 (en) | 2016-05-18 | 2017-05-23 | Micron Technology, Inc. | Apparatuses and methods for shifting data |
US10049707B2 (en) | 2016-06-03 | 2018-08-14 | Micron Technology, Inc. | Shifting data |
US10387046B2 (en) | 2016-06-22 | 2019-08-20 | Micron Technology, Inc. | Bank to bank data transfer |
US10037785B2 (en) | 2016-07-08 | 2018-07-31 | Micron Technology, Inc. | Scan chain operation in sensing circuitry |
US10388360B2 (en) | 2016-07-19 | 2019-08-20 | Micron Technology, Inc. | Utilization of data stored in an edge section of an array |
US10733089B2 (en) | 2016-07-20 | 2020-08-04 | Micron Technology, Inc. | Apparatuses and methods for write address tracking |
US10387299B2 (en) | 2016-07-20 | 2019-08-20 | Micron Technology, Inc. | Apparatuses and methods for transferring data |
US9972367B2 (en) | 2016-07-21 | 2018-05-15 | Micron Technology, Inc. | Shifting data in sensing circuitry |
US9767864B1 (en) | 2016-07-21 | 2017-09-19 | Micron Technology, Inc. | Apparatuses and methods for storing a data value in a sensing circuitry element |
US10303632B2 (en) | 2016-07-26 | 2019-05-28 | Micron Technology, Inc. | Accessing status information |
US10468087B2 (en) | 2016-07-28 | 2019-11-05 | Micron Technology, Inc. | Apparatuses and methods for operations in a self-refresh state |
US9990181B2 (en) | 2016-08-03 | 2018-06-05 | Micron Technology, Inc. | Apparatuses and methods for random number generation |
US11029951B2 (en) | 2016-08-15 | 2021-06-08 | Micron Technology, Inc. | Smallest or largest value element determination |
US10606587B2 (en) | 2016-08-24 | 2020-03-31 | Micron Technology, Inc. | Apparatus and methods related to microcode instructions indicating instruction types |
US10466928B2 (en) | 2016-09-15 | 2019-11-05 | Micron Technology, Inc. | Updating a register in memory |
US10387058B2 (en) | 2016-09-29 | 2019-08-20 | Micron Technology, Inc. | Apparatuses and methods to change data category values |
US10014034B2 (en) | 2016-10-06 | 2018-07-03 | Micron Technology, Inc. | Shifting data in sensing circuitry |
US10529409B2 (en) | 2016-10-13 | 2020-01-07 | Micron Technology, Inc. | Apparatuses and methods to perform logical operations using sensing circuitry |
US9805772B1 (en) | 2016-10-20 | 2017-10-31 | Micron Technology, Inc. | Apparatuses and methods to selectively perform logical operations |
CN207637499U (zh) | 2016-11-08 | 2018-07-20 | 美光科技公司 | 用于形成在存储器单元阵列上方的计算组件的设备 |
US10423353B2 (en) | 2016-11-11 | 2019-09-24 | Micron Technology, Inc. | Apparatuses and methods for memory alignment |
US9761300B1 (en) | 2016-11-22 | 2017-09-12 | Micron Technology, Inc. | Data shift apparatuses and methods |
US10402340B2 (en) | 2017-02-21 | 2019-09-03 | Micron Technology, Inc. | Memory array page table walk |
US10474468B2 (en) * | 2017-02-22 | 2019-11-12 | Advanced Micro Devices, Inc. | Indicating instruction scheduling mode for processing wavefront portions |
US10268389B2 (en) | 2017-02-22 | 2019-04-23 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations |
US10403352B2 (en) | 2017-02-22 | 2019-09-03 | Micron Technology, Inc. | Apparatuses and methods for compute in data path |
US10838899B2 (en) | 2017-03-21 | 2020-11-17 | Micron Technology, Inc. | Apparatuses and methods for in-memory data switching networks |
US10185674B2 (en) | 2017-03-22 | 2019-01-22 | Micron Technology, Inc. | Apparatus and methods for in data path compute operations |
US11222260B2 (en) | 2017-03-22 | 2022-01-11 | Micron Technology, Inc. | Apparatuses and methods for operating neural networks |
US10049721B1 (en) | 2017-03-27 | 2018-08-14 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations |
US10147467B2 (en) | 2017-04-17 | 2018-12-04 | Micron Technology, Inc. | Element value comparison in memory |
US10043570B1 (en) | 2017-04-17 | 2018-08-07 | Micron Technology, Inc. | Signed element compare in memory |
US9997212B1 (en) | 2017-04-24 | 2018-06-12 | Micron Technology, Inc. | Accessing data in memory |
US10942843B2 (en) | 2017-04-25 | 2021-03-09 | Micron Technology, Inc. | Storing data elements of different lengths in respective adjacent rows or columns according to memory shapes |
US10437593B2 (en) * | 2017-04-27 | 2019-10-08 | Nvidia Corporation | Techniques for comprehensively synchronizing execution threads |
US10726514B2 (en) * | 2017-04-28 | 2020-07-28 | Intel Corporation | Compute optimizations for low precision machine learning operations |
US10236038B2 (en) | 2017-05-15 | 2019-03-19 | Micron Technology, Inc. | Bank to bank data transfer |
US10068664B1 (en) | 2017-05-19 | 2018-09-04 | Micron Technology, Inc. | Column repair in memory |
US10620994B2 (en) | 2017-05-30 | 2020-04-14 | Advanced Micro Devices, Inc. | Continuation analysis tasks for GPU task scheduling |
US10013197B1 (en) | 2017-06-01 | 2018-07-03 | Micron Technology, Inc. | Shift skip |
US10152271B1 (en) | 2017-06-07 | 2018-12-11 | Micron Technology, Inc. | Data replication |
US10262701B2 (en) | 2017-06-07 | 2019-04-16 | Micron Technology, Inc. | Data transfer between subarrays in memory |
US10318168B2 (en) | 2017-06-19 | 2019-06-11 | Micron Technology, Inc. | Apparatuses and methods for simultaneous in data path compute operations |
US10162005B1 (en) | 2017-08-09 | 2018-12-25 | Micron Technology, Inc. | Scan chain operations |
US10534553B2 (en) | 2017-08-30 | 2020-01-14 | Micron Technology, Inc. | Memory array accessibility |
US10346092B2 (en) | 2017-08-31 | 2019-07-09 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations using timing circuitry |
US10416927B2 (en) | 2017-08-31 | 2019-09-17 | Micron Technology, Inc. | Processing in memory |
US10741239B2 (en) | 2017-08-31 | 2020-08-11 | Micron Technology, Inc. | Processing in memory device including a row address strobe manager |
GB2566339B (en) * | 2017-09-06 | 2019-11-27 | Advanced Risc Mach Ltd | An apparatus and method of executing thread groups |
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 |
US10409739B2 (en) | 2017-10-24 | 2019-09-10 | Micron Technology, Inc. | Command selection policy |
US10866806B2 (en) * | 2017-11-14 | 2020-12-15 | Nvidia Corporation | Uniform register file for improved resource utilization |
US10522210B2 (en) | 2017-12-14 | 2019-12-31 | Micron Technology, Inc. | Apparatuses and methods for subarray addressing |
US10332586B1 (en) | 2017-12-19 | 2019-06-25 | Micron Technology, Inc. | Apparatuses and methods for subrow addressing |
US10614875B2 (en) | 2018-01-30 | 2020-04-07 | Micron Technology, Inc. | Logical operations using memory cells |
US10437557B2 (en) | 2018-01-31 | 2019-10-08 | Micron Technology, Inc. | Determination of a match between data values stored by several arrays |
US11194477B2 (en) | 2018-01-31 | 2021-12-07 | Micron Technology, Inc. | Determination of a match between data values stored by three or more arrays |
US10725696B2 (en) | 2018-04-12 | 2020-07-28 | Micron Technology, Inc. | Command selection policy with read priority |
US10440341B1 (en) | 2018-06-07 | 2019-10-08 | Micron Technology, Inc. | Image processor formed in an array of memory cells |
US11442795B2 (en) | 2018-09-11 | 2022-09-13 | Nvidia Corp. | Convergence among concurrently executing threads |
US10769071B2 (en) | 2018-10-10 | 2020-09-08 | Micron Technology, Inc. | Coherent memory access |
US11175915B2 (en) | 2018-10-10 | 2021-11-16 | Micron Technology, Inc. | Vector registers implemented in memory |
US10483978B1 (en) | 2018-10-16 | 2019-11-19 | Micron Technology, Inc. | Memory device processing |
US11184446B2 (en) | 2018-12-05 | 2021-11-23 | Micron Technology, Inc. | Methods and apparatus for incentivizing participation in fog networks |
JP2022535736A (ja) * | 2019-05-29 | 2022-08-10 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | Gpuでのソフトウェア制御の可変ウェーブフロントサイズの実行 |
US10867655B1 (en) | 2019-07-08 | 2020-12-15 | Micron Technology, Inc. | Methods and apparatus for dynamically adjusting performance of partitioned memory |
US11360768B2 (en) | 2019-08-14 | 2022-06-14 | Micron Technolgy, Inc. | Bit string operations in memory |
JP2021039658A (ja) * | 2019-09-05 | 2021-03-11 | 富士通株式会社 | Ac並列化回路、ac並列化方法及び並列情報処理装置 |
US11449577B2 (en) | 2019-11-20 | 2022-09-20 | Micron Technology, Inc. | Methods and apparatus for performing video processing matrix operations within a memory array |
US11853385B2 (en) | 2019-12-05 | 2023-12-26 | Micron Technology, Inc. | Methods and apparatus for performing diversity matrix operations within a memory array |
US11227641B1 (en) | 2020-07-21 | 2022-01-18 | Micron Technology, Inc. | Arithmetic operations in memory |
US11934867B2 (en) | 2020-07-23 | 2024-03-19 | Nvidia Corp. | Techniques for divergent thread group execution scheduling |
US20230115044A1 (en) * | 2021-10-08 | 2023-04-13 | Nvidia Corp. | Software-directed divergent branch target prioritization |
US12045615B1 (en) | 2022-09-16 | 2024-07-23 | Apple Inc. | Processing of synchronization barrier instructions |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6233690B1 (en) * | 1998-09-17 | 2001-05-15 | Intel Corporation | Mechanism for saving power on long latency stalls |
US20090217020A1 (en) * | 2004-11-22 | 2009-08-27 | Yourst Matt T | Commit Groups for Strand-Based Computing |
US7444498B2 (en) * | 2004-12-17 | 2008-10-28 | International Business Machines Corporation | Load lookahead prefetch for microprocessors |
US7657891B2 (en) | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency |
US20070143755A1 (en) * | 2005-12-16 | 2007-06-21 | Intel Corporation | Speculative execution past a barrier |
JP2008123045A (ja) * | 2006-11-08 | 2008-05-29 | Matsushita Electric Ind Co Ltd | プロセッサ |
US8261276B2 (en) * | 2008-03-31 | 2012-09-04 | International Business Machines Corporation | Power-efficient thread priority enablement |
US8522000B2 (en) * | 2009-09-29 | 2013-08-27 | Nvidia Corporation | Trap handler architecture for a parallel processing unit |
US8438571B2 (en) * | 2010-02-24 | 2013-05-07 | International Business Machines Corporation | Thread speculative execution and asynchronous conflict |
-
2011
- 2011-11-04 US US13/289,643 patent/US9830158B2/en active Active
-
2012
- 2012-11-02 TW TW101140669A patent/TWI529620B/zh active
- 2012-11-02 DE DE102012220029A patent/DE102012220029A1/de active Pending
- 2012-11-05 CN CN201210436535.4A patent/CN103197953B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
TW201331836A (zh) | 2013-08-01 |
CN103197953A (zh) | 2013-07-10 |
US9830158B2 (en) | 2017-11-28 |
CN103197953B (zh) | 2016-09-28 |
US20130117541A1 (en) | 2013-05-09 |
DE102012220029A1 (de) | 2013-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI529620B (zh) | 推理執行和回復 | |
US20210349763A1 (en) | Technique for computational nested parallelism | |
US10552202B2 (en) | Software-assisted instruction level execution preemption | |
US9436504B2 (en) | Techniques for managing the execution order of multiple nested tasks executing on a parallel processor | |
EP2483772B1 (en) | Trap handler architecture for a parallel processing unit | |
US9830156B2 (en) | Temporal SIMT execution optimization through elimination of redundant operations | |
TWI493451B (zh) | 使用預解碼資料進行指令排程的方法和裝置 | |
US8639882B2 (en) | Methods and apparatus for source operand collector caching | |
US8572573B2 (en) | Methods and apparatus for interactive debugging on a non-preemptible graphics processing unit | |
US9606808B2 (en) | Method and system for resolving thread divergences | |
US20130198760A1 (en) | Automatic dependent task launch | |
US9158595B2 (en) | Hardware scheduling of ordered critical code sections | |
US9507638B2 (en) | Compute work distribution reference counters | |
US9069609B2 (en) | Scheduling and execution of compute tasks | |
US20140258693A1 (en) | System and method for hardware scheduling of conditional barriers and impatient barriers | |
US20130124838A1 (en) | Instruction level execution preemption | |
US11934867B2 (en) | Techniques for divergent thread group execution scheduling | |
US9798544B2 (en) | Reordering buffer for memory access locality | |
US9715413B2 (en) | Execution state analysis for assigning tasks to streaming multiprocessors | |
US20130132711A1 (en) | Compute thread array granularity execution preemption | |
US10289418B2 (en) | Cooperative thread array granularity context switch during trap handling | |
US20130138815A1 (en) | Memory bandwidth reallocation for isochronous traffic |