TW409227B - Method and apparatus for selecting thread switch events in a multithreaded processor - Google Patents

Method and apparatus for selecting thread switch events in a multithreaded processor Download PDF

Info

Publication number
TW409227B
TW409227B TW087117133A TW87117133A TW409227B TW 409227 B TW409227 B TW 409227B TW 087117133 A TW087117133 A TW 087117133A TW 87117133 A TW87117133 A TW 87117133A TW 409227 B TW409227 B TW 409227B
Authority
TW
Taiwan
Prior art keywords
thread
processor
threads
register
switch
Prior art date
Application number
TW087117133A
Other languages
English (en)
Inventor
John Michael Borkenhagen
Richard James Eickemeyer
William Thomas Flynn
Andrew Henry Wottreng
Original Assignee
Ibm
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 Ibm filed Critical Ibm
Application granted granted Critical
Publication of TW409227B publication Critical patent/TW409227B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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 or 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Description

409227 _案號87inm_g?年g月少曰」 修正不有斧._ 五、發明說明(41) 在此建議將不做生產性工作的線程設為低優先順序以避-免性能下降,即使間置迴路中的每一指令都會導致切換。」· 況且更重要的是若請求一外部中斷成為一線程設定為低優 , 先順序’則允許硬體改變線程優先順序。在此情況下提高 線程為中等優先順序,以允許更快的回應中斷。此允許一 外部事件上的線程等待設定其本身在低優先順序,它會雉 持在此直到通知有事件了。 雖然已用目前視為最實際且較佳的實施例來說明本發 明’該了解的是本發明並不僅限於上述賁施例’反之,意 欲在不偏離附屬申請專利範圍之精神與範圍下’涵蓋各種 : 修正及同等配置。 Ο 元件符號說明 10 電腦 資 料 處 理 系 統 100 中央 處 理 器 (CPU) 110 處理 器 核 心 120, 130, 15 0 快 取 記 憶 體 nsu 140 主記 憶 體 152 匯流 排 介 面 155 糸統 匯 流 排 16 0- 168 輸 入 輸 出 處 理 器(IOP) 170 直接 存 取 儲 存 裝 置 (DASD) 172 磁帶 機 174 遠地 通 訊 線 176 工作 站 178 印表 機
O:\55\55420.ptc 第45頁 2000. 08. 04.045 409227 五、發明說明(υ 前案說明 本發明有關於以下美國專利申請案,其發明主題在此併 供參考.(1)美國專利申請案名稱「Thread Switch
Control in a Multithreaded Processor System 」, RO996-042 ’其與本案同時申請;(2)美國專利申請案名稱 rAn Apparatus and Method to Guarantee Forward Progress in a Multi threaded Processor j > R0997-105,其與本案同時申請;(3)美國專利申請案名稱 Altering Thread Priorities in a Multithreaded Processor」,R0 997-106,其與本案同時申請:(4)美國 專利申請案名稱「Method and Apparatus to Force a Thread Switch in a Multithreaded Processor j , R0997-107,其與本案同時申請;(5)美國專利申請案號 773,572,申請日 1996/12/27,名稱「Background
Completion of Instruction and Associated Fetch Request in a Multithreaded Processor」 ;(6)美國專 利申請案號761,378,申請日1 9 9 6/ 1 2 /0 9,名稱「Multi-Entry Fully Associative Transition Cache 」;(7)美 國專利申請案號761,3 8 0,申請日1 9 9 6/ 1 2 / 0 9,名稱 「Method and Apparatus for Prioritizing and Routing Commands from a Command Source to a Command Sink」;(8)美國專利申請案號761,379,申請曰 1996/12/09 ,名稱「Method and Apparatus for Tracking Processing of a Command」;(9)美國專利申
E:\aaa\55420. ptd 第6頁
_i%9 ^17133 g?年义月r日 修A 五'發明說明(42) ( 200 儲存控制單元 - 2 0 5 匯流排 2 1 〇 轉換快取記憶體 2 2 0 指令單元 2 5 0 轉換查詢缓衝器(TLB) 2 6 0 分岔單元 2 7 0 固定點單元 272 —般目的暫存器(GPR) 2 74 許多特殊目的暫存器(SPR) 2 8 0 浮點單元 2 8 2 浮點暫存器(FPR) 2 9 0 外部中斷 320 L1目標 330 L2目標 3 5 0 排序器 3 6 0 多工器 3 7 0 第二多工器 4 0 0 線程切換邏輯 4 1 0 線程切換控制暫存器 420 向前進行計數暫存器 4 3 0 線程切換暫停暫存器 4 4 0 線程狀態暫存器 44 2 TO狀態暫存器 444 T1狀態暫存器 4 5 0 線程切換控制器
O:\55\55420.ptc 第45a頁 2000. 08. 04. 046 40922*; 五、發明說明(2) 諳案號473, 6 9 2,申請日 1995/ 0 6 / 0 7,名稱「Method and System for Enhanced Multithread Operation in a Data Processing System by Reducing Memory Access
Latency Delays」;以及(10)美國專利申請案號675,315 ’申请日1996/07/03 ’ 名稱「Multithreaded Storage
Cell 」。 發明背景
案数賴戊3 g彳年·?月 曰 五、發明說明(43) 4 6 0 軟體 470, 472, 474, 476, 478, 480, 482, 484, 486 線
I im ίϊΐκϊ
I O:\55\55420.ptc 第45b頁 2000.08. 04.047 五、發明說明(3) 0 電腦系統整體速度的一種測量(也稱為處理量),是剛旦 每單位時間執行的運算數目。概念上,系統速度的所有f 能改良的最簡單者是增加各元件的時脈·速度,尤其是處理 器的時脈速度。所以若每一元件以二倍快的速度執行而它 者以完全相同的方式執行’則系統會以—半時間來執行上 已知工作。電腦處理器是從不同元件建構,多年前由於 寸的減少及元件數目的減少而使執行速度大幅增加;最 將整個處理器封裝在單晶片上的積體電路。該減縮尺j 得增加處理器時脈速度變的可能,並因此增加系統遠声吏 儘管積體電路使得速度得到大幅改善,但是仍存在又 電腦系統的需求。硬體設計者已能藉由更大的整合^ 步減少電路大小’及其他技術而得到速度的進一步 — 然而設^者認為實體尺寸的減少不能無止盡的持續下^。 而且持_增加處理器時脈速度會受到限制。因此重心 至它種方式以造一步改善電腦系統的整體 〜已轉 /不改變時脈速度下’使用多個處理器能改p 逆度。在積體電路晶片上封裝的各處理器的最一不、.先 本即可作到。#由將CPU的負載分給從屬處理器即又可的成 屬處理器的使用而大幅改善系統速了甴從 定時執行重覆性及單—特殊目的之程式,上處理器會 置的通訊及控制。也可能將多個CPU置於單一電^出敦 ,一般是大型主機式系統其可同時服務多重使用V統中 CM中的每一者能替〜不同使用者分開執行上用者。不同 ,因此增加系統的總連度以同時執行多個工作。二作 热而更難
E:\aaa\55420.ptd 第8頁 五、發明說明(4) 的是改善單一工作的逮度,如應用程式的執行。在許多 CPU中協調各功能結果的執行及傳送是一件難處理的事。 對於從屬I /0處理器而言它並非如此困難,因為功能是預 設的而且限制為供多個執行~般目的應用程式的(:];)11使用 ,更難的是協調功能,部分是因為系統設計者無法預先已 知為程式的詳細内容。多數應用程式遵守處理器執行的單 —路徑或流程步驟。雖然有時可能將此單—路徑分成多個 平行路徑,但是可以如此作的通用程式仍在研究中。通常 將過長的工作分成較小的工作以便由多個處理器平行處理 ’是由軟體工程師以將其當成個別案件的方式撰寫碼而完 成的。這種特別方式對於執行商業上的交易而言會產生— =特別問題,因為商業上的交易不一定是重覆或4可預測 但仍有許多改 的,籍由增加 增加CPU的速 處理器的共同 為設置少數簡 的簡單運算。 開發出處理器 。另一種方法 正CPU中的硬 同用以顯示高 憶體記憶體是 因此雖然多重處理器可改善總系統性能, 善各CPU速度的理由。gCPU時脈速度是已知 每時脈周期執行的平均運算數目,即可能再 度即每秒執行的運算數目。高性能單晶片微 架構是精減指令集電腦(RISC)架構,其特徵 化的常用指令集供快速執行上述可快速執行 隨者半導體技術的進步,R丨sc架構的目標是 其在各機為'時脈周期上能執行一或多個指令 是增加每時脈周期執行的平均運算數目以修 體。此處理量測量(即每指令的時脈周期)二 性能處理器的架構特徵。指令管線及快取記
E:\aaa\55420.ptd
409227 五、發明説明(5) 使得這種目標得以完成的電 許後續指令在先前發出的指 闬的快取記憶體及接近處理 數情況於不等待主記憶體的 關於用預測硬體以多個執行 已顯示出一些改善。 習知RISC處理器的性能可 (VLIW)電腦中進一步增加, 平行的執行一個以上的指令 或執行單元來平行執行多個 可以循序或隨意完成。循序 令已完成之前,沒有指令能 出的所有指令已完成之前即 定的規則。 至於在超純量系統中的循 ,管線仍會中止。一指令, 的結果而定,會使得管線中 指令其中必要的資料不在快 誤,則不能執行直到資料可 必要的資料在快取記憶體中 高命中比,即請求資料的數 中的次數之比,這對於需要 重要。一快取記憶體失誤能 若多數時間不能使用資料, $架構特徵。管線指令執行允 二已完成之前即開始執行。常 @的其他資料可允許指令在多 ,個存取時間之下持續執行。 單&來找出平行執行的指令, 以在·超純量電腦及極長指令字 二種電腦皆可在每處理器周期 三在這些架構,設置多個功能 管線a在超純量架構中,指令 完成表示在先前送出的所有指 i成。隨意完成表示在先前送 允許完成一指令,只要滿足預 序及隨意執行,在一些環境中 其依先前派出的指令尚未完成 止。例如依載入/儲存指令的 取記憶體令,即快取記憶體失 以在快取記憶體中使用。維持 是持續執行所必須的,以保有 目與資料已存在於快取記憶體 大量資料結構的計算而言特別 導致管線中止數個周期,而且 則記憶體的總等待時間會更嚴
E:\aaa\55420. ptd 第10頁 五、發明說明(6) 重。雖然主記憶體用的記憶體裝置已愈來愈快’但是這此 記憶體晶片與高端處理器之間的速度差異變的更大。因^ 目前高端處理器設計中有大量的執行¥間花在等待快取記 憶體失誤的結果,而這些記憶體存取延遲使用處理器執行 時間的比例愈來愈大。
改善CPU中硬體效率的另一種方法是將一處理工作分成 數個稱為線程的獨立執行指令序列。此方法與一大型工作 分成數個小工作有關,用以由不同的處理器獨立的執行, 除了本文所述的線程是由同一處理器執行之外。當—CPU 因為任何一種理由不能持續處理或執行這些線程之_時, CPU即切換到另一線程並執行它。這是本文所述的本發明 主題,其設置有硬體多線以容許記憶體等待時間。電腦架 構t定義的名詞多線與軟體使用的該名詞並不相同,^ 3 表示將一工作分成許多相關的線程。在架‘構定義中,久 程是獨立的。因此硬體多線常用以區分該名詞的這二ϋ 用方式。本發明用名詞多線表示硬體多線。 D 當偵測出目前線程中有官線中止的情況時,多 處理器的管線在不同線程上作有用的工作。當 1 線,令有管線中止的情況時,多線也允許處理器實 線架構以便在另一線程上作有用 官 形式。習用形式是在處理器中唯拉 一種基本多綠 以-周期接著一周期的方式將二程或狀態,並^ 中的指令是分開的,所以所有的其二乂錯。因為早一線程 種多線形式(即本發明所考慮者:,依附都不必I。另- 疋在某一長等待時間事件
E:\aaa\55420.ptd 4Q9227 五、發明說明(7) 上將各線程交錯。 趣Ϊ用1夕線形式需要複製各線程的處理器暫存器,例如 i二夕Γ構的處理器,其以p〇werpcT"為商品名稱來鎖售以 以^ ί二讲處理器必須維持n個狀態以執行n個線程。因此 要;存器,浮點暫存器, j:。’,夕暫存器:儲存/再儲存暫存器,及特殊目的鏈暫暫 者2 ,特殊緩衝器如區段查詢緩衝器,可以複擎< 者各貢料可以用線程號碼作標記,而且若#,列必= ;,^時執行…一些分岔預測機制如相關j; :二返:堆4也應該複製=幸⑽,不必複製處ίί 丄V 能如:層一指令快取記憶體(u 1快取記恒。 r層一資料快取記憶體(l"快取記憶體),指令緩; :’儲存排序器,指令發送器,功能或執行單 :, 轉,查詢缓,及分念記錄表。t—線程遇到^ 遲日守’處理益會快速的組到另'線程,此線程的執 一線程上的記憶體延遲重疊。 /、乐 現存的多線方法敘述一快取記憶體失誤上或—記憶 考上的線程切換。此方法的主要例子可參考"Sparcle · “ Evolutionary Design f〇r Large-Scale
Multiprocessors," by Agarwal et al., IEEE Micro V〇lume 13, No, 3, PP. 48_0〇, June 1993 。如risc 中所應㈣’多個暫存器集一般用以支援功能呼叫,是: 正過以維持多個線程。修正δ個重疊暫存器窗‘
E:\aaa\55420. ptd 第12頁 五、發明說明(8) 重疊的暫存器集’其中各暫存器集保留作為擷取及訊息處 理。此系統揭示—線程切換其發生在各個第一層快取記憶 體失誤上以‘致—遠地記憶體請求。雖然此系统表示—種 技術上^,步’但是現代處理器設計時常利用多層快取記 2 =或§己憶體,其與處理器連接。處理器系統利用某 έ知演τ法以決定其主記憶體儲存區的那一部分會載入 快取記憶體的各層中,因此每當一記憶體參考發生時(其 不在快取記憶體的第—厣、,牽τ取。„ , 、 ^ ^s ΐ弟層)處理.盗必須嘗試從快取記憶 體的第二或更高層得到該記憶體參考β J此明顯的,需要一種改良式資料處理系統,盆 取記憶體系統中的記憶體等待時間而導致 的延遲,心統配合多線資料處理系統而使用。V致 發明概述 本發明之目的是提供一種改良 闬於命押哭麻麻士〜 此八貧料處理系統及方法, :於處理益硬體中貫施的多線處理:j 達成此目@,該處理器能在2個指^由少線處理益可 及實施在硬體暫存器中具額外軟 Λ程之間切換執行, 克服線程切換情況。線程切換邏輯=程切換邏輯,其可 程的處理允許處理器在各線程令 附加優點是各指令線 本發明的另一目#是藉由允 ^用$到最佳。 而改善多線電腦處理,藉'^益執行第二指令線程 置’因為其從各記憶體元件;理器利用,否則其會間 1/0,第一線程之直接存取儲存裝晋51憶體,記憶體,外部 或指令。 等彳頡取必要的資料與/
409227 五、發明說明(9) 本發明的額外目的 ,其執行條件線程切換奴=I種多線資料處理系統及方法 程而不同,或者可以、,/'中線程切換之條件可以根據線 理員而改變。 處理期間藉由使用軟體線程控制管 本發明的另一目的3 ^ 以實施事件,其能使二,供—種硬體暫存器’其包含位元 级為此硬體暫存器中夕線處理益線程切換。本發明之特 元,都可以啟始。此碌二,程切換控制暫存器中的位 進一步優點》因為Α ^子55也具有改善處理器性能的 這些及其他相換控制快許多= 系統而達成,卷多錄^由^供具一多線處理器之電腦 之一時,能&至少兩=:,到$多處$里器等待時間事件 也具有至少一線程& 程之間切換處理。電腦系統 儲存諸指令線;;2!存;,操作時接至多線處… 器切換處理至各線程時;改變:狀態在處理 多線處理器,少諸線程狀態暫存器及接至 對應之翠多啟於位換控制事件’其藉由設定 統更包含眾多内線程切換控制事件。電腦系 等存元件之任-者會導致-處理器 :部記憶體裝置,-通訊裝置,-二路, 二:2 :备出裝置’其中多線處理器存取諸裝置之任-者或,料也會導致幕多處理器等待時間事件。當多線處理
E:\aaa\55420.ptd
第U頁 409227 五、發明說明CIO) 中執f之諸線私之一因為諸處理器等待時間事件之一 :行Ϊ,及當該處理器等待時間事件係-線程 線工;之另一广係啟始時,多線處理器即切換孰行 線程切換控制暫存器具有眾多位元,各與眾多線程切換 控制事件之一獨特地結合,而且若啟始諸位元之―,與該 位70結合之線程切換控制事件使得諸多線處理器從一指令 線程切換至另一指令線程。線程切換控制暫 的…卜,藉由操作軟體或者藉由一線程 態地改變一特別位元的啟始。 電腦處理系統具有一個以上的線程切換控制暫存器,其 中一線程切換控制暫存器之諸位元值與另一該線程ς換控 制暫存器之諸位元值不同。 通常可以有許多線私切換控制事件,例如一資料失4吳, 其來自以下至少之一:一L1資料快取記憶體,一L2資料快 取記憶體,資料儲存其跨越雙字邊界,或是一指令失誤, 其來自以下至少之一:一L1指令快取記憶體,一轉換查詢 缓衝器,或一資料之與/或來自主記憶體的指令失誤,或 資料地址轉換中之錯誤與/或一指令。存取處理器以外之 I / 0裝置,或另一處理态也可以是線程切換控制事件。其 他線程切換控制事件包含一向前進行計數,即眾多線程之 έ亥一在不執行眾多線私之一之指令下已從一多線疼理器切 換出去之次數,及一暫停時段,其中至少一處理器沒有作 有用的工作。
E:\aaa\55420.ptd 第15頁 409^7 五、發明說明¢11) 本發明的 程;裝置, 一處理器等 切換控制事 是否係眾多 ’若處理器 使處理裝置 本發明也 ’包含以下 一多線處理 數個處理器 程至第二指 第二數目, 元以指派處 著若該啟始 線處理器遇 切換。 本發明的 遙在一線程 在一線程切 出一信號到 電腦處理 用以指示 待時間事 件;以及 線程切換 等待時間 能切換處 是—種判 步驟:計 器因處理 周期之數 7線程之 則在線程 理器等待 位元啟始 到線程切 電腦處理 狀態暫存 換控制暫 線程狀態 系統包含裝 處理裝置何 件而停止; 裝置,用以 控制事件之 事件係一線 理至另一線 定一線程切 算第一數個 器等待時間 目,其係多 處理所必須 切換控制暫 時間事件為 ’該方法包 換控制事件 置,用 時因為 裝置, 判定處 一。處 程切換 程。 換控制 處理器 事件而 線處理 者,接 存器中 —線程 以處理眾多指令線 眾多線程之一遇到 用以暫存眾多線程 理器等待時間事件 理系统也包含裝置 控制事件t則甩以 暫存器内容之方法 周期之數目,其中 停止,及計算第二 益切換第一指令線 著若第一數目大於 藉由設定一啟始位 切換控制事件。接 始位元啟始,當多 含若啟 時’即輸出一信號至線程 哭=也包含以下步驟:儲存一線程狀 :及儲存眾多線程切換控制事件 暫ί哭:ί著當線程改變狀態時,輸 。若:燃比較線程之改變狀態與眾 多線程切換控制事件 制事件,則輪出一信 行0 號到=ί f嘘導因# 一線程切換控 迷到-多線處理器以便從線程切換執
E:\aaa\55420. ptd 第]6頁 409227 五、發明說明(〗2) 由以下較佳貫施例的詳細說明並 發明的其他目標、功能及特徵;方法,操:明了本 關元件的功能;元件的A . ’、 、居構的相 本說明書的一部分’字其皆形成 應元件。 』的參考數子表不各圖中的對 附圖之簡單說明 然而本發明本身以及較佳模式 與優點,將可參考—繪总 ,其進—步目標 圖而明了,其中:、、會不芦'細例的以下誶細說明並配合.附 圖1的電腦系統方掄岡处丧a 士 F! 9 S讲姑士 s塊圖月匕F'鈿本文所述的本發明。 圖疋根據本發明的多線資 圖3是圖2儲存控制單元的方塊圖;掩圖。 及ΓΛ方元塊圖可說明圖2的線程切換邏輯,儲存控輪 圖5說明一線程的狀態變化.,其中線程遇到如 不同線程切換事件。 口 4所不的 圖6是本發明向前進行計數的流程圖。 較佳實施例之詳細說明 現在參考附圖尤其是參考圖1,其中顯示電腦資料處理 糸統1 0的咼階方塊圖,其可用以實施本發明的方法及系 統。圖1顯示能利用本發明的電腦資料處理系統1 〇的主要 硬體元件及連線。用以處理指令的中央處理器(CPU) 2 〇〇 接至快取記憶體1 2 0,1 3 0,1 5 0。指令快取記憶體1 5 0儲存 CPU 1 0 0執行的指令。資料快取記憶體丨2 〇,1 3 〇儲存Cpu
E:\aaa\55420.ptd 第17頁 五、發明說明,(丨3) ~~~---- 1 0 0使用的資料。快取記憶體與主記憶體M 記憶體連接。。職◦及主記憶綱也經由取 155的匯流#介面152而連接。各輸入/輪出處理器(I⑽) 160至168接至系統匯流排155並支援與各儲存及輸入/ (I/O)裴置連接,該等裝置如直接存取儲存裝置(dasd) 170 ’磁帶機172,遠地通訊線174 ’工作站176,及印表機 1 7 8等。該了解的是圖1僅用以形成一電腦資料處理系統u 的高階代表性元件’因此這些元件的數目及類型是以改 變 。 在CPU 100中,處理器核心110包含諸特殊功能單元,各 執行一些基本運算,如循序指令,執行有關整數的運算, 執行有關實數的運算,在可定址儲存與邏輯暫存器陣列之 間傳輸值。圖2說明一處理器核心10 0。在—較佳實施例中 ’資料處理系統1 〇是單一積體電路,管線,超純量微處理 器’其可用任何電腦架構來實施’該等架構如以商品名稱 為P0werPcTM銷售的RISC處理器,及IBM銷售的powerpcTM 6 0 4微處理器。 如以下所逑,資料處理系統〗〇最好包括各種單元。暫存 器’缓衝器,記憶體,及其他最好是都由積體電路製成的 構件。該了解的是在附圖中,已將各資料路徑簡化,事實 上有許多不同且平行的資料路徑進出各元件。此外,已將 與本發明無關的各元件的說明省略,但是要了解的是處理 器包含額外功能用的額外單元。資料處理系統1 0能根據減 化指令集計算R〖sc方法及其他計算方法來操作。
E:\aaa\55420.ptd 第18頁 409227
如圖2所示,資料處理系統1 〇的處理器核心最好包括層 一資料快取記憶體LI D快取記憶體120 ,層二L2快取記憶 體1 3 G,主記憶體1 4 0 ’及層一指令快取記憶體L1 I快取記 憶體1 5 0 ’其皆可利用各匯流排連線於操作時與儲存控制 單元200連接。如圖1所示,儲存控制單元2〇〇包含:轉換 快取記憶體2 1 〇以連接L1 D快取記憶體1 2〇及L2快取記憶體 1 3 0 ’主s己憶體14 〇 ’及許多執行單元。l 1 D快取記憶體 120及LI I快取記憶體丨50最好設置在晶片上作為處理器 100的一部分,而主記憶體14〇及L2快取記憶體130則設置 在晶片外。記憶體系統1 4 0意欲表示隨機存取主記憶體可 设置(或不設置)在處理器核心1 〇 〇之中,而其他資料缓衝 器及快取記憶體(若有)則在處理器核心1 〇 〇的外部,而其 他外部記憶體如D A S D 1 了 Q ’磁帶機1 了 2,及工作站1 7 6則在 圖1中顯示。L2快取記憶體130最好是高於主記憶體14[}的 高速記憶體系統,而且藉由儲存L2快取記憶體130中的的 選定資料,即可將參考主記憶體丨4 〇所導致的記憶體等待 時間減至極小。如圖1所示,L2快取記憶體130及主記憶體 140是經由儲存控制單元2〇〇而直接與L1 !快取記憶體15Q 及指令單元220連接。 .“ 來自LI I快取記憶體丨5〇的指令最好輸出到指令單元 2 2 0,其根據本發明的方法及系統,用各子處理器單元來 控制夕線的執行,έ玄等單元如分岔單元2 6 〇 ,固定點單元 2 7 0,儲存控制單元2〇〇,及浮點單元28〇與資料處理系統 1 0的架構指定的其他元件。除了如圖i中所示的各執行單
E:\aaa\55420.ptd 笫19頁 409227 ---—丨一 五、發明說明(⑸ 二卜丄J於此技術者可了解的是現代的超砘量好理μ 各個這種執行單元的許多樣式以以 有來自各暫存器的輸入源;=資:些多數會具 可使暫存器FPRS 282 °此外,也 制單元272及轉換快取記在圖2令’儲存控 目的到274。 瞀存益272接至特殊 輯4?Λ處::·1 〇 °所特有的功能硬體單元是線程切換邏 J40 0及轉換快取記憶體21◦。線程切換邏輯4⑽包 暫存器以決定那一線程會動作或是執 輯40。於操作,存控制單侧,執行;元丄=邏 2 8 0 ’及指令早兀22〇連接。儲存控制單中的轉 取記憶體2!0必須能實施多線。較佳的,儲存控制單元· 及轉換快取記憶體210允許每一線程至少有—明顯的資料 猜求。因此當第一線程暫停以回應如發D快取記憶體 失誤時,第二線程即能存取目前存在其中的資料的^ 〇快 取记憶體1 2 0。若第一線程也產生l 1 d快取記憶體,則發 出另一貿料明求因此多個資料請求必須包含在控制單元 2 0 0及轉換快取記憶體2 1 Q。較佳的,轉換快取記憶體2丄〇 是美國專利申请案號08/761,378,申請曰1996年12月9曰 ’名稱"Multi-Entry Fully Associative Transition C a c h e11所述的那一種轉換快取記憶體,該申請案在此供參
E:\aaa\55420, ptd 第20頁 4Q9227 五 '發明說明(16) 考。控制單元200 ’執行單元260,270,280及指令單元 22 0於操作時都接至線程切換邏輯4〇〇以決定要執行那一線 程。 如圖2所示,匯流排2 〇 5設置在控制單元2 〇 〇及指令單元 2 2 0之間以連接如資料請求至控制單元2 〇 〇,及連接L 2快取 s己憶體1 3 Q失誤至指令單元2 2 〇。此外,設置轉換查詢緩衝 器TLB 250其包含虛擬轉成實際地址的對映表。雖然本發 明中沒有顯示’但是可設置各種額外的高階記憶體對映緩 衝器’如操作方式與轉換查詢缓衝器TLB 2 5 〇類似的區段 查詢缓衝器。 圖3是儲存控制單元2 〇 〇的詳細說明,如該名稱所表示的 ’此f元控制來自各儲存單元的資料及指令的輸入與輸出 ’該等單元包括各快取記憶體,缓衝器及主記憶體。如圖 3所不’儲存控制單元2 〇 〇包括轉換快取記憶體2丨〇其功能 為連接L1 D快取記憶體120,多工器360,L2快取記憶體 130 ’及主記憶體140。此外,轉換快取記憶體210接收來 自f序器3 5 0的控制信號。排序器3 5 0包括許多排序器,最 好是二個以處理指令與/或資料擷取請求。排序器3 5 0也輸 出控制信號到轉換快取記憶體21〇,L2快取記憶體13〇,以 及與主記憶體1 4 0互相傳送控制信號。 圖3儲存控制單元20 0中的多工器360接收來自LI D快取 記憶體丨2〇 ’轉換快取記憶體210,L2快取記憶體130,主 記憶,140的資料,以及若資料要存入記憶體,則也接收 執行單元270,28〇的資料。多工器360從這些來源之一選
E:\aaa\55420.ptd
40922? 五、發明說明
出資料,並輸出到Ll D快取記憶體12〇或執行單元以回應 接收自排序器3 5 0的選擇控制信號。此外如圖3所示,排序 器350輸出一選擇信號以控制第二多工器37〇。根據排序器 3 50的選擇信號,多工器37〇即從L2快取記憶體13〇或主記 憶體14 0輸出資料到Ll I快取記憶體丨5〇或指令單元22〇。 產生上述控制及選擇信號時,排序器3 5 〇存取並更新L丨D 快取圮憶體1 20的L1目標32〇及L2快取記憶體13〇的L2目標 330。 關於本文所述處理器的多線功能,儲存控制單元2〇〇的 排序益3 5 0也輸出信號到線程切換邏輯4〇 〇,其指示資料及 指令請求的狀態。所以由於快取記憶體丨2 〇,丨3 〇 , 1 5 , 主記憶體1 4 0的回饋,轉換查詢缓衝器2 5 〇即傳送到排序器 3 5 0 ’並接著送入線程切換邏輯$ q 〇而導致一線程切換,詳 如以下所述。或者,任何裝置,其中設計成使得一事件在 多線處理器中導致一線程切換的發生,都會於操作時接至 排序器3 5 0。 圖4疋線程切換邏輯硬體4 〇 〇的邏輯表示及方塊圖,以決 定一線程是否會切換,以及若如此,是那—線程會切換。 儲存控制單元200及指令單元220與線程切換邏輯4〇〇連接 。線程切換邏輯4 0 0最好安裝在線程切換邏輯4 〇 〇中,但是 若有許多線程則線程切換邏輯4 0 0會更複雜,所以邏輯是 在指令單元2 2 0以外。為了便於解釋,將線程切換邏輯4 〇 〇 晝在指令單元2 20以外。 在此實施例中會在線程中導致切換的一些事件,則從儲
409221 五 '發明說明(18) 存控制單元200的排序器350經由線470,472,474,476, 478 ’ 480 ’ 482,484,486而傳送到線程切換邏輯40 0。其 他等待時間事件會導致線程切換;此表並不意欲包^ —切 :反之,它僅表示線程切換可以如何實施。第一線程T 〇或 第一線程T1請求的指令,其都不在指令單元2 2 0中,即是 一種能導致線程切換的事件,分別如圖4的470及472所示 。線4 74指示何時主動的線程,不論是T0或T1,會發生L1 D快取記憶體120失誤。分別在線476,478中標記出線程T0 或T1的L2快取記憶體1 3 〇快取記憶體失誤。當資料返回以 分別持續執行T0線程或T1線程時,即啟動線480及482。分 另1J以線484及48 6來表示轉換查詢缓衝器失誤及表範圍的結 束。 這些事件都送入線程切換邏輯4〇 Q,尤其是送入狀態暫 存器440及線程切換控制器4 5 0。線程切換邏輯40 0對於各 線程都有一線程狀態暫存器。在本文所述的實施例中,顯 示二個線程,即第一線程T0的T0狀態暫存器442及第二線 程T1的T1狀態暫存器444,詳如以下所述。線程切換邏輯 4 0 0包含線程切換控制暫存器4丨〇,其控制那些事件會導致 線程切換。例如線程切換控制暫存器4丨〇能阻止事件,而 使得狀態從被線程切換控制器4 5 〇看到變成另一狀態,所 以因為事件阻止而不能切換線程。線程狀態暫存器及改變 線程的邏輯是本專利申請案的主題,並在此供參考!51〇996一 042。用向前進行計數暫存器42〇來防止透過量,並且可包 含在線程切換控制暫存器4丨〇中。向前進行計數暫存器4 2 〇
E:\aaa\55420. ptd 第23頁 409227 五、發明說明(19) 是本專利申請案的主題,並在此供參考R0997-105。線程 切換暫停暫存器430,其係本專利申請案的主題並在此= 參考R 0 9 9 7 - 1 0 7 ’則處理公平性及活鎖等議題。此外,使 用軟體4 6 0可改變線程的優先順序,其係本專利申請案的 主題並在此供參考RO99 7- 1 0 6。最後’但並非僅限於此’ 線程切換控制器4 5 0包含許多邏輯閘,其表示所有邏輯的 累加’其實際上決定是否切換一線程,那一線程,以及在 什麼情況下。以下所現詳細說明這些邏輯元件及其功能的 每一者。 線程狀態暫存器 線程狀通暫存器4 4 0包含各線程的狀態暫存器,如其名 稱所表明的,可儲存對應線程的狀態;在此情況下是τ 〇線 程狀癌暫存器442及Τ1線程狀態暫存器444。至於一特殊架 構及線程切換優先順序設計,則可規定位元數目及特殊位 元的配以便5兒明各線程的狀態。對於具有二個線程的多 線處理益’線程狀態暫存器442,444中位元配置的例子如 下表所述。 0) '線程狀態暫存器位元配置 指令/資料 (1:2) 〇 =指令 1 =資料 失誤型排序器 〇〇 =無 ° 01 =轉換查詢緩衝器失誤(Ι/D的檢查位元
E:\aaa\55420. ptd 409227 五、發明說明(20) 是0) I 0 = L1快取記憶體失誤 II = L2快取記憶體失誤 (3 ) 轉換 0 = 轉換到目前狀態不會導致線程切換 1 =轉換到目前狀態會導致線程切換 (4:7) 保留 (8) 0 = 載入 1 =儲存 (9:14) 保留 (15:17) 向前進行計數器 III = 重設(此線程期間已完成指令) 〇 〇 〇 = 無指令完成下此線程的第一次執行 0 0 1 =無指令完成下此線程的第二次執行 0 1 0 = 無指令完成下此線程的第三次執行 011 = 無指令完成下1此線程的第四次執行 1 0 0 = 無指令完成下此線程的第五次執行 (18:19) 優先順序(可由軟體設定) 00 =中等 01 = 低 10= rSj 11 =〈非法〉 (20:31)保留 ( 3 2:6 3 ) 保留給64位元實施
E:\aaa\55420. ptd 第25頁 409221 五'發明說明(21) 在本實施例中,位元〇表示失誤或處理器t止執行的理 由是否為請求指令或資料的結果。位元1,2表示是否可使 用請求的資訊,而且若可使用,是從那一硬體,即資料或 指令的轉換地址是否不在轉換查詢缓衝器250中,或者實 料或指令本身不在L1 D快取記憶體1 2 0或L 2快取記憶體1 3 〇 中,詳如圖5的說明所述。位元3表示線程狀態的改變是否 會導致線程切換。在不導致線程切換之下,線程可改變狀 態。例如當線程T1遇到L1快取記憶體失誤時,若發生線程 切換,接著若線程T1遇到L 2快取記憶體失誤,則不會有線 程切換因為線程已在L1快取記憶體失誤上切換了。然而T1 的狀態仍會改變。或者:¾可以選擇,可將線程切換邏輯 4 0 0配置或規劃成不在L1快取記憶體失誤上切換,接著當 線程沒遇到U快取記憶體失誤時,即使線程改變狀態仍不 會有線程切換。線程狀態暫存器44 2,444的位元8表示一 特殊線程請求的資訊是否載入處理器核心,或從處理器核 心存入快取記億體或主記憶體。配置位元15到1?以防止透 過量,這稍後會參考向前進行計數暫存器42〇來說明。可 以在硬體中設定位元18,19或者由軟體設定以指示線程的 優先順序。 严顯示資料處理系統10處理的目前線程實施例的4個狀 以及線程狀態暫存器440中儲存的這些狀態,位元位 -.2。狀怨00表不準備狀態,即線稜準備處理,因為所 有所需的資料及指令都可使用;g大態)〇表示線程狀態,其
E:\aaa\55420. ptd 第26頁 409227
五、發明說明(22) 中處理器中線程的執行已 D快取記憶體120之中,或等待線程等待資料返回到L1 ⑸;狀態Η表示線程等待寺資待料\々返回和I快取記憶體 ^ ^ ^ mm i- - ^ ^ ^貝枓返回到L2快取記憶體13〇之 擬地詢缓衝器25°上有-失誤,即虛 = Ϊ 這稱為表範圍。圖5中也顯示線 層次,以狀細,其指示線程準備執行,呈有最 円優先順彳。最好指定較高優先順序給短的等待時間事件 圖5也說明從各種來源擷取資料時狀態的變化。在符號 中以狀,% 00表不線程Τ0的正常未中斷執行。若發生以 D决取„ §己憶體或1快取記憶體失誤’則線程狀態變成狀態1 0 如符號512所示,這分別根據從儲存控制單元2〇◦傳送到線 4 7 4 (圖4)的乜號或根據從指令單元2 2 〇傳送到線4 7 〇 (圖4 ) 的k唬。若所需的資料或指令在L 2快取記憶體丨3 〇中而且 ,取了,則在符號51 0恢復T0的正常執行。類似的,圖5的 付號5 1 4表示一 L 2快取記憶體失誤,當儲存控制單元2 〇 〇指 示線4 76或478(圖4)上有失誤時,即從狀態τ〇或了丨的線程 狀態變成狀態11。從主記憶體140擷取L2快取記憶體的指 令或資料並載入處理器核心1〇〇如線480或482(圖〇所示時 ’狀態即再度在符號51 0變回狀態〇 〇 ^當請求資訊的虛擬 地址在轉換查詢缓衝器2 5 0中找不到時,儲存控制單元2 〇 〇 即與線484(圖4)上的線程暫存器440連線,如符號516所示 ,即TLB失誤或狀態0 1。當不能使用地址或者若有資料儲 存中斷指令,如儲存控制單元2 0 0在線48 6上(圖4)所示,
E:\aaa\55420.ptd 第27頁 409227 五、發明說明¢23) 則線程狀態返回狀態0 〇以表示準備執行 電腦設計者可自由選擇狀態數目,及各狀態表示的意義 。例如若線程具有多個L 1快取記憶體失誤,如u :快g記 =體及LI D快取記憶體失誤,則可以用不同狀態表示各種 記憶體失誤。或者,以單一線程狀態表示一個以上的 事件或發生的事。 現在說明2個相同優先順序有線程的線程切換演算法例 ^ ’其判定是否給予線程切換。該演算法可根據本發明的 教不對於更多個線程及線程切換情況而擴大並修正。儲存 在線程狀態暫存器440 (圖4)令的各線程狀態與各線程優先 順序之間由線程切換演算法執行的互動是在各周期中動離 查詢的。若動作中的線程T0具有—u失誤,則演管法备: :程切換到未使用的線㈣,除非未使用的線程”等“2 失块的決$。若未發生切換’而動作中的線㈣㈣快取 ==成'2快取記憶體失誤,則不論η、的狀態演 心ΪΓ刀換到未使用線程T1 °若二個線程都 誤的決定,則具有已解如失誤的 先成為動作中的線程。每—切換決定時間,多數 採=動作都是最佳的,以產生最佳性能。或 取失誤所導致的線程切換是依其他線程的 狀心而疋,右次有額外的線程切換發 線程切換控制暫存器 ⑷「王此θ卜降 在任何多線處理器中,有一此盘的1 間及性能障礙。在本文所述的較;,切換相關的等待時 又mι铋乜貧施例的多線處理器中
E:\aaa\55420. ptd
409227 五、發明說明(24) ’此等待時間包括:完成目前線程至一點所需的時間,其 中它可以中斷以及當再度請求時可以正確的重新開始,將 線程特定硬體設施從目前線程的狀態切換到新線程的狀態 所需的時間,以及重新開始新線程及開始其執行所需的時 間。本發明最好能操作線程特定硬體設施,包括上述的線 程狀態暫存器及記憶格如美國專利申請案號6 7 5,3丨5,申 請日1996/07/03 ’ 名稱"Multithreaded Storage Cell"所 述者,其在此供參考。為了在不精密的多線資料處理系統 中達成最佳性能,產生線程切換的一事件的等待時間必須 大於多線模式中線程切換相關的性能成本,這和一般單一 線程模式相反。 用以產生線程切換的一事件的等待時間是依硬體及軟體 而定。例如在多線處理器令特定硬體考量包括用以實施處 理晶片外的L2快取記憶體的外部SRAM速度。L2快取記憶 肢中的快速S R A Μ可減少L1失誤的平均等待時間,然而慢速 SRAM會增加L1失誤的平均等待時間。因此,若是將一線程 切換事件定義為硬體中的L1快取記憶體失誤,其具有大於 線切換障礙的外部L 2快取記憶體資料存取等待時間,則 會提问性此。特定軟體碼特徵如何影響線程切換事件的例 子如下,其考慮碼的L2快取記憶體命中與失誤比,即u快 取記憶體中實際可用資料的次數與必須從主記憶體中擷取 貝料的次數(因為貢料不在L 2快取記憶體中)之比。高的L 2 叩中與失决比會產生較長的等待時間L2失誤。低的L2命中 與失决比會增加L1失誤的平均等待時間’因為更多的u失
E:\aaa\55420. ptd 第29頁 五 '發明說明(25) 誤會導致較長的等待時間L2失誤。 L2命中與失誤比,則可以將_ : C有高的 換事件而阻止,因為L2快取記憶體: = 線程切 則可以將u快取記憶體 =記憶體失誤可能會轉成較長的等取: *:些J Ϊ 1寺間事件種類不是可以偵測的,例如在-此么 ◊然而其爾取記憶體不輪出這種信號决 L2,取s己憶體控制器於在與處理器不同的晶片上,因 理器不能決定狀態變化。在這些架構 ^ 顯著U快取記憶體失誤的周期計數器…預設二= ,若失誤資料尚未從。快取記憶體返回,則處理; ’仿佛有-飢2快取記憶體失誤,並因此改變線 = 。此演算法也適用於其他情況如超過一種以上等待 = 情況。僅在此作為例子,在多處理器之中的u快取記二姊 失誤,主記憶體的資料等待時間與另—處理器的資料=ς 時間明顯不同。因二個事件在線程狀態暫存器令可表= 同的狀恶’若不存在區域分這些狀態的信號,則可使 數器來估計它遇到L2快取記憶體失誤後線程會在那—狀镇 線程切換控制暫存器410是一軟體可程式暫存器,其選 擇事件以產生線程切換並具有不同的開始仇元供各定、義^的 409227 五1發明說明(26) 線程切換控制事件用。雖然本文所述的實施例不實施各線 私的不同線程切換控制暫存器4丨〇 ’但是可實施各線程的 不同線程切換控制暫存器4 1 〇以提供更大的彈性與性能, :而更多的硬體成本及複雜性。此外一線程切換控制暫存 器中的線程切換控制事件不必與任何其他線程切換控制暫 存器中的線程切換控制事件相同。
服矛Λ處理器可以用軟體來寫入線程切換控制暫存器4 1 Q ,如美國專利 5,07 9,72 5 號,名稱"Chip IdentificaHon Method for Use with Scan Design Systems and Scan Testing Techniques"所述的動態掃描通訊介面軟體,或 者由具有軟體系統碼的處理器本身來寫入。線程切換栌制 器45 0使用線程切換控制暫存器41〇的内容來開始或中:線 程切換的產生。暫存器410中的值"厂使得該位元所屬的線 程切換控制事件產生一線程切換。線程切換控制暫存器 41 0中的值使得該位元所屬的線程切換控制事件不能 程切換。當'然,執行線程中的指令可以使該特殊或 ,、他線耘的任何或所有線程切換情況都無效。下表顯 程切換事件與暫存器4丨〇中其啟動位元間的結合。 線程切換控制暫存器位元配置表 (〇 )於L1資料快取記憶體擷取失誤時切換 (1) 於資料快取記憶體儲存失誤時切換 (2) 於L1指令快取記憶體失誤時切換 、
E:\aaa\55420. ptd 第31頁 409227 五、發明說明(27) - (3) 於指令TLB失誤時切換 (4 ) 於L2快取記憶體顧取失誤時切換 C5) 於L2快取記憶體儲存失誤時切換 C 6 )於L2指令快取記憶體失誤時切換 (7)於資料TLB/區段查詢緩衝器失誤時切換 ⑻於12快取記憶體失誤及未使用的線程非L2 快取記憶體失誤時切換 (9 ) ¥到達線私切換暫停值時切換 (10) 當L 2快取記憶體資料返回時切換 (11) 於10外部存取時切換 (12) 在雙重X儲存時切換:於二者之第一者上失誤木 (13) 在雙重X儲存時切換:於二者之第二者上失誤* (14) 於儲存多重/串時切換:在任何存取上失誤 (15) 於載入多重/串時切換·•在任何存取上失誤 (1 6) 保留 、 (17) 在雙重X載入時切換:於二者之第一者上失誤木 (18) 在雙重X載入時切換:於二者之第二者上失誤木 (19) 若機器狀態暫存器(問題狀態)位元msr(pr) = 1 則在or 1,1,1指令時切換。允許軟體的優先 順序在與msr(pr)無關之下改變。若位元丨9是 1則0 r 1,1,1才曰令設定低優先順序。若位元 19是0 ’唯有當or丨,I i指令執行時若msr (pr) = 〇才設定優先順序為低。關於優先順序隨 著款體而改變的說明將於稍後討論。
E:\aaa\55420. ptd 苐32頁 五、發明說明 (20) (21) (22:29) (30:31) (32:63) *雙重X 或雙字, 載入或儲 線程切換 如上所 發線程切 或者多線 資源,而 取用資源 得到一工 致線程切 作。在此 所以它能 不會變成 在各線 執行的軟 相比,極 比它應得 過度延遲 (28) 保留 線程切換優先順序啟動 保留 向前進行計數 在64位元暫存器實施中保留 載入/儲存是指载入或儲存一基本半字, 以跨越雙字界限B本文令的雙重χ載入/ 存多個字或字串。 暫停暫存器 述,不精密多線處理器依賴長等待時間 換。有時在執行中,多處理器環境中的 架構中的背景線_ 另-處理器或主動的線程在能向前進行 二例”括更新—記憶體頁表或是從工 :。主動的線程不能得到資源的所有權 換事件,然而迴路中旋轉 情況下Μ呆有資源的背号不能作 釋+次m达—、 線&不能取用 出-貝源因為匕永遠不會 主動的線程。 、引線切換 程令分配處理周期是另— 體螞,與相同處理器中其他:若是 少遇到長的等待時間切換事件祆上執行 的處理周期更多。會超過 $則該線 是未使用線程的等待時間,B邊受時 其等待有限 — 字 , 儲存不是 事件以觸 處理器, 所有者的 之前要求 作分配器 並不會導 有效的工 處理器, 事件而且 在線程上 的軟體@ 程會得至彳 間的另> 時段中服 @
E:\aaa\55420.ptd 第33頁 409227 五、發明說明(29) 務一外部令斷,或處理器外部的某一其他事件。因此若沒 有達成有效處理則在一些時間後最好強制一線程切換成為 不使用的線程,以防止系統閒置。 一時段後強制線程切換的邏輯是:線程切換輸出暫存器 43〇(圖4) ’減法器,及減法器暫存器以保有遞減的值。線 程切換暫停暫存器430保有線程切換輸出值,此實施例中 使用的線程切換暫停暫存器43 〇實施例如下表所示: 線程切換暫停暫存器位元 (0:21) 保留 (2 2 : 3 1) 線程切換暫停值 本文所述的本發明實施例不會在各線程中設置另一線程切 換暫停暫存4 3 0,雖然也可如此作以提供更大的彈性。 類似的’若有多個線程,則各線程不需要具有相同的線程 暫Ϊ值。每次發生線程切換時,硬體即將線程切換斬 停暫存益430的線程切換暫停暫存器值載入減法暫存器。曰 Μ ^ ^ ^ # H· ^ fi ^ ^ 者將仏唬、到線私切換控制器45Q以強制切 ,除非無其他線程準備處理這此沪人 、“ #刀換 ^ 心二?日分例如若糸餅φ讲士 的^他線程都在等待一快取記情 : . u肢天诙亚且不準備鈾;ί·ΐ·社 ^則線程切換控制器45〇不會強制線裎切換灯: 存益令的值變成0而且若沒有其他線程準備處理^ ^ ^ 將該遞減值固定在〇直到另—& 3 7 ,則 „ 1 瑕準備處理指今,太心机 發生線程切換並且將該線程的線程 在此二 法暫存器。類似的,可以將減 + ^值重新載入減 戏法暫存气容易的命名為減法
409227 五、發明說明(30) 暫存器,而且當一綠程正 _ ,會將暫存器增加到某一預設2以及當強制一線程切換時 如上所述可以用服務處理=: 本身將線程切換暫停暫存器4 3 〇疋由/、有軟體碼的處理器 與/或特定軟體碼即可蓣— ··‘‘入"根據特定硬體配置 線程切換暫停值,以使因疋不必要緩程切換暫停暫存器430的 浪費減到極小。若線程切換暫停暫換所導致的周期 當主動的線程等待另—綠 言存窃430中的值過高, 斷的回應等待時間或處理^外^貧源時」或者—外部中 使性能下降。若一線栽 =~其他事件太長了,則會 並沒有遇到’過高的值二產::程切換事件而其他線程 出值二倍或數倍的大於最°若一線輕切換輸 致線程切換,則建議如0長寺待時間事件,其導 止系統閒置因為共用了姐、<,次制線ί王切換,即可防 器周期的公平分配,及二二二二,強制在線程之間作處理 以及處理器外的其他事件Υ °卩中斷的極大回應等待時間 向前進行保證 在一些環i兄下每當.咕婊妒杜 時即必須執行至少一 人佔^ 、以及新的線程開始使用 -指令產生多個快取=制性太高了,例如當單 誤時。例如若請求的;或多個快取記憶體失 指令會導致LI I快:7 : 在於快取記憶體中,則擷取 听取S己憶體1 50失.誤.伯s $ 入π ,要求的資料不會存在 、,仁疋§扣7返回時 在於L1 D快取記憶體丨2 〇中。同理,
E:\aaa\55420. ptd 第35頁
Μ 發明說明(31) 轉,查詢缓衝器250也會導致資料快取記憶體失誤。所以 ,右嚴袼強制向前進行,則後續存取上的失誤不會導致線 程切換。帛二個問題是一些快取記憶體失誤會要求許多周 2 =忐完A ’在此期間另—線程在相同的快取記憶體階層 中3遇到快取記憶體失誤,其可以在極少的時間内完成。 若是返回到第-線程’則強制嚴格的命前進行,而處理器 不能切換到具較短快取記憶體失誤的線程。 為了改正透過量的問題,其中各線程在不執行任何指令 =下鎖在線程切換的各周期中,並存在向前進行計數暫存 范4 2 0 (圖4 )其允許可程式化的極大數目線程切換(其稱為 向前進行門檻值)^該極大數目的線程切換後,必須在切 換此再度發生之前完成一指令。依此,可防止透過量。向 刖進行计數暫存器4 2 0在線程切換控制暫存器4丨〇中實際上 疋位兀30:31,或是該處理器的軟體可程式向前進行門檻 暫存器。向前進行計數邏輯使用線程狀態暫存器442,444 的位元1 5 : 1 7 ’以指示線程狀態並分配給線程切換數目, 在不執行指令之下已遇到—線程。較佳的,接著這些位元 包含向前進行計數。 當線程改變狀態以開始線程切換演算法時,若在使用的 線程中完成至少一指令,則重設該使用的線程的向前進行 計數态,而線程切換演算法持續比較處理器中各線程間的 線程狀態。若沒完成指令,則將使用線程的線程狀態暫存 器中的向前進行計數暫存器值與向前進行門檻值比較。若 計數Is值不等於門檻值,則線程切換演算法持續評估處理
E:\aaa\55420. ptd 第36頁 409227 五、發明說明(32) — -----一- :二中線程的線程狀態。接菩甚恭斗仏 行計數器加-。然而若;ί = Ϊ =換,則將向前進 '線程切換直到能執行—指令會= ,若門檻暫存器具有〇值,則在切拖5,生向則進仃,。或者 在使用線程中完成至少一指'八。夂另—線程之丽必須 理器周期,而且若有二個線;呈,=!程切換要求三個處 計成在嘗試五次後即停止再試線程切換邏輯設 = 常工作。熟於此技術者能了解的是禁 潛在衝突,因為在-方面沒有向前 。強制線程切㉟,因為已超過暫停計數 根據β本名構及軟體可容易的解決這種衝突。 功f6&疋防止透過罝的線程切換邏輯40〇的向前進行計數 程圖'在符號610 ’將狀態το相關的線程狀態暫 iJ i 4的位几15: 17重設為狀態11 1。在符號62◦中嘗試 2程:執行而且將狀態變為00 0。若一指令成功的在線 壬上執仃’則線程TO的狀態返回i丨1並維持不變。谀 j線^不執行指令,則線程T1會發生線y切換,或者而若 =理态架構中允許二個以上的線程,則發生在另一背景線 私/中、。畲線程切換發生在離開T1或其他背景線程之處,則 執仃,回線程了0,發生執行線程TO的第二次嘗試,而線程 T。0狀態在符號630中變成001。再一次,若線程το遇到一線 和'切換事件’則處理器的控制從線程T0切換到另一線程。 類似的二每當發生從其他線程如T1回到線程T0的線程切換 時’狀恶T 0即在第三次嘗試時變為0 1 0以執行T 0 (符號6 4 0 )
E:\aaa\55420.ptd
第37頁 409227 五、發明說明(33) ;在第四次嘗試時變為0U以執行το(符號65〇),以及在第 五次嘗試時變為1 〇 〇以指示Τ 0 (符號6 6 〇 )。 μ在此實施中,有五次嘗試以切換到線程τ〇。第五次嘗試 ,或者每當線程狀態暫存器(TSR) 442中的位元15:17的值 專於心令3 0 : 3 1的值加上線程切換控制暫存ς4丨Π中 ^--P#fTSC (30:3DH=TSR (15:17) T 0發生線程切換。可了解的是五次嘗試只是一隨意數目 :不成功執行的極大可允許切換數目,即向前進行門檻值 疋可以規定的,而且可以在一些認為五不是太多切換的架 構中實施,以及在其他認為五是太少的架構令實施。在任 何情況下,嘗試切換到一線程的次數與不執行指令之間的 關,必須與一門檻值比較,而且一旦到達該門檻值,則不 會從該線程發生線程切換,而處理器會等待直到已解決該 線程相關的等待時間。在本文所述的實施例中,線程狀態 暫存,442的位元i 5 :丨7所表示的線程狀態與線程切換控^ 暫,,410 t的位元30 : 31比較。特殊事件時作的特別處置 ,該等事件具有極長的等待時間例如與輸入/輸出裝置的 互動,可以用向前進行邏輯來防止過早的阻止線程切換以 改善處理器性能。一種處置這些極長等待時間事件的方式 是=止增加向前進行計數器,或是若資料未返回時’勿略 向耵進行計數器與門檻值之間輸出信號的比較。另—種處 置極長等待時間事件的方式是使用這些特殊事件的其他較 大的向前進行計數。 τ 線程切換管理員
第38頁 409227 五、發明說明(34) 分配給處理器的所有軟體線程的線程狀態最好類似在圖 4的線程狀態暫存器442,444之中。在單一處理哭中,一 線程每次只能執行其指令,而所有其他的線程都。°不動作。 如上所述當主動的線程遇到向前進行暫存器42〇,線程切 換控制暫存器41 0 ’或線程切換暫停暫存器43〇相關的長等 待件時,執行即從主動的線程切換到未動作的線程 :使用那一個線程,這些硬體暫存器使用的情況都不 i在執行期間作動態變化。 由線程切換管理員改變線程切換情況的彈性改 。:體線程切換管理員能改變線程切換的頻Γ, 曰〇重要工作可使用的執行周期’及減少因為切 等時間而導致的總周期損失。可以在是 程切換的頻率…戈者因:換:理貝…鎖迴路可改變線 系統工作。不允二:ΐί已準備好了 1可發出-作業 的優點是,目前指令線程切換的頻率 間的影響。或者,藉由阳不又換進/出導致等待時 放棄其-部分或所有的二J☆:低3先:序,線程即可 頻率,或增加從線程切 13二減少切入其中的 切換管理員也無條件的能。線程 個要選出來作執行的線程。次不止線程切供,或影響下— 多重優先順序線程切換π 一止 以合乎導致切換的條件.:β 3疋一優先順序值給各線程 在一些情況下也可期望由硬
E:\aaa\55420.ptd 第39頁 五,發明說明(35) 變線程優先順 當其發生時, 該事件的回應 線程的優先順 軟體透過使用 調整線程的優 邏輯執行的動 本文所述實 線程之間足夠 最佳性能。藉 等優先順序狀 的並非來限制 具有比其他線 個線程執行以 設定或由軟體 各線程的三 優先順序與線 二個線程都具 一執行時間優 順序時,所有 τ 1 ,即資料載 憶體失誤的處 線程T1相比, 以允許TO持續 序。例如低優先順序線程可等待某一 =能=線程的優先順序以影響線程對於 可間。各線程間的相對優先順序, 序t影響這種事件的處理。線程切換管理ί 一或多個指令,或由硬體回應—事件,# 2順序,線程切換管理員改變硬體線程切換 作以有效的改變線程的相對優先順序。、 施例的2個線程使用三個優先順序’並提供 的區分以允許在不使系統性能下降之下達到 =二個優先順序,2個線程能具有相同的中 態。2個線程使用三個優先順序的選擇其目 ,在一些架構中,正常狀態是指一線程—直 程高的優先順序,本發明的範圍意欲涵蓋2 上’其具有一或多個優先順序以便能由硬體 來規劃^ 個所優先順序是高,中等及低。當線程τ 〇的 程Τ1相同時,在線程切換邏輯上即無效應。 有相等的優先順序’所以任一者都不會給予 勢。當線程TO的優先順序大於線程τ 1的優先 的L1快取記憶體失誤即不會從7 q線程切換到 入,資料儲存,及指令擷取,因為L1快取記 理速度遠快於其他情況如L2失誤及轉換。與 線程TO具有接收更多執行周期的良好機會, 執行只要它不浪費過多的執行周期數目。然
409227 五、發明說明(36) 而若線程TO遇到較長的執行等待時間,則 | 控制線程T卜從TUT。的線程切換則不受影心二: 發生於未使用的線程το準備好了, 二、 線程Τ1優先。當線程”切換時即二下線程το會比 L2快取記憶體失誤或轉換請求 且:此例’因為有 景解決該情況 '線程τ〇的優先順:的:時:背 述例子類❿,只是線程名稱相^比線印低的情況與上 藉由改變線程優先順序來實施 種不同的可能方式。可將新;^ =的管理員現有多 用的現存處理器指令若具有期望力j理器架帛’具副作 響允許軟體控制方法選擇的有二::則也可以使用。影 定義架構以包括新指令及現存产)更容易重新 (b)期望在不同處理器版本上執。_上木構改變的效應, 的特殊目的指令與再^用現存护入同的軟體;(c)使用新 藉由每次執行某一現存指令如特定载月主位準,如是否可 ,或者是否需要更多的控制,立载入或儲存來產生效應 串以特別產生該效應 〜法是將一指令加入指令 本文所述的架構最好利用未 器的架構一般目的暫存器’此用心令,其值不改變處理 處理器架構中是極為重要的。^域對於將多線功能裝設在 指令是較佳η ο p 〇 r Q,〇,〇 ;然 '將其他特別指令編瑪。 nop。藉由使用or指令:〇r’ f :其他指令可以有效的當作 可改變線程優先順序,相同的扣或1,1,1等的不同版本即 9 $串可以在無不良效應如
409227 五 '發明說明(37) 暫存ΐ二I=之下在處理器上執行。一延伸使用機器狀態 Γ改變這些指令的意義。例如可期望允許-叹用將边些線程優先順皮 其提供的功能。立提件^ 部分或全部編碼,並取用 模式中發生,其對;2 =能可定義為僅在-些執行 的如當作_來執7:、他松式則無效應,而且將可以正常 個浐ί m ί施例(其使用雙線程的多線處理器)使用三 序·a 7 /、 ·"’執行軟體本身的一部分以改變本身的優先順 tsop 1 or I, 1, 1 tsop 2 or 1,1,1 切換為未使用的線程 將主動的線程設定為低優先順 序 -切換為未使用的線程 注意·除非TSC[19] = 1,僅在 專屬模式中有效 tsop 3 or 2, 2, 2 —將主動的線程設定為中等優先 順序 ts〇P 4 or 3,3,3 -將主動的線程設定為高優先順 序 -注意:僅在專屬模式中有效 才b令t s ο p 1及t s ο p 2可以是相同的指令即本實施例的〇 r 1,1,1,但疋其也可以是不同的指令。這些指令與線程切換 控制暫存器410的位元19及21互動1以及與本文所述的機
E:\aaa\55420,ptd 第42頁 409227 五、發明說明(38) ,暫存器的問題/專屬位元互動。若線程切換控制暫 f益41〇的位元21具有值i,則線程切換管理員能將直線程 的優先順序設定為三個優先順序之—如線程狀態暫存器中 的位兀18: 19所示。若線程切換控制暫存器41〇的位元19具 有〇值則彳θ令t s ◦ p 2線程切換及線程優先順序設定可由 機益狀恶暫存器的問題/專屬位元來控制。換言之,若線 程切 <奐控φι〗暫存豁4 1 0的位元1 9具有1值,或者若機器狀態 暫存器的問題/專屬位元具有〇值,而指令奸1^出現在 碼中,則將使用中線程的優先順序設定為低’並且將執行 立即切換為未使用’或是若未使用線程啟始則切換為背景 線程。指令or 2,2,2設定使用中線程的優先順序為.中等, 這與機益狀態暫存器的問題/專屬位元的值無關。至於指 令or 3,3,3,當機器狀態暫存器位元的問題/專屬位元具 有0值時’即設定使用中線程的優先順序為高。若線程切 換控制暫存器3 2 0的位元21是〇,則將二個線程的優先順序 都5又疋為中4 ’並且阻止優先順序上or X, X, X指令的效 應。若外部中斷請求在動作,而且若對應線程的優先順序 是低的,則將線程的優先順序設為中等。 線程優先順序改變的事件是_ (1 )在L丨D快取記憶體失 誤上切換以載入實料;(2)在L1 D快取記憶體上切換以儲 存資料;(3 )在L1 I快取記憶體失誤上切換以糊取指令; 以及(4)若未使用的線程在準備狀態則切換。此外,外部 中斷啟始時會改變對應線程的優先順序。下表顯示導致線 程切換的某些情況的優先順序的效應。行3,4中的簡單
E:\aaa\55420. ptd 第43頁 40922? 五、發明說明¢39) ' ------- 料0表仏不使甩線程切換控制(TSC)暫存器410中所述的 情=始-線程導視為〇 〇 : 控制暫存器410的位元U當成該線程的那些位元的 定Ϊ導致亚線且程臭控制暫存器410中的其他位元用來 ^ 換的情況。行4中的片語「當線程το準備 女Γ ^ Γ + f線程το不再等待失誤即發生切換到線程TO, 出去。若失誤事件是線程切換暫,,則不能 線程。 斤綠転切換回來之W ,即完成低優先順序
E:\aaa\55420.ptd T0優先順序 ligi順序 一加丨丨_ · —=*-- το線程切換情況 γ - · - - - -- T1線程切換情況 p—— 高 TSC TSC F- 中等 tsc[o:2]視爲 〇 TSC或者若το準備好 I高 低 TSC[0:2]視爲 〇 TSC或者若το準備好 中等 高 *——__ TSC或者若T1準備好 TSC[0:2]視爲 〇 !中等 ---- —--- 中等 —-—_ TSC TSC 中等 低 '~____ TSC[0:2]視爲 〇 TSC莩者若το準備好 j低 (¾ --- TSC或者若T1準備好_ TSC[0:2]視爲 0 低 — 中等 TSC或者若T1準備好 TSC[0:2]視爲 0 !低 低 TSC TSC ' · ' ^ —.- 具 第44頁 409227 _案號87inm_g?年g月少曰」 修正不有斧._ 五、發明說明(41) 在此建議將不做生產性工作的線程設為低優先順序以避-免性能下降,即使間置迴路中的每一指令都會導致切換。」· 況且更重要的是若請求一外部中斷成為一線程設定為低優 , 先順序’則允許硬體改變線程優先順序。在此情況下提高 線程為中等優先順序,以允許更快的回應中斷。此允許一 外部事件上的線程等待設定其本身在低優先順序,它會雉 持在此直到通知有事件了。 雖然已用目前視為最實際且較佳的實施例來說明本發 明’該了解的是本發明並不僅限於上述賁施例’反之,意 欲在不偏離附屬申請專利範圍之精神與範圍下’涵蓋各種 : 修正及同等配置。 Ο 元件符號說明 10 電腦 資 料 處 理 系 統 100 中央 處 理 器 (CPU) 110 處理 器 核 心 120, 130, 15 0 快 取 記 憶 體 nsu 140 主記 憶 體 152 匯流 排 介 面 155 糸統 匯 流 排 16 0- 168 輸 入 輸 出 處 理 器(IOP) 170 直接 存 取 儲 存 裝 置 (DASD) 172 磁帶 機 174 遠地 通 訊 線 176 工作 站 178 印表 機
O:\55\55420.ptc 第45頁 2000. 08. 04.045
_i%9 ^17133 g?年义月r日 修A 五'發明說明(42) ( 200 儲存控制單元 - 2 0 5 匯流排 2 1 〇 轉換快取記憶體 2 2 0 指令單元 2 5 0 轉換查詢缓衝器(TLB) 2 6 0 分岔單元 2 7 0 固定點單元 272 —般目的暫存器(GPR) 2 74 許多特殊目的暫存器(SPR) 2 8 0 浮點單元 2 8 2 浮點暫存器(FPR) 2 9 0 外部中斷 320 L1目標 330 L2目標 3 5 0 排序器 3 6 0 多工器 3 7 0 第二多工器 4 0 0 線程切換邏輯 4 1 0 線程切換控制暫存器 420 向前進行計數暫存器 4 3 0 線程切換暫停暫存器 4 4 0 線程狀態暫存器 44 2 TO狀態暫存器 444 T1狀態暫存器 4 5 0 線程切換控制器
O:\55\55420.ptc 第45a頁 2000. 08. 04. 046 案数賴戊3 g彳年·?月 曰 五、發明說明(43) 4 6 0 軟體 470, 472, 474, 476, 478, 480, 482, 484, 486 線
I im ίϊΐκϊ
I O:\55\55420.ptc 第45b頁 2000.08. 04.047

Claims (1)

  1. 409227 申請專利範图 種電腦處理器,包含: 一(a)至少一多線處理器’俾於:夕 仃·,以及 "^夕指令線程之間切換執 (b)具眾多位元之至少一線〜 位元與眾多線程切換控制事往切換控制暫存器,各該等 2.如申請專利範圍第/項之件^—。獨特地結合。 之,與該位元結合之镇#+」 器 其中右啟始諸位元 處理器從眾多線程之一切^】奐控制事件使得至少一多線 3·如申請專利範圍第〗項之读眾多線程之另一者。 暫存器係可程式的。 理器,其中線程切換控制 4·如申請專利範圍第3項之 使線程切換控制暫存器中至少处理器,其中至少一指令能 5·.如申請專利範圍第2項之"〜位元無作用。 切換控制暫存器。 义理器’包含一個以上線程 6.如申請專利範圍第5項 制暫存器之諸位元值與另—兮理器’其中一線程切換控 元值不同。 μ線程切換控制暫存器之諸位 7-如申請專利範圍第1項之卢 控制事件包含—資料失誤,波=理器,其中眾多線程切換 料快取記憶體,一以資科快取下至少之-:-U實 器。 隐體’及一轉換查詢缓衝 8 ·如申請專利節園第Ί 护制;g # ~:& 員之處理器,其中眾多線程切換 也制事件包含-指令失誤,其來自以下至少之一 ·一旧 々快取記憶體,一轉換查詢緩衝器。
    第46頁 E:\aaa\55420. ptd 409227 '申請專利範圍 9 ‘如申請專利範圍第1項之處ί里器’其中眾多線程切換 控制事件包含資料之地址轉換中之錯誤與/或一指令。 I 〇.如申請專利範圍第1項之處理器’其中眾多線程切換 控制事件包含存取該處理器以外之I / 0裝置。 II ‘如申請專利範圍第1項之處理器,其中眾多線程切換 控制事件包含存取另一處理器。 i 2.如申請專利範圍第2項之處理器,其中眾多線程切換 =制事件包含—向前進行計數,即眾多線程之一在不執行 +多線程之一之指令下已從至少一多線處理器切換 次數。 ' & < =·如申請專利範圍第2項之處理器,其中眾多 控制事件包含—暫停時段。 刀换 、14· 一種電腦處理系統,包含: (=—多線處理器,其遇到眾多線程切換控制事件· 控制事件之—ί:ί:多啟始位元二各與眾多線程切換 記憶體失誤’ —^入:二,包含.一倉料儲存/載入快取 轉換失誤,存取取記憶體失誤’ -資料/指令地址 停時段,-鬥棱器’存取:外部1/0裝置,-暫 換; …—指令執行下不超過數個線程切 其中多線處 遇到之線程切 結合之啟始仅 程切換控制事件之一,而且若 啟始位元之一結合以及若啟始 理器會線程切換。 理器遇到諸線 換控制事件與 元,則多線處
    409227 六、申請專利範圍 ~ 1 5,一種電腦處理系統,包含: (a )裝置,用以處理眾多指令線程; (b)裝置,用以指示處理裝置何時因為眾多線程之—遇 到一處理器等待時間事件而停止; (c )裝置’用以暫存眾多線程切換控制事件;以及 (d)裝置,用以判定處理器等待時間事件是否係 裎切換控制事件之一。 文深 請專利範圍第15項之電腦處理系統,更包含: 事:):呈,若處理器等待時間事件係眾多線程切換控制 ::? -,則用以使處理褒置能切換處理至眾多線程之另 以判定-線程切換控制暫存器内容之方法,包含 (a) 計算第—數個處理器 器因處理器等待時間事件而佟止之數目,其中一多線處理 (b) 計算第二數個處理器周如’ 切換第一指令線程至第_ :之數目,其係多線處理器 (c) 若第—數目大於弟第-4令線程之處理所必須者; 器中藉由設定一啟始位元以目,則在線程切換控制暫存 線程切換控制事件。 '艮處理器·#待時間事件為— 1 8 .如申請專利範圍第1 7項之 s以下步驟: (d) 若啟始位元啟始,當多線^ 更包含: 事件時’即輸出—信號至線 益遇到線程切換控制 1 9. 一種電腦處理方法,句換
    E:\aaa\55420.ptd 409221 六、申請專利範圍 (=儲存—線程狀態在一線程狀態暫存器中; 器中儲存小多線程切換控制事件在一線程切換控制暫存 ii) I #線程改變狀態時,以信號通知線程狀態暫存器; =)比較線程之改變狀態與眾多線程切換控制事件。 20·=申請專利範圍第19項之方法,更包含: 啼右改鰱之狀態導因於一線程切換控制事件,則以信 说通知一多線處理器俾從線程切換執行。 21.—種電腦系統,包含: ' )夕線處理器,當多線處理器遇到眾多處理器等待 時間事件之一時,能在至少兩個指令線程之間切換處理; 雜~線程狀態暫存訪操作時接至多線處理器以 ,存諸心令線程之一狀態’其中各指令線程之狀態在處理 器切換處理至各線程時會改變; (〇至少一線程狀態控制暫存器,操作時接至至少一線 程,態暫存器及接至多線處理器,以儲存眾多線程切換控 制事件,其藉由設定對應之眾多啟始位元而啟始諸線程切 換控制事件; (d)眾多内部連線連接多線處理器至眾多記憶體元件, 其中多線處理器存取眾多記憶體元件之任一者會導致一 理器等待時間事件; 曰 其中當多線處理器中執行之諸線程之一因為諸處理器等 待時間事件之一而不能持續執行時,及當該處理器等待時 間事件係—線程切換控制事件時,以及當設定對應啟始位
    E:\aaa\55420. ptd 第49頁 409227 六'申請專利範園 兀日^,多線處理器即切換執行至諸線程之另一者。 外邙、Λ申請專利範圍第21項之電腦系統’更包含至少一 小一 ,連接多線處理器至至少一外部記憶體裝置,至 ί =部通訊裝置,一外部電腦網路,或至少—輪入/輸 其中多線處理器存取諸裝置之任一者或網路會 欢私夕慝理器等待時間事件之一。 ▼ ' 23. —種電腦處理器,包含: "(a)至少一多線處理器,俾於眾多指令線程之間切換執 彳丁,以及 (b)具眾多位元之至少一可程式線程切換控制暫存器, 各該等位元與眾多線程切換控制事件之—獨特地結合,其 中若啟始諸位元之一,與該位元結合之線程切換控制事^ 使得至少一多線處理器從眾多線程之一切換至該眾多線程 之另一者,而且其中眾多線程切換控制事件包含:—次= 失誤,其來自以下至少之一:一L1資料快取記憶體, 資料快取記憶體,及一轉換查詢緩衝器;一指令,兑 以下至少之一:一U指令快取記憶體’ 一轉換查詢緩 ;資料之地址轉換中之錯誤與/或一指令;存取該處理~ @ 以外之I/O裝置;存取另一處理器;—向前進行計數,即 眾多線程之該一在不執行眾多線程之—之指令下已 一多線處理器切換出去之次數;以及—暫停時段。 ^
    E:\aaa\55420.ptd 苐50頁
TW087117133A 1997-10-23 1998-10-15 Method and apparatus for selecting thread switch events in a multithreaded processor TW409227B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/958,716 US6697935B1 (en) 1997-10-23 1997-10-23 Method and apparatus for selecting thread switch events in a multithreaded processor

Publications (1)

Publication Number Publication Date
TW409227B true TW409227B (en) 2000-10-21

Family

ID=25501230

Family Applications (1)

Application Number Title Priority Date Filing Date
TW087117133A TW409227B (en) 1997-10-23 1998-10-15 Method and apparatus for selecting thread switch events in a multithreaded processor

Country Status (11)

Country Link
US (1) US6697935B1 (zh)
EP (1) EP1029269B1 (zh)
JP (1) JP4006180B2 (zh)
KR (1) KR100403658B1 (zh)
CN (1) CN1112636C (zh)
CA (1) CA2299348C (zh)
HU (1) HUP0100013A3 (zh)
IL (1) IL134823A (zh)
PL (1) PL193285B1 (zh)
TW (1) TW409227B (zh)
WO (1) WO1999021081A1 (zh)

Families Citing this family (161)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000010800A (ja) * 1998-06-19 2000-01-14 Toshiba Corp 計算機システムに於けるスレッド制御装置、及び同システムに於けるスレッド制御方法
US6952827B1 (en) * 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US7370325B1 (en) * 1999-02-19 2008-05-06 Lucent Technologies Inc. Eager evaluation of tasks in a workflow system
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6889319B1 (en) * 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US7925869B2 (en) 1999-12-22 2011-04-12 Ubicom, Inc. Instruction-level multithreading according to a predetermined fixed schedule in an embedded processor using zero-time context switching
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US6748556B1 (en) * 2000-08-15 2004-06-08 International Business Machines Corporation Changing the thread capacity of a multithreaded computer processor
US7681018B2 (en) * 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US7478394B1 (en) * 2001-06-04 2009-01-13 Hewlett-Packard Development Company, L.P. Context-corrupting context switching
US6944736B2 (en) * 2001-06-28 2005-09-13 Hewlett-Packard Development Company, L.P. Managing latencies in accessing memory of computer systems
JP3632635B2 (ja) * 2001-07-18 2005-03-23 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
US7159216B2 (en) * 2001-11-07 2007-01-02 International Business Machines Corporation Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system
US6892331B2 (en) * 2002-01-17 2005-05-10 International Business Machines Corporation Method and system for error detection in a managed application environment
DE60226176T2 (de) 2002-01-30 2009-05-14 Real Enterprise Solutions Development B.V. Verfahren und programme zur einstellung von prioritätsstufen in einem datenverarbeitungssystem mit multiprogrammierung und priorisierte warteschlangenbildung
JP2003271551A (ja) * 2002-03-18 2003-09-26 Fujitsu Ltd マイクロコンピュータ、バス制御回路およびマイクロコンピュータにおけるデータアクセス方法
US7523455B2 (en) * 2002-05-03 2009-04-21 Hewlett-Packard Development Company, L.P. Method and system for application managed context switching
US8024735B2 (en) * 2002-06-14 2011-09-20 Intel Corporation Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
US7096470B2 (en) * 2002-09-19 2006-08-22 International Business Machines Corporation Method and apparatus for implementing thread replacement for optimal performance in a two-tiered multithreading structure
US6971103B2 (en) * 2002-10-15 2005-11-29 Sandbridge Technologies, Inc. Inter-thread communications using shared interrupt register
JP3864250B2 (ja) * 2002-10-31 2006-12-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 排他制御装置、排他制御方法、プログラム、及び記録媒体
US20040128488A1 (en) * 2002-12-26 2004-07-01 Thimmannagari Chandra M. R. Strand switching algorithm to avoid strand starvation
US20040128476A1 (en) * 2002-12-26 2004-07-01 Robert Nuckolls Scheme to simplify instruction buffer logic supporting multiple strands
US7216346B2 (en) * 2002-12-31 2007-05-08 International Business Machines Corporation Method and apparatus for managing thread execution in a multithread application
US7822950B1 (en) 2003-01-22 2010-10-26 Ubicom, Inc. Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls
US7181741B2 (en) * 2003-01-30 2007-02-20 Hewlett-Packard Development Company, L.P. Apparatus and method to minimize blocking overhead in upcall based MxN threads
US7487502B2 (en) * 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
US7013400B2 (en) * 2003-04-24 2006-03-14 International Business Machines Corporation Method for managing power in a simultaneous multithread processor by loading instructions into pipeline circuit during select times based on clock signal frequency and selected power mode
US20040268093A1 (en) * 2003-06-26 2004-12-30 Samra Nicholas G Cross-thread register sharing technique
US7130986B2 (en) * 2003-06-30 2006-10-31 Intel Corporation Determining if a register is ready to exchange data with a processing element
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7376954B2 (en) * 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
US7870553B2 (en) * 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US20050050305A1 (en) * 2003-08-28 2005-03-03 Kissell Kevin D. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US9032404B2 (en) * 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7418585B2 (en) * 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7836450B2 (en) * 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7594089B2 (en) * 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US7711931B2 (en) * 2003-08-28 2010-05-04 Mips Technologies, Inc. Synchronized storage providing multiple synchronization semantics
US7321965B2 (en) * 2003-08-28 2008-01-22 Mips Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US20050060517A1 (en) * 2003-09-12 2005-03-17 Morrow Michael W. Switching processor threads during long latencies
CN100340976C (zh) * 2003-10-10 2007-10-03 华为技术有限公司 一种实现计算机多线程控制的方法及装置
US7631307B2 (en) * 2003-12-05 2009-12-08 Intel Corporation User-programmable low-overhead multithreading
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
US7617499B2 (en) * 2003-12-18 2009-11-10 International Business Machines Corporation Context switch instruction prefetching in multithreaded computer
US7669203B2 (en) * 2003-12-19 2010-02-23 Intel Corporation Virtual multithreading translation mechanism including retrofit capability
US8694976B2 (en) * 2003-12-19 2014-04-08 Intel Corporation Sleep state mechanism for virtual multithreading
JP4502650B2 (ja) * 2004-02-03 2010-07-14 日本電気株式会社 アレイ型プロセッサ
JP4728581B2 (ja) * 2004-02-03 2011-07-20 日本電気株式会社 アレイ型プロセッサ
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
JP4327008B2 (ja) 2004-04-21 2009-09-09 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US20050246461A1 (en) * 2004-04-29 2005-11-03 International Business Machines Corporation Scheduling threads in a multi-processor computer
US7216223B2 (en) 2004-04-30 2007-05-08 Hewlett-Packard Development Company, L.P. Configuring multi-thread status
US7774393B1 (en) 2004-06-30 2010-08-10 Oracle America, Inc. Apparatus and method for integer to floating-point format conversion
US7478225B1 (en) 2004-06-30 2009-01-13 Sun Microsystems, Inc. Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor
US7383403B1 (en) 2004-06-30 2008-06-03 Sun Microsystems, Inc. Concurrent bypass to instruction buffers in a fine grain multithreaded processor
US7373489B1 (en) 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
US7437538B1 (en) 2004-06-30 2008-10-14 Sun Microsystems, Inc. Apparatus and method for reducing execution latency of floating point operations having special case operands
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
US7434000B1 (en) 2004-06-30 2008-10-07 Sun Microsystems, Inc. Handling duplicate cache misses in a multithreaded/multi-core processor
US7523330B2 (en) * 2004-06-30 2009-04-21 Sun Microsystems, Inc. Thread-based clock enabling in a multi-threaded processor
US7426630B1 (en) 2004-06-30 2008-09-16 Sun Microsystems, Inc. Arbitration of window swap operations
US7343474B1 (en) 2004-06-30 2008-03-11 Sun Microsystems, Inc. Minimal address state in a fine grain multithreaded processor
US7676655B2 (en) * 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore processor
US7861063B1 (en) 2004-06-30 2010-12-28 Oracle America, Inc. Delay slot handling in a processor
US7747771B1 (en) 2004-06-30 2010-06-29 Oracle America, Inc. Register access protocol in a multihreaded multi-core processor
US7533248B1 (en) * 2004-06-30 2009-05-12 Sun Microsystems, Inc. Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor
US7370243B1 (en) 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore processor
US7702887B1 (en) 2004-06-30 2010-04-20 Sun Microsystems, Inc. Performance instrumentation in a fine grain multithreaded multicore processor
US8095778B1 (en) 2004-06-30 2012-01-10 Open Computing Trust I & II Method and system for sharing functional units of a multithreaded processor
US7185178B1 (en) 2004-06-30 2007-02-27 Sun Microsystems, Inc. Fetch speculation in a multithreaded processor
US7353364B1 (en) 2004-06-30 2008-04-01 Sun Microsystems, Inc. Apparatus and method for sharing a functional unit execution resource among a plurality of functional units
US7216216B1 (en) 2004-06-30 2007-05-08 Sun Microsystems, Inc. Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window
US7178005B1 (en) 2004-06-30 2007-02-13 Sun Microsystems, Inc. Efficient implementation of timers in a multithreaded processor
US8225034B1 (en) 2004-06-30 2012-07-17 Oracle America, Inc. Hybrid instruction buffer
US7941642B1 (en) 2004-06-30 2011-05-10 Oracle America, Inc. Method for selecting between divide instructions associated with respective threads in a multi-threaded processor
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US7890734B2 (en) 2004-06-30 2011-02-15 Open Computing Trust I & II Mechanism for selecting instructions for execution in a multithreaded processor
JP4956891B2 (ja) * 2004-07-26 2012-06-20 富士通株式会社 演算処理装置,情報処理装置および演算処理装置の制御方法
US7487503B2 (en) 2004-08-12 2009-02-03 International Business Machines Corporation Scheduling threads in a multiprocessor computer
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US7634774B2 (en) * 2004-09-13 2009-12-15 Integrated Device Technology, Inc. System and method of scheduling computing threads
US7827555B2 (en) * 2004-09-13 2010-11-02 Integrated Device Technology, Inc. Scheduler for a multiprocessing computing system
US8042116B2 (en) * 2004-09-17 2011-10-18 Panasonic Corporation Task switching based on the execution control information held in register groups
US7188346B2 (en) * 2004-11-29 2007-03-06 International Business Machines Corporation Method, system and program product for correlating data between operating environments
US8037250B1 (en) 2004-12-09 2011-10-11 Oracle America, Inc. Arbitrating cache misses in a multithreaded/multi-core processor
DE102004059972B4 (de) * 2004-12-13 2010-07-01 Infineon Technologies Ag Thread-Scheduling-Verfahren, und Thread-List-Scheduler-Vorrichtung
JP4609070B2 (ja) * 2004-12-28 2011-01-12 沖電気工業株式会社 マルチ呼処理スレッド処理方法
US7921365B2 (en) * 2005-02-15 2011-04-05 Microsoft Corporation System and method for browsing tabbed-heterogeneous windows
US20060206902A1 (en) * 2005-03-14 2006-09-14 Sujat Jamil Variable interleaved multithreaded processor method and system
US8195922B2 (en) 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
US7917907B2 (en) * 2005-03-23 2011-03-29 Qualcomm Incorporated Method and system for variable thread allocation and switching in a multithreaded processor
US7823158B2 (en) * 2005-08-18 2010-10-26 International Business Machines Corporation Adaptive scheduling and management of work processing in a target context in resource contention
US7617380B2 (en) * 2005-08-25 2009-11-10 Broadcom Corporation System and method for synchronizing translation lookaside buffer access in a multithread processor
US7631125B2 (en) * 2005-09-30 2009-12-08 Intel Corporation Dynamically migrating channels
US20070079294A1 (en) * 2005-09-30 2007-04-05 Robert Knight Profiling using a user-level control mechanism
US20070088680A1 (en) * 2005-10-14 2007-04-19 Microsoft Corporation Simultaneously spawning multiple searches across multiple providers
US8079031B2 (en) * 2005-10-21 2011-12-13 Intel Corporation Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric
US7870307B2 (en) * 2006-01-30 2011-01-11 Sony Computer Entertainment Inc. DMA and graphics interface emulation
US20080177979A1 (en) * 2006-03-01 2008-07-24 Gheorghe Stefan Hardware multi-core processor optimized for object oriented computing
US20070226454A1 (en) * 2006-03-01 2007-09-27 Marius Stoian Highly scalable MIMD machine for java and .net processing
US7437539B2 (en) 2006-04-14 2008-10-14 International Business Machines Corporation Issue unit for placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline
US7434033B2 (en) 2006-04-14 2008-10-07 International Business Machines Corporation Placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline
US8001549B2 (en) * 2006-04-27 2011-08-16 Panasonic Corporation Multithreaded computer system and multithread execution control method
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
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
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
US8484516B2 (en) * 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
US7926035B2 (en) * 2007-04-24 2011-04-12 Microsoft Corporation Testing multi-thread software using prioritized context switch limits
US20080313652A1 (en) * 2007-06-15 2008-12-18 Microsoft Corporation Notifying user mode scheduler of blocking events
US8627030B2 (en) * 2007-11-07 2014-01-07 Intel Corporation Late lock acquire mechanism for hardware lock elision (HLE)
US7904623B2 (en) * 2007-11-21 2011-03-08 Microchip Technology Incorporated Ethernet controller
US7559061B1 (en) 2008-03-16 2009-07-07 International Business Machines Corporation Simultaneous multi-threading control monitor
US20100017583A1 (en) * 2008-07-15 2010-01-21 International Business Machines Corporation Call Stack Sampling for a Multi-Processor System
US9418005B2 (en) 2008-07-15 2016-08-16 International Business Machines Corporation Managing garbage collection in a data processing system
US8285973B2 (en) 2008-08-04 2012-10-09 International Business Machines Corporation Thread completion rate controlled scheduling
US8024719B2 (en) 2008-11-03 2011-09-20 Advanced Micro Devices, Inc. Bounded hash table sorting in a dynamic program profiling system
US20100115494A1 (en) * 2008-11-03 2010-05-06 Gorton Jr Richard C System for dynamic program profiling
US7873816B2 (en) * 2008-11-20 2011-01-18 International Business Machines Corporation Pre-loading context states by inactive hardware thread in advance of context switch
US8478948B2 (en) * 2008-12-04 2013-07-02 Oracle America, Inc. Method and system for efficient tracing and profiling of memory accesses during program execution
US8560814B2 (en) * 2010-05-04 2013-10-15 Oracle International Corporation Thread fairness on a multi-threaded processor with multi-cycle cryptographic operations
US9176783B2 (en) 2010-05-24 2015-11-03 International Business Machines Corporation Idle transitions sampling with execution context
US8843684B2 (en) 2010-06-11 2014-09-23 International Business Machines Corporation Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration
US8799872B2 (en) 2010-06-27 2014-08-05 International Business Machines Corporation Sampling with sample pacing
US8799904B2 (en) 2011-01-21 2014-08-05 International Business Machines Corporation Scalable system call stack sampling
KR102013582B1 (ko) 2012-09-07 2019-08-23 삼성전자 주식회사 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법
US9817693B2 (en) * 2014-03-14 2017-11-14 International Business Machines Corporation Coherence protocol augmentation to indicate transaction status
US9354883B2 (en) 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US9218185B2 (en) 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9983880B2 (en) * 2014-09-26 2018-05-29 Intel Corporation Method and apparatus for improved thread selection
US9348644B2 (en) * 2014-10-08 2016-05-24 International Business Machines Corporation Application-level dispatcher control of application-level pseudo threads and operating system threads
US9396018B2 (en) * 2014-10-10 2016-07-19 Salesforce.Com, Inc. Low latency architecture with directory service for integration of transactional data system with analytical data structures
US9600548B2 (en) 2014-10-10 2017-03-21 Salesforce.Com Row level security integration of analytical data store with cloud architecture
US9449188B2 (en) 2014-10-10 2016-09-20 Salesforce.Com, Inc. Integration user for analytical access to read only data stores generated from transactional systems
US10101889B2 (en) 2014-10-10 2018-10-16 Salesforce.Com, Inc. Dashboard builder with live data updating without exiting an edit mode
US10049141B2 (en) 2014-10-10 2018-08-14 salesforce.com,inc. Declarative specification of visualization queries, display formats and bindings
GB2537115B (en) * 2015-04-02 2021-08-25 Advanced Risc Mach Ltd Event monitoring in a multi-threaded data processing apparatus
JP6477216B2 (ja) 2015-05-08 2019-03-06 富士通株式会社 演算装置、スレッド切替方法、及びマルチスレッドプログラム
US10115213B2 (en) 2015-09-15 2018-10-30 Salesforce, Inc. Recursive cell-based hierarchy for data visualizations
US10089368B2 (en) 2015-09-18 2018-10-02 Salesforce, Inc. Systems and methods for making visual data representations actionable
US10706101B2 (en) 2016-04-14 2020-07-07 Advanced Micro Devices, Inc. Bucketized hash tables with remap entries
US10311047B2 (en) 2016-10-19 2019-06-04 Salesforce.Com, Inc. Streamlined creation and updating of OLAP analytic databases
US10437603B2 (en) * 2017-02-20 2019-10-08 Intensivate, Inc. Super-thread processor
KR101865332B1 (ko) 2017-03-27 2018-06-07 송성범 난방코일 일체형 가습기를 구비한 공기조화기
US10452586B2 (en) 2017-04-17 2019-10-22 Intel Corporation Avoid thread switching in cache management
US11068308B2 (en) * 2018-03-14 2021-07-20 Texas Instruments Incorporated Thread scheduling for multithreaded data processing environments
US11586443B2 (en) * 2020-10-20 2023-02-21 Micron Technology, Inc. Thread-based processor halting
CN112306657A (zh) * 2020-10-30 2021-02-02 上海二三四五网络科技有限公司 一种基于优先级排序实现多个事件的线性倒计时的控制方法及装置
CN112437074B (zh) * 2020-11-17 2022-11-22 北京金山云网络技术有限公司 计数处理方法、装置、电子设备及存储介质
CN112463723A (zh) * 2020-12-17 2021-03-09 王志平 一种微内核阵列的实现方法
US11755361B2 (en) 2021-10-15 2023-09-12 Nxp B.V. Freedom from interference for aggregated communication channel handling using event-based processor extensions
CN116627857B (zh) * 2023-05-25 2023-11-24 合芯科技有限公司 一种处理器核外缓存模型及模拟方法

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3373408A (en) 1965-04-16 1968-03-12 Rca Corp Computer capable of switching between programs without storage and retrieval of the contents of operation registers
US3566357A (en) 1966-07-05 1971-02-23 Rca Corp Multi-processor multi-programed computer system
DE1549531A1 (de) 1966-08-16 1971-04-01 Scient Data Systems Inc Digitale Rechenanlage
US3568173A (en) 1968-08-19 1971-03-02 Scient Data Systems Inc Memory stroage element drive circuit
US3771138A (en) 1971-08-31 1973-11-06 Ibm Apparatus and method for serializing instructions from two independent instruction streams
US3728692A (en) 1971-08-31 1973-04-17 Ibm Instruction selection in a two-program counter instruction unit
US3916383A (en) 1973-02-20 1975-10-28 Memorex Corp Multi-processor data processing system
FR2253428A5 (zh) 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
IT1000638B (it) 1973-12-28 1976-04-10 Olivetti & Co Spa Calcolatore elettronico con dispo sitivo di deviazione dei micropro grammi
US3980992A (en) 1974-11-26 1976-09-14 Burroughs Corporation Multi-microprocessing unit on a single semiconductor chip
US4047161A (en) * 1976-04-30 1977-09-06 International Business Machines Corporation Task management apparatus
US4229790A (en) 1978-10-16 1980-10-21 Denelcor, Inc. Concurrent task and instruction processor and method
US4320453A (en) 1978-11-02 1982-03-16 Digital House, Ltd. Dual sequencer microprocessor
FR2471631B1 (fr) 1979-12-11 1986-02-21 Cii Honeywell Bull Dispositif de synchronisation et d'affectation de processus entre plusieurs processeurs dans un systeme de traitement de l'information
US4384324A (en) 1980-05-06 1983-05-17 Burroughs Corporation Microprogrammed digital data processing system employing tasking at a microinstruction level
US4493020A (en) 1980-05-06 1985-01-08 Burroughs Corporation Microprogrammed digital data processor employing microinstruction tasking and dynamic register allocation
US4532587A (en) 1981-08-26 1985-07-30 Texas Instruments Incorporated Single chip processor connected to an external memory chip
US5694603A (en) * 1982-09-28 1997-12-02 Reiffin; Martin G. Computer memory product with preemptive multithreading software
US4724517A (en) 1982-11-26 1988-02-09 Inmos Limited Microcomputer with prefixing functions
GB8309770D0 (en) 1983-04-11 1983-05-18 Inmos Ltd Microcomputer
US5103394A (en) 1984-04-30 1992-04-07 Hewlett-Packard Company Software performance analyzer
US4829425A (en) 1986-10-21 1989-05-09 Intel Corporation Memory-based interagent communication mechanism
JPS63123218A (ja) 1986-11-12 1988-05-27 Nec Corp タイマ/カウンタ回路
US4853849A (en) 1986-12-17 1989-08-01 Intel Corporation Multi-tasking register set mapping system which changes a register set pointer block bit during access instruction
US5159686A (en) 1988-02-29 1992-10-27 Convex Computer Corporation Multi-processor computer system having process-independent communication register addressing
US5050070A (en) 1988-02-29 1991-09-17 Convex Computer Corporation Multi-processor computer system having self-allocating processors
US5148536A (en) 1988-07-25 1992-09-15 Digital Equipment Corporation Pipeline having an integral cache which processes cache misses and loads data in parallel
WO1990014629A2 (en) 1989-05-26 1990-11-29 Massachusetts Institute Of Technology Parallel multithreaded data processing system
US5353418A (en) 1989-05-26 1994-10-04 Massachusetts Institute Of Technology System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread
GB2234613B (en) 1989-08-03 1993-07-07 Sun Microsystems Inc Method and apparatus for switching context of state elements in a microprocessor
US5079725A (en) 1989-11-17 1992-01-07 Ibm Corporation Chip identification method for use with scan design systems and scan testing techniques
US5471593A (en) 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5197138A (en) 1989-12-26 1993-03-23 Digital Equipment Corporation Reporting delayed coprocessor exceptions to code threads having caused the exceptions by saving and restoring exception state during code thread switching
US5179702A (en) 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US5339415A (en) 1990-06-11 1994-08-16 Cray Research, Inc. Dual level scheduling of processes to multiple parallel regions of a multi-threaded program on a tightly coupled multiprocessor computer system
DE69129569T2 (de) 1990-09-05 1999-02-04 Philips Electronics Nv Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
EP0479390B1 (en) 1990-10-05 1999-01-07 Koninklijke Philips Electronics N.V. Processing device including a memory circuit and a group of functional units
JP2743608B2 (ja) 1991-03-27 1998-04-22 日本電気株式会社 共有レジスタ制御方式
US5430850A (en) 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US5530866A (en) 1991-07-30 1996-06-25 Tera Computer Company Register allocation methods having upward pass for determining and propagating variable usage information and downward pass for binding; both passes utilizing interference graphs via coloring
US5630128A (en) 1991-08-09 1997-05-13 International Business Machines Corporation Controlled scheduling of program threads in a multitasking operating system
US5247675A (en) 1991-08-09 1993-09-21 International Business Machines Corporation Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system
US5524250A (en) 1991-08-23 1996-06-04 Silicon Graphics, Inc. Central processing unit for processing a plurality of threads using dedicated general purpose registers and masque register for providing access to the registers
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
US5287508A (en) 1992-04-07 1994-02-15 Sun Microsystems, Inc. Method and apparatus for efficient scheduling in a multiprocessor system
US5553305A (en) 1992-04-14 1996-09-03 International Business Machines Corporation System for synchronizing execution by a processing element of threads within a process using a state indicator
JP3309425B2 (ja) 1992-05-22 2002-07-29 松下電器産業株式会社 キャッシュ制御装置
US5515538A (en) 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US5423008A (en) 1992-08-03 1995-06-06 Silicon Graphics, Inc. Apparatus and method for detecting the activities of a plurality of processors on a shared bus
DK0627100T3 (da) * 1992-12-23 2000-06-26 Ebauchesfabrik Eta Ag Laveffekt-multitaskkontroller
EP0605927B1 (en) 1992-12-29 1999-07-28 Koninklijke Philips Electronics N.V. Improved very long instruction word processor architecture
EP0617361B1 (en) 1993-03-26 2001-11-28 Cabletron Systems, Inc. Scheduling method and apparatus for a communication network
WO1994027216A1 (en) 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
US5490272A (en) 1994-01-28 1996-02-06 International Business Machines Corporation Method and apparatus for creating multithreaded time slices in a multitasking operating system
US5613114A (en) 1994-04-15 1997-03-18 Apple Computer, Inc System and method for custom context switching
JPH096633A (ja) * 1995-06-07 1997-01-10 Internatl Business Mach Corp <Ibm> データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム
US5630136A (en) 1995-06-09 1997-05-13 Sun Microsystems, Inc. Method and apparatus for serializing access to multithreading unsafe resources
US5826081A (en) 1996-05-06 1998-10-20 Sun Microsystems, Inc. Real time thread dispatcher for multiprocessor applications
US5933627A (en) 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US5996058A (en) * 1996-08-19 1999-11-30 Samsung Electronics Company, Ltd. System and method for handling software interrupts with argument passing
US5867644A (en) * 1996-09-10 1999-02-02 Hewlett Packard Company System and method for on-chip debug support and performance monitoring in a microprocessor
US6088788A (en) * 1996-12-27 2000-07-11 International Business Machines Corporation Background completion of instruction and associated fetch request in a multithread processor
US5864701A (en) * 1997-02-14 1999-01-26 Integrated Device Technology, Inc. Apparatus and method for managing interrupt delay associated with mask flag transition
US5809450A (en) * 1997-11-26 1998-09-15 Digital Equipment Corporation Method for estimating statistics of properties of instructions processed by a processor pipeline
US6016542A (en) * 1997-12-31 2000-01-18 Intel Corporation Detecting long latency pipeline stalls for thread switching
US6341347B1 (en) 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
EP2234613A1 (en) * 2007-12-21 2010-10-06 Edward T. Wei P-menthawe-3-carboxylic acid esters to treat airways diseases

Also Published As

Publication number Publication date
EP1029269A1 (en) 2000-08-23
WO1999021081A1 (en) 1999-04-29
PL340095A1 (en) 2001-01-15
CN1112636C (zh) 2003-06-25
PL193285B1 (pl) 2007-01-31
KR100403658B1 (ko) 2003-10-30
IL134823A0 (en) 2001-05-20
JP4006180B2 (ja) 2007-11-14
HUP0100013A3 (en) 2004-03-29
EP1029269B1 (en) 2003-09-24
CN1276888A (zh) 2000-12-13
IL134823A (en) 2004-01-04
US6697935B1 (en) 2004-02-24
HUP0100013A2 (hu) 2001-05-28
JP2001521215A (ja) 2001-11-06
KR20010031167A (ko) 2001-04-16
CA2299348C (en) 2004-10-19
CA2299348A1 (en) 1999-04-29

Similar Documents

Publication Publication Date Title
TW409227B (en) Method and apparatus for selecting thread switch events in a multithreaded processor
TW432327B (en) Altering thread priorities in a multithreaded processor
TW413787B (en) An apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
TW502173B (en) Method and apparatus to force a thread switch in a multithreaded processor
JP3595504B2 (ja) マルチスレッド式プロセッサにおけるコンピュータ処理方法
US6018759A (en) Thread switch tuning tool for optimal performance in a computer processor
EP0747816B1 (en) Method and system for high performance multithread operation in a data processing system
US9244724B2 (en) Management of transactional memory access requests by a cache memory
US8635621B2 (en) Method and apparatus to implement software to hardware thread priority
CN110659115A (zh) 具有硬件辅助任务调度的多线程处理器核
WO2001084304A2 (en) Active address content addressable memory
JP2005521937A (ja) コンピュータオペレーティングシステムにおけるコンテキスト切り替え方法及び装置
KR100190377B1 (ko) 마이크로 프로세서의 버스 인터페이스 유닛
Trickett et al. Understanding IBM pSeries Performance and Sizing
CZ20001437A3 (cs) Způsob a zařízení pro výběr událostí přepínání vláken ve vícevláknovém procesoru

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent
MK4A Expiration of patent term of an invention patent