TWI331300B - System and method for processing thread groups in a simd architecture - Google Patents
System and method for processing thread groups in a simd architecture Download PDFInfo
- Publication number
- TWI331300B TWI331300B TW095144756A TW95144756A TWI331300B TW I331300 B TWI331300 B TW I331300B TW 095144756 A TW095144756 A TW 095144756A TW 95144756 A TW95144756 A TW 95144756A TW I331300 B TWI331300 B TW I331300B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- clock
- instructions
- execution
- operands
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 11
- 241000282326 Felis catus Species 0.000 claims 1
- 238000004590 computer program Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 7
- 239000000463 material Substances 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 206010011469 Crying Diseases 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000010977 unit operation 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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, 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, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Description
1331300 九、發明說明: 【發明所屬之技術領域】 本發明之實施例大體而言係關於單一指令多重資料 (SIMD)處理’且更特定言之,係關於一種在幻腳處理器 中用於處理線串群組之系統及方法。 【先前技術】 SIMD處理益將單—指令與多重資料路徑相關聯以使硬 體有效地執行資料並行算法。SIMD處理器實施之一般優 點得自管線控制硬體及指令處理上之降低,此為在鎖步中 執行多重資料路徑之結果。 般而5,增加SIMD處理器中之資料路徑之數目將允 許並灯處理更多資料,且將導致效能改良。然而,處理器 大小約束限制資料路徑之數目不能超過某一數目。而且, 若資料路徑之數目過大,則可存在硬體資源之利用不足。 【發明内容】 本發明提供-種具有-改良之SIMD架構之處理器,其 有效利用其硬體資源以達成更高之資料處理通量。根據本 發明之一實施例,藉由以資料處理側之速率的若干分之一 來決定-SIMD處理單元之指令處理側之時脈,使該§細 處理單元之有效寬度擴展至實際硬體寬度的數倍。根據本 發明之另一實施例,藉由提供多個執行管線來擴展一 WMD處理單元之有效寬度。藉由使用不同時脈速率且提 供多個執行管線,可根據下式將大量線串在—起分組為一 線串運送隊.運送隊_大小(eQ_y_size)=(執行管線之數 116834.doc 目)X (在各執行管線中之資料 _ #t 偟之數目)χ(資料處理侧之 時脈速率與指令處理側之時脈速率的比率)。 一種根據本發明之_眘a U之^例之SIMD處理單元包含一以 第-時脈速率操作之指令處理部分及1 率操作之諸處理部分,1巾 -夺脈逮 -時脈速率。較佳地,該第:=:時脈速率不同於該第 3* rr ... 第—時脈速率至少兩倍於該第— 時脈速率。該指令處理部分發ώ Λ 執行之指令,且收集待在執在«料處理部分中 元。收集多組該等運算元。〜出之指令中使用的運算 線。二第“77包合至少第—執行管線及第二執行管 線…執行管線係經組態 / 例如’乘與加(MAD),而該 類…曰令’ -第二類型之指令,例如 執订官線係經组態以執行 ,諸如倒數、指數、if叙笙+ & 殊函數指令(SFU)e各執 數祕專之特 令同等μ態之資料路徑。m多個根據該發出之指 將在該指令處理部分 料路徑中之-者。將έ:集之各组運算元供應至該等資 應至該第一執行管Γ中3:_指令相關聯之運算元供 與-㈣指令相關心該專資料路捏中之一者。將一組 該等資料路徑中之1者運异70供應至該第二執行管線中之 第針U出之指令收集之運算元組的數目較佳等於., 時脈速率與第=:::::,::徑之數— 脈迷率與該*-時脈迷率…::二 Π 6834.doc 1331300 令所收集之運算元組的數目應為:2x(該第—及該第二執 行管線中之資料路徑之數目) 根據本發明之實施例,無需以資料處理速率之每一週期 發出一新指令以保持該資料處理部分之完全利用。此允許 該指令處理部分以一更適於指令處理之降低的時脈_ 操作,且結果降低對於該指令處理部分之硬體要求。 【實施方式】 圖1為一實施一具有一介面單元122之圖形處理單元 (gpu)120之電腦系統100的簡化方土鬼圖,該介面單元122係 耗接至複數個SIMD處理器124],124_2, ,124_N。該等 SIMD處理器124可經由―記憶體控制器126存取一區域圖 形記憶體13〇。該GPU 120及該區域圖形記憶體13〇代表— 圖形子系、统’該圖形子系統可藉由電腦系心⑼之一中央 處理單坏PU)11G使用—儲存在—系統記憶體ιΐ2中之驅 動程式來存取。 本發明可應用於具有-或多個SIMD處理器124之任何處 理單元。因此’N可為大於或等於】之任何整數。而且,包 含s麵處理器124之處理單元可為cpu、Gpu或任何其他 類型之處理單元。 。。圖2更詳細地說明根據本發明之—實施例之8麵處理 裔。如圖所不’可為圖1中所示之SIMD處理器124中之任 一者的SIMD處理器包含-指令處理部分2H)及-資料 處理部分220。該指令處理部分21〇以該資料處理部分咖 之時脈速率之—半的時脈速率來操作。為方便起見,將用 116834.doc 於指令處理部分21G之時脈在下文中稱為T時脈,而將用於 貧料處理部分220之時脈在下文中稱為Η時脈。 、 指令處理部分210包含:一指令調度單元212,其用於發 出—待由該SJMD處理器200執行之指令,·一暫存器檔^ 214,其儲存用於執行該指令之運算元;及一對運算元收 集,元216、218。該運算元收集單元216麵接至_第—執 仃官線222且收集待供應至該第—執行管線加之運算元。 〜運”几收集單兀218耦接至一第二執行管線224且收集 供應至該第二執行管線224 八 心逆·^兀。在本文中所說明之 本發明之實施例中,該第-執行管線係經組態以執行一第 -類型之指令,例如乘與加(Mad),而該 f組態以執行-第二類型之指令,例如,諸如倒= 、對數等之特殊函數指令(SFU)。某些指令可在執行管 222、22Γ中4中之任一者中執行。舉例而言,可在執行管線 中之任一者中執行指令MOV及FMUL。該等 管線222、224中之每一 。亥4執仃 料路徑。 、、有8個並行且同等组態之資. 當指令調度單元212發f指令時,該指令調度單元212 =管線組態信號發送至兩個執行管線如、⑵中之 乂才日V為MAD型,則將管線組態信號發送至第一執行其 線222。若該指令為咖型,則將管線組態信號發送心 二執行管線224。 u货适至第 :發出一指令時,則指令調度單元η 該遮罩對應於與所發出之指令相關聯之一(在本文=之 116834.doc 貫施例中,尨3 MAD型,則運算元::,:線串運送隊。若發出之指令為 該線串運送隊相關聯的暫早暫存曜214内之與 串,收集執行發出之指令所需的十對運送隊中之每-線 算元可包含-或多個運算元“通的常'=元。-單-組運 聯的—組運算元包含兩個或:個運=MAD型之指令相關 令相關跔Μ , 飞—個運异兀,且與SFU型之指 :關聯的-組運算元包含-個運算元。 右發出之指令為SFU型, 存器槽案214内之盘貝1運t凡收集單元218讀取暫 運逆隊中串運送隊相關聯的暫存器,且針對 心〇之各線串’㈣執行發出之 ^ 几。對Τ時脈之各週期而…"的、,且運异 之每-者能夠收隼咐運V 收集單元216、218中 八組之速車供廄、、’介兀。將此等組以每骑脈週期 =率供應至執行管線222、22[因此,以兩心時 =錢四個Η時脈週期來處理與料運送隊相關聯⑽ ,,且連异元。 對累加益226、228中收集來自執行管線222 ' 224之 订'。果。該累加器226收集來自執行管線M2之執行結 ’而累加器228收集來自執行管線224之執行結果。該等 22行管二222 ' 224與該等累加器226、228為資料處理部分 220之部分,且以兩倍於指令處理部分210之時脈速率的 時:速率來操作。因暫存器檔案214以Τ時脈週期操作,因 此尔加态226、228每兩個Η時脈週期或每_ τ時脈週期將 執行結果回寫至該暫存器檔案214。因此,在執行結果回 寫至暫存器檔案214之前,累加器226、228中之每—者收 116834.doc 1331300 集16組執行結果。
由於在執行官線222、224中進行之操作類型主要為數學 運算,因此將Η時脈組態為快速時脈。然而,針對數學運 t之有效運异速度通常不同於用於指令處理及用於暫存器 檔案214之有效運算速度。指令處理及暫存器檔案214使用 較慢之時脈將更有效地運算。因此,使SIMD處理器2〇〇組 態有兩個時脈域中以τ時脈速率進行指令處理,且以 等於T時脈速率兩倍之η時脈速率進行資料處理。
圖3為指令處理部分21〇之指令調度單元212的功能方塊 圖。該指令調度單元212包含—具有複數個槽之指令緩衝 器310(每線串運送隊一個槽)。在此例示性實施例中,槽之 數目為24個’且各槽可保❹達兩個來自—對應線串^送 隊的指令。若該等槽中之任—槽具有—用於另—指令的空 間’則自記憶體進行-提取312至—指令快取記憶體314 中。在將儲存於指令快取記憶體314中之指令添加至追蹤 "處於飛行狀態(in fHght)"指令(亦即,已發出但尚未完成 之指令)的計分板322中且置放於指令緩衝器31〇之空閒空 間之前’言亥指令經歷解碼316。在解碼指令時,可對該指 令是否為MAD型或為SFU型進行判定。 該指令調度單元212進一步包含—發出邏輯咖。該發出 邏輯320檢查該計分板322,且將自指令緩衝器31〇發出一 不依賴該等"處於飛行狀態”指令中之任一指令的指令“士 合自指令緩衝器31〇之發出,發出邏輯似將管線組態信號 發送給合適之執行管線,且傳輸—對應於__與發出之指令 116834.doc 相關聯的線串運送隊的遮罩。該遮罩指示在該運送隊中之 線串中之何者係有效的,亦即,應由發出之指令實現。 圖4進-步詳細說明指令緩衝器31()。如圖所示,該指令 緩衝器310具有24個槽。在指令緩衝器中之各槽可保持多 達兩個來自-(32個-群組)線串運送隊的指令。在所展示 之實例中’具有職110之程式計數器之來自線串運送隊 (το至Τ31)的兩個指令儲存在指令緩衝器31〇之槽〇中。此 等指令將為MAD型或SFU型。若一指令為MAD型且自指令 緩衝器31〇發出’則將在運算元收集單元216中收集與料 運送隊(T0至T31)相關聯之32組運算元且供應至執行管線 222。在另—方面,若—指令為卿型且自指令緩衝器31〇 發出’則將在運算元收集單元218中收集與線串運送隊(τ〇 至T31)相關聯之32組運算元且供應至執行管線224。 圖5A-SD說明線串運送隊⑽至叫)經由執行管線⑵之 選定處理狀態,該執行管線222係經組態以執行自指令緩 衝器3Π)發出之MAD指令,例如指令A。圖仏展示在已經 過-個Η時脈週期後,執行管線如之狀態。如圖所示,在 一個Η時脈週期之後,分別與線串τ〇、τι、τ2、τ3、τ4、 Τ5、Τ6、Τ7相關聯之標識為〇、】、2、3、4、5、6、7的8 組運算元進人執行管線222中,且由指令A之第—管級對其 操作》在下-Η時脈週期中,8組運算元之―新群組將進人 執行管線222中’且將由指令八之^級對其操作,且8 組運算元之初始群組將已向 ^问下推進一個管級,且將進一步 由指令Α之第二管級對装握从 . ^ 丁八梯作。在四個Η時脈週期之後, 116834.doc 1331300 與一線串運送隊相關聯之所有組運算元將已進入執行管線 222中。因此,指令a之各管級將有效四個H時脈週期。在 第五個Η時脈週期上,其將根據新發出《ΜΑΙ)型的指八 組態。 θ 7來 圖5B展示在與一線串運送隊相關聯之所有組運算元已進 入執行管線222中且已由指令A之少數管線對其操作之後, 執行官線222之狀態。圖5 C展示在任何組運算元正要離開 執行管線222之前,執行管線222之狀態。圖5;〇展示在圖 5C中展示之狀態之後3個1^時脈週期上時,執行管線的 狀態。在經過一或多個Η時脈週期之後,與線串運送隊相 關聯之所有組運算元已離開執行管線222。 在一較佳實施例中,當自指令缓衝器3 1〇發出指令時, 發出邏輯320在MAD型指令與SFU型指令之間交替。以此 方式,執行管線222、224兩者皆可完全保持,,忙碌若指 令緩衝器3 10僅含有單個類型之指令,則可允許連續發出 MAD型指令或SFU型指令。然而,32個線串之運送隊要求 執行2個T時脈或4個η時脈,且因此,可至多每隔一個τ時 脈發生同一類型指令之連續發出(例如,MAD MaD4Sfu· SFU)。在另一方面,將不同類型之指令交替發出至兩個管 線允許每丁時脈發出一指令’且提供更高之效能。編譯器 可幫助私令之排程以確保不同類型之指令儲存於指令緩衝 裔3 1 0中。在程式中,使不同運送隊稍微分開可亦改良效 能。 圖6為說明當執行一根據本發明之一實施例之用於一線 116834.doc 1331300 串運送隊的指令時,由SIMD處理器2〇〇進行之處理步驟的 流程圖。在步驟610中,自指令緩衝器3 1〇發出指令。然 後’自暫存器檔案214讀出多組運算元,且對應於發出之
指令的類型,在運算元收集單元216或218中收集該等組運 算凡(步驟612)。在步驟614中,對應於發出之指令的類型 的執行管線222或224經組態以執行發出之指令。在步驟 6 16中’使收集之運算元沿執行管線向下推進,且由發出 之指令的多個管級對其進行操作。連續進行步驟614^步 驟616,直至在步驟612中收集之所有運算元已離開執行管 線為止。當進行步驟614及616時,累加器226、228收集離
開執行管線222、224之運算元,且每隔一個Η時脈將該等 運算元向回寫入至暫存器檔案216中(亦即,一次半個運送 隊)。當在步額2中收集之所有運算元已離開執行管線時 (步驟620),針對在步驟610中發出之指令的_〇處理結 束。在圖5Α至圖5D中所展示之實例中’在圖%中所展示 之執行管線的狀態之後的兩個Η時脈後, 入至暫存器檀案216,且在圖5C中所展卞 態之後的四個Η時脈後,發生最終向回寫 216。 發生初始向回寫 之執行管線的狀 入至暫存器檔案 藉由上文所描述之本發明之實施 0 ,增加了經由一 SIMD處理器處理之資料的量而不拇 ' 執行管線之實體資 料寬度。結果,增加了 SIMD處理哭+丄 益之有效指令處理速 年0 此外’本發明提供-種對線串進行分組的靈活 方式β在 H6834.doc 14 1331300 上述本發明之實施例中,根據下式,將—運送隊組雜為一 32個線串之群組:運送i大小=(執行管線之數目㈣在各 執行管線中之資料路徑之數目)χ(料脈速率與了時脈速率 之比率)=2χ8χ2=32。本發明所提供之靈活性在於:可調整 運送隊大小。舉例而言,t在執行f線之間交替時,藉由 在每第四個T時脈上或每隔―射時脈將指令發出至純 管線,運送隊大小可增加至64。
具有較大之運送隊大小之優點為:在圖形處理中,許多 執行之指令為諸如紋理的記憶體存取。若#在大群組之相 關記憶體存取而非小群組之記憶體存取,貝,】由記憶體系統 更有效地執行此等指令。藉由將線串叢集在_起或運送, 本發明提供更大之記憶體效率。使用過大之運送隊的不足 為:諸如分支之物導致在—運送隊中之某些線串執行愈在 同一運送隊中之其他線申執行之不同的指令。在該情況 下’由於在同-運送隊内之所有線串—次僅可執行一個指 令,因此將降低效能。 雖然上述針對本發明之實施例,但可設計本發明之其他 及進-步實施例而不偏離其基本範疇。本發明之範疇 以下申請專利範圍確定。 【圖式簡單說明】 圖1為實施具有複數個8麵處理器之GPU之電腦系統的 簡化方塊圖。 為根據本發明之一實施例之SIMD處理器的方塊圖。 圖3為圖2中所示以_處理器之指令調度翠元的方塊 116834.doc •15· 1331300 圖 圖4為展示指令緩衝器之内容的概念圖。 圖5A-5D說明經由81厘!)執行管線對線串群組的處理。 圖6為成明當執行用於綠虫 „ 線串群組的指令時,由SIMD處理 益進行之處理步驟的流程圖。 【主要元件符號說明】 100
110 112 120 122
電腦系統 中央處理單元 系統記憶體 圖形處理單元 介面單元 SIMD處理器 記憶體控制器 區域圖形記憶體 SIMD處理器 指令處理部分 指令調度單元 暫存器檔案 運算元收集單元 運算元收集單元 資料處理部分 第一執行管線 第二執行管線 累加器 !24-1} 124-2, ..., 124-Kf 126 130 200 210 212 214 216 218 220 222 224 226 116834.doc 1331300 228 累加器 310 指令緩衝器 314 指令快取記憶體 320 發出邏輯 322 計分板
116834.doc 17-
Claims (1)
- 、申請專利範圍: 一種經由複數個執行 其包括以下步驟:來處理電腦程式指令之方法, 發出-用於-多個線串群组的指令; 以一第一時脈迷 元;及 叹果夕組與該指令相關聯之運算 執行管脈:率將該等所㈣之運算元供應至該等 其中在該群組中之多 行管線中㈣供串的數目等於在該複數個執 率叙1宽β,Β.、’仫的總數目乘以該第二時脈速 千興該第一時脈速率之比率。 如請求項1之方法,其中 —沪八4 Μ第一時脈速率序列地發出 速率收集多組運算心中之每-者’以該第-時脈 如請求項2之方法,Α 4 „ 少兩種猫'、進—步包括將該等指令分類為至 類51中之一者的步驟,1 千浐八 八中將與—第一類型之若 干礼7相關聯的若干運算元 將ik — # 應至該第一執行管線,且 、與-第二類型之若干指令相 該第二執行管線。 +運异兀供應至 如請求項3之方法,其中將— nt μ 第一類型之一指令供應至 該第-執行管線及該第:執㈣線中之—者。 如請求項1之方法,其中該第 速率的至少兩^ 彳脈料相第-時脈 如青长項1之方法,其中該指 一 匕括 在-序列將由該 834.doc 1331300 線串群組執行之指令中的指令,且該等多組運算元中之 每一組對應於在該群組中之該等線串中的一者。 7.如請求項6之方法,其中該發出之步驟包含自一包括複 數個指令之指令缓衝器選擇一指令的步驟。 116834.doc
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/292,614 US7836276B2 (en) | 2005-12-02 | 2005-12-02 | System and method for processing thread groups in a SIMD architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200809615A TW200809615A (en) | 2008-02-16 |
TWI331300B true TWI331300B (en) | 2010-10-01 |
Family
ID=38120161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW095144756A TWI331300B (en) | 2005-12-02 | 2006-12-01 | System and method for processing thread groups in a simd architecture |
Country Status (4)
Country | Link |
---|---|
US (1) | US7836276B2 (zh) |
JP (1) | JP4292197B2 (zh) |
CN (1) | CN100538628C (zh) |
TW (1) | TWI331300B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI562074B (en) * | 2011-11-30 | 2016-12-11 | Intel Corp | Method to provide vector horizontal compare functionality and processor thereof |
US10318291B2 (en) | 2011-11-30 | 2019-06-11 | Intel Corporation | Providing vector horizontal compare functionality within a vector register |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7925860B1 (en) * | 2006-05-11 | 2011-04-12 | Nvidia Corporation | Maximized memory throughput using cooperative thread arrays |
US7484076B1 (en) * | 2006-09-18 | 2009-01-27 | Nvidia Corporation | Executing an SIMD instruction requiring P operations on an execution unit that performs Q operations at a time (Q<P) |
JP4973355B2 (ja) * | 2007-07-18 | 2012-07-11 | トヨタ自動車株式会社 | 内燃機関の排気浄化システム |
US8578387B1 (en) * | 2007-07-31 | 2013-11-05 | Nvidia Corporation | Dynamic load balancing of instructions for execution by heterogeneous processing engines |
US9552206B2 (en) * | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
US9830156B2 (en) * | 2011-08-12 | 2017-11-28 | Nvidia Corporation | Temporal SIMT execution optimization through elimination of redundant operations |
CN104081340B (zh) * | 2011-12-23 | 2020-11-10 | 英特尔公司 | 用于数据类型的下转换的装置和方法 |
JP2014016894A (ja) | 2012-07-10 | 2014-01-30 | Renesas Electronics Corp | 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム |
KR101319287B1 (ko) | 2013-03-08 | 2013-10-17 | 주식회사 에이디칩스 | 파이프라인 구조를 갖는 프로세서 |
US9183611B2 (en) * | 2013-07-03 | 2015-11-10 | Apple Inc. | Apparatus implementing instructions that impose pipeline interdependencies |
US9772867B2 (en) * | 2014-03-27 | 2017-09-26 | International Business Machines Corporation | Control area for managing multiple threads in a computer |
JP5630798B1 (ja) * | 2014-04-11 | 2014-11-26 | 株式会社Murakumo | プロセッサーおよび方法 |
KR102332523B1 (ko) | 2014-12-24 | 2021-11-29 | 삼성전자주식회사 | 연산 처리 장치 및 방법 |
US9727944B2 (en) * | 2015-06-22 | 2017-08-08 | Apple Inc. | GPU instruction storage |
GB2540937B (en) * | 2015-07-30 | 2019-04-03 | Advanced Risc Mach Ltd | Graphics processing systems |
US9921838B2 (en) * | 2015-10-02 | 2018-03-20 | Mediatek Inc. | System and method for managing static divergence in a SIMD computing architecture |
US10410097B2 (en) * | 2016-06-06 | 2019-09-10 | Mutualink, Inc. | System and method for distributed intelligent pattern recognition |
US11016932B2 (en) | 2017-09-21 | 2021-05-25 | Alibaba Group Holding Limited | Systems, methods, and apparatuses for simplifying filesystem operations utilizing a key-value storage system |
MX2020013851A (es) * | 2018-06-19 | 2021-03-25 | Sicpa Holding Sa | Proteccion antifalsificacion de archivos digitales. |
US11360778B2 (en) * | 2019-12-11 | 2022-06-14 | Oracle International Corporation | Dynamic insights extraction and trend prediction |
US20210182073A1 (en) * | 2019-12-13 | 2021-06-17 | Yale University | Modular, extensible computer processing architecture |
US20230069890A1 (en) * | 2021-09-03 | 2023-03-09 | Advanced Micro Devices, Inc. | Processing device and method of sharing storage between cache memory, local data storage and register files |
US20230086989A1 (en) * | 2021-09-17 | 2023-03-23 | Nvidia Corporation | Parallel processing of thread groups |
Family Cites Families (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5421028A (en) | 1991-03-15 | 1995-05-30 | Hewlett-Packard Company | Processing commands and data in a common pipeline path in a high-speed computer graphics system |
US5579473A (en) | 1994-07-18 | 1996-11-26 | Sun Microsystems, Inc. | Interface controller for frame buffer random access memory devices |
US5815166A (en) | 1995-03-24 | 1998-09-29 | 3Dlabs Inc., Ltd. | Graphics subsystem with slaveable rasterizer |
US6178481B1 (en) | 1995-12-18 | 2001-01-23 | Texas Instruments Incorporated | Microprocessor circuits and systems with life spanned storage circuit for storing non-cacheable data |
US5999727A (en) * | 1997-06-25 | 1999-12-07 | Sun Microsystems, Inc. | Method for restraining over-eager load boosting using a dependency color indicator stored in cache with both the load and store instructions |
US5838988A (en) * | 1997-06-25 | 1998-11-17 | Sun Microsystems, Inc. | Computer product for precise architectural update in an out-of-order processor |
US5958047A (en) * | 1997-06-25 | 1999-09-28 | Sun Microsystems, Inc. | Method for precise architectural update in an out-of-order processor |
US5860018A (en) * | 1997-06-25 | 1999-01-12 | Sun Microsystems, Inc. | Method for tracking pipeline resources in a superscalar processor |
US5890008A (en) * | 1997-06-25 | 1999-03-30 | Sun Microsystems, Inc. | Method for dynamically reconfiguring a processor |
US5978864A (en) * | 1997-06-25 | 1999-11-02 | Sun Microsystems, Inc. | Method for thermal overload detection and prevention for an intergrated circuit processor |
US5948106A (en) * | 1997-06-25 | 1999-09-07 | Sun Microsystems, Inc. | System for thermal overload detection and prevention for an integrated circuit processor |
US6658447B2 (en) * | 1997-07-08 | 2003-12-02 | Intel Corporation | Priority based simultaneous multi-threading |
GB9716251D0 (en) | 1997-08-01 | 1997-10-08 | Philips Electronics Nv | Attribute interpolation in 3d graphics |
US5996060A (en) | 1997-09-25 | 1999-11-30 | Technion Research And Development Foundation Ltd. | System and method for concurrent processing |
US6771264B1 (en) | 1998-08-20 | 2004-08-03 | Apple Computer, Inc. | Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor |
AU5688199A (en) | 1998-08-20 | 2000-03-14 | Raycer, Inc. | System, apparatus and method for spatially sorting image data in a three-dimensional graphics pipeline |
US6704925B1 (en) | 1998-09-10 | 2004-03-09 | Vmware, Inc. | Dynamic binary translator with a system and method for updating and maintaining coherency of a translation cache |
US6266733B1 (en) | 1998-11-12 | 2001-07-24 | Terarecon, Inc | Two-level mini-block storage system for volume data sets |
US6279100B1 (en) * | 1998-12-03 | 2001-08-21 | Sun Microsystems, Inc. | Local stall control method and structure in a microprocessor |
US6222550B1 (en) | 1998-12-17 | 2001-04-24 | Neomagic Corp. | Multiple triangle pixel-pipelines with span-range pixel interlock for processing separate non-overlapping triangles for superscalar 3D graphics engine |
US6418513B1 (en) | 1999-06-25 | 2002-07-09 | International Business Machines Corporation | Queue-less and state-less layered local data cache mechanism |
US6463507B1 (en) | 1999-06-25 | 2002-10-08 | International Business Machines Corporation | Layered local cache with lower level cache updating upper and lower level cache directories |
US6405285B1 (en) | 1999-06-25 | 2002-06-11 | International Business Machines Corporation | Layered local cache mechanism with split register load bus and cache load bus |
US6446166B1 (en) | 1999-06-25 | 2002-09-03 | International Business Machines Corporation | Method for upper level cache victim selection management by a lower level cache |
US6397300B1 (en) | 1999-06-25 | 2002-05-28 | International Business Machines Corporation | High performance store instruction management via imprecise local cache update mechanism |
US6434667B1 (en) | 1999-06-25 | 2002-08-13 | International Business Machines Corporation | Layered local cache with imprecise reload mechanism |
US6559852B1 (en) | 1999-07-31 | 2003-05-06 | Hewlett Packard Development Company, L.P. | Z test and conditional merger of colliding pixels during batch building |
US6279086B1 (en) | 1999-08-04 | 2001-08-21 | International Business Machines Corporation | Multiprocessor system bus with combined snoop responses implicitly updating snooper LRU position |
US6819325B2 (en) | 2000-03-07 | 2004-11-16 | Microsoft Corporation | API communications for vertex and pixel shaders |
KR100333375B1 (ko) * | 2000-06-30 | 2002-04-18 | 박종섭 | 반도체 소자의 게이트 제조방법 |
US6750869B1 (en) | 2000-10-13 | 2004-06-15 | Sony Corporation | Method and design for improved fragment processing |
JP2003035589A (ja) | 2001-07-19 | 2003-02-07 | Yokogawa Electric Corp | フロート・レベル計 |
US6947047B1 (en) * | 2001-09-20 | 2005-09-20 | Nvidia Corporation | Method and system for programmable pipelined graphics processing with branching instructions |
US20030097395A1 (en) * | 2001-11-16 | 2003-05-22 | Petersen Paul M. | Executing irregular parallel control structures |
US6816161B2 (en) | 2002-01-30 | 2004-11-09 | Sun Microsystems, Inc. | Vertex assembly buffer and primitive launch buffer |
US7185181B2 (en) * | 2002-08-05 | 2007-02-27 | Intel Corporation | Apparatus and method for maintaining a floating point data segment selector |
US7328438B2 (en) * | 2003-03-27 | 2008-02-05 | International Business Machines Corporation | Deallocation of computer data in a multithreaded computer |
US7714858B2 (en) | 2003-04-18 | 2010-05-11 | Hewlett-Packard Development Company, L.P. | Distributed rendering of interactive soft shadows |
US7015718B2 (en) * | 2003-04-21 | 2006-03-21 | International Buisness Machines Corporation | Register file apparatus and method for computing flush masks in a multi-threaded processing system |
US7139003B1 (en) | 2003-12-15 | 2006-11-21 | Nvidia Corporation | Methods of processing graphics data including reading and writing buffers |
US7103720B1 (en) | 2003-10-29 | 2006-09-05 | Nvidia Corporation | Shader cache using a coherency protocol |
US8823718B2 (en) | 2003-11-14 | 2014-09-02 | Microsoft Corporation | Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques |
US7904905B2 (en) * | 2003-11-14 | 2011-03-08 | Stmicroelectronics, Inc. | System and method for efficiently executing single program multiple data (SPMD) programs |
US7278011B2 (en) * | 2004-04-08 | 2007-10-02 | International Business Machines Corporation | Completion table configured to track a larger number of outstanding instructions without increasing the size of the completion table |
US7552316B2 (en) | 2004-07-26 | 2009-06-23 | Via Technologies, Inc. | Method and apparatus for compressing instructions to have consecutively addressed operands and for corresponding decompression in a computer system |
US7237094B2 (en) * | 2004-10-14 | 2007-06-26 | International Business Machines Corporation | Instruction group formation and mechanism for SMT dispatch |
US7254697B2 (en) * | 2005-02-11 | 2007-08-07 | International Business Machines Corporation | Method and apparatus for dynamic modification of microprocessor instruction group at dispatch |
US7447873B1 (en) * | 2005-11-29 | 2008-11-04 | Nvidia Corporation | Multithreaded SIMD parallel processor with loading of groups of threads |
-
2005
- 2005-12-02 US US11/292,614 patent/US7836276B2/en active Active
-
2006
- 2006-12-01 TW TW095144756A patent/TWI331300B/zh active
- 2006-12-04 JP JP2006327322A patent/JP4292197B2/ja active Active
- 2006-12-04 CN CN200610161033.XA patent/CN100538628C/zh active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI562074B (en) * | 2011-11-30 | 2016-12-11 | Intel Corp | Method to provide vector horizontal compare functionality and processor thereof |
TWI574208B (zh) * | 2011-11-30 | 2017-03-11 | 英特爾股份有限公司 | 提供向量水平比較功能之方法與其處理器 |
US9665371B2 (en) | 2011-11-30 | 2017-05-30 | Intel Corporation | Providing vector horizontal compare functionality within a vector register |
US10318291B2 (en) | 2011-11-30 | 2019-06-11 | Intel Corporation | Providing vector horizontal compare functionality within a vector register |
Also Published As
Publication number | Publication date |
---|---|
JP4292197B2 (ja) | 2009-07-08 |
TW200809615A (en) | 2008-02-16 |
CN1983165A (zh) | 2007-06-20 |
US20070130447A1 (en) | 2007-06-07 |
US7836276B2 (en) | 2010-11-16 |
JP2007157154A (ja) | 2007-06-21 |
CN100538628C (zh) | 2009-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI331300B (en) | System and method for processing thread groups in a simd architecture | |
Fang et al. | swdnn: A library for accelerating deep learning applications on sunway taihulight | |
TWI308295B (en) | Apparatus and method for switchable conditional execution in a vliw processor | |
TWI338861B (en) | System and method for grouping execution threads | |
CN105579959B (zh) | 硬件加速器虚拟化 | |
US7962907B2 (en) | Scheduling technique for software pipelining | |
TWI514267B (zh) | 用於多股亂序處理器中之指令排程的方法及裝置與系統 | |
US8375176B2 (en) | Lock mechanism to enable atomic updates to shared memory | |
US20130042090A1 (en) | Temporal simt execution optimization | |
US8868885B2 (en) | On-the-fly permutation of vector elements for executing successive elemental instructions | |
TWI338256B (en) | Method of optimizing multi-set context switch for embedded processors | |
TW201229898A (en) | Mechanism for conflict detection using SIMD | |
CN107092573A (zh) | 异构计算系统中的工作窃取 | |
TW200935300A (en) | Microprocessors and methods for executing macroinstructions | |
CN103827840B (zh) | 用于拷贝寄存器内容的处理器、方法和装置以及计算系统 | |
US10013290B2 (en) | System and method for synchronizing threads in a divergent region of code | |
US9030480B2 (en) | Triggering performance event capture via pipelined state bundles | |
US20110078418A1 (en) | Support for Non-Local Returns in Parallel Thread SIMD Engine | |
Zhang et al. | Exploiting different levels of parallelism in the quantum control microarchitecture for superconducting qubits | |
US20140258697A1 (en) | Apparatus and Method for Transitive Instruction Scheduling | |
US8055883B2 (en) | Pipe scheduling for pipelines based on destination register number | |
Lin et al. | On-GPU thread-data remapping for nested branch divergence | |
TWI512611B (zh) | 執行緒層級推測中之動態資料同步化技術 | |
TWI237788B (en) | Context execution in a pipelined computer processor | |
TWI464682B (zh) | 用於處理器之複數個指令排程方法 |