TWI441021B - 使用多個較低連接埠數記憶體模擬單一記憶體之方法與裝置 - Google Patents
使用多個較低連接埠數記憶體模擬單一記憶體之方法與裝置 Download PDFInfo
- Publication number
- TWI441021B TWI441021B TW094123642A TW94123642A TWI441021B TW I441021 B TWI441021 B TW I441021B TW 094123642 A TW094123642 A TW 094123642A TW 94123642 A TW94123642 A TW 94123642A TW I441021 B TWI441021 B TW I441021B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- thread
- unit
- repository
- operand
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims description 94
- 238000000034 method Methods 0.000 title claims description 47
- 238000003860 storage Methods 0.000 claims description 14
- 239000000463 material Substances 0.000 claims description 4
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 230000005055 memory storage Effects 0.000 claims 5
- 238000012545 processing Methods 0.000 description 49
- 230000008569 process Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 12
- 239000013598 vector Substances 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 239000002344 surface layer Substances 0.000 description 4
- 238000005070 sampling Methods 0.000 description 2
- 238000004148 unit process Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- -1 primitives Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- 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
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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/3824—Operand accessing
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Memory System (AREA)
Description
本發明之一或多個態樣係關於資料處理,尤其係關於在一可程式化圖形處理器或一般用途處理器內使用單埠記憶體來模擬一多埠記憶體。
目前的資料處理包含了發展以執行各程式指令(包括具有兩個或以上之運算元(operand)的指令)的系統以及方法。該等運算元係儲存在處理器內的暫存器以供在一程式的執行期間能有效率的進行存取。某些程式指令,例如乘法以及乘法累加(multiply-accumulate)指定兩個或兩個以上的運算元。一般來說,一暫存器檔案包含一多埠記憶體(multiported memory)以致使可在一單一時脈週期內讀取兩個或以上的位置(每一位置儲存一運算元)。因此,可取得所有需至少一程式指令的運算元以及在單一時脈週期內輸出至一執行單元。
相較於一單埠記憶體,一多埠記憶體需要較多晶粒面積(die area)以及需使用較多的功率。然而,不像一多埠記憶體,單埠記憶體僅可在每一時脈週期內讀取一單一位置。所以,需要兩個或以上時脈週期來取得該等須執行一程式指令的運算元,其與一多埠記憶體相比確大大減低的系統效率。
因此,亟需提供一在一處理器內僅需使用較少晶粒面積以及較低功率之一多埠記憶體的效能利益。
本發明揭示了新式的系統以及方法用以使用較低連接埠數的記憶體當作儲存庫(banks)來模擬一多埠記憶體。將配置一部分的記憶體用來儲存與一執行緒(thread)相關的資料。該配置給執行緒的記憶體部分可被儲存在一單一儲存庫或在一多重儲存庫。當自一或多個儲存庫輸出各來源運算元時,耦合至各儲存庫的各收集單元(collector unit)收集需要來處理一指令的各來源運算元。當已收集所有需要來處理該指令的的來源運算元時,該收集單元輸出該來源運算元至一執行單元。使用較低連接埠數的記憶體來模擬一多埠記憶體其比一多埠記憶體的相較容量上僅需要較少的晶粒面積。設置來模擬一多埠記憶體之較低連接埠數的記憶體也相較於一多埠記憶體僅需較低的功率。
本發明之多種具體實施例包含了一暫存器檔案單元以供儲存處理器程式指令的各運算元。該暫存器檔案單元包含一第一記憶體儲存庫(其係用來儲存一第一執行緒的運算元)、一第二記憶體儲存庫(其係用來儲存一第二執行緒的運算元)、一第一收集單元以及一第二收集單元。該第一收集單元設置以接收來自該第一記憶儲存庫之該第一執行緒的各運算元以及輸出該第一執行緒之一程式指令與任何由該第一執行緒所指定的運算元。該第二收集單元設置以接收來自該第二記憶儲存庫之該第二執行緒的各運算元以及輸出該第二執行緒之一程式指令與任何由該第二執行緒所指定的運算元。
本發明之多種具體實施例包含了決定配置給一執行緒的暫存器數量以及將該執行緒的暫存器數量配置給一組記憶儲存庫之至少一記憶體儲存庫內的各位置,其中該一組的記憶儲存庫係設置來模擬一多埠記憶體。
本發明之多種具體實施例包含了一種用於儲存各程式指令之運算元的系統。該系統包含了配置構件(其係用來配置用以儲存基於一配置類型由一執行緒所使用之各運算元的暫存器)、儲存構件(其係用來儲存該暫存器內之各運算元)以及收集構件(其係用來收集該執行緒內由一程式指令所指定的任何運算元)。
隨附之各圖示係根據本發明一或以上之態樣用來顯示例示性的具體實施例:然而,該隨附之各圖示應不可被視為用來限制本發明至該所展示之具體實施例,其僅引為本發明之解釋以及瞭解之用途。
在下列說明中,提出符號式的明定細節以提供一較能對本發明貫通的全盤瞭解。然而,此技術領域中諳此技藝者將可明瞭到其可在不使用一或多個該等明定細節之情況下實施本發明。在其他實例上,為了避免模糊本發明,則未描述出已由眾所周知的各特徵。
第1圖係描述一一般設計的計算系統並且其包含了一主機電腦110以及一圖形子系統170。計算系統100可包含一桌上型電腦、伺服器、膝上型電腦、掌上型電腦、輸入板電腦、遊戲主機、可攜式無線終端機(例如個人數位助理(PDA)或行動電話)、電腦式模擬器等等。主機電腦110包含主機處理器114,其包含一系統記憶體控制器可直接介面連接至主機記憶體112或者可透過一系統介面115與主機記憶體進行溝通。系統介面115可為一輸出/輸入介面或一包含將該系統記憶體控制器介面連接至主機記憶體112的橋接裝置。在此技術領域中,一眾知的系統介面115之例子包含英特爾的北橋晶片(intelNorthbridge)。
主機電腦110係透過系統介面115以及圖形處理器105內的圖形介面117來與圖形系統170進行溝通。在圖形介面117所接收的資料可被遞呈至前端處理器(Front End)130或透過記憶體控制器120寫入至一本地記憶體140。圖形處理器105使用圖形記憶體來儲存圖形資料以及程式指令,其中圖形資料係為任何被輸入至該圖形處理器內之各部件的資料或自該圖形處理器內之各部件輸出的資料。圖形記憶體可包含主機記憶體112、本地記憶體140、耦合至圖形處理器105內之各部件的暫存器檔案等等的各部分。
圖形處理器105除了其他部件外更包含前端處理器130,其係用以透過圖形介面117接收來自主機電腦110的各命令。前端處理器130直譯以及格式化各命令並且將格式化的命令以及資料輸出至一索引處理器(IDX)135。藉由提供各程式指令的位置或者在記憶體內所儲存的圖形資料,由可程式化圖形處理管線150使用若干已格式化的命令來起始處理資料。IDX 135、可程式化圖形處理管線150以及光柵操作單元(Raster Operation Unit)160,各包含一連接至記憶體控制器的介面,透過該介面能夠自記憶體(例如,任何本地記憶體140以及主機記憶體的組合)讀取程式指令以及資料。當一部分主機記憶體112用來儲存程式指令以及資料時,該主機記憶體112部分能夠被釋放(uncached)以至於增加該圖形處理器105的存取效能。
IDX 135可具選擇性的自記憶體讀取所處理的資料(例如由該光柵操作單元160所寫入的資料)以及輸出該資料、所處理的資料以及格式化的命令至可程式化圖形處理管線150。可程式化圖形處理管線150以及光柵操作單元160各包含一或多個可程式化處理單元以執行各種特定的功能。該等功能包含查表(table lookup)、純量以及向量增加、乘法、除法、座標系統映射、法向量計算、鑲嵌(tessellation)、衍生計算(calculation of derivatives)、差補法(interpolation)等等。可將各可程式化圖形處理管線150以及光柵操作單元160具選擇性地設置以致使可透過該等單元在多重通道(multiple passes)下或在可程式化圖形處理管線內之多重通道下執行各資料處理操作。光柵操作單元160包含一至記憶體控制器120的寫入介面,透過該介面能夠將資料寫入記憶體。
在一典型實施上,可程式化圖形處理管線150執行幾何計算、光柵化處理(rasterization)以及段落計算(fragment computations)。因此,可程式化圖形處理管線150被編程以在表層、圖元(primitive)、向量、段落、像素、採樣(sample)或其他資料上操作。為了簡便說明起見,如下描述部分將使用「採樣,sample」來意指圖形資料,該圖形資料例如表層、圖元(primitive)、向量、像素、段落等等。
由可程式化圖形處理管線150輸出的採樣被傳遞至一光柵操作單元160,該單元可具選擇性的執行前剪裁面和後剪裁面的剪裁(clipping)以及光柵操作(例如模板(stencil)、z測試等等),並且將各結果或可程式化圖形處理管線150輸出的各採樣儲存至本地記憶體140。當圖形處理器105已經完全地處理圖形子系統170所接收的資料時,則使用一輸出控制器180來提供圖形子系統170的輸出185。可具選擇性地設置該輸出控制器來遞呈資料至一顯示裝置、網路、電子控制系統、其他例如計算系統100的計算系統、其他圖形子系統170等等。另外,輸出資料至一膠片記錄裝置(film recording device)或者將其寫入至一周邊裝置,例如硬碟機、磁帶、光碟機等等。
第2圖係一第1圖中可程式化圖形處理管線150的說明。至少一組採樣由IDX 135輸出並且由可程式化圖形處理管線150所接收以及根據至少一程式處理至少一組採樣,該至少一程式包含圖形程式指令。一程式能夠處理一或多組採樣。相對來說,能夠由一序列一或多個程式處理一組採樣。可程式化圖形處理管線150之某些具體實施例包含增加的單元,其係用來執行特定的功能(例如圖元資料的光柵化處理)以產生段落資料。
採樣(例如表層、圖元、所處理的資料等等)係由可程式化圖形處理管線150自IDX 135所接收。流型多重處理器200可處理表層以產生圖元,以及流型多重處理器200可處理向量以產生段落。在本發明之另外的具體實施例中,一或多個流型多重處理器200可涵蓋再一一般用途的處理器內,例如主機處理器114。可程式化圖形處理管線150包含一或多個流型多重處理器200,如第2圖所示。每一流型多重處理器200更包含至少執行單元270。該等取樣可由該等流型多重處理器200中任何一者來處理。在流型多重處理器200的某些具體實施例中,使用一讀取介面(未於第2圖中顯示)透過記憶體控制器120來讀取圖形資料,例如來自本地記憶體140或主機記憶體112的各紋理圖。當在一流型多重處理器200內之一處理執行緒為可用時,則由該流型多重處理器200接受一採樣,此中將有更進一步說明。
在一流型多重處理器200內的一執行緒控制單元220接收各採樣以及處理各採樣之一序列所欲執行之程式指令的一指標(pointer)。執行緒控制單元220指派一執行緒至欲處理的各採樣。一執行緒包含一程式指令(程式計數)的指標(例如該程式內的第一指令)、執行敘狀態資訊以及用於儲存處理該採樣期間所產生以及使用的各運算元。當需要來處理一執行緒的一資源(例如用於儲存各運算元或執行緒狀態資訊的儲存資源)為不可用時,則該流型多重處理器200將不會接受增加的採樣以供處理。當與一執行緒相關的各程式指令已經完全地執行,則該配置來儲存在該執行緒執行期間所產生及接收的各運算元的儲存資源(例如暫存器)將成為有用(available)以供配置另一執行緒,亦即,釋放該儲存資源並且在該執行緒控制單元220內將該執行緒標上期標為可用(available)。
執行緒控制單元220輸出配置資訊,用於指示需要來儲存各運算元之儲存資源量給暫存器位址單元240。執行緒控制單元220輸出該指標以及該等採樣至一指令單元230。在本發明之不同的具體實施例之間,每一時脈週期能夠自執行緒控制單元220輸出至指令單元230的指標以及採樣的數量可具有不同的變化。
指令單元230使用一專屬讀取介面透過記憶體控制器120來讀取來自本地記憶體140或主機記憶體112的各程式指令。在本發明之一另外的具體實施例中,可在流型多重處理器200之間分享一單一指令單元230。在本發明之某些的具體實施例中,指令單元230可包含一指令快取。指令單元230執行各指令,該等指令不處理例如跳越(jump)、呼叫/回傳或者分支(branch)指令。指令單元230安排該程式指令的執行,交錯(interleaving)該等程式指令來處理任何作用中的執行緒,亦即指派至一採樣。在本發明之某些具體實施例中,指令單元230則無需用於指定配置給該等執行緒之一暫存器檔案單元250內的各暫存器特定位置的額外資訊以安排該程式指令的執行,例如該等暫存器所處之該儲存庫。
當安排程式指令給各執行緒時,指令單元230可設置來使用固定或可程式化的優先權。例如,配置來處理向量程式指令的各執行緒可相較於配置來處理段落程式指令的各執行緒維持獲取較高的優先權。在其他的範例中,需要一大量用於儲存各運算元之暫存器的各執行緒可相較於需要較少量用於儲存之暫存器的各執行緒佔有較大的優先權。在本發明之某些具體實施例中,指令單元230接收來自一暫存器檔案單元250的資訊以指示特定執行緒之暫存器的利用,並且指令單元230依據減少或增加暫存器檔案單元250中各暫存器的利用量來調整該特定執行緒的優先權。
在本發明之其他具體實施例中,指令單元230使用指令一暫存器檔案單元250內的各暫存器特定位置的額外的資訊以安排該等程式指令的執行。例如,該等程式指令被預存入暫存器檔案單元250內以該儲存庫(bank)為基礎的各群組,其中該暫存器檔案單元250儲存一或多個該指令的運算元。指令單元230以一依序循環方式(round-robin fashion)自每一群組選擇一程式指令,每一時脈週期輸出一或多個程式指令至暫存器位址單元240。
指令單元230輸出該等程式指令以及採樣至暫存器位置單元240。暫存器位址單元240存取暫存器檔案單元250的各暫存器,其中該暫存器檔案單元250係儲存每一執行緒所指定的各運算元,如結合第3圖以及第5圖中所描述。暫存器位址單元240輸出各程式指令的請求。各請求的例子包含了一讀取一特定運算元的請求或一寫入一特定運算元的請求。在本發明之一具體實施例中,暫存器位址單元240在每一時脈週期期間,輸出一單一指令的請求。例如,以一載入指令(LD)來說,輸出一(1)寫入請求用以寫入一運算元至一暫存器。相同地,以一乘法累加(MAD)指令來說,輸出3讀取請求(針對每一來源運算元)以及1寫入請求(針對該目標運算元)。
暫存器位址單元240輸出各請求以及一相關的程式指令(例如MAD)至暫存器檔案單元250。暫存器檔案單元250處理該等暫存器檔案單元250內自暫存器讀取運算元以及寫入運算元至暫存器的請求。暫存器檔案單元250安排處理該等請求以避免回寫衝突以及以時脈為基礎的衝突。在本發明之某些具體實施例中,暫存器檔案單元250使用一記分表(scoreboard)單元來追蹤寫入各暫存器的狀態以決定何時可自一暫存器讀取一運算元。
當處理讀取請求以取得需要處理一程式指令的各運算元時,暫存器檔案單元250決定何時所有運算元已經取得並且接著輸出該程式指令以及各運算元至執行單元270以供處理。執行單元270回傳所處理的運算元至欲寫入至如由程式指令所指定之目標運算元的暫存器檔案單元250。由該等程式指令設置執行管線240以執行各操作,該等操作例如鑲嵌(tessellation)、透視校正(Perspective Correction)、插補法(interpolation)、加陰影(shading)、混合(blending)等等。自每一執行管線240輸出所處理的各採樣至光柵操作單元160。在本發明之某些具體實施例中,將增加的執行管線240耦合至暫存器檔案單元250以及光柵操作單元160。
第3圖係為根據本發明之一或多個態樣之第2圖中所示之暫存器檔案單元之例示性具體實施例的方塊圖。在本發明之另一具體實施例中,暫存器檔案單元250係在一一般用途之處理器(例如主機處理器114)內使用。暫存器檔案單元250包含兩個或以上記憶體儲存庫,各儲存庫320係被設置以模擬一單一多埠記憶體。每一儲存庫320包含許多位置,其功能視為設置來儲存各運算元的暫存器。每一收集單元330接收來自暫存器位址單元240之各請求以及該相關的程式指令,並且決定是否該程式指令是一由該耦合至收集單元330之特定執行單元365所執行的指令。如果該程式指令是一由該耦合至收集單元330之特定執行單元365所執行的指令,則該收集單元330接受該程式指令以及請求以供處理。在本發明之某些特定具體實施例中,每一執行單元365是一致的並且使用一優先權體制來決定何者執行單元365將執行該程式指令。本發明另外的具體實施例指派該指令至該最小負載(least-loaded)執行單元365。在本發明之某些具體實施例中,耦合兩個或以上之收集單元330至一單一執行單元365,並且使用一優先權體制來選擇該兩個或兩個以上收集單元何者輸出各運算元至該單一執行單元365以供處理。
每一收集單元330輸出所接受各程式指令的請求至任何儲存庫請求仲裁單元310。各儲存庫請求仲裁單元310決定是否該請求需要讀取該特定儲存庫320內之暫存器,其中該儲存庫320係耦合至該儲存庫請求仲裁單元310。某些可能的暫存器配置係在結合第4A、4B、4C、4D、4E以及4F圖中加以描述。由一儲存庫請求仲裁單元310輸出每一請求至該儲存庫320,其中該儲存庫320係設置在指派至該請求內所指定之該運算元的暫存器。所接受的程式指令維持在指示來收集各運算元的收集單元330中。每一儲存庫請求仲裁單元310也在該不同的收集單元330中仲裁,並且每一時脈週期輸出一請求至該耦合。至該儲存庫請求仲裁單元310的儲存庫320。
每一儲存庫320包含一讀取請求埠用以接收來自一儲存庫請求仲裁單元310的各請求。每一儲存庫320也包含一用以接收來自執行單元270之寫入請求的寫入請求埠用以寫入所處理的資料至一指派至由一程式指令所指定之一運算元的目標暫存器。因此,使用較低埠數記憶體(1寫入埠以及1讀取埠)的2儲存庫來模擬使用2寫入埠以及2讀取埠的一多埠記憶體。在本發明之某些特定實施例中,使用增加的請求埠。在本發明其他的具體實施例中,該讀取請求埠係與該寫入請求埠組合,存取一單一埠記憶體。在一時脈週期期間,每一儲存庫320可透過一選擇器325輸出一由讀取請求指定的一運算元至一相關的收集單元。因此,當一程式指令指定來源資料具3運算元時,駐存在相同儲存庫之該等運算元至少需要3時脈週期來收集該等運算元。每一收集單元330也可收及來源資料,該來源資料例如被儲存在儲存庫320外部的固定以及中間(intermediate)資料(未顯示)。選擇器325接收來自各輸入未儲存在儲存庫320內的來源資料(未顯示)。當由一收集單元330收集所有運算元時,則準備好發派該程式指令。在本發明之某些具體實施例中,可包含增加的儲存庫請求仲裁單元310、儲存庫320、選擇器325以及收集單元330來增加一時脈週期期間該讀取的運算元數量。在本發明之一具體實施例中,可省略選擇器325並且將每一儲存庫直接耦合一收集單元。
當已經由一收集單元330收集一程式指令所有的運算元時,則該收集單元330輸出該程式指令以及各運算元至該耦合至收集單元330之執行單元365以供處理。當完成該程式指令的執行時,該執行單元365輸出一寫入至由該程式指令指定一目標運算元之各儲存庫320之一者的請求。執行單元270也可輸出已處理的運算元至光柵操作單元160。在本發明之某些具體實施例中,每一執行單元處理一個以上的指令,以造成每一時脈週期一個以上指令的處理產量。當執行單元處理不同指令的執行時,不同指令的執行將帶來不同潛伏期(latency)。
在本發明之一具體實施例中,可在一單一儲存庫(例如儲存庫320)內配置用於儲存運算元以供處理一執行緒的各暫存器。上述的配置方式稱之為一“thin”配置類型。第4A圖係為依據本發明之一或多個態樣之一“thin”類型各暫存器配置的例示性具體實施例,並且係用以處理在四組儲存庫內之各執行緒。在第4A圖中,將供以處理執行緒A之用來儲存各運算元之暫存器配置在儲存庫0、將供以處理執行緒B之用來儲存各運算元之暫存器配置在儲存庫1、將供以處理執行緒C之用來儲存各運算元之暫存器配置在儲存庫2、將供以處理執行緒D之用來儲存各運算元之暫存器配置在儲存庫3。並且可將供以處理額外執行緒之用來儲存各運算元之暫存器配置在儲存庫0、儲存庫1、儲存庫2或儲存庫3。在本發明之另外的具體實施例中,可使用較多或較少的儲存庫。
在本發明之其他的具體實施例中,可在四組儲存庫之各組內配置以供處理一執行緒之用來儲存各運算元的暫存器,其中每一儲存庫可為一儲存庫320。上述之配置方式稱之為一“fat”配置類型。第4B圖係為一依據本發明之一或多個態樣之在四儲存庫內使用“fat”配置類型配置以供處理各執行緒之暫存器的例示性具體實施例。在第4B圖中,將供以處理執行緒A之用來儲存各運算元之暫存器配置在儲存庫0、儲存庫1、儲存庫2或儲存庫3。將供以處理各執行緒B、C及D之用來儲存各運算元之暫存器配置在儲存庫0、儲存庫1、儲存庫2或儲存庫3。在本發明之另外的具體實施例中,可使用較多或較少的儲存庫。
在本發明之某些具體實施例中,將用於處理各執行緒之暫存器配置在「儲存庫計數,bank count」單元用以表示在一“fat”配置類型或“thin”配置類型的一特定數量暫存器。可在儲存庫0內追蹤一指示下一個有用配置暫存器的暫存器基底位址並且可使用該儲存庫計數、該配置類型以及該暫存器基底位址來決定該在其他儲存庫中的下一個有用暫存器。
可使用“fat”配置類型或“thin”配置類型將供以處理額外執行緒之用來儲存各運算元之暫存器配置在儲存庫0、儲存庫1、儲存庫2和/或儲存庫3。然而,混合式“fat”以及可造成用於配置各暫存器的粗劣利用性,如第4C圖所示。例如,當一第一執行緒(例如執行緒A)在一儲存庫0內使用一“thin”配置類型並且一第二執行緒(例如執行緒B)在每一四組儲存庫內使用一“fat”配置類型時,則一使用一thin”配置類型的第三執行緒將會被延遲,直至該第一執行緒完成執行。另外,在本發明之某些具體實施例中,“fat”配置類型可自每一儲存庫之頂端開始實施並且“thin”配置類型可自每一儲存庫之底端開始實施,如第4圖所示。執行緒A使用一“fat”配置類型並且執行緒C以及D使用一“thin”配置類型。此種“splitting”(分割)的配置類型允許包裝特定配置類型以更有效利用用於配置的各暫存器。
當一“fat”配置類型用於各執行緒時,則可在一序列順序下簡單起始指派給各運算元之位置。第4E圖則為一根據本發明之一或多個態樣之在一序列順序下指派各執行緒之暫存器的例示性具體實施例。例如,指派來儲存運算元400 A之執行緒A所配置的一暫存器放置在儲存庫0中並且將指派來儲存運算元400 B之執行緒B所配置的一暫存器放置在儲存庫0中。如果執行緒A以及執行緒B正執行相同的程式指令,當執行緒A以及執行緒B處理一程式指令(讀取執行緒A之運算元400 A以及執行緒B之運算元400 B)其可能造成一儲存庫衝突。如果運算元400 A以及運算元400 B未儲存在相同儲存庫,則可避免該儲存庫衝突。
可以在該暫存器指派處理過程期間使用一階段數值(phass value),以致使處理該相同程式指令的各執行緒將不會在相同的儲存庫中具有由該指派至各暫存器之程式指令所指定之具相關性的各運算元。第4F圖則是根據本發明之一或多個態樣之使用一階段數值來實施各執行緒之指派的例示性具體實施例。例如,指派來儲存運算元410 A之配置予執行緒A的一暫存器係被放置在儲存庫0並且指派來儲存運算元410 B之配置予執行緒B的一暫存器係被放置在儲存庫1。如果執行緒A以及執行緒B正執行相同程式指令,當執行緒A以及執行緒B處理一程式指令(讀取執行緒A之運算元410 A以及執行緒B之運算元410 B)其將不會發生一儲存庫衝突。在本發明之另一具體實施例中,可重新定位各暫存器,以致使處理相同程式指令之各執行緒將不會在相同的儲存庫中具有由該指派至各暫存器之程式指令所指定之具相關性的各運算元。例如,在四儲存庫中,一所指派暫存器編號的最低兩位元可與一唯一的階段數值做邏輯互斥(XOR),其中該階段數值係與將該暫存器配置出的執行緒相關。本發明之另一方法為加入將該階段數值除以儲存庫數量並取餘數(modulo)的數值至該所指配的暫存器編號。
當一“fat”配置類型用於各執行緒時,其可能在兩個或以上之不同的儲存庫上將需要處理一程式指令之兩個或以上之運算元指派至各暫存器,例如,如果執行緒A之一程式指令指定運算元414 A以及415 A,則讀取請求將會被排放在兩個不同的請求佇列310中,其中該佇列310一耦合至儲存庫0並且其他耦合至儲存庫1。相似地,運算元414 A將被輸出至耦而至儲存庫0之收集單元330以及運算元415 A將被輸出至耦而至儲存庫1之收集單元330。既然一單一收集單元330收集每一程式指令的運算元,則可使用一機制來允許可在不同儲存庫以及收集單元330之間轉換各運算元。
第5圖係為根據本發明之一或多個態樣之第2圖中該暫存器檔案單元之另一例示性具體實施例的一方塊圖,其中包含一閂(crossbar)525以及複數儲存庫320,每一儲存庫320係耦合至一儲存庫請求仲裁單元310。閂525係用來讓自任何儲存庫320輸出之一運算元可被路由(route)至任何收集單元330的輸出。因此,可由一單一收集單元330收集由一程式指令所指定所有運算元。結合第3圖的描述,各收集單元330自任何儲存庫320收集由一程式指令所指定的各運算元。當使用閂525時,執行緒排程以及暫存器配置(“fat”配置類型或“thin”配置類型)將帶來比當儲存庫320之數量相等於收集單元330之總數時有較高的效率。
一分配單元540係耦合至一組收集單元330以及一執行單元B 575之間。分配單元540可接收程式指令以及相關的運算元,例如、來自每一收集單元330的各輸入,因此分配單元540仲裁於該組內的該收集單元之間。在本發明之某些具體實施例中,分配單元540以一依序循環方式(round-robin fashion)進行仲裁。在本發明之其他具體實施例中,每一該組內的收集單元330具有相關的優先權並且分配單元540基於該優先權接收來自各收集單元330的輸入。例如,一收集單元330可具有比其他收集單元330較高的優先權,並且如果一程式指令以及運算元為有用,則該分配單元將總會接受該一收集單元330。
一單一收集單元330係直接耦合至一執行單元A565。執行單元565A係用來執行執行單元B 575不設置來執行的特定指令。因此,單一收集單元330接受執行單元565 A執行的程式指令(以及請求),並且該組收集單元330則接受執行單元575 B執行的程式指令(以及請求)。第6A圖係為根據本發明之一或多個態樣之配置處理一執行緒之各暫存器的方法的一具體實施例。在步驟600中,自執行緒控制單元220由暫存器位址單元240接收一執行緒的一暫存器配置請求。在步驟605中,暫存器位址單元240決定是否需要來處理該執行緒的大小(例如暫存器數量)小於或等於一固定或可程式化的數值X。如果暫存器位址單元240決定該大小大於X,則接著在步驟610中,暫存器位址單元240在多重儲存庫中配置用於儲存運算元的各暫存器(例如使用一“fat”配置類型)。在步驟615中,暫存器位址單元240更新一基底指標。該基底指標指示該用於儲存庫320內所配置的第一位置。
在步驟620中,暫存器位址單元240更新階段數值,以致使指派一接續的執行緒所配置的各運算元之暫存器將會針對相對於在步驟610中所配置的各暫存器做偏斜(skewed)。在步驟625中,暫存器位址單元240決定是否該階段數值相等於N,其中N為儲存庫320的數量。在步驟625中,如果暫存器位址單元240決定出該階段數值係相等於N,則在步驟630中暫存器位址單元240設置該階段數值為0並且前進至670。如果步驟625中,暫存器位址單元240決定出該階段數值不等於N,則暫存器位址單元240前進至步驟670並且輸出該配置資訊至暫存器檔案單元250內的請求仲裁單元300。
在步驟605中,如果暫存器位址單元240決定該大小小於或等於X,則在步驟635中,暫存器位址單元240決定是否該儲存庫320可用於一N-1的“thin”配置類型。如果在步驟635中,如由一儲存庫指示器所指定,暫存器位址單元240決定該儲存庫320可用於N-1儲存庫的配置,接著在步驟650中暫存器位址單元240更新該基底以指示該可用的第一位置以供配置,並且前進至645。如果在步驟635中,暫存器位址單元240決定該儲存庫320不可用於N-1儲存庫的配置,接著在步驟640中暫存器位址單元240藉由將該儲存庫指示器增加1來更新該儲存庫指示器,在步驟645中,暫存器位址單元240配置各暫存器以供在單一儲存庫320中儲存各運算元,亦即由該儲存庫指示器所指定的一“thin”配置類型,並且前進至步驟670。如先前所討論,步驟670中,暫存器位址單元240出該配置資訊至暫存器檔案單元250內的請求仲裁單元300。
第6B圖中係為根據本發明之一或多個態樣之配置處理一執行緒之各暫存器的另一方法的一具體實施例。在步驟600中,暫存器位址單元240接收一暫存器配置請求,包含一“at”或“thin”的配置類型。在本發明之某些具體實施例中,當編譯各程式指令時決定該配置類型並且由一驅動器提供至暫存器位址單元240。在步驟603中,暫存器位址單元240決定是否該特定配置類型為“thin”,並且如果為“thin”配置類型,則前進至步驟635、640、645、650以及670,該等步驟如第6A圖所述。在步驟603中,如果暫存器位址單元240決定是否該特定配置類型非為“thin”,則暫存器位址單元240前進至步驟610、615、620、625、630以及670,上述步驟如第6A圖所述。
第6C圖中係為根據本發明之一或多個態樣之配置處理一執行緒之各暫存器的另一方法的一具體實施例。在步驟600中,暫存器位址單元240接收一暫存器配置請求,其中包含包含一“fat”或“thin”的配置類型。在步驟603中,暫存器位址單元240決定是否該特定配置類型為“thin”,並且如果為“thin”配置類型,則在步驟607中暫存器位址單元240決定該“thin”配置類型是否適合(亦即是否該儲存庫指示器所指示的該儲存庫320內所需的暫存器數量為可用)。如果,在步驟607中暫存器位址單元240決定在該儲存庫320內適合該“thin”配置類型,則該暫存器位址單元240前進至步驟635、640、645、650以及670,該等步驟如第6A圖所述。
如果在步驟603中,暫存器位址單元240決定該特定配置類型非為“thin”,則暫存器位址單元240前進至步驟610、615、620、625、630以及670,上述步驟如第6A圖所述。如果,在步驟607中暫存器位址單元240決定在該儲存庫320內不適合該“thin”配置類型,則接著暫存器位址單元240前進至步驟610、615、620、625、630以及670,上述步驟如第6A圖所述。
因此,在此技術領域中,具有通常知識者將可明瞭到設置來執行第6A、6B、6C圖或其均等物之方法的任何系統,其接將涵蓋於本發明之範圍內。再者,在此技術領域中,具有通常知識者也將可體會到可擴充第6A、6B、6C圖的方法步驟來支持一包含任何數量之儲存庫的暫存器檔案單元,藉以模擬一多埠記憶體。
本發明隨著參照特定的具體實施例已揭示於其上。然而,在不悖離本發明之精神以及範圍下,將涵蓋所有修改以及變化。該前述的說明及圖示將僅引為範例而非為限制本發明。除非在申請專利範圍中陳述,方法中步驟的表列也並非需在一特定序列下執行。
250...暫存器檔案單元
310...儲存庫請求仲裁單元
320...儲存庫
525...閂
330...收集單元
575...執行單元
270...執行單元
600...接收一暫存器配置請求
603...是否為thin配置類型?
607...thin類型是否適合?
635...儲存庫是否為N-1?
650...更新基底
640...更新基底
645...將各暫存器配置於一單一儲存庫
610...將各暫存器配置於多重儲存庫
615...更新基底
620...更新該階段(phase)
625...階段(phase)是否為N?
630...設置階段(phase)=0
670...回傳配置資訊
第1圖係根據本發明之一或以上的態樣(包含一主電腦以及一圖形子系統)為一代表性電腦系統之一示例性具體實施例的一方塊圖。
第2圖係根據本發明之一或以上的態樣為第1圖內之該可程式化圖形處理管線之一示例性具體實施例的一方塊圖。
第3圖係根據本發明之一或以上的態樣為第2圖內之該暫存器檔案單元之一示例性具體實施例的一方塊圖。
第4A圖係根據本發明之一或以上的態樣為用於處理各執行緒之暫存器配置的一示例性具體實施例。
第4B、4C以及4D圖係根據本發明之一或以上的態樣為用於處理各執行緒之暫存器配置的一其他示例性具體實施例。
第4E圖係根據本發明之一或以上的態樣為一各執行緒之暫存器的指派任務的一示例性具體實施例。
第4F圖係根據本發明之一或以上的態樣為一各執行緒之暫存器的指派任務的一其他示例性具體實施例。
第5圖係根據本發明之一或以上的態樣為第2圖內之該暫存器檔案單元之一示例性具體實施例的一方塊圖。
第6A圖係根據本發明之一或以上的態樣描述配置來用於處理一執行緒之暫存器的一方法的具體實施例。
第6B圖係根據本發明之一或以上的態樣描述配置來用於處理一執行緒之暫存器的另一方法的具體實施例。
第6C圖係根據本發明之一或以上的態樣描述配置來用於處理一執行緒之暫存器的另一方法的具體實施例。
Claims (21)
- 一種使用多個較低連接埠數的記憶體的方法,其提供多個暫存器以儲存由複數執行緒其中之一所執行的多個運算元,來模擬單一多埠記憶體以及將該些暫存器配置人多個記憶體儲存庫,其中該些記憶體儲存庫的每一個與該些執行緒的至少其中之一相關,該方法包含:決定步驟,其係用以決定一配置給該些執行緒中其中之一之暫存器的數量;配置步驟,其係用以將該執行緒之暫存器的數量配置給在一組設置來模擬該單一多埠記憶體之記憶體儲存庫中的至少一記憶體儲存庫中的位置;由該組記憶體儲存庫中的第一記憶體儲存庫中的暫存器,讀取於該執行緒中由一程式指令指定的第一運算元到第一相關收集器;由該組記憶體儲存庫中的第二記憶體儲存庫中的暫存器,讀取於該執行緒中由該程式指令指定的第二運算元到第二相關收集器;以及接收 由該第一相關收集器和該第二相關收集器的每一個中分派該程式指令、該第一運算元和該第二運算元以執行。
- 如申請專利範圍第1項所述之方法,其中該配置給執行緒之暫存器的數量係被分成各部分並且將該等部分配置在該組記憶體儲存庫內的各記憶體儲存庫。
- 如申請專利範圍第1項所述之方法,其中該配置給執行緒之暫存器的數量係被放置在該組記憶體儲存庫內的一單一記憶體儲存庫。
- 如申請專利範圍第1項所述之方法,其中該配置暫存器的數量係依據一配置類型。
- 如申請專利範圍第4項所述之方法,其更包含決定步驟,其係用以基於配置給該執行緒之暫存器的數量來決定配置類型。
- 如申請專利範圍第4項所述之方法,其更包含接收步驟,其係用以自一驅動器接收該配置類型。
- 如申請專利範圍第1項所述之方法,其更包含讀取步驟,其係用以自該組記憶體儲存庫內之一第一記憶體儲存庫中的一暫存器讀取由該執行緒內之一程式指令所指定的一第一運算元。
- 如申請專利範圍第7項所述之方法,其更包含讀取步驟,其係用以自該組記憶體儲存庫內之一第二記憶體儲存庫中的一暫存器讀取由該執行緒內之該程式指令所指定的一第二運算元。
- 如申請專利範圍第8項所述之方法,其更包含收集步驟,其係用以收集該第一運算元以及該第二運算元,並且分派該程式指令、該第一運算元以及該第二運算元以供執行。
- 如申請專利範圍第7項所述之方法,其更包含讀取步驟,其係用以自該組記憶體儲存庫內之該第一記憶體儲存庫中的其他暫存器讀取由該執行緒內之該程式指令所指定的一第二運算元。
- 如申請專利範圍第10項所述之方法,其更包含收集步驟,其係用以收集該第一運算元以及該第二運算元,並且分派該程式指令、該第一運算元以及該第二運算元以供執行。
- 如申請專利範圍第1項所述之方法,其更包含使用一與該執行緒相關之階段數值(phase value)來分派在已配置的該執行緒之暫存器集合中的各暫存器至該至少一記憶體 儲存庫藉已指派每一暫存器。
- 一種用於儲存圖形程式指令之裝置,該單元至少包含:一第一記憶體儲存庫,其係用以儲存一第一執行緒之各運算元;一第二記憶體儲存庫,其係用以儲存一第二執行緒之各運算元;一第一收集單元,其係用以接收來自該第一記憶體儲存庫的該第一執行緒之該等運算元以及輸出該第一執行緒之一程式指令以及任何由該第一執行緒之該程式指令所指定的運算元;以及一第二收集單元,其係用以接收來自該第二記憶體儲存庫的該第二執行緒之該等運算元以及輸出該第二執行緒之一程式指令以及任何由該第二執行緒之該程式指令所指定的運算元。
- 如申請專利範圍第13項所述之裝置,其更包含一閂(crossbar)單元,其係將該第一記憶體儲存庫耦合至該第二收集單元,藉以使得該第二收集單元能夠接收來自該第一記憶體儲存庫之該第一執行緒的各運算元。
- 如申請專利範圍第14項所述之裝置,其包含其他的複數個記憶體儲存庫和其他的複數個收集單元,當該些記憶體儲存庫的總數量和該些收集單元的總數量不等,該閂單元被配置使由任何記憶體儲存庫的一運算元輸出可被繞路為該些收集單元中任一個的輸入。
- 如申請專利範圍第13項所述之裝置,其更包含:一第一儲存庫請求仲裁單元,其係用以輸出運算元讀取請求至該第一記憶體儲存庫;以及一第二儲存庫請求仲裁單元,其係用以輸出運算元讀取請求至該第二記憶體儲存庫。
- 如申請專利範圍第13項所述之裝置,其更包含一分配單元,其係耦合至該第二收集單元並且設置以輸出該第一執行緒之程式指令以及任何由該第一執行緒之程式指令所指定的運算元,或者輸出該第二執行緒之程式指令以及任何由該第二執行緒之程式指令所指定的運算元。
- 如申請專利範圍第17項所述之裝置,其更包含一執行單元,其係用來執行任何由該分配單元輸出的程式指令。
- 如申請專利範圍第17項所述之裝置,其更包含一執行單元,其係用來執行任何由該第一收集單元輸出的程式指令。
- 如申請專利範圍第13項所述之裝置,其更包含一連接於每一個記憶體儲存庫和每一個收集單元之間的選擇單元,其接收未被儲存於記憶體儲存庫中的來源資料,其中該來源資料可被該收集單元所收集。
- 如申請專利範圍第13項所述之裝置,其更包含一執行單元,其由該第一收集單元和該第二收集單元中接收該程式指令和該些運算元,以及如果一目標運算元已被該程式指令指定,即輸出一寫入請求到該第一記憶體儲存庫和該第二記憶體儲存庫的其中之一。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/889,730 US7339592B2 (en) | 2004-07-13 | 2004-07-13 | Simulating multiported memories using lower port count memories |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200613980A TW200613980A (en) | 2006-05-01 |
TWI441021B true TWI441021B (zh) | 2014-06-11 |
Family
ID=34973122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW094123642A TWI441021B (zh) | 2004-07-13 | 2005-07-12 | 使用多個較低連接埠數記憶體模擬單一記憶體之方法與裝置 |
Country Status (6)
Country | Link |
---|---|
US (2) | US7339592B2 (zh) |
JP (2) | JP2008507034A (zh) |
KR (1) | KR100862124B1 (zh) |
CN (1) | CN101014933B (zh) |
TW (1) | TWI441021B (zh) |
WO (1) | WO2006017135A2 (zh) |
Families Citing this family (75)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7339592B2 (en) | 2004-07-13 | 2008-03-04 | Nvidia Corporation | Simulating multiported memories using lower port count memories |
US7634621B1 (en) * | 2004-07-13 | 2009-12-15 | Nvidia Corporation | Register file allocation |
US7360035B2 (en) | 2004-09-01 | 2008-04-15 | International Business Machines Corporation | Atomic read/write support in a multi-module memory configuration |
US8560795B2 (en) * | 2005-06-30 | 2013-10-15 | Imec | Memory arrangement for multi-processor systems including a memory queue |
CN101449256B (zh) | 2006-04-12 | 2013-12-25 | 索夫特机械公司 | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 |
US8766995B2 (en) * | 2006-04-26 | 2014-07-01 | Qualcomm Incorporated | Graphics system with configurable caches |
US20070268289A1 (en) * | 2006-05-16 | 2007-11-22 | Chun Yu | Graphics system with dynamic reposition of depth engine |
US8884972B2 (en) * | 2006-05-25 | 2014-11-11 | Qualcomm Incorporated | Graphics processor with arithmetic and elementary function units |
US8869147B2 (en) * | 2006-05-31 | 2014-10-21 | Qualcomm Incorporated | Multi-threaded processor with deferred thread output control |
US8644643B2 (en) | 2006-06-14 | 2014-02-04 | Qualcomm Incorporated | Convolution filtering in a graphics processor |
US8766996B2 (en) * | 2006-06-21 | 2014-07-01 | Qualcomm Incorporated | Unified virtual addressed register file |
EP2527972A3 (en) | 2006-11-14 | 2014-08-06 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
US8725991B2 (en) | 2007-09-12 | 2014-05-13 | Qualcomm Incorporated | Register file system and method for pipelined processing |
US7945764B2 (en) * | 2008-01-11 | 2011-05-17 | International Business Machines Corporation | Processing unit incorporating multirate execution unit |
US20090189896A1 (en) * | 2008-01-25 | 2009-07-30 | Via Technologies, Inc. | Graphics Processor having Unified Shader Unit |
US8689217B2 (en) | 2008-10-31 | 2014-04-01 | Electronics And Telecommunications Research Institute | System and method for thread processing robot software components responsive to periodic, dedicated, and passive modes |
KR101102930B1 (ko) * | 2008-10-31 | 2012-01-10 | 한국전자통신연구원 | 로봇용 소프트웨어 컴포넌트 장치 및 이를 이용한 쓰레드 처리 방법 |
US8370557B2 (en) * | 2008-12-19 | 2013-02-05 | Intel Corporation | Pseudo dual-port SRAM and a shared memory switch using multiple memory banks and a sideband memory |
US8386808B2 (en) * | 2008-12-22 | 2013-02-26 | Intel Corporation | Adaptive power budget allocation between multiple components in a computing system |
US8458446B2 (en) * | 2009-09-30 | 2013-06-04 | Oracle America, Inc. | Accessing a multibank register file using a thread identifier |
KR20110103256A (ko) * | 2010-03-12 | 2011-09-20 | 삼성전자주식회사 | 다중 입출력 오퍼레이션 지원 프로세서 및 그 방법 |
US8832671B1 (en) * | 2010-07-07 | 2014-09-09 | Nvidia Corporation | Conflict-free register allocation |
US8555035B1 (en) | 2010-07-07 | 2013-10-08 | Nvidia Corporation | Conflict-free register allocation using a multi-bank register file with input operand alignment |
US20120066471A1 (en) * | 2010-09-14 | 2012-03-15 | Advanced Micro Devices, Inc. | Allocation of memory buffers based on preferred memory performance |
US20120066444A1 (en) * | 2010-09-14 | 2012-03-15 | Advanced Micro Devices, Inc. | Resolution Enhancement of Video Stream Based on Spatial and Temporal Correlation |
EP2616928B1 (en) | 2010-09-17 | 2016-11-02 | Soft Machines, Inc. | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
US8787368B2 (en) * | 2010-12-07 | 2014-07-22 | Advanced Micro Devices, Inc. | Crossbar switch with primary and secondary pickers |
KR101966712B1 (ko) | 2011-03-25 | 2019-04-09 | 인텔 코포레이션 | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 |
EP2689327B1 (en) | 2011-03-25 | 2021-07-28 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
TWI518504B (zh) | 2011-03-25 | 2016-01-21 | 軟體機器公司 | 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的暫存器檔案節段 |
US20120254589A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | System, apparatus, and method for aligning registers |
KR101639854B1 (ko) | 2011-05-20 | 2016-07-14 | 소프트 머신즈, 인크. | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조 |
WO2012162188A2 (en) | 2011-05-20 | 2012-11-29 | Soft Machines, Inc. | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
US8819379B2 (en) | 2011-11-15 | 2014-08-26 | Memory Technologies Llc | Allocating memory based on performance ranking |
US10191746B2 (en) | 2011-11-22 | 2019-01-29 | Intel Corporation | Accelerated code optimizer for a multiengine microprocessor |
CN108427574B (zh) | 2011-11-22 | 2022-06-07 | 英特尔公司 | 微处理器加速的代码优化器 |
US8639882B2 (en) * | 2011-12-14 | 2014-01-28 | Nvidia Corporation | Methods and apparatus for source operand collector caching |
US9626191B2 (en) * | 2011-12-22 | 2017-04-18 | Nvidia Corporation | Shaped register file reads |
US9606808B2 (en) * | 2012-01-11 | 2017-03-28 | Nvidia Corporation | Method and system for resolving thread divergences |
US9158683B2 (en) * | 2012-08-09 | 2015-10-13 | Texas Instruments Incorporated | Multiport memory emulation using single-port memory devices |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
KR102083390B1 (ko) | 2013-03-15 | 2020-03-02 | 인텔 코포레이션 | 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법 |
EP2972845B1 (en) | 2013-03-15 | 2021-07-07 | Intel Corporation | A method for executing multithreaded instructions grouped onto blocks |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US9489316B2 (en) * | 2013-03-15 | 2016-11-08 | Freescale Semiconductor, Inc. | Method and device implementing execute-only memory protection |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
US9508112B2 (en) * | 2013-07-31 | 2016-11-29 | Apple Inc. | Multi-threaded GPU pipeline |
US9377968B2 (en) | 2013-11-13 | 2016-06-28 | Sandisk Technologies Llc | Method and system for using templates to communicate with non-volatile memory |
US9390033B2 (en) | 2013-11-13 | 2016-07-12 | Sandisk Technologies Llc | Method and system for communicating with non-volatile memory via multiple data paths |
US9430411B2 (en) | 2013-11-13 | 2016-08-30 | Sandisk Technologies Llc | Method and system for communicating with non-volatile memory |
KR20150056373A (ko) * | 2013-11-15 | 2015-05-26 | 삼성전자주식회사 | 순차적 수행 방식의 멀티스레드 프로세싱 장치 및 방법 |
US9201636B2 (en) * | 2013-11-21 | 2015-12-01 | National Tsing Hua University | Method for divergence analysis of pointer-based program |
US9141291B2 (en) | 2013-11-26 | 2015-09-22 | Sandisk Technologies Inc. | Adaptive context disbursement for improved performance in non-volatile memory systems |
US9437172B2 (en) * | 2014-08-19 | 2016-09-06 | Apple Inc. | High-speed low-power access to register files |
KR102357863B1 (ko) | 2014-12-15 | 2022-02-04 | 삼성전자주식회사 | 메모리 접근 방법 및 장치 |
GB2540971B (en) | 2015-07-31 | 2018-03-14 | Advanced Risc Mach Ltd | Graphics processing systems |
US10089115B2 (en) | 2016-07-07 | 2018-10-02 | Intel Corporation | Apparatus to optimize GPU thread shared local memory access |
US9747106B1 (en) | 2016-09-30 | 2017-08-29 | International Business Machines Corporation | Allocating multiple operand data areas of a computer instruction within a program buffer |
EP3607526A4 (en) * | 2017-04-01 | 2020-11-04 | INTEL Corporation | HYBRID TECHNOLOGY SHARED BY EXECUTION UNITS FOR ACCELERATED COMPUTING ON GRAPHIC PROCESSORS |
US10521880B2 (en) * | 2017-04-17 | 2019-12-31 | Intel Corporation | Adaptive compute size per workload |
US10417731B2 (en) | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US10417734B2 (en) | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US10467724B1 (en) * | 2018-02-14 | 2019-11-05 | Apple Inc. | Fast determination of workgroup batches from multi-dimensional kernels |
CN111459543B (zh) * | 2019-01-21 | 2022-09-13 | 上海登临科技有限公司 | 一种管理寄存器文件单元的方法 |
KR102201352B1 (ko) * | 2019-04-03 | 2021-01-08 | 연세대학교 산학협력단 | 스핀 전달 토크 랜덤 액세스 메모리 기반의 계층적 레지스터 파일 장치 |
US20220121486A1 (en) * | 2020-10-20 | 2022-04-21 | Micron Technology, Inc. | Rescheduling a failed memory request in a processor |
US20220197649A1 (en) * | 2020-12-22 | 2022-06-23 | Advanced Micro Devices, Inc. | General purpose register hierarchy system and method |
CN115934102B (zh) * | 2022-12-29 | 2023-12-12 | 格兰菲智能科技有限公司 | 通用寄存器动态分配方法、装置、计算机设备和存储介质 |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12603A (en) * | 1855-03-27 | Improvement in seed-planters | ||
US80512A (en) * | 1868-07-28 | John shellabergeb | ||
US41228A (en) * | 1864-01-12 | Improved refrigerating dish-cover | ||
US103990A (en) * | 1870-06-07 | Improvement in liquid-meters | ||
US163699A (en) * | 1875-05-25 | Improvement in ruffling attachments for sewing-machines | ||
US4532589A (en) * | 1981-12-02 | 1985-07-30 | Hitachi, Ltd. | Digital data processor with two operation units |
JPS61269773A (ja) * | 1985-05-24 | 1986-11-29 | Fujitsu Ltd | ベクトル命令実行制御方式 |
JP2545789B2 (ja) * | 1986-04-14 | 1996-10-23 | 株式会社日立製作所 | 情報処理装置 |
US4964042A (en) * | 1988-08-12 | 1990-10-16 | Harris Corporation | Static dataflow computer with a plurality of control structures simultaneously and continuously monitoring first and second communication channels |
JPH0331937A (ja) * | 1989-06-29 | 1991-02-12 | Mitsubishi Electric Corp | マイクロプロセッサ |
US6091430A (en) * | 1993-03-31 | 2000-07-18 | International Business Machines Corporation | Simultaneous high resolution display within multiple virtual DOS applications in a data processing system |
JPH06332721A (ja) * | 1993-05-24 | 1994-12-02 | Hitachi Ltd | レジスタの使用方法 |
SG75756A1 (en) * | 1994-02-28 | 2000-10-24 | Intel Corp | Method and apparatus for avoiding writeback conflicts between execution units sharing a common writeback path |
US6154826A (en) * | 1994-11-16 | 2000-11-28 | University Of Virginia Patent Foundation | Method and device for maximizing memory system bandwidth by accessing data in a dynamically determined order |
US5701426A (en) * | 1995-03-31 | 1997-12-23 | Bull Information Systems Inc. | Data processing system and method using cache miss address prediction and forced LRU status in a cache memory to improve cache hit ratio |
US5644780A (en) * | 1995-06-02 | 1997-07-01 | International Business Machines Corporation | Multiple port high speed register file with interleaved write ports for use with very long instruction word (vlin) and n-way superscaler processors |
US6167486A (en) * | 1996-11-18 | 2000-12-26 | Nec Electronics, Inc. | Parallel access virtual channel memory system with cacheable channels |
JP3087696B2 (ja) * | 1997-07-25 | 2000-09-11 | 日本電気株式会社 | 分散メモリ型マルチプロセッサ・システム制御方法およびコンピュータ読み取り可能な記録媒体 |
US5913049A (en) * | 1997-07-31 | 1999-06-15 | Texas Instruments Incorporated | Multi-stream complex instruction set microprocessor |
JPH11184674A (ja) * | 1997-12-24 | 1999-07-09 | Fujitsu Ltd | レジスタファイル |
US6092175A (en) * | 1998-04-02 | 2000-07-18 | University Of Washington | Shared register storage mechanisms for multithreaded computer systems with out-of-order execution |
US6317820B1 (en) | 1998-06-05 | 2001-11-13 | Texas Instruments Incorporated | Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism |
JP3880739B2 (ja) * | 1999-02-25 | 2007-02-14 | 三菱電機株式会社 | オペレーティングシステムの処理方式及びオペレーティングシステムの処理方法 |
US6438557B1 (en) * | 1999-06-23 | 2002-08-20 | Ericsson Inc. | System and method for performing context switching and rescheduling of a processor |
JP2001167084A (ja) * | 1999-12-08 | 2001-06-22 | Nec Kofu Ltd | ベクトル演算処理装置及びベクトルデータ移送方法 |
US7120783B2 (en) * | 1999-12-22 | 2006-10-10 | Ubicom, Inc. | System and method for reading and writing a thread state in a multithreaded central processing unit |
US6615340B1 (en) * | 2000-03-22 | 2003-09-02 | Wilmot, Ii Richard Byron | Extended operand management indicator structure and method |
US20020103990A1 (en) * | 2001-02-01 | 2002-08-01 | Hanan Potash | Programmed load precession machine |
US7487505B2 (en) * | 2001-08-27 | 2009-02-03 | Intel Corporation | Multithreaded microprocessor with register allocation based on number of active threads |
US6795889B2 (en) * | 2002-01-09 | 2004-09-21 | International Business Machines Corporation | Method and apparatus for multi-path data storage and retrieval |
JP3727887B2 (ja) * | 2002-02-19 | 2005-12-21 | 富士通株式会社 | マルチスレッドプロセッサにおける共有レジスタファイル制御方式 |
US6833831B2 (en) * | 2002-02-26 | 2004-12-21 | Sun Microsystems, Inc. | Synchronizing data streams in a graphics processor |
US7398374B2 (en) * | 2002-02-27 | 2008-07-08 | Hewlett-Packard Development Company, L.P. | Multi-cluster processor for processing instructions of one or more instruction threads |
WO2003085516A1 (en) * | 2002-04-10 | 2003-10-16 | Koninklijke Philips Electronics N.V. | Data processing system |
US7336283B2 (en) * | 2002-10-24 | 2008-02-26 | Hewlett-Packard Development Company, L.P. | Efficient hardware A-buffer using three-dimensional allocation of fragment memory |
JP2004178427A (ja) * | 2002-11-28 | 2004-06-24 | Toshiba Microelectronics Corp | 中央処理装置 |
US7376954B2 (en) * | 2003-08-28 | 2008-05-20 | Mips Technologies, Inc. | Mechanisms for assuring quality of service for programs executing on a multithreaded processor |
US7339592B2 (en) | 2004-07-13 | 2008-03-04 | Nvidia Corporation | Simulating multiported memories using lower port count memories |
-
2004
- 2004-07-13 US US10/889,730 patent/US7339592B2/en active Active
-
2005
- 2005-07-07 CN CN2005800298490A patent/CN101014933B/zh active Active
- 2005-07-07 KR KR1020077003498A patent/KR100862124B1/ko active IP Right Grant
- 2005-07-07 WO PCT/US2005/024164 patent/WO2006017135A2/en active Application Filing
- 2005-07-07 JP JP2007521508A patent/JP2008507034A/ja active Pending
- 2005-07-12 TW TW094123642A patent/TWI441021B/zh active
-
2006
- 2006-11-01 US US11/555,649 patent/US7834881B2/en active Active
-
2011
- 2011-07-12 JP JP2011154233A patent/JP5422614B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
US7834881B2 (en) | 2010-11-16 |
CN101014933A (zh) | 2007-08-08 |
JP5422614B2 (ja) | 2014-02-19 |
US20060012603A1 (en) | 2006-01-19 |
KR20070030327A (ko) | 2007-03-15 |
WO2006017135A3 (en) | 2006-10-05 |
WO2006017135A2 (en) | 2006-02-16 |
JP2011238271A (ja) | 2011-11-24 |
US7339592B2 (en) | 2008-03-04 |
JP2008507034A (ja) | 2008-03-06 |
CN101014933B (zh) | 2011-07-27 |
US20080109611A1 (en) | 2008-05-08 |
TW200613980A (en) | 2006-05-01 |
KR100862124B1 (ko) | 2008-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI441021B (zh) | 使用多個較低連接埠數記憶體模擬單一記憶體之方法與裝置 | |
US7634621B1 (en) | Register file allocation | |
US8024553B2 (en) | Data exchange and communication between execution units in a parallel processor | |
TWI498819B (zh) | 執行成型記憶體存取作業的系統和方法 | |
TWI423162B (zh) | 在繪圖處理單元中處理資料的無死結管線化方法與處理器群組 | |
TWI490782B (zh) | 來源運算元收集器快取的方法和裝置 | |
EP1979808B1 (en) | Thread optimized multiprocessor architecture | |
TWI501150B (zh) | 無指令解碼而排程指令的方法和裝置 | |
TWI489385B (zh) | 一種用於預先擷取快取線的電腦實作方法與子系統 | |
US20100115233A1 (en) | Dynamically-selectable vector register partitioning | |
US20170371654A1 (en) | System and method for using virtual vector register files | |
US9304775B1 (en) | Dispatching of instructions for execution by heterogeneous processing engines | |
US8578387B1 (en) | Dynamic load balancing of instructions for execution by heterogeneous processing engines | |
CN110036375A (zh) | 无序高速缓存返回 | |
US7315935B1 (en) | Apparatus and method for port arbitration in a register file on the basis of functional unit issue slots | |
US9690600B2 (en) | Reconfigurable processor and method of operating the same | |
US20070101320A1 (en) | Method for scheduling instructions and method for allocating registers using the same | |
US20110066813A1 (en) | Method And System For Local Data Sharing | |
US20220114234A1 (en) | Matrix processing engine with coupled dense and scalar compute | |
CN117667210A (zh) | 指令控制装置、方法、处理器、芯片和板卡 |