TW476915B - Method and apparatus for thread switching within a multithreaded processor - Google Patents

Method and apparatus for thread switching within a multithreaded processor Download PDF

Info

Publication number
TW476915B
TW476915B TW089108132A TW89108132A TW476915B TW 476915 B TW476915 B TW 476915B TW 089108132 A TW089108132 A TW 089108132A TW 89108132 A TW89108132 A TW 89108132A TW 476915 B TW476915 B TW 476915B
Authority
TW
Taiwan
Prior art keywords
thread
instruction information
instruction
information source
scope
Prior art date
Application number
TW089108132A
Other languages
English (en)
Inventor
Stavros Kalafatis
Alan B Kyker
Robert D Fisch
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of TW476915B publication Critical patent/TW476915B/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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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

Λ7 B7 五 、發明說明( 本發明一般係有關多線程處 理杰之領域,而更特別地 經濟部智慧財產局員工消費合作社印製 係有關一種在一多$程卢理哭φ叫文狩別地, 用之方法及裝置。處〇執行上下文(或線程)切與 董jg背景 近來已將多線程處理器設計 逐漸引人注音乏女斗士 υ叩r生此的一種 心、万式。處理器内之多線程特別提供了f有 效使用各種處理哭咨馮、说山 捉扒了更有 内之埶… ,力,尤其是更有效利用處理器 , 逑耳。很特別地,藉由將多線程加入處理哭之執 :=則Γ特定線程處理中由於停滯或其它延:而閒 、:;0:週期可用以服務另一線程。一特定線程處理之停 理器管路内之多個事件而起。舉例而t,在一線 ,、含指令q速緩衝記體資料未取得或轉移遺漏預測 亦即’長期等待時間作業)在典型上會導致相關線程停滯 〈處理。長期等待時間作制執行邏輯效率之負面影響是 T近來已凌焉圮憶體存取及擷取速率的提升之執行邏輯產 量之增加而益形惡化6 ,由冲夕曰遍的作業系統(例如:Windows Unix 作業系統)對此等多線程應用提供支援之觀點看來,多線 程電腦應用亦日漸普及。多線程電腦應用在多媒體領域上 特別有效率。 根據在相關聯處理器内使用之線程交錯或切換方式,多 、’泉私處理斋可廣泛地分成兩類(亦即,精細或粗糙設計)。 精細多線程設計支援處理器内之多重主動線程且典型上以 4-
I-請先閱讀背面之注意事項再填寫本頁)
--------訂---------線I 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 經濟部智慧財產局員工消費合作社印製 476915 A7 -------— R7__ 五、發明說明(2 ) 逐週爲基礎交錯二不同之線程。粗糙多線程設計典型上在 一長期等待時間事件發生(例如,高速緩衝钯憶體未取得 貝料)時父錯不同線程之指令。在1996年5月之第23屆 遂AS際研之第2G3-2 12頁上由Eiek=^TZT J〇h_ns〇n R.等人所著「商業應用環境下多線程單一處理器 足砰估」一文中討論了粗糙多線程設計。在1994年麻薩諸 塞州Norwell市之Kluwer學術出版公司由R a Jannuci等人 編輯而成的支線程電腦、續1:最新科技概要之第ΐ67-2ϋα 頁上由Laud on J· ; Gupta Α.等人所著「多重上下文處理哭 设計t結構與實作之協定」一文中進一步討論了精細與粗 糙設計間之,區別Laudon尚提出一種結合精細設計之逐週 切換與粗糙設計之全管路.式連鎖之交錯方式(或分段方 式)。到最後,Laudon提出一使得在特定數目週期中無法 使用某一特殊線程(或上下文)之Γ壓制」(back 〇ff)指令。 此一「壓制」指令可於預定之事件發生(例如,高速緩衝 記憶體未取得資料)時提出。依此方式,Laud〇n僅使得線 程之一無法使用即可避免須執行實務之線程切換。 發明概述 根據本發明,提供了 一種在多線程處理器中進行線程切 換作業之方法。來自多線程處理器内之指令資訊源對於第 一線程之第一預定的指令資訊量之分配係受偵測。響應於 對第一線程之第一預定的指令資訊量分配之偵測,開始了 自該指令資訊源對第二線程之指令資訊分配p 捉對附圖及其後之細述,本發明之其它特色將極爲明 -5- 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) --------------------訂---------線· (請先閱讀背面之注意事項再填寫本頁} 五、發明說明(3
經濟部智慧財產局員工消費合作社印製 顯。凰式簡述 =例子且不限於附圖中之圖面説明本發明 <參考數字表示相似的元件,卫其中: 相门 圖1馬可貫?本發明之處理器示範管路之方塊圖。 圖2示出可實現本於昍 、 衾月<一般用途多線42微處理器形 又處理器示範具體實施例之方塊圖。 、圖3一馬7ΤΓ於一圖2〈一般甩途微處理器内之微指令轉換引 〈不範具體實施例之細部架構方塊圖。 回 丁範的多線程微處理器之選定的組餘方挽 圖,且特別地説明如同渴龉μ八M I槐 衝能力之各種功能單元刀割以併人多線程而提供緩 衝圖/、示/根據本發明的—個具體實施例之示範指令串 衝益(細邵結構及架構方塊圖。 甲 ,發明示範具體實施例之線程切 季耳又遴輯組件方塊圖。 之= 泉二根二本發明示範具體實施例在多線程處理器 7 一月^'寺,決疋起始線程之方法流程圖。 =二出根據本發明示範具體實施例對 =程之轉移指令分配,在多線程處理器内進行;; 換作業义万法流程圖。 仃、,泉矛王 圖9不出根據本發明示範具體實施 停滞時,在多線程處理器内進行線程切=期寺待 程圖。 资忭菜 < 户 式 擎 請 先 閱 背 之 注 意 事 項 再 4赢 本 頁i 緩 邏 内 之 切 時 法流 線 本紙張—尺度適用 297公釐) A7 五、發明說明( 4 B7 經濟部智慧財產局員工消費合作社印製 圖10示出根據本發明 除時,在多線程.處理哭貫施例在發生内部管路清 圖。 °。内進行線程切換作業之方法流程 圖11示出根據本發明亍r m — 程「無資料流動」狀、、尸^具體貫施例在發生對-特定線 換作業之方法流程圖“線程處理器内進行線程切 圖=根據本發明示範具體實 态至一指令預解碼器 拍7 _,k衝 配時’在多線程處理哭内.、:」程广預定指令資訊量之分 圖。 。。内進仃線程切換作業之方法流程 圖1 3示出根據本菸日一一 除時,在多線=:,具體實施例在發生外部管路清 圖。 i备内進行線程切換作業之方法流 圖1 4示出根據本發明示蝴命 指令串内之插入的流程時,;1…例在偵測目前線程 拖你f、、 、在夕線私處理器内進行線程 換作業之方法流程圖。 圖15A及15B爲顯示根據本發明之線程切換控制邏輯 個別不軏具體實施例結構之概要示意圖,在圖6中係以 塊圖形式示出的。 ' 圖1 6爲根據本發明示範具體實施例將-1流程標記(或插 入的流程)插入一指令串之邏輯概要示意圖' 詳細説明 所説明者爲一種在多線程處甚„器内線程切換風之方法 。爲了解的,在下列將述及許多特硃 程 之 切 之 方 及 之 . --------訂---------線# (請先閱讀背面之注意事項再填寫本頁) 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 476915 A7 B7 經濟部智慧財產局員工消費合作社印製 五、發明說明(5 細:,俾徹底瞭解本發明。總之,對熟知此項技藝之人士 而言,沒有這些特殊細節本發明也可實現將是很明顯的。 、爲了本規範之目的,「分配(dispatch)」乙字應涵括從一 位置或功I單iL之具正的資赶傳送或傳播,以及在準備眞 正的貪料J秦送或傳播之歩壤。例如,「分配」乙字應包括 依特殊次序之資料移動或者㈣一儲存位置或緩衝:傳播 之準備狀態。 圖1爲顯示可於其内寬現本發明之處理器管丨〇之示範具 骨豆貫施例之向膛方塊圖。爲了本規範之目的,「處理器 (processor)」乙字肩用來稱呼可執行一指令(例如巨或微; 令)序列之任何機器,且應用以包括,但並不限於一般用 途微處理‘器、特殊用途微處理器、圖形控釗器、聲音控制 器、多媒體控制器及微控制器。再者,「處理器」一詞尤 ”應用以稱呼合成指会箠雹腦(c〇mplex %
Computers,下文簡稱CISC)、減縮指令集電腦(Reduad
Instruction Set Computers,下文簡稱RISC)、或極長指令字 (Very Long instruction w〇rd,下文簡稱 vuw)處理器。管 1 0包含許多管路級,由取得管路級12開始,在此級將擷 取指令(例如巨指令)並加入管路丨〇。舉例严言,可從與處 理器一體或密切關聯之高速緩邀記憶體擷取或經一處理器 匯流排從外部主記憶體擷取巨指令。巨指令從取得管路級 1 2傳播至解碼管路級i 4,在此級巨指令被轉譯成通於在 處·理器内執行之微指令(亦稱爲「微碼」)。然後微指令向 -8- 本_纽綱+@_ii^|(CNS)A4 規格⑽ x 297 公髮)------ · --------訂---------線"^· (請先閱讀背面之注意事項再填寫本頁) 476915 A7 B7 五、發明說明(6 ) (請先閱讀背面之注意事項再填寫本頁) 下游傳播至分配管路級1 6,在該級根據可甩性I霞求將處 理器資源分配至各顧微指令。在退出退離管路級2 〇之煎: 則在執行級1 8執行微指令。 毯^理器架構 圖2爲示出可實現本發明之一般用途微處理器3 〇形式之 處理器示範具體袁施例之方垛圖。下述係多線程(下文簡 Μ T )處理器説明微處理器3 〇,因而可同時處理多重指令 線程ί或上下文)。總之,下所提供規範中之許多内文並非 專對多線程處理器,而可在單一線程處理器中找到其應 用。在一示範具體實施例中,微處理器3 〇可包含執行In— 架構指令集之Intel架構(下文簡稱ία)微處理器。 微處理器30包含一依序前端及一失序後端。該依序前端 包括一匯流排介面單元32,該單元係做爲微處理器3〇與 一可使用微處理器3 0之電腦系統之其它組件(例如,主記 憶體)間之通路。至此爲止,匯流排介面單元3 2將微處理 器3 0耦合至一處理器匯流排(未示出),經該匯流排微處理 器30可接收以及傳播資料及控制資訊。匯流排介面單元 經濟部智慧財產局員工消費合作社印製 3 2包括控制處理器匯流攝上通訊之前側匯流排”⑺加以心 Bus,下文簡稱FSB)邏輯34。匯流排介面單元32尚包含對 處理态匯流排上之通訊提供緩衝功能之匯流排佇列3 6。所 顯π之匯流排介面單元32係用以接收來自記憶體執行單元 4 2之匯流排需求3 8及送出監視或匯流排回返4 〇至記憶體 執行單元42,記憶體執行單元4 2提供了微處理器3 〇内之區 域記憶能力。記憶體執行單元4 2包括一統合資料及指令緩 9- 本紙張尺度適用中國國家標準(CNS)A4規格(21() χ 297公爱) 476915 A7 B7 經濟部智慧財產局員工消費合作社印製 五、發明說明(7 衝記憶體44、—資料轉換查詢緩衝器(Translati〇n
Lookaside Buffer ’下文簡稱τ LJB ) 4 6以及記憶體排邏輯 4 8。d 體執行單元4 2接收來自微指令轉換引擎5 4之指 令取得需求5 0並將原始指令5 2 (亦即編碼之巨指令)傳送 至械指令轉換引擎5 4,微指令轉換引擎5 4將收到之巨指 令轉譯成對應之微指会集。關於微指令鎳換引擎54之其它 細節説明如下。 解碼後之指令(亦即微指令)從微指令轉換引擎5 4送至追蹤 傳运引擎6 0。追蹤傳送引擎6 〇包含一追蹤緩衝記憶體 6 2、 追縱轉移預測(下文簡稱B T B ) 6 4、一微碼排序器 6 6及一微碼(U0P)佇列6 8。追蹤傳送引擎6 0係做爲微指令 緩衝冗憶體’且爲用於下游執行單元7〇的微指令之主要來 源。在處理器管路内提供微指令缓衝記憶功能後,追蹤傳 运引擎6—0 α及尤其是追蹤緩衝記憶體6 2容許撬開微指令 轉換引擎5 4完成之轉換工作,以提供相當遙之微指令頻帶 寬。在一示範具體實施例中,追蹤緩衝記憶體6 2可包含一 個2 5 6組8線之關聯記憶體。在本示範具體實施例中, 「追縱(trace)」一詞可認定爲存於追1緩衝記憶體6 2的登 綠内之微指令序列,各登綠包含了指標,以前引及進行含 追縱之微指令。依此方式,追蹤緩衝記媳體6 2協助高效能 之排序’因而爲了獲得後續的微指令,在目前的存取宣成 之前’可知即將存取的下一登綠之位址。追蹤可看成是以 追縱頭相互區隔之指令「區段(blocks)」,且在遇及一間 接轉移或達到許多目前臨界狀況(例如:可由單一追蹤涵 10- 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) ---7-----------------訂---------線 (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 476915 五、發明說明(8) 括之條件轉移數目或可包4 、 之一而終止。 一換…微指令之最大數目) =緩衝記憶體轉移預測器64提供了與追縱緩衝記㈣ 62·内又追蹤相關之區域 / =序.66將微指令供予微物“8,然後微指合從 j入—失序㈣行叢集。因此微處理器30可視爲具有 匕叾匯况排介面單元3 2、, 。— ’、 換引擎54及追縱傳送引擎6。:::…42、微指令轉 述之失序㈣。 依相端,以及將於下詳 ::碼仔列68分配之微指令係由失序1集71接收,失 序叢木71包含一排程器72、一 哭 ^ ^ 曰仔叩改名夺7 4、一分配 口口 正緩衝洛7 8及一重運作佇列δ 0。排程器7 2勹 括一組迎站,並用以規劃及分配由執行單元 ζ 指令:暫存器改名器74對隱藏之整數及浮點暫存器(可^ 二處理器3㈣行Inte_指令集之八個^ 存^<任一個或八個暫存器之任一個)執行暫存器改名之 功能。分配器76根據可用性及需求將執行單元及 V之資'f配至微指令。若是資源不足以處理-微投ί 日:,分配器76負責引發一停潘信號82,該信號經追縱ς 迗引擎6〇傳送至微指令轉換?1擎54(如在Μ所示者)。已 ^有由苇存备改名器7 4調整其等來源區域之微指令係以I 確的程式次序置於重整緩衝器78中。當重整緩衝器78^ =微指令已’執行完成並準屬退省時,則.其等將從重整锾衝 w 7 8中私除。重運作作列8 〇將擬重新運作之微指令傳送 *7 --------^--------- (請先閱讀背面之注意事項再填寫本頁) -11 經濟部智慧財產局員工消費合作社印製 476915 A7 ------B7____ 五、發明說明(9 ) 至執行單元7〇。 所示之執行單元7 〇包括一浮點I行引擎8 4、一奴奴1 y 正数執 仃引擎8 6及一 〇位準資料緩衝記憶體。在一個由微處理 為3 〇執行Intel架構指令集之示範具體實施例中,浮點執<一 引擎8 4尚可執行MMX⑧指今。 微指令轉換引擎 圖3爲有關微指令轉換引擎5 4之示範县體實施例架構更 詳細之方塊圖。微指今轉換引擎5 4有效地做爲追蹤緩衝記 憶體之Γ遺漏處理器」,乃因其在追蹤緩衝記憶體未取得 資料時將微指令傳送至追蹤緩衝記憶體6 2。至此爲止,在 一追縱緩衝記憶體未取得資料之情況,微指令轉換引擎54 動作以提供取得及解碼之管路級丨2及1 4。所示之微指令 轉換引擎5 4包括一下一指令指標(next instructi〇n p〇inter, 下文簡稱N I P ) 1 〇 〇、一指令TLB 1 02、一轉移預測器1 Q4、 一指令串鍰衝器1 0 6、一指令預解碼器} 〇 8、一指令操縱 邏輯1 1 0、一指令解碼器丨丨2及一轉移位址計算器丨丨4。 NIP 1〇〇、TLB 102、轉移預測器1 04及指令串緩衛n 1 〇 6 合起來構成一轉_〜移預測單元(branch predicti〇n仙忖,下文 簡稱BPU)99。指令解碼器丨丨2及轉移位址計算器丨丨4合起 來形成一指令翻譯(下文簡稱I X)單元1 1 3。 下一指令指標1 0 〇對統合緩衝鸠憶體4 4提出下一指令需 求。在此不範具體實施例中,微處理器3 〇包含一可處理二 線程之多線程微處理器,下一指全指標1〇〇可包含一多工 器(multiplexer,下文簡未顯示),在第一抑或第 -12- 本紙張尺度適用中國國家標準(CNS)A4規格(21〇 X 297公爱) ----7-----------------訂---------線 (請先閱讀背面之注意事項再填寫本頁) 476915
二線程相關聯的指令指標之間做選擇,以納入其所提出之 下一指令需求中。在一個具體實施例中,若對兩個線程之 才曰令均有需求,且該二線程用之指令串缓街器丨〇 6資源迷 未耗^盡,則下一指令指標丨0良將以逐週(「乒乓」)方式交 熬、第一及第二線程之下一指令需求。依初始需求位址是否 在3 2位元組或μ位元組對齊線之上半部,下一指令指標 而求可爲1 6、3 2或6 4位元組者。在一追蹤緩衝記憶體未 取得貪料需求爲最鬲優先序之重新引導需求時,下一指令 指標100可由轉換預測器1〇4、轉移位址計算器丨」‘或: 追縱緩衝記憶體6 2,·羞新導。 田下一扎令指標1 〇 〇對統合緩衝記憶體4 4下了指令需求 時,將產生一與該指令需求相關聯並做爲有關指令需求的 「‘ Π己」之一位元「需求識別符」。當送回響應於一指令 而求之貝料時,統合緩衝記憶體4 4併同該資料送回下列標 記或識別符: 1 ·下一指令指標1 Q CL練提供之Γ需求識別」; 2 *識別回返的貧訊塊之三位元「資訊塊識別符」;及 3 ·識別回返資赴所屬線程之「線裎識別符」。 下一指今需求係從下一指令指標i 〇 〇傳送至指令丁lB 102,TLB 102執行位址檢視作業並將實際位址傳送至統合 之緩衝記憶體4 4。統合缓衝記憶體4 4將對應之巨指令傳 送至扣♦串緩衝态1 〇 6。各個下一指令需求亦直接地從下 一才曰々才曰“ 1 〇 〇傳送至指令串緩衝器1 〇 6,俾容許指令串 緩衝器1 0 6識別來自統合緩衝記憶體4 4所收到的巨指令所 -13- 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公爱) 「靖先閱讀背面之注意事項再填寫本頁) 訂· ί線一 經濟部智慧財產局員工消費合作社印製 經濟部智慧財產局員工消費合作社印製 476915 A7 -—~^__ 五、發明說明(11 ) 屬又線程。然後由指令串緩衝器丨〇 6發出第一及第二線程 兩者又巨指令至指令預解碼器丨〇 8,該解碼器將對收到的 (巨指令之)指令_進行許多的長度計算及位元組標記作 業。很特別地,指令預解碼器i 〇 8產生了尤其產龙 傳送至指令操縱邏輯11〇的指令串中巨指令之位元組標記 向量序列。然後指令操縱邏輯Η 〇使用τ指令之位元Z標 。己向里序列。然後指令操縱邏輯j丄〇使用了位元組標記向 量將離巨指令引導至指令解碼器丨丨2,以便進行解碼。巨 指令亦從指令操縱邏輯丨丨〇傳送至轉移位址計算器1 1 4, 以便進行轉移位址計算。复後微指令從指令解碉器1 U落 至追縱傳送引擎Μ。 多線程之會施 在圖2所7JT微處理器3 〇之示範具體實施例中,將注意到 具=有限的資源重複或複製。冑了在一處理器中提供^線 程能力,而在該處理器中具有有限的功能單元.複製,則須 在線程間實施某一裎度之實禪共用。將樂見到所採用之資 源共用方式是與處理器可同時處理之線程數目有關。因爲 在一處理器功能單元典型上提供了某些緩衝(或儲存)功能 性及傳播功能性,資源共用之立式可看成是包含(1)儲存 及(2)處理/傳播頻帶寬共用之成份。舉例而言,在支援兩 個線程同時處理之處理器中,在各種功能單元内之緩衝器 貧源可在二線程間做邏輯上分割及分1。同樣地,在兩個 功能單元間用做資源傳播的路徑所提供之頻帶寬必須在二 線程間劃分及分配。因爲這些資源共用的方式可在處理器 -14- 本紙張尺度適用中國國家標準(CNS)^^21〇 χ 297公釐)------- · --------^--------- (請先閱讀背面之注意事項再填寫本頁) A7 B7 經濟部智慧財產局員工消費合作社印製 五、發明說明(12) 管路内之許多位I採用,根攄祛 很跟特疋位置之指令及特性,在 此等之各個位置可採用不同之资 1 U足貝源共用方式。將樂見到基 於可變的功能性及運作特性, 巧卜行『生,不同的資源共用方式可適於 不同的位置。 圖4爲示於圖3的微處理哭3 〇的% & 王j 0的4疋組件之方塊圖,並 描述在邏輯上分割以納入兩個 1U、·泉心(耶即第0線程及第1線 程)可提供緩衝能力之各種功姅语一 $ 功此早兀。對一功蚯單元Μ衛 (或儲存)裝置之二線程邏輯分刻 、 、科刀剳可由將缓衝資源内的第一 預定登錄組分配至第一線程乃炫免、之、 求%及、k衝貧源内的第二預定登錄 組分配至第:線程來完成。很特別地,此可由提供兩對讀 寫指標來達成,第一對讀寫指標係與第一線程有關,而第 二讀寫指標係與二線程相關。第一組讀寫指標可限制在緩 衝貝源内帛@疋數目之登錄,而第二組讀寫指標可限制 在緩衝資源内第二預定數目之登錄。在示範具體實施例 中,所π出芡指令串緩衝器丨〇 6、追蹤緩衝記億體6 2及指 令佇列1 0 3可提供在第一與第二線程間邏輯上分割之儲存 容量。 現知於下更詳細討論在處理器内功能單元間路徑之頻帶 寬分配方式。 指令串緩衝器 參照圖3,指令串缓衝器丨〇 6將一指今串加入單一指令 解碼為1 1 2 (亦即無解碼器複製)。爲了有效率地使用此單 一解碼資源,希望確保以有效率的方式劃分及分配在指今 串緩衝器1 0 6與指令解碼器丨丨2間路徑之頻帶寬以及指令 -15- 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) •---·---------¾--- (請先閱讀背面之注意事項再填寫本頁) 訂---------線. A7 A7 種對 五、發明說明(13) 解碼备1 1 2之「解碼頻帶寬丨 來自指令串緩衝哭所以本發明提出了〆裡別 法。此一線程切換。方0二:兩個指令串實施線程切换之方 指令㈣H1U之速率1 2 I兩個線程之各線程指令加A 程切換目標之線程切換演譯:明尋求實現意阃遠成下列線 • 僅在另一線程且右 器1…之資料時=:::送(例如:從指令串缓衡 到後端===的線程時齡:當目前的線程收 ·===保證在魏遂後切換前於下游的管路内麒 程切換β 確保在執行從目前線程至目標線程之線 •其它線程(例如:僅在目前線程之 :二貝W已傳送至處理器管路而未呼求任何其它的 、.泉私切換機構時進行線程切換作業).及 切換之計罰(例如:在找出可引發線程切換作 現/Λ的轉移〈前’發出預定之最小指令資訊量)。 ::參私用於選擇儲存在指令串緩衝器】“ 説::;Γ令解碼器112之線程資料之示範具體實二 處理總之’將很快地樂見到本發明之内容可玛在 ;-右5内又任飪位置,俾做線程切換或交錯.。圖5爲 Π:::Τ器106其結構及架構更詳細= 很特別地,所示之指令串緩衝器丨〇6包括一具有4個 本紙張尺Ιϋ?ϋϋ·準(CNS)A4規格⑵〇 : Ϊ --------訂---------線 C請先閲讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 -16- 476915 A7 B7 經濟部智慧財產局員工消費合作社印製 五、發明說明(14) 登錄120(登錄〇v登錄3)之儲存行到,該等登綠在邏輯上 分割成專用以儲存—第一線程(第。線程)指令之第一分割 1 2 2以及專用以儲存—第二線程(第1線程)指令之第二分 ^ 124。、在一個示範具體實施例中,登錄12〇之各登綠可 谷、’内8個資Λ塊’因而指令_緩衝器丨〇 6對每一線程提供 1 6個資料緩衝記憶塊。 才曰7串4衝為1 〇 6尚包含一控制著資料入及讀土邏蛑分 割122及124之分配區段I。。 刀割1 2 2及1 2 4各具有含於分配區段1 2 5内之個別分配 遴輯1 2 6。各分配邏輯丨2 6包含一寫入指標丨2 8及一讀出 指標1 3 〇,各引用相關聯之分割1 2 2或1 2 4内之一個登綠 120。各分配邏輯126接收一來自統合緩衝記憶體44之指 令串’並根據線程見範將指令爭資饥皂(亦即8位元組)寫 入第一或第二分割1 2 2或1 2 4之登錄1—2 0。很特別地,由 查與各資教塊相關聯之「旅毯識赳符」,各分配邏輯 1 2 6可決足要從統合緩衝記憶體4 4所收到之資料窟入那— 個分割。 各分配邏雜L JL6將來自個別分割1 2 2或1 2 4之資料輸出 至一 MUX 132,該MUX基於由線程切換控制邏輯丨3 6發出 之線私選擇k號1 3 4而在分割1 22龜1 2 4的輸出之間做選 擇。因此’在本發明之示範具體實施例中t,實施缓兹交錯 或切換方式者爲線程切換控制邏輯丨3 6。再者,所示之線 程切換控制邏輯1 3 6用以監視分割1 2 2或1 2 4之各分割細 由線路1 3 8及1 4 0之輸出,俾能決定一資料塊何時從分割 1 2 2或1 2 4之任一分割受分配,並識剋受分配之資料塊來 -17 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) ----j-----------------訂---------線 (請先閱讀背面之注意事項再填寫本頁) 476915 經濟部智慧財產局員工消費合作社印製 A7 五、發明說明(15) 自这些^的那一個。然後MlJX 132έί選定之資料塊輸出 在處理為官路内向下游傳送至指令預解碼器I 〇 8,而最後 傳至指令解碼器1 1 2解碼。 圖ό爲説明線程切換控制邏輯1 3 6的邏輯組件之方塊 圖很特別地,所不之線程切換控制邏輯1 3 6包括閒置切 換邏輯1 50、轉移切換邏輯丨52、長期等待停滯邏輯 1 5 4、内邵清除邏輯丨5 6、無資料流動邏輯1 5 8、強迫線 程改變邏輯160、外部清除邏輯162及插入流程邏輯 16 4 ^圖6所示邏輯1 50-1 64之各邏輯離散時,如將於下 说明的’在各邏輯間可有顯著的組件共用。邏輯㈠ 之各邏輯實施一可使得至MUX 132之選擇信號丨34發出或 撤回因而引起以上述方式做線程切換之特殊功能。在邏輯 150-164之各邏輯包含之功能將參照在圖7-14提供之流程圖 做説明。一特殊示範具體實施例之細節係參照圖15_16做 説明。 間置切換邏輯(1 5 0) 在全部線程閒置之情況,閒置切換邏輯丨5 〇決定要選出 許多線程的那一個做爲起兹線程。圖7爲根據本發明之示 範具fl豆貫施例所示出當一多線程處理器中之兩個線程閒置 時決足起始線程之方法2 0 0之流程圖。將樂見到方法2 〇 q 亦可找到在一支援超過兩個線程的多線程處理器中之應 用。在閒置切換邏輯1 5 0中可實施方法2 〇 〇。方法2 〇 〇始 於具有閒置線程狀況之步驟2 0 2,其中兩個線程(亦即, 第0線程及11)均閒置。在步驟2 04,基於(僅做爲例子)在 18 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) —*-----------------訂---------線 (請先閱讀背面之注意事項再填寫本頁) 476915 Λ7
器 之 段 移 號 經濟部智慧財產局員工消費合作社印製 476915 A7 _ B7 五、發明說明(17) 之轉移指令序列(或分配),在多線程處理器中進行線程切 換作業之方法2 2 0之流程圖。方法2 2 0始於步驟2 2 2,在 該步驟一轉移指令由從行列之邏輯分割1 2 2或1 2 4 (例如: 從分配至第〇線程之邏轉分割1 2 2 )發出之分配區段丨2 5排 序。線程切換控制邏輯丨3 6,而尤其是轉移切換邏輯i 5 2 接收來自圖5所示分配區段1 2 5之轉移識別作_發 224 (BPsbsawbranch) 〇 分配區段1 2 5發出轉移識別信號2 2 4以識別已由轉移預 測單元99預測之轉移指令是受取用。很特別地,轉移預測 器1 〇 4將利用任何一個已知的預測數目及方法或演譯(例 如·基於相關轉移指令之有記綠之接移i定)對特定之轉 移指令是否將被取用或不取用做預測。然後氇移預測 1 〇 4將设定與有關指令相關聯之位元,並以處理管路内 才曰々下游以及「需求識別符」傳送,俾能與由分配區 5相關之分配關聯。應注意到僅對預測要被取用之轉π 指令發出轉移識別信號224,而非對被預測不被取用者發 出該信號。總之,在一本發明之替代具體實施例中,當Λ 逢已做任何預測之轉移指令時,可發出轉移識別信 224 〇 固示出轉私識別k號2 2 4做爲至及閘2 2 5之輸入。 在决定I 2 2 6,就目前線程(第〇線程)之預定最小指令資 =量(例如:預定之最小資訊塊數目)是否已從指令串緩衝 :;〇6分配(或送出)做決定。在此端,並參考圖“a,切 遴輯136包括一資訊塊送出增量器2 2 8形式之計數 --------------------訂---------線 (請先閱讀背面之注意事項再填寫本頁) -20
476915 經濟部智慧財產局員工消費合作社印製 A7 - B7 五、發明說明(18) 器,該增量器維持了線程切換之前從指令串緩衝器1 〇 6之 目前邏輯分割122或124分配之資訊塊計數。接收三個輸 入之及問2 3 0之輸出將增量資訊塊送出增量器228。分配 區段1 2 5發出一 B P準備信號2 3 2以指示一資訊塊準備從相 關邏輯分割1 2 2或1 2 4分配。與登錄(來自線程切換控制邏 輯1 3 6 )相關之線程信號2 3 4識別了準備受分配之資訊塊所 屬之線程(因而邏輯分割丨^或丨24)。_N〇T (1以&⑴信號 2 3 6指出在指令操縱邏輯丨丨〇未遭遇停滯狀況。在信號 2 3 2 - 2 3 6發出時,及閘2 3 〇之輸出發生且資訊塊送出增量
器2 2 8增量,以便記錄從指令串緩衝器丨〇 6分配之資訊塊 之排序。 A 線程切換控制邏輯1 3 6尚包含一「轉移切換前資訊塊」 暫存器2 3 8,在本發明的一個具體實施例中,該暫存器可 經控制暫存器匯流排2 4 0做程式規劃以儲存預定的資訊塊 數目之表示,在響應於轉移指令之線程切換作業發生之 削,咸等資汛塊須從指令串緩衝器1 〇 6予以排序。在本發 明 < 一替代具體實施例中,表示預定的資訊塊數目之値可 用固定線路程式。切換控制邏輯i 3 6尚包含一比較器 242,它將對增量器2 2 8及暫存器2 3 8之輸出^行比 業’當增量器228指示値超過暫存器238中之儲存値時, 比較器242將發出一信號至及閘244。比較器242之輸出 信號發出係對應於在圖8中決定盒2 2 6之正決定。 及閘2 3 0亦提供輸入至及閘225,而及閘2 3 0輸出之發生 以及轉移識別信號224之發出引起及閘2 2 5之輸出(亦^, -21 - 本紙張尺度國家標準(CNS)A4規格(210 X 297公釐) ----.------------------訂---------線 (請先閱讀背面之注意事項再填寫本頁} A7 B7 五、發明說明(19〕 經濟部智慧財產局員工消費合作社印製 轉移送出信號2 2 7 )做爲及問? 9」、μ ”7、政山主 川馬及閘2 2 4〈輸入。轉移送出信號 2 2 7 1發出表示在步驟2 2 2偵測的事件發生。 在決疋盒2 2 6之正面法索你 、 向,矢疋後,万法2 2 0進行至決定各 2 4 8,在該處將就一替代埯裎 皿 田 代、、泉私(例如:第1線程)之預定最 小才曰令貧訊量(例如:預定之芒 t疋 < 取小貧訊塊數目)是否未定且 ==指t串緩衝器1〇6之遇輯分害之分配做成 之二」令串緩衝器1〇6内已對目標線程儲不足夠 扎々貝Λ時此I定有利於防止並 ,、焱生線紅切換,以確保 對此一目標線程之線程切換。 掉較再供給目前線程指…=地,-線程切換會用 一 求担扣7心潛在所需之時計週期。舉例 而…線程切換作業可能需要六個週期,而對在三個 計週期内收到目前線程之指令資訊存有高度可能性。 例圖Μ ’ ί程切換控制邏輯136之示範具體實 °。「切換則貧訊塊未定」暫存器,該暫存哭可經 =暫存器㈣排24Q做程式規勒儲存—表示目標線程 Η二、弟1線Mm小資訊塊數目,在料-線程 刀至孩目標線程之前應儲存在—行列分割(例如:分 在本發明之—替代具體實施例中,表示此預 的貧訊塊數目之値可再次囿仝姑μ J 人用固疋線路程式。線程切換控 :輯⑴亦包括—「計數資訊塊未定」增量器2 5 2,該 ^料儲存於指令串緩衝器⑽中的目標線程(亦即 4疋目:的線程)之資訊塊數目計數。當從統合缓衝記憶 Μ到(才曰令貧訊塊被指定至緩衝器1〇6中的一個登 時’分配區段⑴所發出之「㈣送出資訊塊未定」信 時 割 定 制 增 不 體 綠 號 —------------------訂---------線 (請先閱讀背面之注意事項再填寫本頁) I紙張尺度適财關家鮮(CNS)A4規格(21〇·; -22- 決 少 五、發明說明(2〇) ,"知曰量i曰量态2 5 2。分配區線1 2 5利用上述所討論並 與$應於下一指令需求而擷取的各資訊塊相關之「線程識 ^付^,以識別一特定資訊拖是否用於目標線程,而非用 、”、,泉程比較為2 5 6比較了存於暫存器2 5 〇中及增量 = 2 5 2中之個別値,當增量器2 5 2維持之値超過存於暫存 °° 2 5 〇中之値時,該比較器發出一輸出信號至及閘2 4 4。 車又w 2 5 6車則出信號之發出係對應於圖8所示決定盒2 4 8之 正決定。 在夬足盒248之正面決定之後,方法22〇進行至決定盒 =6 0,在該處將就目前線程之預定指令資訊量是否已排入 微處理器30的管路做成決定。此決定有利於確保在線程切 ί作業^前/目前的線程之順向進行。在一個使用Intel架 (下又簡稱IA)指令集之本發明示範具體實施例中,將就 目前線程之三個指令資訊塊是否已销純成決定,此將 保證對目前的線程至少有一個完整指令。 —在本發明之替代具體實施例中,在決定盒26〇所做之 疋可免除對轉移指令排序之偵測,轉移指令本身構成至 個整之指令,確保符合在決定盒2 6 〇之法定。 參考圖1 5 A,線程切換控制邏輯丨3 6之示範具體膏施 可包含一比較器2 6 2,以確定「資訊塊送出」增量哭2 所維持之計數値是否大於或等》卜預定的最小曰値里「例 :在本發明之替代具體貫施例中,此預定之最小値可阿 可程式化或固定線程程式。若增量器2 2 8所維持之値是等 於或超過預定之最小値,比較器2 6 2發出一輸出信號至 -----------·1111111 ^ . — — I I I I 1 I (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 例 2 8 如 爲 及 -23 經濟部智慧財產局員工消費合作社印製 476915 A7 -------_______ 五、發明說明(21) 閘2 4 4。比較咨2 6 2輸出信號之發出對應於圖8所示決人 2 6 0之正決定。 益 在決足盒2 6 0之正面決定之後,則在步驟2 64進行線程 =·換作業,決定盒2 2 6、2 4 8及2 6 0所代表之條件俱已符 口。在另—方面,若決定盒2 2 6、2 4 8 ,或26 0所代表條件 t任一個條件無法符合,則維持在步驟2 6 6之目前線程選 擇。然後方法2 2 0在步驟2 6 8終止。 耳 將樂於見到步驟2 2 2與決定盒2 26、24 8及26〇所代表之 條件表7F至圖1 5 A所示及閘2 4 4之四個輸入,且當這些條 件均符合時,及閘244將發出輸出並供予輸入至^問 2 4 5。或閘2 4 5之輸出產生了從線程切換控制邏輯丨3 6輸 出之線程選擇信號135。或閘2 4 5之輸出發生係對應於^ 步驟264之線程切換作業之執行。 在月本發明之上述具體實施例係以增量器U 8、「轉 移切換前資訊塊」暫存器2 3 8及比較器242來實現時,將 很陕地可見到可以一減量器取代增量器2 2 8來實現本發 明,當發生線程切換時,該減量器會被預先載入暫存器 2 3 8所含之値。在此具體實施例中,每次從指令串緩衝器 6之目則輯分割丨2 2或1 2 4分配一資訊塊減量該減量 ”、:後減量發出一輸出信號(對應於在先前所述具體實 ,例中比較器242之輸出信號)以表示在決定盒2 2 6之正決 定在此具體貫施例中,該減量器亦可爲及閘2 3 〇之輸出 所減量。 長期等待停滞邏輯(1 5 4) -24- 本紙張尺度細巾國國家標準(CNS)A4規格(210一X 297公爱了 --------1--------- (請先閱讀背面之注意事項再填寫本頁) A7 A7 B7 五、發明說明(22、丨 由於可用在客& ^ & 扣人由\ 處理器之處理器管路中一祛 、 H刀配之資源有限,且亦由於轉移之、 心 記憶體資料未取;p ^夕·^返漏預測及緩衝
aa ^ 飪,在此一處理器管路内之停I 口很早U 的。特別參考示於 ^心知哪疋很千凡 7 6決足可用於從柃 j t生的疋为配态 、Μτ列6 8收到的特定線程指令(玄g卩n护人、 足不充足資# a丨2 相7 (亦即你U日令) ^ 1 Η Ρ .在預約站或重整緩衝器7 8内第0線 牙王努弟1線裎間邏轉 下,分配器76特別料V、:曰存為或登綠)。在此情況 特力J對一線程發出一停滞作 經追蹤傳送引擎60綠…, 佇卬仏唬82,孩仏唬 傳运至微指令接揸引擎5 4。在對一特 定線程發出如此的僖、、狀产嘹Q。咕 手 在對特 _ , . T⑱仏唬8 2時,將希望執行線程切換作 ^。在處理器管停滞之情況,長期等翁停滯邏輯!Η包本 實施線程切換作業之電路。 口 ==根據本發明之示範具體實施例,在發生長期 、+ T W歹’如·因貧源無法使用、轉移遺漏預測或緩衝 j L、把未取#貝料導致處理器管路之停滯)時多線程處理 w内進m切換作業▲法2 8 G之流程圖。方法2 s 〇始於 步驟2 82,在該處已制到—停滯狀況。如上述之説明, 可由決足示於圖2之特定線程停滯信號8 2之發出以偵測此 :停滯狀況。替代性地,可由決定例如由分配器76、追蹤 ,k衝圮憶體6 2 (兩者均稱爲「後端」停滯)、指令解碼器 112或指令操縱邏輯11〇發出之其它停滯信號之發生而偵測 泫停箒狀況。在步驟2 8 2偵測到停滯後,於步骤2 就是 否已經歷預定最小時計週期數目做成決定。參考圖1 5,線 程切換控制邏輯1 3 6之示範實施可包含一「長期等待計 -25- 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) (請先閱讀背面之注意事項再填寫本頁) ίφ^--------訂---------線·! 經濟部智慧財產局員工消費合作社印製 476915 經濟部智慧財產局員工消費合作社印製 A7 B7 五、發明說明(23) 數」暫存為2 8 6,該暫存器可經由控制暫存匯流排2 4 〇做 程式規劃以儲存表示此預定最小之時計週期數目値,該週 期數爲容許象程切換至目標線程之前自停滯偵測後必須經 歷又時間。在本發明之替代具體實施例中,表示此一預之 取小時計週期數目値可爲固定線路程式者。切換控制邏輯 2 8 2偵測到停滞已經歷之時計週期數目之計數。在處理器 管路停滯時,各時計週期發出之Γ I X停滞」或指令轉譯 停滯信號2 9 0將增量該增量器2 8 8。增量器2 8 8係由當停 W已克服時所撤消之「TCFB停滯」信號2 9 2之消除而重 疋。「TCFB停滯」信號2 9 2係由一追蹤緩衝記憶體充填緩 衝器(Trace Cache Fill Buffer,下文簡稱TCFB)(未示出)所 發出,TCFB將一分配停滯信號5 8從追蹤傳送引擎6 〇向上 游傳迗至微指令轉換引擎5 4。比較器2 9 4比較了存於暫存 器2 8 6及增量器2 8 8中之個別値,當增量器2ss維持之値 超過存於暫存器2 8 6之値時,比較器2 9 4發出輸出信號至 及閘296。比較器2 9 4輸出信號之發出係對應於圖績示決 定盒284之正決定。 若在決定盒2 84決定了未經歷預定之時計週期數目,則 在步驟2 8 5維持目前之線程選擇,且方法28〇圈回至決 盒 2 84 〇 在決定盒2 84之正面決定之後,方法28〇進行至失定盒 2 84,在錢將就目前線程之預定最小指令資訊量是,、已 排入微處理器3〇之管路敗成決定。如同上述關於圖^示 決定盒260之説明,係由「資訊塊送出」增量器2 2 8及比 -26 本紙張尺度適用中國國家標準(CNS)A4規格(210x297公釐7" —------------------訂---------線 (請先閱讀背面之注意事項再填寫本頁) 476915 A7 B7 經濟部智慧財產局員工消費合作社印製 五、發明說明(24) 較态2 6 2之組合做成此決定。比較器2 6 2提供一輸入至及 P甲1 2 9 6,-旦目前線程之預定資訊塊數目已排入微處理器 管路,則比較器2 6 2之輸出發生。 及閘2 9 6之輸出信號2 9 7傳送至轉移位址計算器ιΐ4, 然後孩計算器決足了已切換的線程(亦即目前線程)之重户欠 指令指標並對目前線程撤消轉移位址清除(ba清除)^ 號。在更一般之層面,當發生線程』刀換時,需要一指令/旨 標以識別重啓已發生切換的1猛之位置。此一指令指二; 爲被預測爲取用之轉移指令目嫖,在此情況係由^移 切換邏輯152提供該指令指標;(2)由微碼提供;或(3)由 轉移位址計算器1 1 4提供(如同剛在上面所討論之情況)。 在決定盒2 9 8之正面決定之後,進而在決定盒3〇〇對是 否已經發出指令轉譯後端清除信號3 〇 2做成夬定。若是如 此,則在步驟3 0 3進行線程切換。替代性地,在決定盒 2 9 8抑或3 0 0之負面決定之後,在步驟3〇4維持目前之: 程選擇。方法2 8 0則終止於步驟3 q 6。 为部清除遥輯(1 5 6) 内β官路清除作業係由微指令轉換引擎5 4本身呼求 的,此與k微指令轉換引擎5 4外部(例如:從「核歲」清 除作業形#之退離邏輯)呼求之外部清除相反。因爲做2 與目d線程相闞聯狀況而呼求清除狀況具有很高之機率,、' 對線程切換作業言此種清除作業是所期望之事件,而替代 線程可做好在管路中處理之準備(例如:已充填之^衝 器)0 -27- 本紙張尺度適用中國國家標準(⑶―規格⑽χ 297公髮 --1-----------------^--------- (請先閱讀背面之注意事項再填寫本頁) A7 B7 經濟部智慧財產局員工消費合作社印製 五、發明說明(25) ==根據本發明示範具體實施例,在發生峨 流ΙΓ Γ線程處現器中進行線程切換作業之方法31〇 L王圖。万法3 ! 〇始於 號的發生。表考在琢處已偵測到清除信 實、A ^ 乂圖A所717的切換控制邏輯130之示範具 :列’此可由偵測指令轉譯轉移位址計算器清除 叫信號3〇2之發出而實現之。很特別地,所示 w3Q2提供輸人至及心14,及間3i4尚收 =56之輸入。如上述之説明,當由「計數資訊塊未 ^冒量器252所記錄之指令串緩衝器…中之資訊塊未 t目超過存於「切換前資訊塊未定」暫存器25〇中之値 、比車乂态2 5 6〈輸出發生。因此,比較器2 5 6輸出發生 以代表方法31〇之线盒316所代表狀況之正決定,並後 在步碟318進行線程切換作業。很特别地,當及問31^之 兩個輸人均發生時,M及,14之輸出發生並依次提供一 發生的?入至或問24 5。在另一方面,若在決定盒316做 了負決足,則在步驟3 2 〇維持目前之線程選擇。然後方法 3 1 0終止於步驟3 2 2。 無資料流動遴鲺Γ 在目前線程發生1位準緩衝記憶體未取得資料之情況, 典型上需要相當大之時計週期數目以完成長期等待作業。 若符合圖9所示流程圖指定之長期等待作業之條件,在此 情況下長期等待邏輯丨5 4可引發線程切換作業。總之,若 不符合長期等待作業之全部條件,長期等待邏輯丨5 4將不 會引發線程切換作業。在此情況下,需要一替代邏輯。 -28 本紙張尺度適用中國國家標準(CNS)A4規格(21〇 x 297公釐) --I-----------------^--------- (請先閱讀背面之注意事項再填寫本頁) A7 五、發明說明(26 ) 經濟部智慧財產局員工消費合作社印製 圖1 1爲示出根據本於 — 處理器内的特定線程:「:範具體貫施例在發生對多線程 處理器内進行線;貝枓=」狀況時’在多緣程 始於步驟3 3 2 ,在_^業〈万法33G流程圖。方法33〇 .,_ 處偵測到對目前線程無指令從统合續 衝記憶體44流至指合隹p 7攸、无口、犮 -―曰油〜 ▽串1^衝器1〇6。參考圖15A,在一個 不範具體實施例中,^叮丄 社 1UI — 此可由當指令串供至指令串緩衝器 母…十週期,統合緩衝記憶體4續發出資料流動 / 4 (發生(或撤消)而加以偵測。「無資料流動」狀 況亦可以至指令預解碼器1〇8的資料流動鎖定做偵測,因 :此意1從統合緩衝記憶體44至指令串緩衝以06之資料 w動鎖疋。「然貧料流動」狀況亦可以至指令預解碼器 1 〇 8的貝料泥動鎖定做偵測,因爲此意指從統合緩衝記憶 體44至指令串緩衝器106之資料流動鎖定。 在决足益3 3 6 ’就從統合緩衝記憶體4 4至指令串緩衝 10 ό <典資料流動是否已經過了遺定最小時計週期數目 成决走。至此爲止,圖1 5 Α所示之線程切換控制邏輯1 包括一「無資料流動」計數器3 3 8,該計數器在表示目 線程無指令串至指令串缓衝器丨〇 6之資料流動信號3 3 4 撤消的每一循序時計週期會增量。當從指令串緩衝器1 至指令預解碼器丨〇 8之資料流動恢復發生時,信號a 3 發出將重定計數器3 3 8。信號3 3 5可響應於信號2 3 — 2 3 6 (亦即BP準備及NOT IS停滞信號)執行之及閘功能而 生。邏輯1 3 6尚包含一「無資料流動週期」暫存器340 該暫存器可經控制暫存器匯流排2 4 0做程式规劃,以儲 器 做 3 6 前 被 06 5之 2及 發 存 (請先間讀背面之注意事項再填寫本頁) 訂---------線秦 -29- 本紙張尺度適用中國國家標準(CNS)A4規格(21〇 χ 297公釐) 476915 A7 B7__ 五、發明說明(27) 表示在可偵測到無資料流動狀旯之前預定之最小時計週期 數目値。在一本發明之替代具體實施例中,表示此預定時 計週期數目之値可爲固定線路程式。計數器3 3 8及暫存器 3 40提供輸入至比較器3 4 2,當計數器3 3 8維持之値超過 存於暫存器340内之値時,比較器3 4 2發出一輸出至及閘 3 4 4。比較益3 4 2 (輸出信號之發生對應於風丨1雄示生定 盒3 3 6之正決定。 在決定盒3 3 6負決定之情況,方法3 3 〇進纡至維持段前 線程選擇之步壤3 4 5。 在決足盒3 3 6之正面決定之後,方法3 3 〇進行至實行決 疋盒3 4 6及3 4 8之決定,該等決定係與圖8所示方法2 2 〇之 決定盒24 8及2 6 0所做之決定一致的。因此,亦示出在決 定盒3 4 6及3 4 8實行決定的比較器2 5 6及2 6 2之輸出,以 k供輸入至及閹3 4 4。及閘3 4 4之輸出再次提供輸入至或 閘245。此提供若在決定盒336、346及348發生正面決 定時,在方法3 3 0之步驟3 5 0進行線程切換作業之邏輯實 現。替代性地,若在決定盒3 3 ό、3 4 6或3 4 8之任一個發 生了負決定,則在步驟3 5 2維持目前之線程選擇。然後方 法3 3 0在步驟3 5 4終止。 遂迫線程改變邏輯(1 6 0、 在某些情況下,可遇到尤其是線性的,亦即不含許多轉 移指令之指令串(包含第一抑或第二線程)。假設無任一上 述或下列所討論之其它狀況發生,可想.像到若無引發線程 切換之事件發生,此一線性線程將耗去不相稱比例之處理 -30- 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) (請先閱讀背面之注意事項再填寫本頁) 訂----- 線 經濟部智慧財產局員工消費合作社印製 A7 五、發明說明(28 ) B7 經濟部智慧財產局員工消費合作社印製 貝源爲了防止此一線性線程過度使用處理器資源,本 二^ ^出了對來自一資源(類如指令串緩衝器1 0 6 )的單一 、羅之預足扣令I詋1排序或分配後引發線程切換作業之 。圖12爲示出根據本發明之示範具體實施例,對一特定線 孝(例如·第〇線程)從指令串緩衝器1 〇 6至指令預解碼哭 :二之預定指令資訊量排顧分配)時,在-多線程處: ::進行線程切換作業之方法3 6 0流程圖。方法36〇起始 、;=I 3—6 2,在琢處選取了一特定線程(例如:第〇線程) 炙扣7貝Λ,俾仗揭令串緩衝器丨〇 6排序及分配。此選 可由線程切換控制邏輯⑴輸MMUX132之線程 號1 3 4之狀態來表示。 ° 在決定盒3 6 4 ’將就目前線程(例如:第0線程)之預定最 大指令資訊量是否已從指令串緩衝器1()6排序做成決定。 示於圖15A之示範線程切換控制邏輯136包含一「資源奢 夕私式」I存态3 6 6,琢暫存器可經由控制暫存器g流排 2 4 0做程式規劃以儲在矣+ _ . ^ - 者存表不一可在線程切換作業引發前 指令串緩衝器1G6排序之特定線程之預定最大資訊塊數曰 値。在本發明之替代具體實施例中,表示此預定最大資訊 塊數目(値可關定線路程式。「資源奢侈程式」暫存 3 6 6及維持特足線程從緩衝器1()6發出之資訊塊數目 「資訊塊送出」增量器2 2 8提供了至比較器川之輸入 當增里益228輸出値超過存於「資源奢侈程式」暫存 3 66中之値時’比較器3 6 8發出輸出至及閘3 44。因此 訂 從 固 器 之 器 本紙張尺度適用中國國家標準 -31 476915 A7 B7 五、發明說明(29) 經濟部智慧財產局員工消費合作社印製 比較器3 6 8其輸出信號之發出係對應於圖以示 之正決定。 |364 所示之及閘3 44輸出提供了至或閘2 4 5之輸入, 供了一「插入FTC」輸出434。 若在決足盒3 64做了負面決定,方法3⑹進赶至步驟 37〇,在該處維持了目前之線程選擇,其後方法3 6 0圈迴 至決定盒3 6 4。 在決足盒364之正面決定之後,方法36〇進行至實施在 決疋盒3 7 2及3 7 4之決定,該等決定係與圖8所示方法2 2 〇 之決足盒2 4 8及2 6 0所做決定一致的。因此,實現決定盒 3 7 2及3 7 4做成之決定所示之比較器2 5 6及2 6 2輸 了至及閘3 44之輸入。 ^ 在決定盒3 3 6、3 4 6及3 4 8之正面決定,一流動標記(或 「插入的流動」)(例如:100)被插入從指令串緩衝器 106所分配之指令串。很特別地,因線程切換作業可能已 在不完整之指令上發生,將需要轉移位址計算器丨丨4重啓 目前線程之取得,所以插入之流動是必要的。在此情況, 轉移預測單元1 1 3將插入之流動插入指令串以指出論迫之 線程改變。插入之流動县有發生的F〇rceU〇PValid。插入之 泥動僅在已經排程之資訊塊即將從指令申緩衝器1 〇 6送至 指令預解碼器1 〇 8之後才插入。一旦相資訊塊受分配後, 插入之流動多工化成一?〇1:(^。〇?\/^(^01*攔(611¥61^一111!'〇襴)。 至此爲止,參考示出在指令串緩衝器1 〇 6内之示範行列分 刻1 2 2中儲存的資訊塊用之envent jnf〇攔之圖1 6。所示之 且亦提 (請先閱讀背面之注意事項再填寫本頁) 訂---- s'. 32- 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 經濟部智慧財產局員工消費合作社印製 476915 A7 --------B7____ 五、發明說明(3〇) 插入FIC 1輸出4 3 4是用以動作,以在(1 )分割 122中旦錄12〇内所存資訊塊之价糊i2i目前内容 與(2)插入之流動4 5 2間做選擇。在輸出2“是在比較器 3 6 8之輸出發出後發生之情況,插入之流動々”將被插入 來自刀1 2 2所分配到的資訊塊化卜欄i 2工。 然後喜應於及閘3 4 4輸出之發出而發生之選擇信號1 3 4 在步驟3 7 6進行線程切換作業。替代性地,若在決定盒 3 6 4 3 7 2或3 7 4之任一個發生負面決定,在步驟3 7 8維 持目則又線程選擇。然後方法3 6 〇在步驟3 8 〇終止。 ,由於發生線程切換之資料塊並無可提供某些線程切換作 業預音之特殊或差別的特色,由強迫線程改變邏輯1 6 〇所 引起之、’泉私切換作業異於在本規範中所討論之其它線程切 換作業。尤其是在線程切換控制邏輯丨3 6中之其它邏輯 1 5 0-164所執行之線程切換作業係附帶著一個使得線程切 換作業開始之條件,因而不須警告影響到之硬體。指令操 縱邏輯1 1 0之設置無法處理突然及未預期之線程切換作 業因而插入之流動標記提供一種通知指令操縱邏輯 1 1 0已在上游發生的線程切換作業之機制。 再者,對於強迫之線程改變,如同在本規範踩封論之其 Έ:線程切換作業,需要一「再啓動」指令指標。因強迫之 線程改變邏輯1 6 〇強迫了指令流動之中斷,故希望供予再 啓動扎標之微碼與下一指令指標1 〇 〇相對立。 ί卜部清除遂轅Π 62) 如上述關於内部清除邏輯丨5 6之説明,斗萍清除是從微 -33- 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) —------------------^--------- (請先閱讀背面之注意事項再填寫本頁) 476915
五、發明說明(31) 指令轉換引擎5 4之外部呼求的。 圖1 3爲示出根據本發明示範具體實施例,在發生外部管 路清除時於多線程處理器中進行線程切換作業之方支4〇〇 流.程圖。方法40 0始於步驟4 0 2,在該處偵測到一外部清 ,信號發生。參考圖15A所示線程切換控制邏輯136之示 範具體實施例,其可由偵測提供至或閘2 4 5直接輸入之追 蹤緩衝記憶體/微指令轉換引擎清除信號「TCmitecle^」 404之發出而實施。因此,信號4〇4之發生將引起圖5所示 從線程切換控制邏輯丨3 6傳送至Μυχ 132之線程選擇信號 1 3 4之發生。此係在方法4 〇 〇之步驟4 〇 6反映出來,其後 該方法終止於步驟4 Q 8。 插入流程邏輟(164) 在微指令轉換引擎54内,當圖3所击之指令轉換查詢緩 衝态(Instruction Translation Lookaside Buffer,下文簡稱 ITLB) 102記綠了頁次遺漏,一流動標記(亦稱爲「插入之 流動」)被插入指令串以標記此事件。此頁次遺漏導致頁 次遺漏處理器(未示出)用掉高達i 5 〇個時計週期(僅當做舉 例)進订相當長4頁次行進作業。對於在目前線程之指令 串發生了頁次遺漏之多線程處理器中,將有利於進行線程 切換作業俾容許一替代線程使用頁次行進作業引入之等待 時間。如上所説明者,插入流程邏輯丨6 4提供了在頁次遺 漏發生時實施及進行線程切換功能之邏輯示範具體會施 例0 除頁次遺漏外’可導致插入流程的其它事件爲此項技藝 -34- 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) (請先閱讀背面之注意事項再填寫本頁) -J · 訂 線 . 經濟部智慧財產局員工消費合作社印製 4/〇y〇 五、發明說明(32) 經濟部智慧財產局員工消費合作社印製 所熟知者或特殊之微處理器架構。 二圖14爲示出根據本發明之示範具體實施例,在偵 」泉私足扣令串中(插入流程(僅做爲舉例,該插入流程 二ITLB 1 02上之頁次遺漏)時,於多線程處理器中進行 泉裎切換作業之方法4 2 〇流程圖。方法4 2 〇始於在步驟 422對目前線裎(例如:第〇線程)之選擇。此選擇可由從 線程切換控制邏輯136輸出至Μυχ 132的線程選擇信^ 13 4之狀態表示。在決定盒42 4,就目前線程指令串内指^ 7 澤事件「IT+ventid」攔4 2 6是否指出一插.入流程(例 如:不具有,0000或,0111値)做成決定。很特別地,在指 轉譯事件欄42 6内出現之上述數値可表示無插入之流程 參考1 5 A,所示之攔4 2 6將輸入至一對比較器(或其 邏輯)42 8及4 3 0,以決定趙42 6是否包含’〇〇〇〇抑或,〇1 値。若是如此,比較器4 2 8或4 3 0發出一輸出至反或 4 3 2 ’其輸出提供一輸入至或亂2 4 5。 在決定盒4 3 6,可視需要菰a標絲程(μ如:第丨線程) 預定最小指令資訊量是否可用在從指令串緩衝器1 〇 6分 做成決定。可利用反或閘4 3 2之輸出及比較器26 2之輪 做成此決定。 在決定盒424及4 3 6做了正決定之後,然後可在步 4 3 8進行線程切換作業。很特別地,反或閘4 3 2發出之 出經或閘2 4 5傳送以引起選擇信號1 3 4可對應於在步 4 3 8進之線程切換作業。替代性地,若在決定盒4 2 4 4 3 6之任一個做了負決定,患在步驟4 4 0維持目前線程 -35 本紙張尺度適用中國國家標準(CNS)A4規格(210 x 297公釐) 令 它 11 之 出 驟 輸 驟 或 選 1 --------^--------- (請先閱讀背面之注意事項再填寫本頁) 476915 A7 B7 五、發明說明(33) 擇。然後方法4 2 0在步驟4 4 2终止。 鼓論 、上關方'圖1 5所纣淪之線程切換 _ 具體實施例中,所描述之許多邏輯15〇16=耳_; 扼 孓:暫:器及比較器之組合實現的。在本發:用 只犯例中,這些邏輯的某些或全部可使職量器來余現肢 ::量器將從一預定的、可程式化之値減量 ::
時發出信號。此一具體實施例示於圖l5B。 々I 摘要而言,上述線程切換邏輯136是很 供很多爲響應於有利於執料程切㈣業之事件發 用。於貫現及進行線程切換作業之彈性機構。再者,藉 私式化參數〈涵括’本發明容許對種種的情況及考量修改 =周㈣換機構。舉例而言,當執行一種類型之應用 時(例如:夕媒體應用),希望將線程切換機構之參數嗖定 ^與當執行不同類型應用(例如:文字處理應用)時相異之 線 線程切換邏輯136適用於多線程處理器中路徑(在來源資 源與目的資源之間)頻帶寬及/或處理資源之時間切割。在 上,之線程切換邏輯丨3 6係用來分配從一指令事緩衝器至 -指令預解碼器的兩個線程之指令資訊睦,將極易見到本 發明内容可用以分配一處理器管路内任一資源至任一目的 的多個線程之指令資訊。 、因而,已説明了一種用於多線程處理器中邀程切換之方 法及裝置。雖然係參考挂定之示範具體實施例説明本發 明,不過可對這些夬體實施例做各種修改變更而不偏離本 -36- 本紙張尺度適财關i_i^s)A4規格咖χ挪公爱「 476915 A7 _B7_ 五、發明說明(34 ) - 發明之廣泛精神及範圍將是很明顯的。因此,該規範及附 圖都認定爲係例證而非限制性之意義。 經濟部智慧財產局員工消費合作社印製 37- ---------------------訂---------線 (請先閱讀背面之注意事項再填寫本頁) 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐)

Claims (1)

  1. 、申請專利範圍 ’—種在多線程處理器中 法包含: 進订、,泉程切換作業之方法,讀方 偵測來自多線程處理哭 ^ 之~ Μ π、 内—指令資訊源對一第〜% # 弟一預足指令資訊量之分配;及 忒I 鲁應於對第一線程之第—、 剛,開始對-來自該指令資‘兑令資訊量分配之價 分配。 貝汛源艾弟二線程之指令資訊 2.如申請專利範圍第i 預金0人… 去,其中對第一線程之第 t、疋扣令貧訊量分配 罘〜 户斤八和、斤 1貝,則包含維持從該指令資訊資、店 斤刀配又弟一線程離散之 A源 齡也、』匕A 7貝通I計數,以及決宏 3 t;,資訊量計數何時超過-第-預定臨界値 專!範圍第2項之方法,其中對第-線程離散、 才日令貧訊量分配之計數, 嗎政< ^^ ^ ^ ^ 匕3在自孩指令資訊源之_邱 4 ^令^財之分料,增量-計數器。 味政 外·如申請專利範圍第2項之 >入次、B 又万法,其中對第一線程離勒> 曰7貝λ夏分配之計數, —〈 散指令資訊量之分配時,::在末自爾貧訊源之離 里心刀阢日守,減量一計數器。 5·如申請專利範圍第1項 ,, 万去’其中該偵測包本A 7 私式化儲存單元内容與一擗 匕口在—可 曰 十數备内谷間執行比較作 業孩計數器維持來自該指令資訊源所分配之::乍 之離散指令資訊量之計數。 足弟一線程 6·如申請專利範圍第1項 ^ w /+ / ,/、中该债測包.含將預定 ^界値《可程式化儲存單 射九疋 佶^ ^ , 存載入—減量詁數器做爲初始 値,並偵測該減量計數器暫存器何時爲零値。馬 本紙張尺度冗用中國國家 ------mt----------------訂---------線 f請先閱讀背面之注音?事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 -38 - 476915 A8 B8 C8 D8 六 申睛專利範圍 經濟部智慧財產局員工消費合作社印製 7·如申請專利範圍第1項之方法,其中該指令資訊源包含 一儲存單元,該單元受分割以將第一線程之指令資訊ς 存在一第一分割及第二線程之指令資訊存於_第二L 割,且其中對第二線程指令資訊分配之開始包含操刀 程選擇邏輯以選擇來自指令資訊源之第二分割而=第二 分剳之指令資訊做分配。 8.如申凊專利範圍第1項之方法,包括決定第二線程之第 一預走指令資訊量是否可用於從指令資訊源之分配,且 =當第二線程之第二預定指令資訊量可甩於分配時才開 始來自孩指令資訊源第二線程之指令資訊分配。 9·如申請專利範圍第8項之方法,其中該指令資訊源包含 一儲存單元,且其史篇二線程之第二預定指全資訊量是 否可用於從指令資訊源分配之決定,包含維持該儲存單 元所收入之第二線程離散指令資訊量計數,並決定該儲 存單元所收入之離散指令資孤量計數何時超過一第二預 定臨界値。 10·如申凊專利範圍第1項之方法,包括決定第一線程之一 弟二預定指令資訊量是否已從該指令資訊源分配,且僅 當第一線程之第三預定指令資訊量已從該指令資訊源 分配時才開始來自該指令資訊源第二線程之指令資訊 配。 11.如申請專利範圍第1 〇項之方法,其中該第三預定指令 訊量等於或大於第一指令組的全指令之最小指令資訊 量0 -39- 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) -------------魏 (請先閱讀背面之注意事項再填寫本頁) 訂---------線· 党 分 資 經濟部智慧財產局員工消費合作社印製 476915 A8 B8 C8 D8 六、申請專利範圍 12. 如申請專利範圍第1 0項之方法,其中第一線程之第三預 定指令資訊量是否已從該指令資訊源分配之決定,包含 計數來自該指令資訊源之第一線程離散指令資訊量之分 配,並決定從該指令資訊源所分配之離散指令資訊量計 數是否超過一第三預定臨界値。 13. 如申請專利範圍第1項之方法,包括在開始對來自該指 令資訊源之第二線程做指令資訊分配之前,將一流動標 記插入含來自該指令資訊源分配之第一線程指令資訊之 指令串。 14. 如申請專利範圍第1項之方法,包括決定第一線程之一 第四預定指令資訊量是否已從該指令資訊源分配,且若 如此的話,則偵測將從指令資訊源分配之第一線程指令 資訊内之轉移指令,且響應,於轉移指令之偵測,開始對 來自該指令資訊源第二線程指令資訊之分配。 15. 如申請專利範圍第1 4項之方法,包含偵測來自指令資訊 源第一線程之一第四預定指令資訊量之分配,響應於對 該第四預定指令資訊量分配之偵測,檢查接著將受分配 之第一線程指令資訊以識別一轉移指令,並響應於對即 將受分配之第一線程指令資訊内轉移指令之識別,開始 對來自該指令資訊源第二線程指令資訊之分配。 16. 如申請專利範圍第1 5項之方法,其中對第一線程之第四 預定指令資訊量分配之偵測,包含計數來自該指令資訊 源第一線程離散指令資訊量之分配,並決定該離散資訊 量之計數何時超過一第四預定臨界値。 -40- 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) * . _ i-----------------··---訂---------線-------- (請先閱讀背面之注意事項再填寫本頁) 476915 As劭C8D8 六、申請專利範圍 17·如申請專利範圍第!項 器之處理器管路中第 ^ c套偵測菽多線程處理 停滞狀況之偵測後::: = :况,偵測在接著該 並響應於該第-預定時„ =歷定時:間隔, 孩指令資訊源第二線程指令資訊之分配。,^對來自 18.如申請專利範圍第1 中從-上诱偵測在處理器眷路 訊之流動ί2入!指令資訊源並無第,指令資 , 二〜‘接著無該指令資訊流動之偵測後何時 已經歷了一第二預定時間間隔,並響應於該第二預定時 間間隔經歷之偵測,開始對來自該指令資訊源第二線程 指令資訊之分配。 19·如申請專利範圍第丨項之方法,.包括偵測在該指令資訊 源收到之第一 |泉程指令資訊中之流動標記,並響應於,該 流動標記之偵測,開始對來自該指令資訊源策二線程指 令資訊之分配。 20.如申請專利範圍笨丨項之方法,其中該流動標記指出j 該指令資訊源之處理器管路上游中之一位置發生置农遺 漏0 J. I -----r---訂---------線 i^w. (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 -41 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公爱)
TW089108132A 1999-04-29 2000-05-03 Method and apparatus for thread switching within a multithreaded processor TW476915B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/302,633 US6535905B1 (en) 1999-04-29 1999-04-29 Method and apparatus for thread switching within a multithreaded processor

Publications (1)

Publication Number Publication Date
TW476915B true TW476915B (en) 2002-02-21

Family

ID=23168579

Family Applications (1)

Application Number Title Priority Date Filing Date
TW089108132A TW476915B (en) 1999-04-29 2000-05-03 Method and apparatus for thread switching within a multithreaded processor

Country Status (10)

Country Link
US (8) US6535905B1 (zh)
EP (1) EP1185924B1 (zh)
CN (2) CN100399263C (zh)
AU (1) AU4480200A (zh)
BR (1) BR0010602B1 (zh)
DE (1) DE60032481T2 (zh)
HK (1) HK1042363A1 (zh)
IL (2) IL146159A0 (zh)
TW (1) TW476915B (zh)
WO (1) WO2000067113A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9189230B2 (en) 2004-03-31 2015-11-17 Intel Corporation Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution

Families Citing this family (223)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2728559B1 (fr) * 1994-12-23 1997-01-31 Saint Gobain Vitrage Substrats en verre revetus d'un empilement de couches minces a proprietes de reflexion dans l'infrarouge et/ou dans le domaine du rayonnement solaire
US6385715B1 (en) * 1996-11-13 2002-05-07 Intel Corporation Multi-threading for a processor utilizing a replay queue
US7237093B1 (en) 1998-12-16 2007-06-26 Mips Technologies, Inc. Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams
US6389449B1 (en) 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US7035997B1 (en) * 1998-12-16 2006-04-25 Mips Technologies, Inc. Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
US7529907B2 (en) 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US7257814B1 (en) 1998-12-16 2007-08-14 Mips Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
US7020879B1 (en) * 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6507862B1 (en) * 1999-05-11 2003-01-14 Sun Microsystems, Inc. Switching method in a multi-threaded processor
US6671795B1 (en) * 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like
US7165257B2 (en) * 2000-02-08 2007-01-16 Mips Technologies, Inc. Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts
US7042887B2 (en) 2000-02-08 2006-05-09 Mips Technologies, Inc. Method and apparatus for non-speculative pre-fetch operation in data packet processing
US7502876B1 (en) 2000-06-23 2009-03-10 Mips Technologies, Inc. Background memory manager that determines if data structures fits in memory with memory state transactions map
US20010052053A1 (en) * 2000-02-08 2001-12-13 Mario Nemirovsky Stream processing unit for a multi-streaming processor
US7082552B2 (en) * 2000-02-08 2006-07-25 Mips Tech Inc Functional validation of a packet management unit
US7139901B2 (en) * 2000-02-08 2006-11-21 Mips Technologies, Inc. Extended instruction set for packet processing applications
US7058064B2 (en) * 2000-02-08 2006-06-06 Mips Technologies, Inc. Queueing system for processors in packet routing operations
US7032226B1 (en) * 2000-06-30 2006-04-18 Mips Technologies, Inc. Methods and apparatus for managing a buffer of events in the background
US7076630B2 (en) * 2000-02-08 2006-07-11 Mips Tech Inc Method and apparatus for allocating and de-allocating consecutive blocks of memory in background memo management
US7649901B2 (en) * 2000-02-08 2010-01-19 Mips Technologies, Inc. Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing
US7065096B2 (en) * 2000-06-23 2006-06-20 Mips Technologies, Inc. Method for allocating memory space for limited packet head and/or tail growth
US7058065B2 (en) * 2000-02-08 2006-06-06 Mips Tech Inc Method and apparatus for preventing undesirable packet download with pending read/write operations in data packet processing
US7155516B2 (en) * 2000-02-08 2006-12-26 Mips Technologies, Inc. Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory
US7856633B1 (en) * 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US7162615B1 (en) 2000-06-12 2007-01-09 Mips Technologies, Inc. Data transfer bus communication using single request to perform command and return data to destination indicated in context to allow thread context switch
WO2002006959A1 (en) * 2000-07-14 2002-01-24 Clearwater Networks, Inc. Instruction fetch and dispatch in multithreaded system
US6701518B1 (en) * 2000-08-03 2004-03-02 Hewlett-Packard Development Company, L.P. System and method for enabling efficient processing of a program that includes assertion instructions
US6981129B1 (en) * 2000-11-02 2005-12-27 Intel Corporation Breaking replay dependency loops in a processor using a rescheduled replay queue
US7757065B1 (en) * 2000-11-09 2010-07-13 Intel Corporation Instruction segment recording scheme
US20020087844A1 (en) * 2000-12-29 2002-07-04 Udo Walterscheidt Apparatus and method for concealing switch latency
US6895520B1 (en) 2001-03-02 2005-05-17 Advanced Micro Devices, Inc. Performance and power optimization via block oriented performance measurement and control
US20020156999A1 (en) * 2001-04-19 2002-10-24 International Business Machines Corporation Mixed-mode hardware multithreading
US6651158B2 (en) * 2001-06-22 2003-11-18 Intel Corporation Determination of approaching instruction starvation of threads based on a plurality of conditions
US20030120896A1 (en) * 2001-06-29 2003-06-26 Jason Gosior System on chip architecture
US7127561B2 (en) * 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs
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
US20030126416A1 (en) * 2001-12-31 2003-07-03 Marr Deborah T. Suspending execution of a thread in a multi-threaded processor
US7366884B2 (en) * 2002-02-25 2008-04-29 Agere Systems Inc. Context switching system for a multi-thread execution pipeline loop and method of operation thereof
US7747989B1 (en) * 2002-08-12 2010-06-29 Mips Technologies, Inc. Virtual machine coprocessor facilitating dynamic compilation
US7065596B2 (en) * 2002-09-19 2006-06-20 Intel Corporation Method and apparatus to resolve instruction starvation
US7200721B1 (en) * 2002-10-09 2007-04-03 Unisys Corporation Verification of memory operations by multiple processors to a shared memory
US7149900B2 (en) * 2002-12-12 2006-12-12 Intel Corporation Method of defending software from debugger attacks
US20040128476A1 (en) * 2002-12-26 2004-07-01 Robert Nuckolls Scheme to simplify instruction buffer logic supporting multiple strands
US20040128488A1 (en) * 2002-12-26 2004-07-01 Thimmannagari Chandra M. R. Strand switching algorithm to avoid strand starvation
US7657893B2 (en) * 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor
US20040216103A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Mechanism for detecting and handling a starvation of a thread in a multithreading processor environment
US7363625B2 (en) * 2003-04-24 2008-04-22 International Business Machines Corporation Method for changing a thread priority in a simultaneous multithread processor
US7360062B2 (en) * 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
US7401207B2 (en) 2003-04-25 2008-07-15 International Business Machines Corporation Apparatus and method for adjusting instruction thread priority in a multi-thread processor
US7401208B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor
US20040268099A1 (en) * 2003-06-30 2004-12-30 Smith Peter J Look ahead LRU array update scheme to minimize clobber in sequentially accessed memory
US7441245B2 (en) * 2003-08-14 2008-10-21 Intel Corporation Phasing for a multi-threaded network processor
US7873785B2 (en) * 2003-08-19 2011-01-18 Oracle America, Inc. Multi-core multi-thread processor
US20050047439A1 (en) * 2003-08-26 2005-03-03 Madajczak Tomasz Bogdan System to process packets according to an assigned sequence number
US7496921B2 (en) * 2003-08-29 2009-02-24 Intel Corporation Processing block with integrated light weight multi-threading support
US20050055594A1 (en) * 2003-09-05 2005-03-10 Doering Andreas C. Method and device for synchronizing a processor and a coprocessor
US7133969B2 (en) * 2003-10-01 2006-11-07 Advanced Micro Devices, Inc. System and method for handling exceptional instructions in a trace cache based processor
US7555633B1 (en) 2003-11-03 2009-06-30 Advanced Micro Devices, Inc. Instruction cache prefetch based on trace cache eviction
ES2377648T3 (es) * 2003-11-07 2012-03-29 Sharp Kabushiki Kaisha Método para acceso por división de frecuencia y de tiempo
DE10353267B3 (de) * 2003-11-14 2005-07-28 Infineon Technologies Ag Multithread-Prozessorarchitektur zum getriggerten Thread-Umschalten ohne Zykluszeitverlust und ohne Umschalt-Programmbefehl
US8069336B2 (en) * 2003-12-03 2011-11-29 Globalfoundries Inc. Transitioning from instruction cache to trace cache on label boundaries
US7631307B2 (en) * 2003-12-05 2009-12-08 Intel Corporation User-programmable low-overhead multithreading
US7360064B1 (en) 2003-12-10 2008-04-15 Cisco Technology, Inc. Thread interleaving in a multithreaded embedded processor
US7441101B1 (en) 2003-12-10 2008-10-21 Cisco Technology, Inc. Thread-aware instruction fetching in a multithreaded embedded processor
US20060212874A1 (en) * 2003-12-12 2006-09-21 Johnson Erik J Inserting instructions
US7493621B2 (en) * 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
US7206922B1 (en) 2003-12-30 2007-04-17 Cisco Systems, Inc. Instruction memory hierarchy for an embedded processor
US7213126B1 (en) 2004-01-12 2007-05-01 Advanced Micro Devices, Inc. Method and processor including logic for storing traces within a trace cache
US20050166177A1 (en) * 2004-01-27 2005-07-28 Ylian Saint-Hilaire Thread module chaining
US20050183065A1 (en) * 2004-02-13 2005-08-18 Wolczko Mario I. Performance counters in a multi-threaded processor
US20090299756A1 (en) * 2004-03-01 2009-12-03 Dolby Laboratories Licensing Corporation Ratio of speech to non-speech audio such as for elderly or hearing-impaired listeners
US7426731B2 (en) * 2004-03-22 2008-09-16 Hewlett-Packard Development Company, L.P. Determining processor usage by a thread
US7197630B1 (en) 2004-04-12 2007-03-27 Advanced Micro Devices, Inc. Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
US7418582B1 (en) 2004-05-13 2008-08-26 Sun Microsystems, Inc. Versatile register file design for a multi-threaded processor utilizing different modes and register windows
US7543132B1 (en) 2004-06-30 2009-06-02 Sun Microsystems, Inc. Optimizing hardware TLB reload performance in a highly-threaded processor with multiple page sizes
US7366829B1 (en) 2004-06-30 2008-04-29 Sun Microsystems, Inc. TLB tag parity checking without CAM read
US7519796B1 (en) 2004-06-30 2009-04-14 Sun Microsystems, Inc. Efficient utilization of a store buffer using counters
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US7365007B2 (en) * 2004-06-30 2008-04-29 Intel Corporation Interconnects with direct metalization and conductive polymer
US7509484B1 (en) 2004-06-30 2009-03-24 Sun Microsystems, Inc. Handling cache misses by selectively flushing the pipeline
US7571284B1 (en) 2004-06-30 2009-08-04 Sun Microsystems, Inc. Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor
US20060009265A1 (en) * 2004-06-30 2006-01-12 Clapper Edward O Communication blackout feature
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US9626194B2 (en) 2004-09-23 2017-04-18 Intel Corporation Thread livelock unit
US7748001B2 (en) * 2004-09-23 2010-06-29 Intel Corporation Multi-thread processing system for detecting and handling live-lock conditions by arbitrating livelock priority of logical processors based on a predertermined amount of time
US7533139B2 (en) * 2004-09-27 2009-05-12 Microsoft Corporation Method and system for multithread processing of spreadsheet chain calculations
CN100384181C (zh) * 2004-11-09 2008-04-23 北京中星微电子有限公司 一种ip网络环境下的多路音频缓冲处理的方法
US7254693B2 (en) * 2004-12-02 2007-08-07 International Business Machines Corporation Selectively prohibiting speculative execution of conditional branch type based on instruction bit
US8756605B2 (en) * 2004-12-17 2014-06-17 Oracle America, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US7937709B2 (en) 2004-12-29 2011-05-03 Intel Corporation Synchronizing multiple threads efficiently
US7430643B2 (en) * 2004-12-30 2008-09-30 Sun Microsystems, Inc. Multiple contexts for efficient use of translation lookaside buffer
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
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
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
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
US7657891B2 (en) 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7681014B2 (en) 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
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
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
DE102005009083B4 (de) * 2005-02-28 2007-05-10 Infineon Technologies Ag Multithread-Prozessor mit einer Synchronisationseinheit und Verfahren zum Betreiben eines solchen
US20060206902A1 (en) * 2005-03-14 2006-09-14 Sujat Jamil Variable interleaved multithreaded processor method and system
US20060212853A1 (en) * 2005-03-18 2006-09-21 Marvell World Trade Ltd. Real-time control apparatus having a multi-thread processor
US8195922B2 (en) * 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
US8230423B2 (en) * 2005-04-07 2012-07-24 International Business Machines Corporation Multithreaded processor architecture with operational latency hiding
WO2006120367A1 (en) * 2005-05-11 2006-11-16 Arm Limited A data processing apparatus and method employing multiple register sets
US20070067502A1 (en) * 2005-09-22 2007-03-22 Silicon Integrated Systems Corp. Method for preventing long latency event
US8015359B1 (en) 2005-09-28 2011-09-06 Oracle America, Inc. Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit
US7966479B1 (en) 2005-09-28 2011-06-21 Oracle America, Inc. Concurrent vs. low power branch prediction
US8499293B1 (en) 2005-09-28 2013-07-30 Oracle America, Inc. Symbolic renaming optimization of a trace
US7987342B1 (en) 2005-09-28 2011-07-26 Oracle America, Inc. Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer
US7877630B1 (en) 2005-09-28 2011-01-25 Oracle America, Inc. Trace based rollback of a speculatively updated cache
US8019944B1 (en) * 2005-09-28 2011-09-13 Oracle America, Inc. Checking for a memory ordering violation after a speculative cache write
US7676634B1 (en) 2005-09-28 2010-03-09 Sun Microsystems, Inc. Selective trace cache invalidation for self-modifying code via memory aging
US7953961B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder
US8024522B1 (en) 2005-09-28 2011-09-20 Oracle America, Inc. Memory ordering queue/versioning cache circuit
US7870369B1 (en) 2005-09-28 2011-01-11 Oracle America, Inc. Abort prioritization in a trace-based processor
US8051247B1 (en) 2005-09-28 2011-11-01 Oracle America, Inc. Trace based deallocation of entries in a versioning cache circuit
US8370576B1 (en) 2005-09-28 2013-02-05 Oracle America, Inc. Cache rollback acceleration via a bank based versioning cache ciruit
US8032710B1 (en) 2005-09-28 2011-10-04 Oracle America, Inc. System and method for ensuring coherency in trace execution
US7937564B1 (en) 2005-09-28 2011-05-03 Oracle America, Inc. Emit vector optimization of a trace
US7949854B1 (en) 2005-09-28 2011-05-24 Oracle America, Inc. Trace unit with a trace builder
US8037285B1 (en) 2005-09-28 2011-10-11 Oracle America, Inc. Trace unit
US20070101102A1 (en) * 2005-10-27 2007-05-03 Dierks Herman D Jr Selectively pausing a software thread
EP1963963A2 (en) * 2005-12-06 2008-09-03 Boston Circuits, Inc. Methods and apparatus for multi-core processing with dedicated thread management
US8275942B2 (en) * 2005-12-22 2012-09-25 Intel Corporation Performance prioritization in multi-threaded processors
JP4519082B2 (ja) * 2006-02-15 2010-08-04 株式会社ソニー・コンピュータエンタテインメント 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置
US7877757B2 (en) * 2006-05-05 2011-01-25 Microsoft Corporation Work item event monitor for procession of queued events
US8032821B2 (en) 2006-05-08 2011-10-04 Microsoft Corporation Multi-thread spreadsheet processing with dependency levels
US9146745B2 (en) * 2006-06-29 2015-09-29 Intel Corporation Method and apparatus for partitioned pipelined execution of multiple execution threads
US8495649B2 (en) * 2006-07-19 2013-07-23 International Business Machines Corporation Scheduling threads having complementary functional unit usage on SMT processors
US20080022283A1 (en) * 2006-07-19 2008-01-24 International Business Machines Corporation Quality of service scheduling for simultaneous multi-threaded processors
US7941643B2 (en) * 2006-08-14 2011-05-10 Marvell World Trade Ltd. Multi-thread processor with multiple program counters
US8046775B2 (en) 2006-08-14 2011-10-25 Marvell World Trade Ltd. Event-based bandwidth allocation mode switching method and apparatus
US20090012564A1 (en) * 2007-03-07 2009-01-08 Spineworks Medical, Inc. Transdiscal interbody fusion device and method
US7773621B2 (en) * 2006-09-16 2010-08-10 Mips Technologies, Inc. Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch
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
US7961745B2 (en) * 2006-09-16 2011-06-14 Mips Technologies, Inc. Bifurcated transaction selector 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
US8370609B1 (en) 2006-09-27 2013-02-05 Oracle America, Inc. Data cache rollbacks for failed speculative traces with memory operations
US8010745B1 (en) * 2006-09-27 2011-08-30 Oracle America, Inc. Rolling back a speculative update of a non-modifiable cache line
US8516462B2 (en) * 2006-10-09 2013-08-20 International Business Machines Corporation Method and apparatus for managing a stack
US8380966B2 (en) 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8533530B2 (en) 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
US8341604B2 (en) 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US8370806B2 (en) 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US20080148022A1 (en) * 2006-12-13 2008-06-19 Arm Limited Marking registers as available for register renaming
US8347068B2 (en) * 2007-04-04 2013-01-01 International Business Machines Corporation Multi-mode register rename mechanism that augments logical registers by switching a physical register from the register rename buffer when switching between in-order and out-of-order instruction processing in a simultaneous multi-threaded microprocessor
US8521993B2 (en) * 2007-04-09 2013-08-27 Intel Corporation Providing thread fairness by biasing selection away from a stalling thread using a stall-cycle counter in a hyper-threaded microprocessor
US8261049B1 (en) 2007-04-10 2012-09-04 Marvell International Ltd. Determinative branch prediction indexing
US8484516B2 (en) 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
US20080263325A1 (en) * 2007-04-19 2008-10-23 International Business Machines Corporation System and structure for synchronized thread priority selection in a deeply pipelined multithreaded microprocessor
US7711935B2 (en) * 2007-04-30 2010-05-04 Netlogic Microsystems, Inc. Universal branch identifier for invalidation of speculative instructions
US7958323B1 (en) 2007-05-09 2011-06-07 Marvell Israel (M.I.S.L.) Ltd. Multithreading implementation for flops and register files
JP5177141B2 (ja) * 2007-06-20 2013-04-03 富士通株式会社 演算処理装置、演算処理方法
JP5136553B2 (ja) * 2007-06-20 2013-02-06 富士通株式会社 演算処理装置及び演算処理装置の制御方法
EP2159692A4 (en) * 2007-06-20 2010-09-15 Fujitsu Ltd Information processor and load cancellation control method
JP5104863B2 (ja) * 2007-06-20 2012-12-19 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP5201140B2 (ja) * 2007-06-20 2013-06-05 富士通株式会社 同時マルチスレッドの命令完了制御装置
US7779234B2 (en) * 2007-10-23 2010-08-17 International Business Machines Corporation System and method for implementing a hardware-supported thread assist under load lookahead mechanism for a microprocessor
US20090172370A1 (en) * 2007-12-31 2009-07-02 Advanced Micro Devices, Inc. Eager execution in a processing pipeline having multiple integer execution units
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
US8479173B2 (en) * 2008-07-09 2013-07-02 International Business Machines Corporation Efficient and self-balancing verification of multi-threaded microprocessors
US8161493B2 (en) * 2008-07-15 2012-04-17 International Business Machines Corporation Weighted-region cycle accounting for multi-threaded processor cores
US8386547B2 (en) 2008-10-31 2013-02-26 Intel Corporation Instruction and logic for performing range detection
US8347309B2 (en) * 2009-07-29 2013-01-01 Oracle America, Inc. Dynamic mitigation of thread hogs on a threaded processor
US10288617B2 (en) * 2009-10-26 2019-05-14 Externautics Spa Ovary tumor markers and methods of use thereof
US20110191775A1 (en) * 2010-01-29 2011-08-04 Microsoft Corporation Array-based thread countdown
US9354926B2 (en) * 2011-03-22 2016-05-31 International Business Machines Corporation Processor management via thread status
JP5861354B2 (ja) * 2011-09-22 2016-02-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN102495762B (zh) * 2011-11-16 2014-04-02 华为技术有限公司 一种线程调度方法、线程调度装置及多核处理器系统
US9052909B2 (en) 2011-12-07 2015-06-09 Arm Limited Recovering from exceptions and timing errors
US8738971B2 (en) 2011-12-07 2014-05-27 Arm Limited Limiting certain processing activities as error rate probability rises
US8935574B2 (en) 2011-12-16 2015-01-13 Advanced Micro Devices, Inc. Correlating traces in a computing system
US9075621B2 (en) 2011-12-23 2015-07-07 Arm Limited Error recovery upon reaching oldest instruction marked with error or upon timed expiration by flushing instructions in pipeline pending queue and restarting execution
US8640008B2 (en) 2011-12-23 2014-01-28 Arm Limited Error recovery in a data processing apparatus
US10146545B2 (en) 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
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
US9665375B2 (en) 2012-04-26 2017-05-30 Oracle International Corporation Mitigation of thread hogs on a threaded processor and prevention of allocation of resources to one or more instructions following a load miss
US9875105B2 (en) * 2012-05-03 2018-01-23 Nvidia Corporation Checkpointed buffer for re-entry from runahead
US9824013B2 (en) 2012-05-08 2017-11-21 Qualcomm Incorporated Per thread cacheline allocation mechanism in shared partitioned caches in multi-threaded processors
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US9514069B1 (en) 2012-05-24 2016-12-06 Schwegman, Lundberg & Woessner, P.A. Enhanced computer processor and memory management architecture
US8832500B2 (en) 2012-08-10 2014-09-09 Advanced Micro Devices, Inc. Multiple clock domain tracing
US9323315B2 (en) * 2012-08-15 2016-04-26 Nvidia Corporation Method and system for automatic clock-gating of a clock grid at a clock source
US8959398B2 (en) 2012-08-16 2015-02-17 Advanced Micro Devices, Inc. Multiple clock domain debug capability
US9645929B2 (en) 2012-09-14 2017-05-09 Nvidia Corporation Speculative permission acquisition for shared memory
US9317297B2 (en) * 2012-09-27 2016-04-19 Intel Corporation Replay execution of instructions in thread chunks in the chunk order recorded during previous execution
US10001996B2 (en) 2012-10-26 2018-06-19 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
US20140181484A1 (en) * 2012-12-21 2014-06-26 James Callister Mechanism to provide high performance and fairness in a multi-threading computer system
US9569214B2 (en) 2012-12-27 2017-02-14 Nvidia Corporation Execution pipeline data forwarding
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US9823931B2 (en) 2012-12-28 2017-11-21 Nvidia Corporation Queued instruction re-dispatch after runahead
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9547602B2 (en) 2013-03-14 2017-01-17 Nvidia Corporation Translation lookaside buffer entry systems and methods
US9471318B2 (en) 2013-03-15 2016-10-18 International Business Machines Corporation System management and instruction counting
CN104123195B (zh) * 2013-04-23 2018-03-13 华为技术有限公司 一种指令清除方法及装置
US9367472B2 (en) 2013-06-10 2016-06-14 Oracle International Corporation Observation of data in persistent memory
US9582280B2 (en) 2013-07-18 2017-02-28 Nvidia Corporation Branching to alternate code based on runahead determination
KR20150019349A (ko) * 2013-08-13 2015-02-25 삼성전자주식회사 다중 쓰레드 실행 프로세서 및 이의 동작 방법
GB2519103B (en) * 2013-10-09 2020-05-06 Advanced Risc Mach Ltd Decoding a complex program instruction corresponding to multiple micro-operations
TWI602113B (zh) * 2013-11-14 2017-10-11 宏碁股份有限公司 操作介面切換方法及使用該方法之行動通訊裝置
US9535746B2 (en) * 2013-12-19 2017-01-03 International Business Machines Corporation Honoring hardware entitlement of a hardware thread
US10241498B1 (en) * 2014-05-15 2019-03-26 Feetz, Inc. Customized, additive-manufactured outerwear and methods for manufacturing thereof
US9824413B2 (en) * 2014-11-15 2017-11-21 Intel Corporation Sort-free threading model for a multi-threaded graphics pipeline
CN105786448B (zh) * 2014-12-26 2019-02-05 深圳市中兴微电子技术有限公司 一种指令调度方法及装置
JP6477216B2 (ja) * 2015-05-08 2019-03-06 富士通株式会社 演算装置、スレッド切替方法、及びマルチスレッドプログラム
GB2544994A (en) * 2015-12-02 2017-06-07 Swarm64 As Data processing
CN106126336B (zh) * 2016-06-17 2019-06-04 上海兆芯集成电路有限公司 处理器以及调度方法
US10269088B2 (en) * 2017-04-21 2019-04-23 Intel Corporation Dynamic thread execution arbitration
US10325341B2 (en) 2017-04-21 2019-06-18 Intel Corporation Handling pipeline submissions across many compute units
US10503550B2 (en) 2017-09-30 2019-12-10 Intel Corporation Dynamic performance biasing in a processor
US11789741B2 (en) * 2018-03-08 2023-10-17 Sap Se Determining an optimum quantity of interleaved instruction streams of defined coroutines
US10831492B2 (en) 2018-07-05 2020-11-10 International Business Machines Corporation Most favored branch issue
US10997058B2 (en) * 2018-07-30 2021-05-04 EMC IP Holding Company LLC Method for performance analysis in a continuous integration pipeline
US20190253357A1 (en) * 2018-10-15 2019-08-15 Intel Corporation Load balancing based on packet processing loads
US11856073B1 (en) * 2019-03-22 2023-12-26 Amazon Technologies, Inc. Message batching for communication protocols
US11886916B2 (en) 2020-06-30 2024-01-30 Microsoft Technology Licensing, Llc System for adaptive multithreaded recalculation operations

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3771138A (en) 1971-08-31 1973-11-06 Ibm Apparatus and method for serializing instructions from two independent instruction streams
JPH06105460B2 (ja) 1988-06-07 1994-12-21 富士通株式会社 マルチプロセッサのプロセッサ切換え装置
GB8817911D0 (en) 1988-07-27 1988-09-01 Int Computers Ltd Data processing apparatus
WO1990014629A2 (en) 1989-05-26 1990-11-29 Massachusetts Institute Of Technology Parallel multithreaded data processing system
GB2234613B (en) 1989-08-03 1993-07-07 Sun Microsystems Inc Method and apparatus for switching context of state elements in a microprocessor
US5396635A (en) 1990-06-01 1995-03-07 Vadem Corporation Power conservation apparatus having multiple power reduction levels dependent upon the activity of the computer system
DE4129614C2 (de) 1990-09-07 2002-03-21 Hitachi Ltd System und Verfahren zur Datenverarbeitung
US5088788A (en) * 1991-03-22 1992-02-18 Moulton Lee A Vehicle cover apparatus
US5430850A (en) 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
JP2520544B2 (ja) * 1991-09-26 1996-07-31 インターナショナル・ビジネス・マシーンズ・コーポレイション タスクのオ―バ―ラン状態を監視する方法及びタスク実行サイクルのオ―バ―ランを検出する装置
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
US5404469A (en) 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5452401A (en) 1992-03-31 1995-09-19 Seiko Epson Corporation Selective power-down for high performance CPU/system
US5386561A (en) 1992-03-31 1995-01-31 International Business Machines Corporation Method of integrated system load control through dynamic time-slicing in a virtual storage environment
US5325526A (en) * 1992-05-12 1994-06-28 Intel Corporation Task scheduling in a multicomputer system
JPH0695898A (ja) * 1992-09-16 1994-04-08 Hitachi Ltd 仮想計算機の制御方法および仮想計算機システム
US5392437A (en) 1992-11-06 1995-02-21 Intel Corporation Method and apparatus for independently stopping and restarting functional units
WO1994015287A2 (en) 1992-12-23 1994-07-07 Centre Electronique Horloger S.A. Multi-tasking low-power controller
US5586332A (en) 1993-03-24 1996-12-17 Intel Corporation Power management for low power processors through the use of auto clock-throttling
EP0617361B1 (en) * 1993-03-26 2001-11-28 Cabletron Systems, Inc. Scheduling method and apparatus for a communication network
US5528513A (en) * 1993-11-04 1996-06-18 Digital Equipment Corp. Scheduling and admission control policy for a continuous media server
US5524263A (en) 1994-02-25 1996-06-04 Intel Corporation Method and apparatus for partial and full stall handling in allocation
US5809271A (en) * 1994-03-01 1998-09-15 Intel Corporation Method and apparatus for changing flow of control in a processor
JP3547482B2 (ja) * 1994-04-15 2004-07-28 株式会社日立製作所 情報処理装置
US6009454A (en) * 1994-09-30 1999-12-28 Allen-Bradley Company, Llc Multi-tasking operation system for industrial controller
US5724565A (en) 1995-02-03 1998-03-03 International Business Machines Corporation Method and system for processing first and second sets of instructions by first and second types of processing systems
JPH08320797A (ja) 1995-05-24 1996-12-03 Fuji Xerox Co Ltd プログラム制御システム
JPH096633A (ja) 1995-06-07 1997-01-10 Internatl Business Mach Corp <Ibm> データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム
US5983339A (en) 1995-08-21 1999-11-09 International Business Machines Corporation Power down system and method for pipelined logic functions
GB2306147B (en) 1995-10-13 1999-11-17 Marconi Gec Ltd Drag-producing aerodynamic device
US5701432A (en) 1995-10-13 1997-12-23 Sun Microsystems, Inc. Multi-threaded processing system having a cache that is commonly accessible to each thread
US5809522A (en) 1995-12-18 1998-09-15 Advanced Micro Devices, Inc. Microprocessor system with process identification tag entries to reduce cache flushing after a context switch
GB2311880A (en) 1996-04-03 1997-10-08 Advanced Risc Mach Ltd Partitioned cache memory
CN1147785C (zh) 1996-08-27 2004-04-28 松下电器产业株式会社 执行多个指令流的多程序流程同时处理器
US6088788A (en) 1996-12-27 2000-07-11 International Business Machines Corporation Background completion of instruction and associated fetch request in a multithread processor
EP0856797B1 (en) 1997-01-30 2003-05-21 STMicroelectronics Limited A cache system for concurrent processes
DE69841526D1 (de) * 1997-03-04 2010-04-15 Panasonic Corp Zur effizienten Ausführung vieler asynchronen Ereignisaufgaben geeigneter Prozessor
US5835705A (en) 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
GB2323188B (en) 1997-03-14 2002-02-06 Nokia Mobile Phones Ltd Enabling and disabling clocking signals to elements
US6314530B1 (en) * 1997-04-08 2001-11-06 Advanced Micro Devices, Inc. Processor having a trace access instruction to access on-chip trace memory
US5996085A (en) 1997-07-15 1999-11-30 International Business Machines Corporation Concurrent execution of machine context synchronization operations and non-interruptible instructions
US6105051A (en) 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6076157A (en) 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6256775B1 (en) 1997-12-11 2001-07-03 International Business Machines Corporation Facilities for detailed software performance analysis in a multithreaded processor
US6092175A (en) 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6330584B1 (en) * 1998-04-03 2001-12-11 Mmc Networks, Inc. Systems and methods for multi-tasking, resource sharing and execution of computer instructions
US6317820B1 (en) 1998-06-05 2001-11-13 Texas Instruments Incorporated Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism
US6289461B1 (en) * 1998-06-09 2001-09-11 Placeware, Inc. Bi-directional process-to-process byte stream protocol
US6625635B1 (en) * 1998-11-02 2003-09-23 International Business Machines Corporation Deterministic and preemptive thread scheduling and its use in debugging multithreaded applications
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9189230B2 (en) 2004-03-31 2015-11-17 Intel Corporation Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution
US9442721B2 (en) 2004-03-31 2016-09-13 Intel Corporation Method and system to provide user-level multithreading
US9952859B2 (en) 2004-03-31 2018-04-24 Intel Corporation Method and system to provide user-level multithreading
US10585667B2 (en) 2004-03-31 2020-03-10 Intel Corporation Method and system to provide user-level multithreading
US10613858B2 (en) 2004-03-31 2020-04-07 Intel Corporation Method and system to provide user-level multithreading
US10628153B2 (en) 2004-03-31 2020-04-21 Intel Corporation Method and system to provide user-level multithreading
US10635438B2 (en) 2004-03-31 2020-04-28 Intel Corporation Method and system to provide user-level multithreading

Also Published As

Publication number Publication date
US20030018686A1 (en) 2003-01-23
BR0010602B1 (pt) 2012-12-11
US20030023658A1 (en) 2003-01-30
US6971104B2 (en) 2005-11-29
DE60032481D1 (de) 2007-02-01
US6535905B1 (en) 2003-03-18
CN100399263C (zh) 2008-07-02
WO2000067113A2 (en) 2000-11-09
US6865740B2 (en) 2005-03-08
IL146159A (en) 2006-12-10
US6785890B2 (en) 2004-08-31
AU4480200A (en) 2000-11-17
HK1042363A1 (en) 2002-08-09
CN1196060C (zh) 2005-04-06
US20030018685A1 (en) 2003-01-23
CN1645317A (zh) 2005-07-27
US20030023835A1 (en) 2003-01-30
EP1185924B1 (en) 2006-12-20
WO2000067113A3 (en) 2001-09-07
IL146159A0 (en) 2002-07-25
US20030023834A1 (en) 2003-01-30
BR0010602A (pt) 2005-01-11
US6850961B2 (en) 2005-02-01
CN1364261A (zh) 2002-08-14
US6795845B2 (en) 2004-09-21
US20030023659A1 (en) 2003-01-30
US6854118B2 (en) 2005-02-08
US20030018687A1 (en) 2003-01-23
US6981261B2 (en) 2005-12-27
EP1185924A2 (en) 2002-03-13
DE60032481T2 (de) 2007-09-27

Similar Documents

Publication Publication Date Title
TW476915B (en) Method and apparatus for thread switching within a multithreaded processor
KR102481667B1 (ko) 사용자 모드, 멀티 스레드, 자체 스케줄링 프로세서 내 시스템 호출 관리
US11275590B2 (en) Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory
TW554287B (en) Method and apparatus for managing resources in a multithreaded processor
CN100383740C (zh) 挂起线程执行直到发生指定的存储器访问的方法和设备
TW406241B (en) Thread switch control in a multithreaded processor system
CN104679582B (zh) 对于显示设备的命令调度
US8539485B2 (en) Polling using reservation mechanism
TW497072B (en) Method and apparatus for multi-thread pipelined instruction decoder
JP6450705B2 (ja) 永続コミットプロセッサ、方法、システムおよび命令
US8285973B2 (en) Thread completion rate controlled scheduling
CN109313567A (zh) 虚拟化精确的基于事件的采样
TW201030671A (en) Graphics processing units, metacommand processing systems and metacommand executing methods
JP2014222520A (ja) プロセッサ、方法、システム、及び、プログラム
US7313675B2 (en) Register allocation technique
CN103514009A (zh) 零周期加载
US9274829B2 (en) Handling interrupt actions for inter-thread communication
TW200910096A (en) Reordering data responses
US11915000B2 (en) Apparatuses, methods, and systems to precisely monitor memory store accesses
US20190187993A1 (en) Finish status reporting for a simultaneous multithreading processor using an instruction completion table
TW295646B (zh)
US7594097B2 (en) Microprocessor output ports and control of instructions provided therefrom
TWI227402B (en) Microprocessor and method for performing selective prefetch based on bus activity level
CN116302868A (zh) 使用固定计数器的高级别微体系结构事件性能监测的系统、方法和装置
US9886396B2 (en) Scalable event handling in multi-threaded processor cores

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent
MM4A Annulment or lapse of patent due to non-payment of fees