TW200529071A - Across-thread out of order instruction dispatch in a multithreaded microprocessor - Google Patents
Across-thread out of order instruction dispatch in a multithreaded microprocessor Download PDFInfo
- Publication number
- TW200529071A TW200529071A TW093138921A TW93138921A TW200529071A TW 200529071 A TW200529071 A TW 200529071A TW 093138921 A TW093138921 A TW 093138921A TW 93138921 A TW93138921 A TW 93138921A TW 200529071 A TW200529071 A TW 200529071A
- Authority
- TW
- Taiwan
- Prior art keywords
- thread
- instruction
- threads
- execution
- circuit
- Prior art date
Links
- 239000000872 buffer Substances 0.000 claims abstract description 78
- 238000012545 processing Methods 0.000 claims description 35
- 238000000034 method Methods 0.000 claims description 26
- 238000003860 storage Methods 0.000 claims description 17
- 238000000605 extraction Methods 0.000 claims description 8
- 239000000284 extract Substances 0.000 claims description 5
- 238000002360 preparation method Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 5
- 206010011469 Crying Diseases 0.000 claims description 3
- 238000009826 distribution Methods 0.000 claims description 3
- 230000008901 benefit Effects 0.000 claims description 2
- 239000008280 blood Substances 0.000 claims 2
- 210000004369 blood Anatomy 0.000 claims 2
- 208000027418 Wounds and injury Diseases 0.000 claims 1
- 238000009223 counseling Methods 0.000 claims 1
- 230000006378 damage Effects 0.000 claims 1
- 208000014674 injury Diseases 0.000 claims 1
- 239000007788 liquid Substances 0.000 claims 1
- 230000002085 persistent effect Effects 0.000 claims 1
- 239000006187 pill Substances 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 10
- 238000013461 design Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 229910052797 bismuth Inorganic materials 0.000 description 3
- JCXGWMGPZLAOME-UHFFFAOYSA-N bismuth atom Chemical compound [Bi] JCXGWMGPZLAOME-UHFFFAOYSA-N 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- PEDCQBHIVMGVHV-UHFFFAOYSA-N Glycerine Chemical compound OCC(O)CO PEDCQBHIVMGVHV-UHFFFAOYSA-N 0.000 description 2
- KDLHZDBZIXYQEI-UHFFFAOYSA-N Palladium Chemical compound [Pd] KDLHZDBZIXYQEI-UHFFFAOYSA-N 0.000 description 2
- 239000007853 buffer solution Substances 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 241000208140 Acer Species 0.000 description 1
- 102100035954 Choline transporter-like protein 2 Human genes 0.000 description 1
- 101000948115 Homo sapiens Choline transporter-like protein 2 Proteins 0.000 description 1
- 206010061218 Inflammation Diseases 0.000 description 1
- 241000282376 Panthera tigris Species 0.000 description 1
- 241001122767 Theaceae Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000010009 beating Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000000747 cardiac effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000428 dust Substances 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 210000003746 feather Anatomy 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000004054 inflammatory process Effects 0.000 description 1
- 229910052763 palladium Inorganic materials 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002028 premature Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 241000894007 species Species 0.000 description 1
- 210000002784 stomach Anatomy 0.000 description 1
- 230000004083 survival effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
- 239000002023 wood Substances 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/3802—Instruction prefetching
-
- 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
Description
200529071 九、發明說明: 【發明所屬之技術領域】 本發明係大致有關於多執行緒的微處理器,並且 疋有關於在不考慮執行緒之間的順序下分 - 微處理器甲執行之指令。 “夕執订緒的 【先前技術】 為了迎合電玩遊戲者、模擬程式創造者以及 式設計者的需求,複雜的洽 匕的私 雑的%圖協同處理器( 已經針對各種的雷聪▲处、“B Processor) -般目的之,1\ 開出來。這些通常是運作在 产理m、处理早70或其它的主控處理器的控制下之 處理裔典型地係被最佳化 的俊+,、 執仃% "、貧料的轉換成為影像 '、μ衫像可被顯示在桿準的氺恤, 顯示裝置上。在一種常見的的:栅(一)為基礎之 何二豪枓” _ ' &圖處理器係被提供“幾 =’:幾何資料通常包含'…在一個將被描緣的 其它多邊形)以及額外的資料 -角形或疋 類似者。繪圖處理哭係在二如,紋理、光照模型與 口处里。°係在成何貧料上執行模型建立、視點' 透視、光照與類似的轉換(此 ·' ._ . ±;fe 、(匕、.及通吊被稱為“頂點,,處理)。 在廷些轉換之後,“像素,,虛 # n ” 係開始。在像素處理期間, 成何貝枓係被轉換成光柵資料, ^ ^ , /、 奴係包含在一個對應 方;了見的區域之陣列中的每個樣本位置的色彩值與直它資 訊,進一步的轉換可被施 ' 人沏P 4 尤柵貝枓,其係包含紋理混 =?過遽一—)(減少樣 £在頒示裳置中之像素的數目)。最終結果是-組可被 200529071 提供至顯示裝置的色彩值。 為了=暢的動晝與即時的響應, 被要未以最小大約3㈣的速率完成—個新㈣ 料的該些運算。隨著影像具有 貝 ^ ^ 更細的紋理、箄 寺^成更加真貫,對讀圖處理器的效能 為了幫助符合這此要屯 甘曰曰加。 二要求’某些現有的繪理 把一種利用平行操作的多執 DD係貝 點處理划門,抖认—7 者之木構。舉例而言,在頂 』處理期間#於母個頂點通常是執行相、 地,在像素處理期間,對於每個樣本位置或:,類似 常是執行相同的運算。在I —疋象素位置通 向是獨立於在其它了;Pf ”)上的運算傾 (像素)可被處理為執行一彳 , ,母個頂點 ,通的程式係提供一個指令序列給 :::者: 心内的執行單元;在某個特 。。之執订核 是在程式的序列中之不同點之處。行绪可能 間(在此被稱為延遲彡τ & ' s令的執行時 早兀-般是以管線化的方式被做成,執仃 所有在前的指令# # 一個4β令可在 7子日7凡成之前就被發出 不需要尚未完成的+ β /、要5亥弟二個指令並 凡成的丸令之執行所產生的 在此種處理器中,執行核心通常是被 … 式(亦即,一個央 ^ 〇又汁以循環的方 二執行緒的招A、分,,, 接者一個來自第 m、“ 7 “匕類推)來提取將4 了不同的有1郝 灯緒而被執行之指今, 勺}个1】的有政執 現給-個發出控制:地將母個提取出的指令呈 ^路。錢出控”㈣保持該提取出 200529071 !指令’直到其來源資料可利用且執行單元備妥為止,接 么出该提取出的指令至該些執行單元。由於該些執行 f疋獨立的’因此循環的發出係降低-個指令將會依賴-:::然在執行的指令之結果的可能性。因此,在一個執行 7之延遲可藉由從另—個執行緒提取並且發出— 二令而被隱藏。譬如’-個典型的指令可能有2。個時 °勺I遲’此在該核心支援20個執行緒時可被隱藏。 ^%的發出並非總是能夠隱藏該延遲。例如, a :、處理程式經常包含從系統記憶體提取紋理資料的指 :脈令可能具有非常長的延遲(例如,超過100個 二。在第-執行緒的-個紋理提取指令被發出之 W制電路可以繼續發出指令 ==之不依賴該紋理提取指令之後續的指令),直到 工制電路來到-個來自該第-執行緒的需要該纹理 法被發出。於是一 =令完成之前,此指令無 其係在開二Λ _電路係停止發出指令,並且 #问%丹度發出指今 成。因此,“氣、、包,>/ 提取指令被完 行單元夕„ 一 現在該執行管線中,此係造成執 早-之閒置的時間,並且在該處理器中導 一種降低此種無效率的方式是藉由增加可同羊 :執行的執行緒數目。然而,這是-種昂貴的解ϋ核 因為每個執行緒都需要額外的電路。例二 ==, 在此平仃設計中之頻繁的執行緒執里^生 設置有其本身專用的資料暫存器組。增力:=緒-般都 曰加執仃緒的數目係 200529071 增加所需的暫存器數目, 一 此了月b顯者地增加處理器晶片的 。又彳的稷雜度以及整體晶片的面積。其它用於 多個執行緒的電路,例如,各 又板 母個執仃緒都維持一個程式計 數為之程式計數器控制邏輯亦 得更複雜且佔用更多的面積者執…數目增加而變 氣、、包==一種有效率且有效地降低在執行管線中的 η X @在晶片面積上並不需要 心架構將會是所期望的。 曰加之執仃核 【發明内容】 本發明的實施例係提供 在一個多執行緒的微處理 :=如=圖處理器)中分派指令之系統及方法,其係以 取到-= Γ = 執行^之間的順序。指令係被提 自每個執二+ ’該指令緩衝器係被配置以儲存來 自母個執仃緒的一個指一 绣徐哭由aa 個刀派電路係判斷在該指令 緩衝為中的哪些指令係 妥的指令;來自住彳、未執仃,並且可以發出任何備 行绪W八任何一個執行緒的指令可在來自另一個執 订緒的指令之前被於屮, 緩f哭由 又 不論哪個指令是先被提取到該 、戍衡态中。一旦夾一 出,寺疋的執行緒之一個指令已被發 出,則该提取電路可以用 1¾ ,,.. 爪自该執行緒的下一個指令填入 豕飞利用的緩衝器位置中。 根據本發明的一項 的孚γ w 一種被配置用於一些執行緒 的千仃處理之微處理器 一個於八& 、 ,、破k出,其中每個執行緒係包含 令缓彳M % 係包含一個執行模組、一個指 7、、友衝杰、一個提取 乂及一個分派電路。該執行模組 200529071 行所有的執行緒之指令。該指令緩衝器係包 置’每個儲存位置係與—個別的執行緒相關 ==:係被配置以至少部分是根據在該指令缓衝 扞緒中夕一m罝疋否為可利用的,來選擇該些執 的執—绪2订緒’並且提取在該些執行緒中之該所選 :==7的下—個指令到該指令緩衝器中。該分 二:=!:判斷在該指令緩衝器所館存的指令中之 那二::…可執行的,並且選擇該些備妥的指令中之 以被發出至該執行單元。該提取電路可用第一順 t提Γ指令到該指令緩衝器中,並且該分派電路可用不 同於❹-順序的第二順序來選擇備妥的指令。 在某些實施例中,該微處 存指令的指令快取記憶體,並且該提二儲 置以精由傳送-個包含—程式計數 咬、乂被配 快取記憶體來提取該下-個指令。^取2求至該指令 計數器邏輯、-個選擇邏輯電路以及 =:裁路電可路包一 式計數器邏輯係被配置以對於每個執行 ^路。該程 程式計數器的值。該選擇邏輯電個候選的 根據判斷在該指令緩衝器中的哪一Ύ至f部分是 的,來選擇該些執行緒中之一個執行緒t:置擇:;利用 置以提供—個對應的選擇信號。該 係破配置以接收該選擇信號,並且傳送對 裁電路 ㈣之候選的程式計數器的值至該指令快取記μ選的執 外的實施例中,該些執行緒可包含-個具有第::行:: 200529071 型的第-執行緒群組以及一個具有第二執行緒類型的第二 ^丁緒群組。該選擇邏輯電路可進—步被配置以至少部分 =根據每個執行緒之個別的執行緒類型來選擇: 中之一個執行緒。 一 $ 儲存㈣例中,該微處理器亦可包含-個被配置以 = ::iT緒的資料之暫存器檑,其係包含藉由該 板(sh所產生的結果資料。該分派電路可包含—個記分 路==)電路、一個排程器電路以及—個發出器電 且被配置以產:路係耦接至該指令緩衝器與暫存器檔,並 令,其令給ΐ:::備妥信號給該指令緩衝器"每個指 ^ 9令的備妥信號至少部分是栌撼兮扣 -個來源運算元U存在於 々的 致能。該被耦拯v 孖时榀中而被致能或不被 A 7刀板與指令緩衝器的排程哭電$ # # 配置以選擇在該指令缥n ^ 卩担的電路係被 妥信號係被致能:二:::令中之-個指令,其備 個對應的許可信號:I 要务出的指令,並且傳送- 至該指令緩衝器指令緩衝器。該發出器電路係㈣ 應於該許可信號 係進-步破配置以回 發出器電路。該於 ^王裔電路所選出的指令至該 該所選的指令之來源::路係被配置以從該暫存器檔收集 源運算元至該執扞γ π70,並且傳送該所選的指令與來 路係進一步被=r組。在另外的實施例中,該排程器電 該指令緩衝器中的日±至少刀疋根據每個指令已被儲存在 根據本發明^間長度來選擇下一個要發出的指令。 找乃的另一 Μ 、、” ’,一種用於在一個被配置用 10 200529071 於多個執行緒的同時執行之微處理器中處 被提出。來自該此勃γ & 万去係 二執仃緒中之第一執行緒的第一 提取到一個指令緩徐哭+ ?日7係被 來自每個執行緒的_個以…友衝^被配置以健存 中之第二執行緒的第接著’“該複數個執行緒 該第1令 係被提取到該指令緩衝器中。 備妥以執行,、並二;中之一或多個指令係被判斷是否為 指令係被發出以用於热 > 個備文的 該第一指令尚未两文乂執仃’而 擇…,八執行的情形中’該第二指令係在選 擇4弟一私々之前被選出。 k 以下的詳細說明 的本質請的圖式將會提供對於本發明 貝/、k點之更佳的理解。 【實施方式】 本發明的實施例係提供用於在—個多執 益(例如是繪圖處理哭A t 俽處理 W Θ ρ° )中致能指令分派之系統及方法,甘 亚非疋根據執行错的 /、 緩衝器中,該而定。指令係被提取到-個指令 的一個指Α。二:緩衝益係被配置以儲存來自每個執行緒 些指令係:妥來:Γ電路係判斷在該指令緩衝器中的哪 自任何-個執,π亚且可以發出任何備妥的指令;來 前被發出,而仃緒的指令可在來自另-個執行緒的指令之 旦來1主論哪個指令是先被提取到該緩衝器中。- ^ 疋的執行緒之—個指令已被發出,則哼提& π 路係用來自兮舢/ I 只】4知取電 器位置中。因\的下「個指令以填入該可利用的緩衝 ,在孩執行管線中由於被阻塞的執行緒所 11 200529071 造成的閒置時間可誠& 辟 _ 、 間了被鈿紐。譬如,若該些執行緒中之一個 ,:緒:阻塞(因為其下一個指令是根據一個尚未完成的 "而疋)’該處理器可以在該段時間繼續發出來 其它的執行緒之任何數目的指令。 弟1圖是根據本發明的—個實施例之電腦系統⑽的 方塊圖。電腦系統1〇〇係包含中央處理單元(㈣1〇2以 系統記憶體104,其係經由匯流排1〇6而連通。使用者輪 入係從-或多個叙接至匯流# 1〇6的使用者輸入裳置 (例士鍵釦、滑鼠)來加以接收。可見的輸出係被提 供在以像素為基礎的顯示裝£ 11〇上(例如,習知的⑽ 或=LCD為基礎的監視器)’其係在純至系統匯流排⑽ =繪圖處理子系統112的控制下操作。系統碟>{ 128與其 它組件’例如’―或多個可卸除的儲存裝置129(例如,、軟 式磁碟機、光碟⑽機以及/或是議光碟機),亦可被耦 接至系統匯流排106。系統匯流排106可利用包含PCI (週 邊組件互連)、AGP(加速繪圖埠)以及/或是高速pci(pci_E) 的各種匯流排協定中之一或多種協定來做成,·例如是習知 的北橋與南僑(未顯示)之適當的“橋接,,晶片可被設置以互 連各種組件及/或匯流排。 纟f圖處理子系統π 2係包含繪圖處理單元(GPU)丨丨4、 、曰圖圯fe體11 6以及掃描輸出(scan〇ut)控制邏輯12〇,例 =,其可利用一或多個例如是可程式化的處理器以及/或 是特殊用途的積體電路(ASIC)的積體電路元件而被實施。 GPU 114 T被配置以執行各種的工作’包含從系統匯流排 12 200529071 與繪圖記憶體i i 6 。GPU 114之相關 1 0 6所供應的繪圖資料產生像素資料、 互動以儲存及更新像素資料、與類似者 的特點係在以下進一步被描述。 π袖楓出控 •、、日间(傯體11 6 (或县Α甘 些實施例中為從系統記憶體104)讀 彳在某 ::料至顯示裝…被顯示。在=二: 二固定的更新速率(例如,Ηζ)來發生;該更新速 ^ 用者可選的參數。掃描輪出控制邏輯12〇 '、η以執行其它運算,例如,調整 色务# · 4 1 扣π特疋的顯不硬體之 李二 ::像素資料與例如是從緣圖記憶體U6、 /、、◊先。己fe to 1 04或其它的資料來 視訊或是游浐舌田旦/庙斗 原(未顯不)所獲得之一個 ”:: 似者的資料來產生合成的榮幕 於.等等數位像素f料成為供顯示|置使用的類比信 的。配置脖Ιΐ體認到的是,_處理子系統112之特定 -己置對於本發明而言並非是重點。 在=:00的運算期間’ CPU102係執行各種的程式, = 業糸統⑽程式與應用程式以及用於繪圖處理子 -如動程式。這些程式可以是-般的習知設計。 面二圖丨驅動程式可以實施一或多個標準的應用程式介 ,1 ;"J">〇pen GL'^^^-ca^D3D,. 處理子系、請通訊;任意數目的Αρι或是Αρι 式可皮支援’並且在某些實施例中,個別的驅動程 式係實施不同的API。作業系統程式及/或應用程 手、錯由若周用(__)適當的API函數呼 13 200529071 驅動程式經由系統匯流排⑽來傳輸繞圖資料或像素資料 至緣圖處理子系統112,以調用GPU114的各種财函數、 等等。藉由繪圖驅動程式回應於一個API函數呼叫所傳送 料圖處理H統m之特定的命令及/或資料可能會^ 著GPU 114的做法而變化’並且該繪圖驅動程式亦可能: 傳送實施不受作業系統或應用程式控制之額外的功能^ 如’特殊的視覺效果)之命令及/或資料。 根據本發明的一個實施例,Gpu 114係被配置以用於 大量的執行緒之同時處理,其中每個執行緒係對應於一個 獨;立的處理指令之序列。GPU 114可以在任何時點執行來 自忒些執行緒中之任一個執行緒的下一個指令。 例如’影像的每個頂點可利用一個別的執行緒 理’其中同時的執行緒係在影像之不同的資料上執行相同 的處理程式;在-個特定的時間點,不同的執行緒可能θ 在該程式中之不同的點之處。在某些實施例中,可妒有Τ 種執行緒類型,其中一種類型之所有的執行緒係執二目= 的處理程式,而不同類型的執行緒係執行不同的處理程 式。例如,可能有一種“頂點,,執行緒類型,其處理程心 包含幾何與光照轉換,以及一種“像素,,執行緒類型,复产 理程式:包含紋理混合以及過度取樣的資料之縮減過濾广 在第1圖的實施例中,GPU 114係包含—些獨立的 =核心118,每個執行核心U8係被配置以處理從一些 打緒(未顯示)所收到的指令。Gp(J 114所支援之同時 行緒之最大數目是核心118的數目乘上每個核心之執行緒 14 200529071 的數目;譬如,在一個實施例中有八個核心、】i8,每個核 心ns最高可以支援16個執行緒,總數為128個同時執 行的執行緒。核心的數目以及執行緒的數目可以改變;例 如’可以有八個核心,每個核心支援24自執行緒(總數為 192個執行緒);十個核心’每個核心支援24個執行緒(總 數為2 4 0個執行緒)、等等。 每個執行核心118係、包含指令快取記憶體132、指令 ,取電路W、緩衝器138、分派電路14〇、包含一組執行 二兀(未顯示)的執行模組142、以及暫存器檔144。可以 是-般習知的設計之指令快取記憶體(1以心)132係儲存 可執行的指令’該些指令例如是從繪圖記憶體ιΐ6而被獲 得。在以士⑶中的每個指令可利用一個程式計數器⑽ 值來加以識別。提取電路136係從Icache 132提取由執 ㈣心U8所處歡所有㈣行緒之指令,其係維持在每 個執行緒之内依序的程式順序,並且供應提取出的指令至 在㈣時脈㈣’分派^⑷係從緩衝器 13k擇-個將被發出至執行模組⑷的指令。 行緒Πγ:例t ’緩衝器138係被配置以對於每個執 順子(個▲令’亚且維持每個執行緒之依序的程 i二:個時脈週期,分派電請係從緩衝器⑽ 、擇違些指令甲的一個推八 得來源、軍f - 、 、7用灰執行,從暫存器播144獲 、^几,並且傳送該指令與運算元至執行模袓 ^用於執行。分派電路140有利的是根據在緩衝器】 之那個指令的夹源】蛋f ^運异70已經是在暫存器檔】44中為可利 15 200529071 用的,來選擇下一個要執行的指八 個執行緒是該所選的指令之來源1: ’擇且可以在無關於哪 係監視緩衝器138,並且在提取電 從緩衝器m被發出之後,其係 丁、,者之一“已 令。於是,對於某-個特定的時脈緒的下一個指 式曰鉍女从士 脈週期而言,來自大部分 或疋所有的有效執行緒之指令 θ 刀 利用的4f n V 了月匕疋在緩衝器138中可 利用的,並且分派電路14〇 ^ 以璉擇來自任意執行緒的一 個私令,而不論哪個是上次被 136、键福一 1。。 、擇的執行緒。提取電路 、友“态138以及分派電路14〇 以下被描述。 之特疋的貫施例係在 執行模組142可以是一船羽4 立鉍s — 7 、白知的设計,並且可包含任 思數目之個別的執行單元。 邱拙可、士 ^ 二執订早疋中的某些或是全 ;破配置以用於該項技術已知的單一指合多重資 ⑻MD)的運算。執行模 &、^貝枓 #入月甘十、、 Z係攸y刀派電路140接收一個 元i 源$ r兀,根據該指令來處理該些來源運箕 兀,亚且儲存結果資料在暫存器槽14 - 有利的是對於藉由#_ μ 曰仔叩榀144 別勺八了早兀118所處理的每個執行緒都分 匕3個別的暫存器組,_ 从 错此避免在攸一個執行緒切換 存=4Bff要㈣暫存器地交換資料。被寫入暫 曾Γ \ 4的貧料係變成可利用作為後續的指令之來源運 异兀。該4匕扣八π各u ^ 來源運管-、曰7 ^ 4性上變化,並且可包含任意數目的 ’、$开兀以及任意的結果資料量及/或種類。 ' 7叙都具有某段與其相闕的延遲;換t之, 執行模組j42沾為―时 俠口之 、轨行早tl需要某個數目的時脈週期(其可 16 200529071 能是一或多個時脈週期} 石私士 ;木處理該指令並且寫入紝耍次u 至暫存器請。不同的指令可 、、、。果_貝料 一個簡單的向量加法運算可以僅 攻。例如, m ^ . 僅僅在一或二個時脈週期内 :° ’ 1〇0或更多個週期)。執行模組142的執行單= !的是以管線化的架構被做成,因而儘管有該延遲二有
::,?然可:分!:個指令;此種架構是該項技術Γ: ,不同的執仃早疋(或是執行單元群組 配於處理特定的指令疋特別適 ^ , 亥項技術中已知者,並且八、V 電路140可以在執行模組 且刀派 元(或是執行單元群组)以處理::擇一個適當的執行單 1*、且j Μ爽理一個特定的指令。 一個執行緒的指令可能具有 之資料的相依性;換+之,^亥執订緒的其它指令 的…姓 個指令可能會使用-個先前 的才日々之結果資料作為且夹 柯好人— 异X。—個具有資料相依 二“在其所依賴的指令之結果資料於暫存器播!44中 成^可利用的之前是無法執行的。若某一特定的執行緒之 :一:指令是一個具有此種資料相依性的指令時,則該執 2心被阻I。根據本發明的_個實施例,分派電路1⑼ J個叉阻塞的執行緒,並且從緩衝器138選擇一 们,:的執仃緒(其可以是任何不受阻塞的執行緒)之下一 6 7 2接著被發出,而不是等待該受阻塞的執行緒變成 不^卩基的。以此種方式,在一個執行緒内之延遲可藉由 執行另-個執行緒而被隱藏起來,因❿Gpu 114的效率係 被改善。 17 200529071 除了執行核心11 8之外,GPU 114亦可包含其它未展 不在第1圖中的特點,例如,用於接收及響應於經由系統 匯流排1 06所接收的命令之電路;此種電路可被配置以適 當地開始及/或終止在執行核心118中的執行緒。各種的 控制暫存器、狀態暫存器、資料快取記憶體與類似者都可 以是以全域、每個核心或是每個執行緒地被設置。此種特 點是該項技術中已知的,因而詳細的說明係被省略,因為 其對於理解本發明而言並非是重點。 、 ^,體認到的是,在此所述的系統是例示性的,並且 變化與修改是可能的。例如,繪圖處理器可利用任何適當 的2術而被實施為一或多個積體電路元件。繪圖處理器可 被安裝在一個擴充卡(其可包含一或多個此種處理器)之 上、或是被整合到一個系統晶片組中(例如,被整入到北 橋晶片幻。冑圖處理子系統可包含任意數量的專用输圖 仏體(某些實施方式可能沒有專用的繪圖記憶體),並且 可使用任意組合的系統記憶體與專用的繪圖記憶體。 a圖處理a中之執行核心、的數目是依據實施方式而 並二最佳的選擇—般是依據效能與成本之間的取捨 二:母:執打核心都可支援一或多種執行緒類型之同 中置有多個核心的情形i在相同的處理器 e . y 次疋不同地被配置。該些核心有利 的疋被做成不會共用執行 另〜 一侗诂山 早兀之獨立的千處理器,並且在 核心中執行一個特定的執行緒。 在—個特定的核心中之執行緒的數目亦可以根據特定 18 200529071 的實施方式與要被隱藏的延遲量來加以變化。以此種關 係,應能意到的是在某些實施例中,指令排序亦可被利 用來隱藏某些延遲。例如,如同該項 必貝技術中已知者,用於 繪圖處理器碼之編譯器可被最佳化 、 々文辨私式的指令,使 得若有產生資料的第一指令以及利 久〜用该貧料的第二指令 柃,則一或多個其它並不利用由該第— ^ 扣令所產生之資球斗 的指令係被設置在該第一與第二指 、 ^ y ^ 之間。此係容許一個 執行緒的處理在該第—指令正在 ^ 现订^仍然能夠繼續。同 樣在该項技術中已知的是, 耵於具有長延遲的指令而言, 在產生者與利用者之間設置足夠多 兮狂、严、s Α θ ^ 、蜀立指令來完全隱藏 该延遲通常是不實際的。在決 取 卜,K 妻旦L 母個核心的執行緒數目 上 了以考置此種最佳化之可丨田γ ,,., 之了利用性(或是欠缺此種最佳 化),例如,一個核心所支 取1 ^ , λΑ 机仃、、者數目可以根據任何 才日令之取大的延遲以及一個 A U ^ hh yv 、 9、為泽态可被預期在一個 取大之攻的私令與其第一個依附的 ^ e I -V' ft , * V曰々之間會提供的平均 (或疋取小或敢大的)指令數目而被決定。 用於一個執行核心的指令 緒之間共用、或可以是實際上二:體可以在該些執行 體可包含對應於每—種執行緒類=中:該指令快取記憶 是邏輯的分割’並且每個分割可進η::貫際的以及/或 之個別的執行緒之間 4所要地在錢型 门、、、田刀(或是不細分)。 用於一個執行核心的暫 包含一組暫存哭、, 子的杈有利的是每個執行緒都 一亚且可具有任意數目的讀取及/或寫入 19 200529071 埠。此外,可對於不同的執行緒設置實際上及/或邏輯上 個別的暫存器檔。 4 “疋取電路136、綾衝器138與分派電路的配 置也可被改變’但是現在將會描述特定的例子。第2圖是 根據本發明的一個實施例 料—個執行核心、⑴的提取 -路140與緩衝器138之簡化的方塊圖。在此實施例中, 執行核心118係被配置以同時處理達到最大數目购執 行緒,儘管將瞭解到的是,在任一特定的時間點個執 行緒中的某些或是全部執行緒可能是閒置或是無作用的。 提取電路136係、包含數目⑺個程式計數器邏輯區塊 202以及一個由選擇邏輯雷 伴1科私路206所控制的仲裁單元204。 (在此’類似的物體之多個例子係利用識別該物體的元件 符號=及識別所需的例子之括號内的數字來表示。) 每個程式計數器邏輯區塊202均對於在該#個執行绪 中之-個別的執行緒之下—個順序的指令產生一個 數器(PO值。程式計數器邏輯區塊2G2可以是—般用於更 新程式計數器之習知設計’並且可包含遞增的計數器、分 支檢測邏輯以及其它對於本發明而言並非重點的特點。 由PC邏輯區塊202所產生的Pc值係提出給仲裁單元 204’該仲裁單元204係響應於一個由選擇區塊2〇6(在以 下敘述)所提供的選擇信號SEL/,以從該些執行緒中之一 個執行緒(在此表示為執行緒7以作為參照)選擇該些代 信號PCK其巾〇^η—υ。該所選的信號pc/係被傳送至 Icache 132 ’該Icache 132係傳回對應的指令至緩衝器 20 200529071 138,並且對應的執行緒之識別符u)係被 138。 、芏、友衝斋 緩衝器138係包含#個儲存位置2〇8(例如,其 暫存器而被做成),-個儲存位置m係對應於該^執 行緒之-個執行緒,並且一個陣列21〇被配置以儲存^個 有效的位w每個暫存器有—個有效的位元)。緩衝器⑽ 係從Icache 132接收指令(INST)a及從仲裁單元=4接 收對應的執行緒之執行緒識別符(/),並且直係 令順至對應於執行緒/的―個位置m。當該指令= 存t在陣歹j 21 0中之對應的有效位元係被設定 (例如,“1”)。 /、 緩衝器138有利的是被配置成使得分派電路140可從 任何-個儲存位置208選擇一個將被發出的指I,因而來 自不同的執行緒之指令可以任何順序被發出。分派電路140 係在以下被描述;現在應該注意到的A,當一個特定的執 打緒之指令被發出日寺’在陣列210中之對應的有效位元有 利的是被設定為邏輯偽(例如,“〇”)。如同在此所用者,一 個“有效的執行緒,,是-個在儲存位f m中具有一個有效 的指令之執行緒,[個“無效的執行緒,,是-個在儲存位 置208中沒有有效的指令之執行緒。 如同在第2圖中所示’選擇邏輯電路206係從緩衝器 138接收陣列210之有效位元。選擇邏輯電路2〇6在選擇 一则旨令將被提取的執行緒j上係使用每個執行緒的有效 或疋…效仓J如’ 4擇邏輯電路2〇6可被配置成僅選擇無 21 200529071 效的執行緒;在多個執 路206可選擇已〜… 效的十月形中,選擇邏輯電 執行绪之門評:最久的執行緒、或是可根據該些 二:Γ:㈣級來選擇—個執行緒,其中該優先 選擇邏輯電路206二 心脈週期時改變。 可被選出的頻率之規則'、:3 一項限制-特定的執行緒 成比例地佔用資/ /以便於避免一個執行绪不 guf —項規料規I特定的執行 ,,者疋無貝格再次被選的,直到從它上-大祐.登遛, 過#個時脈週期為止,1 、、 可桃涂♦ -中#疋某個固定的數目(例如,# J被建立成處理器之一 久— 規則的情形中,可能有一此*疋、,)。在貫施有此種 b 一二牯脈週期是沒有執行緒滿足該 k擇規則的(例如,唯一無效 .„ ^ 订"有疋在少於#個週期 之w被選擇的)。在此情形 _ 细 t、力 … 中裁早兀204在該時脈週 尥^又、送PC/值至1cache 132;下一個PC/值係在 Λ到一個滿足條件的執杆 ,、 執 後績的週期期間被傳送。 在個/、中母個時脈週期都選出一個執行 中,#係被設定成一個不…執订緒的此種貫施例 有ί 固特定的時間被預期是 有放的執订緒之隶小齡曰 , 胃此降低發生其中沒有執 行緒被選出的時脈週期之可能性。 執 第3圖是根據本發明的一個實施例之實施執行緒選擇 規則的選擇邏輯電路3〇〇 ,nn . _ , 川之間化的方塊圖。選擇邏輯電路 〇嶋含-個優先權編碼器302以及一個相位 (token))計數器 304。;u 。 母個執仃緒之有效的信號都藉由一 個別的反相态3 0 6來加以反相,並且 且所產生的/valid信號 22 200529071 係被提供至優先權編碼器302。可利用習知的數位邏輯電 路而被做成的優先權編碼器302係選擇其/valid信號被致 能的最高優先權的執行緒(亦即,最高優先權的無效的執 行緒),其中该些執行緒之間的優先權等級是根據一個由 相位計數器304所提供的控制信號(CTL)來加以決定的。 相位計數器304是-個模數水的計數器,其係在每個時脈 週期加1 ;該控制信號CTL係對應於相位計數器3〇4之目 前的值。在此實施例中,控制信號CTL係決定最高優先權 的執行緒之執行緒號碼,並且優先權編碼器3〇2係以 的(或是下降的)執行緒號碼做模數#運算之 餘的執行緒之等級。 个辨以具 因為相位計數器304是在每個時脈週期加卜 :“:優先柘等級是隨著不同的時脈週期 同 二在弟一時脈週期期間,目前的執行緒計數器二1 值〇,亚且優先權編碼器3〇2給執行緒〇最 ” 換言之,在該第一時脈週期期間 ::核。 則優先權編碼器'302係產生—個選擇執^疋無效的, 號之狀態。若執…是有效的,::;::?㈣信 考慮的執行緒,依此類推,直到找到丁 疋下—個被 是最大數目個執行緒(其可能是小於]一:無效的執行緒或 慮過為止。在下-個時脈週期期間、,=:)都已經被考 304具有幻,並且優先權編碼器:的執行緒計數器 優先權,若執行_ 1 H 、'°執行緒1最高的 … 的則給執行緒2,依此: -執仃緒變成無效的,則其類推。 符热效的,直到其 23 200529071 下則曰令被提取為止。因 不保證在任何料定μ ± s、擇邏輯電路300並 < 1干且在任打特疋的時脈週期 緒會被選出,但是將會體認到:::間無效的執行 會在變成無效的K固時财、請 I,,、效的執行緒都將 中,優先權編碼器:週::内被選出。在某些實施例 緒之最大數目…::广脈週期期間所考慮的執行 "係避免-連—:二:執行⑽^ 而在-個執行緒能夠被再次選二 =期都,選:,因 期數目可藉由調整C的 則 有的取小時脈週 C可以來加心制°(在某些實施财, 了以疋糸統的一個可設定的參數。) 將會體認到的是,在卜 則係例示性的,並且多種料邏輯電㈣選擇規 上且夕種鉍化與修女 β 述的各種電路組件都可利用習知的數7月匕白、。在此所 術而被實施。不同的邏輯電路亦可 ==;路設計Μ 賴目I丨7丨, J被做成支杈不同的選擇 例中:先Γ個時脈週期可提取超過-個指令的實施 用:;;斷要=:除了優先權編碼器之外的裝置也可被利 路可以唯持無效的執行緒。譬如,該選擇邏輯電 ▽aUd),,位元攔位 ::效的(IeaSt recentiy 在Γ 谓測到其令一個有效的位元 3=嫩態之間的轉變時被更新。仍然是在其 執 歹°十數益或類似的電路可被利用來判斷從一個 成無效的開始所經過的時間以及/或是從一個執 、-人被心開始所經過的時間;在計數器值上運算的 24 200529071 :較邏輯可被設置以識別出-個最不是近來有效的執行 緒0 現在=二7:擇广時點與一個執行緒對應的指令出 ^ 的時點之間,該選擇邏輯可包含另外的 -电路以禁止選擇該執行 ώ,. ,, .、如在1cache 未命中(miss) 的'丨月形中,從主要的指令儲 取得指令並且提供該指令I緩衝写^要的快取記憶體) m处“ 7至、、友衝為138可能會花費數個週 〜貝鈀例中,禁止在此間隔期間再度選擇該執行 =是所期望的,例如,以避免在一個執行緒:内: 令被提供至緩衝器138 ’曰 出或疋不按照其程式順序被發 式的疋,因為提取電路136並不以循環的方 式运擇執行緒,因此者林 中的勃—你4 田不止k取一個遭遇到icache未命 取至緩衝哭、ns、, 緒的指令可繼續被提 取至,讀S 138亚且被m此,在 例可i辟❖ T p k , 丨〜曰7呆些貫施 M he未命中的情形中之管線氣泡與I效率。 在支援多種執行緒類型的情形中,;、效革 要地考量或不考量執杆㈣W 亥遠擇邏輯可隨所 亏里執仃、、者頜型。例如,在第2圖 衝,有關執行緒類型的資訊 短? 2〇e。第4 m η # a 促1芏、擇邏軏電路 回疋根據本發明的一個替代實施例之考量 緒類型的提取電路4〇〇 考里執仃 的万塊圖。在此實施例中, 核心亦支援#個執行緒,其可 5亥執仃 的執行緒以及多遠夕達’個弟—類型(“A”) 夕違個弟二類型(“B”)的執行緒。 W A的仲裁單元4()2係從有效的類型a的 了茶A?、之目的而欲& n 丁、、者(為 、.扁娩為0至/-υ接收程式計數器信號,並 25 200529071 广、里B的仲裁單凡404係從有效的類型B的執行緒(為 了參照之目的而編號為{至肸υ接收程式計數器信號。類 里Α的仲裁單兀4〇2係回應於一個 :;!信號來選擇其中-個類型識行緒,並且類:: 早凡404係回應於一個來自選擇邏輯電路4〇8的 信號來選擇其卜個類U執行緒。在—個實中1 :固選擇邏輯電…的配置係大致類似於以上參: 且伽^所述者,因而每個選擇邏輯電路406、408係選擇 別:颌型中已經變成無效最久的執行緒;將會體認到 ^擇規Γ配置與選擇規則亦可被利用。如上所述,根 “擇規則,可能有時脈週期是仲裁單元4〇2、4〇 個仲裁單元(或是兩者)並不選擇任何執行緒。 :應於來自選擇邏輯電路4〇6、4。8的選擇信 A的仲裁單元402與類型B的仙井 選的程式計數器的值 410。仲裁單元402、404同樣有的仲裁單元 的個別執行緒(5,幻。全域的仲裁…疋:別出已經被選擇 由執行緒類型的優先權電路 :10 : 口應灰-個 (,而在一一二擇所產生之類型選擇信號 :行緒類型的優先權…12可用各種方式被配置, 緒類型…之間界定所要之相對的優先權。在 給予ΓΓΓ執行緒類型的優先權電路化可被配置以 期上:相寺的k先柄’例如’其係藉由在交替的時脈週 /、月上埯擇PC<3與PQ。 ^ 在另一貫施例中,執行緒類型的優 26 200529071 =路412可以選擇該兩個候選的執行 來有效的執行緒。 之取不疋近 仍是在另一個實施例中,執行緒類型 係根據靜態或是動態的“重要性,,標準來队/先權電路412 類型優先權。各種的標準都可被運用。=中::個執行緒 緒類型係對應於像素執行緒與頂點執行緒^亥專執行 行緒優先權可能是所期望的(例如,因為:::頂點執 可能在相關的頂點執行緒之處 :二像素執行緒 的)。因此,-項選擇規則可:::=,被起始 選擇頂點執行緒。另一項選擇規:二亍緒來 頂點接著某些個數的像素之反覆〜、-固數的 接著一個彳11 θ _ j (例如,兩個頂點 括來…、 戈疋三個頂點接著兩個像素、或是,更概 二;個頂點…個像素,…為任意的整數)。 ^亦可1動態地被定義,例如,其係依據目前有 定用^ 處理的頂點及/或像素執行緒的數目而 、订緒類型的優先權電路412之選擇規則可被做 佳:設定的’以便支援對於一特定的系統做法之最 4的仲裁單% 41 G係根據類型選擇信號Α/β來在心 吳似之間做選擇,並且其係實質上如同以上所述地提供 =的程式計數器的值(標示為p⑺至匕如】32。在某 只她例中’麵型選擇信號Α/β可以偶爾在—個其中沒 '、尘Α(Β)的執行緒被該特定類型的仲裁器Μ2(4〇4)選 出的^•脈週期期間指明執行緒類㉟取是β)。全域的仲 27 200529071 裁單元110可被配置以在此事件中選擇似⑽)、或是不 選擇任何執行緒(亦即,沒有Pc/被傳送至Icache 將會體認到的是,在此所述的提 一 , 代^包路與緩衝器係例 不性的,亚且夕種變化與修改都是可能的。在不同的财 緒(或是不同的執行緒類型)具有實際上或是邏輯上分開: 指令快取記憶體之情形中,該提取電路可被配置以導= 所選的PC值至適當的快取記憶體,或是提供一個可制 用以選擇適當的快取記憶體之執行緒(或是執行緒類型)識 別符。該緩衝器可提供每個執行緒儲存超過一個指 ^其係藉由提供每個執行緒_個F⑽暫存器,:且該 提取包路可根據在母個FIF0令之無效的或是未使用的項 目之數目來選擇下一個要提取的執行緒。 、 在某些實施例中,該提取電路在指令發出 :該緩衝:至任意特定的程度並非是必要的。取而代之: 疋’由方“曰令的發出偶爾會因為資料相依 係而跳過-些時脈週期, …員似者的關 埴入;… u此錢衝裔可能傾向於自然地 填入。该&取電路的執行绪 μΜ利的是被配置成只 間用於儲存來自-執行緒的指令 …擇5亥執行緒,藉此避免了緩衝器溢位。 第5圖是根據本發 _ 簡化的方塊圖。分派電路4{)個/施例之分派電路140之 程器及二:(係包含記分板電路5〇2、排 毛出电路(或是發出器)506。可以是一般的 習知设权記分板電路5G2係讀取在緩衝 (有效的)指令。對於每個扣八 《中的母個 、们私々,記分板電路502係檢查暫 28 200529071 存器檔144以判斷來源運算元是可利 路5 η ? #太丄 β板電 一 ^生一組備妥信號(例如,每個執行緒 兀)’其係指出在緩衝器、138中的哪些指令是備妥: 行的,亦即,哪些指令是具有在暫存器播144中皮執 來源運算元。排程器504係從記分板5〇2接收該 2 號以及從緩衝哭】Μ技必吁此士 一 1有'^ 派的下-舒i 有效㈣號,並且選擇要分 個心令。該所選的指令係被分派至發出器5ηβ =出器506係藉由將該指令傳送至執行模组M2來發出 二=:選的指令所屬之執行緒的執行緒識物可 被傳达至發出器506及/或執行模組U2,以例如是使得Ζ =來源運异疋與結果資料來選擇適當的暫存器成為可行 排程器504有利的是被配置成在很少或是沒有限制之 一’根據在執行緒之間的一種順序以在緩衝器 =令之間做選擇。例如,排程器5〇4可選 : 者38上Γ等待(有效)最久的備妥的指令,而不論該執行 緒上次被選擇是何時。 ^ 第6 =内含在排程器5G4中用於選擇一個將從緩 2 138被分派的執行緒之選擇邏輯電路_之簡化的方 鬼二。選擇邏輯電路_係包含優先權編碼器6〇2與相位 疋6G4。每個執行緒之有效的信號與備妥 ^係被k供作為-個別的電路6〇6之輸入。優先權 =碼f⑽係從働電路_接收輸出”,亦即,⑭ 仃緒的仏虎’其係在該執行緒的指令是在緩衝器⑶中 29 200529071 為有效的並且備妥以被執行時被致能。(在某些實施例中, 執行緒的備妥信號在該執行緒是無效時並未被致能,因而 and電路606可被省略。)可利用羽 J才J用白知的數位邏輯電路而被 做成的優先權編碼器6〇2 # $接 η 一 Ζ係4擇備女與有效的信號都被致 月匕之最高優先權的執行緒(亦即,最古得春rΑ & — 1 取冋優先柘之備女的執 7 丨中忒些執行緒之間的優先權等級係根據一個由 相料” 6G4所提供的控制信號(gtl2)來加以決定。相 :立二數二6G4是—個模數#的計數器,其係在每個時脈週 1,該控制信號CTL2係對應於計數器剛 在此實施例中,抻岳,丨# % m#u m2係判斷最高優先權的執行 曰 炎无袓、·扁碼為6 0 2係以上升的(哎 疋下降的)執行緒號碼做模數 #,,, 义耦數#運异之順序來排列其餘的 執订诸之寺級。相位計翁 4可具有和第3圖之目前的 執订、、者计數器304相同 器可被奋於_ 相位(右為所要的話,兩個計數 右 ^目同的计數器),或是相位計數器β〇4可且 有一個不同的相位。 ” 優先權編碼器β 〇 2的動作孫* ^ ^ „ 作係類似於以上針對第3圖的 優先核編碼器3〇2 .^ Rr 厅此之動作,並且因為相位計數器6〇4 在母個時脈週期加 π ,, B±0r 1因而執行緒的優先權等級係隨著不 冋的時脈週期而古% 丁 n ^ r B y 5。例如,在第一時脈週期期間, 目刚的執行緒計數哭6〇4呈古括Λ 給埶杆接η η /、有值〇,亚且優先權編碼器602 、口轨订、,者〇最高 ;S - ^ . k先核(亦即,若執行緒0是備妥的, 則4擇執行緒0), },依 丁、、者13並未備妥時,則是給執行緒 1仅此X員推,古丨 直到找到一個備妥的執行緒或是考量過最 30 200529071 大數目的執行绪盍 u 為在下一個時脈週期 行緒計數器_具有值】,並且優先權間,目前的執 緒1最高的優先權,若執行緒i並未借、.碼:、6〇2給執行 緒2,依此類推。 女¥,則是給執行 旦一個執行緒變成借專的 的二直到該執行緒的指令被分派為I::緒備妥 輯電路600並不保證在任何特定的時 $官選擇邏 時間備妥的執行緒會被選出,但是:;已經是最長 之内被選出。在某些實施例中;成免f個時脈週期 ::期都被選出可能是所期望的;優先權編J 60; 週期期間所考慮的執行 : 以……執订緒的總“之數目。(此最大的數目亦可 疋糸、、先的一個可設定的參數。) ^會體認到的是,在此所述的選擇邏輯電路與選擇規 、、、歹1不&的,亚且多種變化與修改都是可能的。在此所 二的各種電路組件都可利用習知的數位邏輯電路設計與技 術而被貫施。不同的邏輯電路亦可被做成支援不同的選擇 規則。在超純量(superscalar)的實施例中(其中每個時脈 、、可^出起過-個指令),該選擇邏輯可被配置以在每 ㈣脈週期選擇多個指令。再者,除了優先權編碼器之外 的岌置也可被利用於判斷要選擇哪個備妥的執行緒。譬 如’該選擇邏輯電路可以維持一個‘‘最不是近來無效的,,位 凡攔位,泫攔位是在偵測到其中一個有效的位元在邏輯真 31 200529071 與邏輯偽狀態之間的轉 來選擇已經是有效田 "斤’此位元攔位可被利用 例中,計數器可::用^ 備妥的)開始所經過的;:断攸-二執行緒變成有效的(或 選出開始所經過的時 ^及/或是從—個執行緒上次被 被設置,以識別出、古彳數态值上運算的比較邏輯可 在其它實久之備妥的執行緒。 如,選擇可以曰邱八〃類的選擇規則可被實施。譬 部份根據要執行的運瞀:::二擇邏輯)。選擇亦可以是 呼叫運算、加法運㈡=(例如,'給予乘法運算、 可考量執行模組的狀能在h優先杻)。此外’選擇 係包含專用的執行單二亍模組142 被導弓丨至不同的執杆…執仃“u,其中不同的運算 術的執行單-早兀*,例如,可以有一個執行浮點算 個執及另—個執行整數算術的執行單元。若一 自不備妥的指令所需之執行單元正被佔用,則來 定的時間二令可被選出°譬如’假設在一個特 則具有H緣正被佔用’而整數管線是空閒的。 浮點指入2整數算術的指令之執行緒可被給予高於具有 7的執行緒之優先權。 於:再-人荼考第5圖,回應於來自排程器、504的許可作 在一個每σσ 138中被請求的指令係被分派至發出器506 0 及緩徐M e例中,發出器506係包含運算元收集器508以 ' 緩衝為51 0係接收該被分派的指令,而運 32 200529071 昇疋收集器508係從暫存器標144收集用於該指令的來源 運算元在緩衝器51"。根據暫存器檔144的配置,來源 運算元的收集可能需要多個時脈週期,並且在給定一特定 ,暫存器檔配置之下,運算元收集器508可實施各種用於 取佳化暫存器檔存取的技術,以用於有效率的運算元收 集;此種技術的例子是在該項技術中已知的。缓衝器51〇 有利的是被配置以-起健存收集到的運算元和其指令,而 同:正在收集該指令的其它運算元。在某些實施例中,發 出盗506係被配置以在指令的運算元已經收集到之後,立 2發出該指令至執行單元142。發出器咖並不必要以指 ^皮分派的順序來發出該些指令。例如,在緩衝器5ι〇中 广可用一個對應於它們被分派的順序之序列而被儲 :—並且發出& 5Q6在每個時脈週期可選擇最早取得其運 p的指令’其係藉由逐步通過該序列(開始於最不是近 找:=的指直到一個取得其所有的運算元之指令被 的指令被係被發出’並且該序列中在該指令之後 蠕被“移動;最新分派的指令被加到該序列的末 二:…亥序列可藉由在緩衝器51"之' 位置來加以維持’其中當在前的指令被移除時,其 、曰令係被移動到不同的位置中。 唯拉Γ個實施例中’已經被分派至發出器、5。6的指令作 ::在:衝器138中,直到該指令被發出至執行模組: h派之後’該指令有利的是被維持在—個有效、 文的狀悲中(例如,一個被分派的指令之有效位元 33 200529071 21 0可保持在邏I耳真狀態中,直到該指令被發出為止) 會體雜…在發出器' 506可以不依照分派順序發出指 令的實施例中,士絲 曰 b種配置可有助於避免來自相同的執行 之夕個指令同時存在方《绥 σΐ7 、 仔在方、、友衝态51 0中,藉此保有在一個 行緒之内的指令之順序。 個執 在”匕灵知例中,發出器506並不執行運算元的收集。 :二當指令被收到並且通知暫存器請來提供適當的 二异^至執行模組142(或是執行模組142之特定的執 1丁^ k ’發出11 5G6可發出該指令至執行模組U2(或 疋執行模組1 4 2之拉令Μ Μ / α 一 管 Ζ之特疋的執行單元)。在此實施例中,運 斤几收集器5 0 8金·衡哭ς ! η π 1 ^ ^ 一衝态510可被省略。將會體認到的是, 發出器506之特定的配署太财狄 疋 的配置在對於理解本發明上並非重要
口、J 將會體認到的是,尤卩 、, 在此所述的分派電路係例示性的, 亚且夕種變化與修改 帝踗μ夂括ρ 疋了此的。在此所述用於該排程器 技術而被1 ^ m 白知的數位邏輯電路設計與 议何向被貝知。不同的邏 摆招曰,^ W ^路亦可被做成支援不同的選 擇規則。該排程亦可包含膏 3貝轭頜外的選擇規則(例如,在 一個執行緒可再次被選擇來 调翻私、 Χ出之刖所必須經過之最少的 之J數目)以及/或是不同的 y 、擇規則(例如,給予一種執 仃、·、;漠里優先於另一種執行 輯雷败鍤牺L 有頰型之優先榷)之各種的邏 铒%路種類。此種規則可利 敗々批一 賴似於先刖在用於該提取電 路之執仃緒選擇的背景φ所 每γ μ 述的那些邏輯電路與技術而被 34 200529071 u官本發明已經相關杏 疋的貝施例而被描述,熟習此 員技術者將會體認到許多 0乜改都疋可能的。譬如,儘管 在此所边的實施例係針對 指八的 、里(亦即,母個時脈週期一個) gp . ,π , 疋$代的貫施例可支援超純量(亦 P 母個脈週期超過一個)於八 實施例中,在一個特定/ 的發出。在一個超純量 種的執Γ缺、立 勺4脈週期中所發出的指令可從各 丁、’以任思所要的組合被取出(例如,苹此實例 可限制發出為每個時脈週 系二貝她例 它垂f、功疋母個執行緒一個指令,而其 ^ Ur, ^ 孰订、、者之夕個私令在相同的時 脈週期中被發出)。在超 相门白" 取雷踗朮V^ 、 里1 ^疋純里)貫施例中,該提 此將㈣·“成每個時脈週期提取超過-個指令。因 的;一是,本發明係包含每個週期提取任咅數目⑺ 的指令以及發出任咅t 心數目 B ,, D W數目的指令(户)之實施例,1中續此 數目/與户可以用任何 /、中名> 間。本發明的實施例 、工刀配在多個執行緒之 適配用於非同步的處理器中。 此外,右為所要的話, τ 令發出可被實施,例如,其:藉 效的窗,,之内的任何備妥的指令之心的一自: 的非循序的發出技術。 χ 、:又目的之處理器 在此所述的執;2 乂、並不限於任何特定的口一 目或配置。例如,客伽丸 仃早凡數 定的指令,不同的執行。單元可共同合作來處理一個特 是具有不同資料之 理具有固定或是可辦、 等等。執仃單凡可以處 才曰令,並且可被管線化以名 35 200529071 每個時脈週期、或是更大致而言,在由 、 %印示囚疋數目個時脈 週期所構成的間隔來接收新的指令。 如上所指出者,可以支援任何數目的執行緒以 數目的執行緒類型,其中每個執行緒類型係對應於一個^ 被執行之程式化的指令序列。程式指令可以用各種方式被 提供,其係包含儲存在繪圖處理器或是其它的繪圖處理子 糸統組件的非依電性記憶體中之内建 驅動程式在系統初始化以及/或是執行時所供應二圖 以及/或是應用程式供應的程式碼(例如,在可程式化的迷 影Is (shader)的情形中)。可用术 、 ^ ^ ; 了以用適當的南階語言(例如, C' Cg或類似者)產生程式,並且利用程式語言以及該 將被執行於其上的給_卢田 ^ 的、'曰圖處理益之適當的編譯器來編譯該程 W將輸人指令翻譯成—個相容於執行單元之不同的格式 二疋不同的&令集)可在執行核心内、在緣圖處理器的其 匕組件内、或是在電腦系統中的別處被提供。 在此所述的繪圖處理考 了以在廣大的計鼻裝置中被實 軛為協同處理器,其係包 叙目的之桌上型、膝上型及 /或平板笔腦;各種的手持 ⑽)、行動電話、等箄例如,個人數位助理 ^ °寺寺,特殊目的之電腦系統,例如, 電玩主機;與類似者。 亦將會體認到的是全 u g本發明已經參考繪圖處理器 而被描述,作县尤Μ 疋在此所返的系統與方法亦可被實施在其它 多執行緒的微處理器中。 因此’儘管本發明已經相關特定的實施例而被描述, 36 200529071 ::將會體認到本發明係欲涵蓋在以下的申請專利範圍的 範彆内之所有的修改與等同項。 【圖式簡單說明】 一弟1圖是根據本發明的一個實施例之電腦系統的簡化 的高階方塊圖; 圖疋根據本發明的一個實施 指令緩衝器之簡化的方塊圖;
第3圖疋根據本發明的_個實施例之用於選擇將要4 取勺#個‘令之選擇邏輯電路之簡化的方塊圖; :目π根據本發明的另-個實施例之指令提取電]i 之間化的方塊圖; 的一個實施例之指令分派電路之 第5圖是根據本發明 間化的方塊圖;並且 出 圖是根據本發明的一個實施例之選擇 的指令之選擇邏輯之簡化的方塊圖。 【主要元件符號說明】 10()電腦系統 102中央處理單元(CPU) 10 4系統記憶體
10 6匯流排 I 08輪入裝置 II ϋ顯示裝置 11 2繪圖處理子系統 114繪圖處理單元(GPU) 37 200529071 11 6繪圖記憶體 11 8執行核心 1 2 0掃描輸出控制邏輯 128系統碟片 129儲存裝置 132指令快取記憶體(Icache) 136指令提取電路 138緩衝器 14 0分派電路 142執行模組 144暫存器檔 202程式計數器邏輯區塊 2 0 4仲裁單元 206選擇邏輯電路 208儲存位置 21 0陣列 300選擇邏輯電路 302優先權編碼器 304相位計數器 306反相器 400提取電路 402類型A的仲裁單元 404類型B的仲裁單元 406、408選擇邏輯電路 200529071 41 0全域的仲裁單元 412優先權電路 5 0 2記分板電路 504排程器 506發出器 508運算元收集器 510缓衝器 600選擇邏輯電路 602優先權編碼器 604相位計數器 606 AND電路
Claims (1)
- 200529071 十、申請專利範圍: ^ 一種被配置用於複數個執行緒的平行處理之微處理 〃中每個執仃緒係包含—個指令序列,該微處理器 包括: 一個 之指令; 執行模組,其係被配置以執行所有複數個執行緒 存位:=:=執其係包含複數個儲存位置,每個儲 -個提取電路,其執,l 令緩衝器中之相關連 b b疋根據在該指 該複數個執行绪中、:子立置是否為可利用的,來選擇 行緒中之兮所ί 個執行緒’並且提取在該複數個執 緩衝器中ΓΓ執行緒之序列中的下-個指令到該指令 一個分派電路,复孫诎m 儲存的指令中之哪些指令是備判斷在該指令緩衝器所 備妥的指令中 7疋文可執行的,並且選擇該些 2.…專;;個指令以被發出至該執行模組。 T W專利範楚 路係以第-順序提取指令到處理器,其中該提取電 電路係以不同於 °^曰7綾衝器中,並且該分派 令。 、…順序的第二順序來選擇備妥的指 被配置以储存項之微處理器’其更包括一個 進-步被配置以_ 、取。己隐體’其中該提取電路係 求至該指令快取::來送:包含, L'體來提取該下-個指令。 40 200529071 4.如申請專利範圍第3 路係包含: 、Λ处王益,其中該提取電 程式計數器邏輯,其係 的每個執行緒產生-個候選的程式計數對器 =數個執行緒 一個選擇邏輯電路,並 , 斷在該指令緩衝器中的哪部分是剛 該複數個執行緒中之—個執行緒,该選=利:的來選擇 步被配置以提供-個對應的選擇信號’·、以及…路係進— -個仲裁電路’其係被配 傳送對應於該所選的執行绪之信、=收㈣擇w,並且 指令快取記憶體。”候、的程式計數器的值至該 輯電利範圍第4項之微處理器,其中該選擇邏 一個優先權編碼器,苴孫妯#亜 間的-個優先#^ /… 根據該些執行緒之 指令以η ^擇該複數個執行緒中之一個在該 ^ 令的執行緒’該優先權等級 Τ、根據一個優先權控制信號來加以決定;以及 號,一個相位計數器,其係被配置以產生該優先權控制信 =在不同的時間點’該優先權控制信號係將不同的 寺級給予該些執行緒中之不同的執行緒。 輯-路1申:專利乾圍第4項之微處理器,其中該選擇邏 車耳电路係進一步被配置以只有在從先前發生的選擇一個第 執行緒開始而經過—段最小的時間之後,才會選擇該第 41 200529071 一執行緒。 7·如申請專利範圍第 ^ 執行緒係包含一個具有一# 、之微處理器,其中該複數個 組以及一個具有一第_ Ζ第—執行緒類型的第一執行緒群 且其中該選擇.羅ρ + 仃緒類型的第二執行緒群組,並 &擇邏輯電路係進一+ 卫 該複數個執行緒的每個執行配置以至少部分是根據 該複數個執行緒中 _ 、個別的執行緒類型來選擇 、、爷τ之一個執行緒。 8 ·如申請專利範圍 ^ 輯電路係進—牛、員之微處理器,其中該選擇邏 乂孤配置以谐裡 之第-候選的執行緒以及—摘具有該第-執行緒類型 二候選的執行块、 具有邊第二執行緒類型之第 -候選的執二第並且Γ據其個別的執行緒類型來在該第 被配置以儲==…之微處理器,其更包括-個 器標,該資料係包含=緒:㈣執行緒之資料的暫存 1〇.如申請專利範圍第二產生的結果資料。 路係包含: 圍弟9項之微處理器’其中該分派電 一個記分板電路,1係 檔,並且其係被㈣ “令緩衝器與暫存器 產生m 對於在該指令緩衝器中的每個指令 根據該指令的_個/ 則"的備妥信號至少部分是 被致能或不被致^源運算元是否存在於該暫存器禮中而 一個排程哭φ4 該排程器電路=配^仙接至該記分板與指令緩衝器, ' -置以選擇在該指令緩衝器中的一個指 42 200529071 令,該指令的備在> ^ 11唬被致能以作与 令,亚且該排裎哭恭μ 為下—個要發出的指 令緩衝器;以及 對應的許可信號至該指 一個發出哭帝狄 ^ 口口包路’其係福接至今批八^ 指令緩衝器係進省丸令緩衝器,其令該 夕被配置以回應於兮 由該排程器電路所選的:…可信號來傳送藉 路係被配置以從該暫存器播收::出、器電路,該發出器電 元並且傳送該所選 人、:"所$的指令之來源運算 lh如中請專利及來源運算元至該執行模组。 乾圍弟〗〇項之料卢 器電路係進—步被 、之铽處理益,其中該排程 存在該指令緩衝器中的一段時二:據母個指令已經儲 的指令。 、、又來選擇下一個要發出 12·如申請專利範 器電路係包含: 弟10項之微處理器’其中該排程 一個優先權編碼器,且 緒中之一個執行緒,今執1'块/ 4擇該複數個執行 個t備妥m A 仃緒#、在該指令緩衝器中具有- 八備文化唬被致能的指入 n y 7 ,其中該些執行緒中之一個執 灯、、者係根據該些執行緒 〃 、之間的一個優先權等級而被選出, μ 4先權等級係根據一個 個仏先柘控制信號來加以決定;以 及 號 一個相位計數器,其係被 配置以產生該優先權控制信 ’、中在不同的犄間點,該優先權控制信號係將不同的 優先權等級給予該些執行緒中之不同的執行緒。 43 200529071 ㈣13.如巾請專利範㈣1G項之微處理器,A中今複數 個執行緒係包含一個具有-中4復數 群組以及—個具有 、’ '聖的苐-執行緒 並且其中該排丄弟:執仃緒類型的第二執行緒群組, 該複數個執行緒的每進步被配置以至少部分是根據 η 母個執仃緒之個別的執行緒類型來潠摆 該複數個執行緒R —純行緒。 ^末遥擇 。。予14.如中請專利範圍第1()項之微處理器,其中該 皮配置以至少部分是根據與該些執:緒: 執仃、、者之個別的指令相關之運算之間的 先杻來選擇該複數個執行緒中之一個執行緒。 " 模组1 係5·勺如人申請專利範圍第1〇項之微處理器,其中該執行 被配置Γ3複數個執行管線,並且該排程器電路係進一步 哪一個:至少部分是根據-項對於該複數個執行管線中的 線不是忙碌的判斷來選擇該複數個執行緒中 理之二種用於在一個被配置用於複數個執行緒的平行處 理之1 處理器中處理指令之方法,該方法係包括: 二该複數個執行緒中之一個第一執行緒提取一個第一 指令緩衝器t,該指令緩衝器係被配置以儲存 X歿數個執订緒的每個執行緒之一個指令; :著從該複數個執行緒中之一個第二執行緒提取一個 弟一耘令到該指令緩衝器中; 妥二 =:指令與第二指令中之一或多個指令是否備 44 200529071 發出該第一指令與第—如 執行 弟—私令中之一個備妥的指令用於 其中在該第二指令是備妥一 供/ & 文以執仃,而該第一指令並未 備女以執行的情形中,%笛一 …D亥弟-指令係在發出該第-指令之 則被發出。 1 7 ·如申請專利範圍第1 6 ,^ 員之方法,其更包括動作有: 4出的動作之後’判斷該被發出的指令是針對該 乐—執行緒或是該第二執行緒而被提取的;以及 八,一個第三指令到該指令緩衝器中,其中該 ▽是在對應於該被發出的指令 一曰 7之執仃緒中的下一個指令。 18·如申請專利範圍第u i匕人 貝之方法,其中提取該第_ 才曰令的動作係包含動作有: 弟 從該複數個執行緒的每個 計數器的值; 執仃緒接收-個候選.的程式 =-個優先權等級給該複數個執 、,者,其中該優先權等級在不同的時間點是不同的;以及執订 :該第-執行緒是其指令並未 之取高優先權的執行緒之情 讀-中 擇該第一執行緒, 攸忒複數個執行緒中選 其中該第一指令係回應於 取。 &擇该弟一執仃緒而被提 1 9.如申請專利範圍第1 8 在怂庄义&丄 貝之方法,其更包括動作有: 在攸先削發生選擇該第一執 於_曰丨+ 矾仃、、者開始而經過的一段時間小 、取小的時間之情形中,荦止撰摁》_ ^ 止、擇该弟一執行緒的動 45 200529071 作。 20·如申請專利範圍第i6項之 行緒係包含一個具有_ ^ 一 : 在,其中該複數個執 以及-個具有_第 /執仃相型的第-執行緒群組 匀 弟—執行緒類型的第-# / 該第-執行緒是該第—執行緒群组中緒群組,其中 中提取該第—指令的動作係包含動作有執行緒,並且其 從該複數個執行緒的每個執行緒 計數器的值; 個候4的程式 指定一個優先權等級給該第一 緒,其中該優先權耸你+ 仃、.者群組的母個執行 〒及俊先私寻級在不同的時間點是不同的· 在該第-執行緒是該第一執行緒群組中之其扑 儲存在該指令緩衝琴中署古 7、’未 友衝裔中之取同優先權的執行緒之 從該第一執行緒群組中選擇該第一執行緒; / , 從該第二執行緒群組中選擇一個 至少部分是根據該第-執行緒與第三執執=者之:; 執行緒類型來選擇該第一執行緒與第三執行緒中之—^的 緒, ~執行 其中該第一指令是在該選擇的動作導致選擇該第 行緒的情形中被提取。 Λ乐—執 作係包含動作有: ’的動 判斷該第一指令的一個來源運算元是否為可 .如申請專利範圍第16項之方法,其中該判街 以及 利用的; 判斷該第二指令的一個來源運算元是否為 』刊用的 46 200529071 22.如申請專利範圍第16項之方法,复更勺括. 指定:個優先權等級給該複數個執行緒;;每誇— 緒,其中5亥優先推寻級在不同的時間點是不同的订 其中在該第一指令與第二指令兩者’ 情形中,選擇該第一指令與第二指令中之―:妥二:的 動作係包含判斷該第—執行緒與第二執行::之 緒擁有較高的優先權之動作。 卩们執仃 23.如申請專利範圍第16項之方法 緒係具有-個第-執行緒類型,而該第二執行::::行 個第二執行緒類型,並且其中在該第—扑…、糸-有-者都備妥以祐勃—仏卜主 曰々與苐二指令兩 的指令之動作係包含?少部八曰^甘弟—指令之—備妥 來在該第-指令盘第二二疋根據其個別的執行緒類型 ?日7舁弟一指令之間做選擇。 24. 一種繪圖處理系統,其係包括: -個包含複數個執行核心的繪圖處理器 個-冑耦接至該繪圖處理器的繪圖記憶體,1中H 们執行核心的每個執行核心係包含: ,、中该硬數 一個執行模組,J:伤祜献里、,& 執行緒之指令; a ” _〖執仃所有該複數個 一個指令緩衝哭,甘 個儲存位置传血含複數個儲存位置,每 連; 與_數個執行緒中之—個別的執行緒相闕 一個提取電路,i M 4 該指令緩衝器中之相關㈣^配置以至少部分是根據在 之相闕達㈣存位置是否為可利用的,來 47 選擇該複數個執行緒中— 個執行緒中之該 之—個執行緒,並且提取在該複數 X k的一個執杆姓 + + 到該指令緩衝器中· γ 、、’ 序列中的下一個指令 及 一個分派 器中之哪個所儲存 取出的指令中之一 -路’其係被配置以判斷在該指令緩衝 的指令係備妥以執行,並且選擇該些讀 個指令以被發出至該執行模組。十一、圖式: 如次頁48
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/742,514 US7310722B2 (en) | 2003-12-18 | 2003-12-18 | Across-thread out of order instruction dispatch in a multithreaded graphics processor |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200529071A true TW200529071A (en) | 2005-09-01 |
TWI425418B TWI425418B (zh) | 2014-02-01 |
Family
ID=34620632
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW093138921A TWI425418B (zh) | 2003-12-18 | 2004-12-15 | 在多執行緒的微處理器中之跨執行緒的非循序指令之分派 |
Country Status (6)
Country | Link |
---|---|
US (3) | US7310722B2 (zh) |
EP (1) | EP1555610B1 (zh) |
JP (1) | JP2005182825A (zh) |
DE (1) | DE602004026819D1 (zh) |
SG (1) | SG112989A1 (zh) |
TW (1) | TWI425418B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI462011B (zh) * | 2007-12-28 | 2014-11-21 | Accton Technology Corp | 程序之執行緒群組管理方法 |
TWI474280B (zh) * | 2010-04-21 | 2015-02-21 | Via Tech Inc | 增進繪圖處理單元之總處理量的方法與系統 |
CN104636274A (zh) * | 2010-03-29 | 2015-05-20 | 威盛电子股份有限公司 | 数据预取方法以及微处理器 |
TWI512630B (zh) * | 2013-03-15 | 2015-12-11 | Nvidia Corp | 索引屏障的硬體排程之系統及方法 |
TWI564807B (zh) * | 2015-11-16 | 2017-01-01 | 財團法人工業技術研究院 | 排程方法及應用其的處理裝置 |
US9582280B2 (en) | 2013-07-18 | 2017-02-28 | Nvidia Corporation | Branching to alternate code based on runahead determination |
US9632976B2 (en) | 2012-12-07 | 2017-04-25 | Nvidia Corporation | Lazy runahead operation for a microprocessor |
US9740553B2 (en) | 2012-11-14 | 2017-08-22 | Nvidia Corporation | Managing potentially invalid results during runahead |
US9875105B2 (en) | 2012-05-03 | 2018-01-23 | Nvidia Corporation | Checkpointed buffer for re-entry from runahead |
US10001996B2 (en) | 2012-10-26 | 2018-06-19 | Nvidia Corporation | Selective poisoning of data during runahead |
TWI722635B (zh) * | 2019-01-23 | 2021-03-21 | 聯發科技股份有限公司 | 管線式處理器及節電方法 |
Families Citing this family (194)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9849372B2 (en) * | 2012-09-28 | 2017-12-26 | Sony Interactive Entertainment Inc. | Method and apparatus for improving efficiency without increasing latency in emulation of a legacy application title |
US7228486B2 (en) * | 2003-07-17 | 2007-06-05 | Lucent Technologies Inc. | Methods and devices for randomizing burst errors |
US8643659B1 (en) | 2003-12-31 | 2014-02-04 | 3Dlabs Inc., Ltd. | Shader with global and instruction caches |
US7418576B1 (en) * | 2004-11-17 | 2008-08-26 | Nvidia Corporation | Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations |
US7853777B2 (en) * | 2005-02-04 | 2010-12-14 | Mips Technologies, Inc. | Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions |
US7490230B2 (en) * | 2005-02-04 | 2009-02-10 | Mips Technologies, Inc. | Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor |
US7613904B2 (en) * | 2005-02-04 | 2009-11-03 | Mips Technologies, Inc. | Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler |
US7681014B2 (en) * | 2005-02-04 | 2010-03-16 | Mips Technologies, Inc. | Multithreading instruction scheduler employing thread group priorities |
US7631130B2 (en) * | 2005-02-04 | 2009-12-08 | Mips Technologies, Inc | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor |
US7664936B2 (en) * | 2005-02-04 | 2010-02-16 | Mips Technologies, Inc. | Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages |
US7657891B2 (en) | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency |
US7752627B2 (en) * | 2005-02-04 | 2010-07-06 | Mips Technologies, Inc. | Leaky-bucket thread scheduler in a multithreading microprocessor |
US7506140B2 (en) * | 2005-02-04 | 2009-03-17 | Mips Technologies, Inc. | Return data selector employing barrel-incrementer-based round-robin apparatus |
US7657883B2 (en) * | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor |
US7478276B2 (en) * | 2005-02-10 | 2009-01-13 | International Business Machines Corporation | Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor |
US7409589B2 (en) * | 2005-05-27 | 2008-08-05 | International Business Machines Corporation | Method and apparatus for reducing number of cycles required to checkpoint instructions in a multi-threaded processor |
GB0519597D0 (en) * | 2005-09-26 | 2005-11-02 | Imagination Tech Ltd | Scalable multi-threaded media processing architecture |
US7689735B2 (en) * | 2005-10-03 | 2010-03-30 | Arm Limited | Instruction stream control |
US7797467B2 (en) | 2005-11-01 | 2010-09-14 | Lsi Corporation | Systems for implementing SDRAM controllers, and buses adapted to include advanced high performance bus features |
US7624257B2 (en) | 2005-11-30 | 2009-11-24 | International Business Machines Corporation | Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads |
EP2477109B1 (en) | 2006-04-12 | 2016-07-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
KR100837400B1 (ko) * | 2006-07-20 | 2008-06-12 | 삼성전자주식회사 | 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치 |
US20080024510A1 (en) * | 2006-07-27 | 2008-01-31 | Via Technologies, Inc. | Texture engine, graphics processing unit and video processing method thereof |
US7760748B2 (en) * | 2006-09-16 | 2010-07-20 | Mips Technologies, Inc. | Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch |
US7773621B2 (en) * | 2006-09-16 | 2010-08-10 | Mips Technologies, Inc. | Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch |
US7990989B2 (en) * | 2006-09-16 | 2011-08-02 | Mips Technologies, Inc. | Transaction selector employing transaction queue group priorities in multi-port switch |
US7961745B2 (en) * | 2006-09-16 | 2011-06-14 | Mips Technologies, Inc. | Bifurcated transaction selector supporting dynamic priorities in multi-port switch |
US7859548B1 (en) | 2006-10-19 | 2010-12-28 | Nvidia Corporation | Offloading cube map calculations to a shader |
US7830387B2 (en) * | 2006-11-07 | 2010-11-09 | Microsoft Corporation | Parallel engine support in display driver model |
EP2523101B1 (en) | 2006-11-14 | 2014-06-04 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
US7958333B2 (en) | 2007-05-30 | 2011-06-07 | XMOS Ltd. | Processor with memory access stage adapted to fetch an instruction of a thread when no memory access operation is detected |
EP2169538A4 (en) * | 2007-06-20 | 2010-12-01 | Fujitsu Ltd | INSTRUCTION PROCESSOR |
WO2008155834A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 処理装置 |
US20090037918A1 (en) * | 2007-07-31 | 2009-02-05 | Advanced Micro Devices, Inc. | Thread sequencing for multi-threaded processor with instruction cache |
US8006073B1 (en) * | 2007-09-28 | 2011-08-23 | Oracle America, Inc. | Simultaneous speculative threading light mode |
US8073558B2 (en) | 2007-10-05 | 2011-12-06 | Honeywell International Inc | Critical resource notification system and interface device |
US8082420B2 (en) * | 2007-10-24 | 2011-12-20 | International Business Machines Corporation | Method and apparatus for executing instructions |
KR101335001B1 (ko) * | 2007-11-07 | 2013-12-02 | 삼성전자주식회사 | 프로세서 및 인스트럭션 스케줄링 방법 |
US8922565B2 (en) * | 2007-11-30 | 2014-12-30 | Qualcomm Incorporated | System and method for using a secondary processor in a graphics system |
US8174534B2 (en) * | 2007-12-06 | 2012-05-08 | Via Technologies, Inc. | Shader processing systems and methods |
US7793080B2 (en) | 2007-12-31 | 2010-09-07 | Globalfoundries Inc. | Processing pipeline having parallel dispatch and method thereof |
US8086825B2 (en) | 2007-12-31 | 2011-12-27 | Advanced Micro Devices, Inc. | Processing pipeline having stage-specific thread selection and method thereof |
US8312458B2 (en) | 2008-02-01 | 2012-11-13 | International Business Machines Corporation | Central repository for wake-and-go mechanism |
US8341635B2 (en) | 2008-02-01 | 2012-12-25 | International Business Machines Corporation | Hardware wake-and-go mechanism with look-ahead polling |
US8171476B2 (en) | 2008-02-01 | 2012-05-01 | International Business Machines Corporation | Wake-and-go mechanism with prioritization of threads |
US8250396B2 (en) | 2008-02-01 | 2012-08-21 | International Business Machines Corporation | Hardware wake-and-go mechanism for a data processing system |
US8015379B2 (en) | 2008-02-01 | 2011-09-06 | International Business Machines Corporation | Wake-and-go mechanism with exclusive system bus response |
US8316218B2 (en) | 2008-02-01 | 2012-11-20 | International Business Machines Corporation | Look-ahead wake-and-go engine with speculative execution |
US8788795B2 (en) | 2008-02-01 | 2014-07-22 | International Business Machines Corporation | Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors |
US8640141B2 (en) | 2008-02-01 | 2014-01-28 | International Business Machines Corporation | Wake-and-go mechanism with hardware private array |
US8612977B2 (en) | 2008-02-01 | 2013-12-17 | International Business Machines Corporation | Wake-and-go mechanism with software save of thread state |
US8225120B2 (en) | 2008-02-01 | 2012-07-17 | International Business Machines Corporation | Wake-and-go mechanism with data exclusivity |
US8127080B2 (en) | 2008-02-01 | 2012-02-28 | International Business Machines Corporation | Wake-and-go mechanism with system address bus transaction master |
US8732683B2 (en) | 2008-02-01 | 2014-05-20 | International Business Machines Corporation | Compiler providing idiom to idiom accelerator |
US8145849B2 (en) | 2008-02-01 | 2012-03-27 | International Business Machines Corporation | Wake-and-go mechanism with system bus response |
US8725992B2 (en) | 2008-02-01 | 2014-05-13 | International Business Machines Corporation | Programming language exposing idiom calls to a programming idiom accelerator |
US8386822B2 (en) | 2008-02-01 | 2013-02-26 | International Business Machines Corporation | Wake-and-go mechanism with data monitoring |
US8452947B2 (en) | 2008-02-01 | 2013-05-28 | International Business Machines Corporation | Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms |
US8516484B2 (en) | 2008-02-01 | 2013-08-20 | International Business Machines Corporation | Wake-and-go mechanism for a data processing system |
US8880853B2 (en) | 2008-02-01 | 2014-11-04 | International Business Machines Corporation | CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock |
US8230201B2 (en) | 2009-04-16 | 2012-07-24 | International Business Machines Corporation | Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system |
US8082315B2 (en) | 2009-04-16 | 2011-12-20 | International Business Machines Corporation | Programming idiom accelerator for remote update |
US8145723B2 (en) | 2009-04-16 | 2012-03-27 | International Business Machines Corporation | Complex remote update programming idiom accelerator |
US8886919B2 (en) | 2009-04-16 | 2014-11-11 | International Business Machines Corporation | Remote update programming idiom accelerator with allocated processor resources |
US9690625B2 (en) * | 2009-06-16 | 2017-06-27 | Oracle America, Inc. | System and method for out-of-order resource allocation and deallocation in a threaded machine |
JP5463076B2 (ja) * | 2009-05-28 | 2014-04-09 | パナソニック株式会社 | マルチスレッドプロセッサ |
US8676953B2 (en) | 2009-07-17 | 2014-03-18 | Honeywell International Inc. | Use of aggregated groups for managing demand response resources |
US8667132B2 (en) | 2009-07-17 | 2014-03-04 | Honeywell International Inc. | Arrangement for communication about and management of a resource using a mobile device |
US9124535B2 (en) | 2009-07-17 | 2015-09-01 | Honeywell International Inc. | System for using attributes to deploy demand response resources |
US8671191B2 (en) | 2009-07-17 | 2014-03-11 | Honeywell International Inc. | Installation system for demand response resources |
US9137050B2 (en) | 2009-07-17 | 2015-09-15 | Honeywell International Inc. | Demand response system incorporating a graphical processing unit |
US8572230B2 (en) | 2009-07-17 | 2013-10-29 | Honeywell International Inc. | System for using attributes to deploy demand response resources |
US8671167B2 (en) * | 2009-07-17 | 2014-03-11 | Honeywell International Inc. | System for providing demand response services |
US8782190B2 (en) | 2009-07-17 | 2014-07-15 | Honeywell International, Inc. | Demand response management system |
US9818073B2 (en) | 2009-07-17 | 2017-11-14 | Honeywell International Inc. | Demand response management system |
US8607234B2 (en) * | 2009-07-22 | 2013-12-10 | Empire Technology Development, Llc | Batch scheduling with thread segregation and per thread type marking caps |
US8799912B2 (en) * | 2009-07-22 | 2014-08-05 | Empire Technology Development Llc | Application selection of memory request scheduling |
US8839255B2 (en) * | 2009-07-23 | 2014-09-16 | Empire Technology Development Llc | Scheduling of threads by batch scheduling |
US8310492B2 (en) * | 2009-09-03 | 2012-11-13 | Ati Technologies Ulc | Hardware-based scheduling of GPU work |
JP2011065489A (ja) * | 2009-09-17 | 2011-03-31 | Sony Corp | 情報処理装置、データ表示方法及びプログラム |
US9189242B2 (en) * | 2009-09-24 | 2015-11-17 | Nvidia Corporation | Credit-based streaming multiprocessor warp scheduling |
US8370671B2 (en) * | 2009-12-02 | 2013-02-05 | International Business Machines Corporation | Saving power by powering down an instruction fetch array based on capacity history of instruction buffer |
US20110276784A1 (en) * | 2010-05-10 | 2011-11-10 | Telefonaktiebolaget L M Ericsson (Publ) | Hierarchical multithreaded processing |
US9058675B2 (en) | 2010-05-29 | 2015-06-16 | Intel Corporation | Non-volatile storage for graphics hardware |
CN102063289B (zh) * | 2010-09-07 | 2013-10-16 | 中国科学技术大学 | 串行程序线程级推测执行能力评估方法和评估器 |
KR101685247B1 (ko) | 2010-09-17 | 2016-12-09 | 소프트 머신즈, 인크. | 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측 |
US8937622B2 (en) | 2010-09-20 | 2015-01-20 | Qualcomm Incorporated | Inter-processor communication techniques in a multiple-processor computing platform |
US8904115B2 (en) | 2010-09-28 | 2014-12-02 | Texas Instruments Incorporated | Cache with multiple access pipelines |
US8797332B2 (en) * | 2010-12-15 | 2014-08-05 | Ati Technologies Ulc | Device discovery and topology reporting in a combined CPU/GPU architecture system |
US8630744B2 (en) | 2011-01-28 | 2014-01-14 | Honeywell International Inc. | Management and monitoring of automated demand response in a multi-site enterprise |
US9153001B2 (en) | 2011-01-28 | 2015-10-06 | Honeywell International Inc. | Approach for managing distribution of automated demand response events in a multi-site enterprise |
US8626354B2 (en) | 2011-01-28 | 2014-01-07 | Honeywell International Inc. | Approach for normalizing automated demand response events in energy management control systems |
KR101620676B1 (ko) | 2011-03-25 | 2016-05-23 | 소프트 머신즈, 인크. | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트 |
US9274793B2 (en) | 2011-03-25 | 2016-03-01 | Soft Machines, Inc. | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
TWI533129B (zh) | 2011-03-25 | 2016-05-11 | 軟體機器公司 | 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊 |
EP2710481B1 (en) | 2011-05-20 | 2021-02-17 | Intel Corporation | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
KR101639854B1 (ko) | 2011-05-20 | 2016-07-14 | 소프트 머신즈, 인크. | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조 |
US9129060B2 (en) * | 2011-10-13 | 2015-09-08 | Cavium, Inc. | QoS based dynamic execution engine selection |
US9128769B2 (en) | 2011-10-13 | 2015-09-08 | Cavium, Inc. | Processor with dedicated virtual functions and dynamic assignment of functional resources |
DE102012220365A1 (de) * | 2011-11-10 | 2013-05-16 | Nvidia Corp. | Aufgabe-Thread-Feld-Granularität-Ausführung-Präemption |
CN102495726B (zh) * | 2011-11-15 | 2015-05-20 | 无锡德思普科技有限公司 | 机会多线程方法及处理器 |
EP2783281B1 (en) | 2011-11-22 | 2020-05-13 | Intel Corporation | A microprocessor accelerated code optimizer |
KR101842550B1 (ko) | 2011-11-22 | 2018-03-28 | 소프트 머신즈, 인크. | 다중 엔진 마이크로프로세서용 가속 코드 최적화기 |
US20130141447A1 (en) * | 2011-12-06 | 2013-06-06 | Advanced Micro Devices, Inc. | Method and Apparatus for Accommodating Multiple, Concurrent Work Inputs |
US8933942B2 (en) | 2011-12-08 | 2015-01-13 | Advanced Micro Devices, Inc. | Partitioning resources of a processor |
US8639882B2 (en) * | 2011-12-14 | 2014-01-28 | Nvidia Corporation | Methods and apparatus for source operand collector caching |
US8949575B2 (en) | 2011-12-14 | 2015-02-03 | International Business Machines Corporation | Reversing processing order in half-pumped SIMD execution units to achieve K cycle issue-to-issue latency |
US10146545B2 (en) | 2012-03-13 | 2018-12-04 | Nvidia Corporation | Translation address cache for a microprocessor |
JP5900061B2 (ja) * | 2012-03-19 | 2016-04-06 | 富士通株式会社 | 試験方法、試験装置及びプログラム |
US20140208074A1 (en) * | 2012-03-30 | 2014-07-24 | Boris A. Babayan | Instruction scheduling for a multi-strand out-of-order processor |
CN108681519B (zh) * | 2012-03-30 | 2022-04-08 | 英特尔公司 | 用于从多线程发送请求至加速器的机制 |
US9880846B2 (en) | 2012-04-11 | 2018-01-30 | Nvidia Corporation | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
JP5894496B2 (ja) * | 2012-05-01 | 2016-03-30 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
KR20130123645A (ko) * | 2012-05-03 | 2013-11-13 | 삼성전자주식회사 | 그래픽 처리 장치를 위한 동적 로드 밸런싱 장치 및 방법 |
US10241810B2 (en) | 2012-05-18 | 2019-03-26 | Nvidia Corporation | Instruction-optimizing processor with branch-count table in hardware |
US9645929B2 (en) | 2012-09-14 | 2017-05-09 | Nvidia Corporation | Speculative permission acquisition for shared memory |
US20140081704A1 (en) | 2012-09-15 | 2014-03-20 | Honeywell International Inc. | Decision support system based on energy markets |
US11013993B2 (en) | 2012-09-28 | 2021-05-25 | Sony Interactive Entertainment Inc. | Pre-loading translated code in cloud based emulated applications |
TWI462020B (zh) * | 2012-11-28 | 2014-11-21 | Htc Corp | 執行緒管理方法及其電子裝置 |
US9389850B2 (en) | 2012-11-29 | 2016-07-12 | Honeywell International Inc. | System and approach to manage versioning of field devices in a multi-site enterprise |
US20140189310A1 (en) | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Fault detection in instruction translations |
US9569214B2 (en) | 2012-12-27 | 2017-02-14 | Nvidia Corporation | Execution pipeline data forwarding |
US9823931B2 (en) | 2012-12-28 | 2017-11-21 | Nvidia Corporation | Queued instruction re-dispatch after runahead |
US9547602B2 (en) | 2013-03-14 | 2017-01-17 | Nvidia Corporation | Translation lookaside buffer entry systems and methods |
US10108424B2 (en) | 2013-03-14 | 2018-10-23 | Nvidia Corporation | Profiling code portions to generate translations |
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 |
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 |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction 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 |
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 |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register 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 |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
CN104063270B (zh) * | 2013-03-22 | 2017-06-23 | 斯克林集团公司 | 加标签方法、加标签装置以及缺陷检查装置 |
JP6152034B2 (ja) * | 2013-03-22 | 2017-06-21 | 株式会社Screenホールディングス | ラベリング方法、ラベリング装置および欠陥検査装置 |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
US10346931B2 (en) | 2013-07-11 | 2019-07-09 | Honeywell International Inc. | Arrangement for communicating demand response resource incentives |
US9989937B2 (en) | 2013-07-11 | 2018-06-05 | Honeywell International Inc. | Predicting responses of resources to demand response signals and having comfortable demand responses |
US9691076B2 (en) | 2013-07-11 | 2017-06-27 | Honeywell International Inc. | Demand response system having a participation predictor |
JP5654643B2 (ja) * | 2013-07-22 | 2015-01-14 | パナソニック株式会社 | マルチスレッドプロセッサ |
US10062135B2 (en) * | 2013-07-31 | 2018-08-28 | National Technology & Engineering Solutions Of Sandia, Llc | Graphics processing unit management system for computed tomography |
KR20150019349A (ko) * | 2013-08-13 | 2015-02-25 | 삼성전자주식회사 | 다중 쓰레드 실행 프로세서 및 이의 동작 방법 |
US20150074353A1 (en) * | 2013-09-06 | 2015-03-12 | Futurewei Technologies, Inc. | System and Method for an Asynchronous Processor with Multiple Threading |
US9417920B2 (en) * | 2013-10-04 | 2016-08-16 | Freescale Semiconductor, Inc. | Method and apparatus for dynamic resource partition in simultaneous multi-thread microprocessor |
GB2521155B (en) * | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configuring thread scheduling on a multi-threaded data processing apparatus |
GB2521151B (en) | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configurable thread ordering for a data processing apparatus |
US9589311B2 (en) * | 2013-12-18 | 2017-03-07 | Intel Corporation | Independent thread saturation of graphics processing units |
US9471307B2 (en) * | 2014-01-03 | 2016-10-18 | Nvidia Corporation | System and processor that include an implementation of decoupled pipelines |
US20150220343A1 (en) * | 2014-02-05 | 2015-08-06 | Mill Computing, Inc. | Computer Processor Employing Phases of Operations Contained in Wide Instructions |
US9766894B2 (en) | 2014-02-06 | 2017-09-19 | Optimum Semiconductor Technologies, Inc. | Method and apparatus for enabling a processor to generate pipeline control signals |
US9558000B2 (en) | 2014-02-06 | 2017-01-31 | Optimum Semiconductor Technologies, Inc. | Multithreading using an ordered list of hardware contexts |
US9665078B2 (en) | 2014-03-25 | 2017-05-30 | Honeywell International Inc. | System for propagating messages for purposes of demand response |
KR20160113677A (ko) * | 2014-03-27 | 2016-09-30 | 인텔 코포레이션 | 다수의 스트랜드들로부터 명령어들을 디스패칭하기 위한 프로세서 로직 및 방법 |
JP5630798B1 (ja) | 2014-04-11 | 2014-11-26 | 株式会社Murakumo | プロセッサーおよび方法 |
US10902545B2 (en) * | 2014-08-19 | 2021-01-26 | Apple Inc. | GPU task scheduling |
US9824414B2 (en) * | 2014-12-09 | 2017-11-21 | Intel Corporation | Thread dispatching for graphics processors |
US10346170B2 (en) | 2015-05-05 | 2019-07-09 | Intel Corporation | Performing partial register write operations in a processor |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US9720693B2 (en) | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
GB2540543B (en) * | 2015-07-20 | 2020-03-11 | Advanced Risc Mach Ltd | Graphics processing |
US10622032B2 (en) * | 2015-12-08 | 2020-04-14 | Rambus Inc. | Low power signaling interface |
US9977677B2 (en) | 2016-04-07 | 2018-05-22 | International Business Machines Corporation | Execution slice with supplemental instruction port for an instruction using a source operand from another instruction port |
US20170337062A1 (en) * | 2016-05-19 | 2017-11-23 | Centipede Semi Ltd. | Single-thread speculative multi-threading |
US10410097B2 (en) * | 2016-06-06 | 2019-09-10 | Mutualink, Inc. | System and method for distributed intelligent pattern recognition |
US10541556B2 (en) | 2017-04-27 | 2020-01-21 | Honeywell International Inc. | System and approach to integrate and manage diverse demand response specifications for multi-site enterprises |
WO2019089816A2 (en) | 2017-10-31 | 2019-05-09 | Micron Technology, Inc. | System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network |
US11074078B2 (en) | 2018-05-07 | 2021-07-27 | Micron Technology, Inc. | Adjustment of load access size by a multi-threaded, self-scheduling processor to manage network congestion |
US11513837B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread commencement and completion using work descriptor packets in a system having a self-scheduling processor and a hybrid threading fabric |
US11132233B2 (en) | 2018-05-07 | 2021-09-28 | Micron Technology, Inc. | Thread priority management in a multi-threaded, self-scheduling processor |
US11119782B2 (en) | 2018-05-07 | 2021-09-14 | Micron Technology, Inc. | Thread commencement using a work descriptor packet in a self-scheduling processor |
US11513839B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Memory request size management in a multi-threaded, self-scheduling processor |
US11157286B2 (en) | 2018-05-07 | 2021-10-26 | Micron Technology, Inc. | Non-cached loads and stores in a system having a multi-threaded, self-scheduling processor |
US11119972B2 (en) | 2018-05-07 | 2021-09-14 | Micron Technology, Inc. | Multi-threaded, self-scheduling processor |
US11126587B2 (en) | 2018-05-07 | 2021-09-21 | Micron Technology, Inc. | Event messaging in a system having a self-scheduling processor and a hybrid threading fabric |
US11513840B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread creation on local or remote compute elements by a multi-threaded, self-scheduling processor |
US11513838B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread state monitoring in a system having a multi-threaded, self-scheduling processor |
US11068305B2 (en) | 2018-05-07 | 2021-07-20 | Micron Technology, Inc. | System call management in a user-mode, multi-threaded, self-scheduling processor |
US10796472B2 (en) * | 2018-06-30 | 2020-10-06 | Intel Corporation | Method and apparatus for simultaneously executing multiple contexts on a graphics engine |
US10721172B2 (en) | 2018-07-06 | 2020-07-21 | Marvell Asia Pte, Ltd. | Limiting backpressure with bad actors |
US11321123B2 (en) * | 2019-11-21 | 2022-05-03 | International Business Machines Corporation | Determining an optimum number of threads to make available per core in a multi-core processor complex to executive tasks |
US10891708B1 (en) | 2019-11-25 | 2021-01-12 | Arm Limited | Shader program execution in graphics processing |
KR102449109B1 (ko) * | 2020-08-25 | 2022-09-29 | 주식회사 엔씨소프트 | 게시판 서비스 제공 장치 및 방법, 게시판 서비스 요청 장치 및 방법 |
US11775185B2 (en) * | 2020-09-17 | 2023-10-03 | Micron Technology, Inc. | Power budget arbitration for multiple concurrent access operations in a memory device |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3725871A (en) * | 1971-02-11 | 1973-04-03 | Honeywell Inf Systems | Multi function polling technique |
US3771138A (en) * | 1971-08-31 | 1973-11-06 | Ibm | Apparatus and method for serializing instructions from two independent instruction streams |
US5539911A (en) | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
US5357617A (en) * | 1991-11-22 | 1994-10-18 | International Business Machines Corporation | Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor |
JPH0644089A (ja) * | 1992-05-18 | 1994-02-18 | Matsushita Electric Ind Co Ltd | 情報処理装置 |
GB2287111B (en) | 1994-03-01 | 1998-08-05 | Intel Corp | Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer |
JPH08320797A (ja) * | 1995-05-24 | 1996-12-03 | Fuji Xerox Co Ltd | プログラム制御システム |
US6010476A (en) * | 1996-12-02 | 2000-01-04 | Angiotrax, Inc. | Apparatus for performing transmyocardial revascularization |
US6073159A (en) * | 1996-12-31 | 2000-06-06 | Compaq Computer Corporation | Thread properties attribute vector based thread selection in multithreading processor |
US6689103B1 (en) * | 1999-05-07 | 2004-02-10 | Scimed Life System, Inc. | Injection array apparatus and method |
US6493741B1 (en) * | 1999-10-01 | 2002-12-10 | Compaq Information Technologies Group, L.P. | Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit |
US6574725B1 (en) | 1999-11-01 | 2003-06-03 | Advanced Micro Devices, Inc. | Method and mechanism for speculatively executing threads of instructions |
US6889319B1 (en) * | 1999-12-09 | 2005-05-03 | Intel Corporation | Method and apparatus for entering and exiting multiple threads within a multithreaded processor |
US7149883B1 (en) | 2000-03-30 | 2006-12-12 | Intel Corporation | Method and apparatus selectively to advance a write pointer for a queue based on the indicated validity or invalidity of an instruction stored within the queue |
EP1311947B1 (en) * | 2000-07-14 | 2011-01-19 | MIPS Technologies, Inc. | Instruction fetch and dispatch in multithreaded system |
JP3638584B2 (ja) * | 2000-08-31 | 2005-04-13 | 一 関 | 計算機システム |
JP3796124B2 (ja) * | 2001-03-07 | 2006-07-12 | 株式会社ルネサステクノロジ | スレッド間優先度可変プロセッサ |
JP2002342163A (ja) * | 2001-05-15 | 2002-11-29 | Fujitsu Ltd | マルチスレッドプロセッサ用キャッシュ制御方式 |
US7363474B2 (en) * | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
JP4030314B2 (ja) * | 2002-01-29 | 2008-01-09 | 富士通株式会社 | 演算処理装置 |
US7015930B2 (en) * | 2003-08-01 | 2006-03-21 | Ati Technologies Inc. | Method and apparatus for interpolating pixel parameters based on a plurality of vertex values |
US6897871B1 (en) | 2003-11-20 | 2005-05-24 | Ati Technologies Inc. | Graphics processing architecture employing a unified shader |
US7418576B1 (en) * | 2004-11-17 | 2008-08-26 | Nvidia Corporation | Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations |
US20070030280A1 (en) * | 2005-08-08 | 2007-02-08 | Via Technologies, Inc. | Global spreader and method for a parallel graphics processor |
-
2003
- 2003-12-18 US US10/742,514 patent/US7310722B2/en active Active
-
2004
- 2004-12-15 TW TW093138921A patent/TWI425418B/zh active
- 2004-12-16 EP EP04029906A patent/EP1555610B1/en active Active
- 2004-12-16 DE DE602004026819T patent/DE602004026819D1/de active Active
- 2004-12-17 SG SG200407503A patent/SG112989A1/en unknown
- 2004-12-20 JP JP2004367833A patent/JP2005182825A/ja active Pending
-
2006
- 2006-10-10 US US11/548,272 patent/US7676657B2/en active Active
-
2010
- 2010-01-20 US US12/690,225 patent/US20100122067A1/en not_active Abandoned
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI462011B (zh) * | 2007-12-28 | 2014-11-21 | Accton Technology Corp | 程序之執行緒群組管理方法 |
CN104636274A (zh) * | 2010-03-29 | 2015-05-20 | 威盛电子股份有限公司 | 数据预取方法以及微处理器 |
TWI506434B (zh) * | 2010-03-29 | 2015-11-01 | Via Tech Inc | 預取單元、資料預取方法、電腦程式產品以及微處理器 |
TWI547803B (zh) * | 2010-03-29 | 2016-09-01 | 威盛電子股份有限公司 | 預取單元、資料預取方法、電腦程式產品以及微處理器 |
CN104636274B (zh) * | 2010-03-29 | 2018-01-26 | 威盛电子股份有限公司 | 数据预取方法以及微处理器 |
TWI474280B (zh) * | 2010-04-21 | 2015-02-21 | Via Tech Inc | 增進繪圖處理單元之總處理量的方法與系統 |
US9875105B2 (en) | 2012-05-03 | 2018-01-23 | Nvidia Corporation | Checkpointed buffer for re-entry from runahead |
TWI626589B (zh) * | 2012-05-03 | 2018-06-11 | 輝達公司 | 用以從預行再入的檢查點緩衝器 |
US10001996B2 (en) | 2012-10-26 | 2018-06-19 | Nvidia Corporation | Selective poisoning of data during runahead |
US10628160B2 (en) | 2012-10-26 | 2020-04-21 | Nvidia Corporation | Selective poisoning of data during runahead |
US9740553B2 (en) | 2012-11-14 | 2017-08-22 | Nvidia Corporation | Managing potentially invalid results during runahead |
US9632976B2 (en) | 2012-12-07 | 2017-04-25 | Nvidia Corporation | Lazy runahead operation for a microprocessor |
US9891972B2 (en) | 2012-12-07 | 2018-02-13 | Nvidia Corporation | Lazy runahead operation for a microprocessor |
TWI512630B (zh) * | 2013-03-15 | 2015-12-11 | Nvidia Corp | 索引屏障的硬體排程之系統及方法 |
US9804854B2 (en) | 2013-07-18 | 2017-10-31 | Nvidia Corporation | Branching to alternate code based on runahead determination |
US9582280B2 (en) | 2013-07-18 | 2017-02-28 | Nvidia Corporation | Branching to alternate code based on runahead determination |
TWI564807B (zh) * | 2015-11-16 | 2017-01-01 | 財團法人工業技術研究院 | 排程方法及應用其的處理裝置 |
US10268519B2 (en) | 2015-11-16 | 2019-04-23 | Industrial Technology Research Institute | Scheduling method and processing device for thread groups execution in a computing system |
TWI722635B (zh) * | 2019-01-23 | 2021-03-21 | 聯發科技股份有限公司 | 管線式處理器及節電方法 |
US11003457B2 (en) | 2019-01-23 | 2021-05-11 | Mediatek Inc. | Power-saving mechanism for memory sub-system in pipelined processor |
Also Published As
Publication number | Publication date |
---|---|
EP1555610A1 (en) | 2005-07-20 |
TWI425418B (zh) | 2014-02-01 |
EP1555610B1 (en) | 2010-04-28 |
US20100122067A1 (en) | 2010-05-13 |
US20050138328A1 (en) | 2005-06-23 |
SG112989A1 (en) | 2005-07-28 |
US7310722B2 (en) | 2007-12-18 |
JP2005182825A (ja) | 2005-07-07 |
US7676657B2 (en) | 2010-03-09 |
US20070214343A1 (en) | 2007-09-13 |
DE602004026819D1 (de) | 2010-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW200529071A (en) | Across-thread out of order instruction dispatch in a multithreaded microprocessor | |
US9286119B2 (en) | System, method, and computer program product for management of dependency between tasks | |
TWI493451B (zh) | 使用預解碼資料進行指令排程的方法和裝置 | |
TWI529620B (zh) | 推理執行和回復 | |
JP6390021B2 (ja) | グラフィック処理ユニットのためのワークロードバッチサブミットメカニズム | |
US8675006B2 (en) | Apparatus and method for communicating between a central processing unit and a graphics processing unit | |
TWI619075B (zh) | 自動依附任務啟始 | |
KR101773229B1 (ko) | 이종 시스템을 부팅하고 대칭적 코어 뷰를 제공하는 방법 | |
EP2483772B1 (en) | Trap handler architecture for a parallel processing unit | |
US20150355996A1 (en) | System, method, and computer program product for collecting execution statistics for graphics processing unit workloads | |
US9459876B2 (en) | System, method, and computer program product for managing divergences and synchronization points during thread block execution by using a double sided queue for token storage | |
CN104679582B (zh) | 对于显示设备的命令调度 | |
TWI501150B (zh) | 無指令解碼而排程指令的方法和裝置 | |
US10255075B2 (en) | System, method, and computer program product for managing out-of-order execution of program instructions | |
US9471307B2 (en) | System and processor that include an implementation of decoupled pipelines | |
CN109313557B (zh) | 用于优化gpu线程共享本地存储器访问的装置 | |
TW200809614A (en) | System and method for selecting between load or store performance schemes | |
Xie et al. | Pim-vr: Erasing motion anomalies in highly-interactive virtual reality world with customized memory cube | |
WO2017196489A1 (en) | Callback interrupt handling for multi-threaded applications in computing environments | |
US20140372703A1 (en) | System, method, and computer program product for warming a cache for a task launch | |
US10152329B2 (en) | Pre-scheduled replays of divergent operations | |
US9477480B2 (en) | System and processor for implementing interruptible batches of instructions | |
US20140337569A1 (en) | System, method, and computer program product for low latency scheduling and launch of memory defined tasks | |
Joseph | Microarchitectural simulator for shader cores in a modern GPU simulation infrastructure | |
US20130159684A1 (en) | Batched replays of divergent operations |