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 PDF

Info

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
Application number
TW093138921A
Other languages
English (en)
Other versions
TWI425418B (zh
Inventor
Simon S Moy
John Erik Lindholm
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of TW200529071A publication Critical patent/TW200529071A/zh
Application granted granted Critical
Publication of TWI425418B publication Critical patent/TWI425418B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

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)

  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
TW093138921A 2003-12-18 2004-12-15 在多執行緒的微處理器中之跨執行緒的非循序指令之分派 TWI425418B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (20)

* Cited by examiner, † Cited by third party
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