TW432327B - Altering thread priorities in a multithreaded processor - Google Patents

Altering thread priorities in a multithreaded processor Download PDF

Info

Publication number
TW432327B
TW432327B TW087117329A TW87117329A TW432327B TW 432327 B TW432327 B TW 432327B TW 087117329 A TW087117329 A TW 087117329A TW 87117329 A TW87117329 A TW 87117329A TW 432327 B TW432327 B TW 432327B
Authority
TW
Taiwan
Prior art keywords
thread
threads
priority
instruction
switching
Prior art date
Application number
TW087117329A
Other languages
English (en)
Inventor
John Michael Borkenhagen
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 TW432327B publication Critical patent/TW432327B/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/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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

43 23 27 __棄號87117329 士f 年丨/月/夂3 修正_ 五、發明說明(1) 前案說明 本發明有關於以下美國專利申請案’其發明主題在此併 供參考:(1)美國專利申請案名稱「Thread Switch Events in a Mu 1 tithreaded Processor」,R099 7-104,其與本案同時申請;(2)美國專利申請案名稱「An Apparatus and Method to Guarantee Forward Progress i n a M u 11 i t h r e a d e d P r o c e s s o r」,R 0 9 9 7 - 1 0 5,其與本 案同時申請;(3)美國專利申請案名稱「Thread Switch Control in a Multithreaded Processor System」, R0996-042,其與本案同時申請:(4)美國專利申請案名稱 「Method and Apparatus to Force a Thread Switch in a Multithreaded Processor」 ’RO997-107 ,其與本案同 時申請;(5)美國專利申請案號7 73, 5 72,申請a 1 9 96/ 1 2 / 27,名稱 rBackground Comp 1etion 〇f Instruction and Associated Fetch Request in a Mu 1t i thread Processor」 ;(6)美國專利申請案號761,378,申請曰 1996/12/09 ,名稱 rMulti-Entry Fully Associative Transition Cache」;(7)美國專利申請案號7 61, 380,申 請日1996/12/09 ,名稱「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)美國專利申請案號473,692,申請日1995/06/07,名稱 「Method and System for Enhanced Multithread
O:\55\554l5.ptc 第6頁 _案號87117329 年^ 月〖<曰__ 五、發明說明(2)
Operation in a Data Processing System by Reducing Memory Access Latency Delays」;以及(10)美國專利申 請案號6 7 5,3 1 5,申請日1 9 9 6 / 0 7 / 0 3,名稱 「Multithreaded Storage Cell 」。 發明背景 本發明大致有關於電腦資料處理系統的改良方法及裝置 ,尤其有關於一種實施於處理器硬體中的改良式高性能多 線電腦資料處理系統及方法。 現代電腦的基本結構包括周邊裝置以便與外界互通資訊 ;這些周邊裝置如鍵盤,螢幕,磁帶機,與網路連接的通 訊線等。電腦基本結構中也包括接收,處理,以及與外界 互通資訊所需的硬體,包括匯流排,記憶體單元,輸入/ 輸出(I/O)控制器,儲存裝置,及至少一中央處理器(CPU) 等。C P U是系統的頭腦,它執行的指令包括電腦程式並指 引其他系統元件的搡作。 由電腦硬體的觀點來看,多數系統基本上是以相同的方 式操作。處理器事實上很快的執行極簡單的運算如算術, 邏輯比較,以及從一位置移動資料到另一位置。指引電腦 執行這些簡單運算的大多數的程式傳達電腦正在做很複雜 困難的事的印象。然而使用者感受到電腦系統的新穎或改 良功能,事實上是執行相同簡單運算的機器,只是速度很 快。因此電腦系統的持續改良要求這些系統執行的更快。 電腦系統整體速度的一種測量(也稱為處理量),是測量 每單位時間執行的運算數目。概念上,系統速度的所有可 能改良的最簡單者是增加各元件的時脈速度,尤其是處理
O:\55\554i5.ptc 第7頁 43 23 27 案號87丨17329 ^ 年// η ! 修正 五、發明說明(3) 器的時脈速度。所以若每一元件以二倍快的速度執行而它 者以完全相同的方式執行,則系統會以一半時間來執行一 已知工作。電腦處理器是從不同元件建構,多年前由於尺 寸的減少及元件數目的減少而使執行速度大幅增加;最後 將整個處理器封裝在單晶片上的積體電路。該減縮尺寸使 得增加處理器時脈速度變的可能,並因此增加系統速度。 儘管積體電路使得速度得到大幅改善,但是仍存在更快 電腦系統的需求。硬體設計者已能藉由更大的整合,進一 步減少電路大小,及其他技術而得到速度的進一步改善。 然而設計者認為實體尺寸的減少不能無止盡的持續下去, 而且持續增加處理器時脈速度會受到限制。因此重心已轉 至它種方式以進一步改善電腦系統的整體速度。 在不改變時脈速度下,使用多個處理器仍可能改善系統 速度。在積體電路晶片上封裝的各處理器的最一般化的成 本即可作到。藉由將CPU的負載分給從屬處理器即可由從 屬處理器的使用而大幅改善系統速度。例如從屬處理器會 定時執行重覆性及單一特殊目的之程式,如輸入/輸出裝 置的通訊及控制。也可能將多個CP U置於單一電腦系統中 ,一般是大型主機式系統其可同時服務多重使用者。不同 CPU中的每一者能替一不同使用者分開執行一不同的工作 ,因此增加系統的總速度以同時執行多個工作。然而更難 的是改善單一工作的速度,如應用程式的執行。在許多 CPU中協調各功能結果的執行及傳送是一件難處理的事。 對於從屬ί/O處理器而言它並非如此困難,因為功能是預 設的而且限制為供多個執行一般目的應用程式的C P U使
O:\55\554l5.ptc 第8頁 _案號87117329 Θ年/月日 修正_ 五、發明說明(4) 用,更難的是協調功能,部分是因為系統設計者無法預先 已知為程式的詳細内容。多數應用程式遵守處理器執行的 單一路徑或流程步驟。雖然有時可能將此單一路徑分成多 個平行路徑,但是可以如此作的通用程式仍在研究中。通 常將過長的工作分成較小的工作以便由多個處理器平行處 理,是由軟體工程師以將其當成個別案件的方式撰寫碼而 完成的。這種特別方式對於執行商業上的交易而言會產生 一些特別問題,因為商業上的交易不一定是重覆或者可預 測的。 因此雖然多重處理器可改善總系統性能,但仍有許多改 善各CPU速度的理由。若CPU時脈速度是已知的,藉由增加 每時脈周期執行的平均運算數目,即可能再增加CPU的速 度即每秒執行的運算數目。高性能單晶片微處理器的共同 架構是精減指令集電腦(R I S C)架構,其特徵為設置少數簡 化的常用指令集棋袂速執行上述可快速執行的簡單運算。 隨著半導體技術的進步,R I SC架構的目標是開發出處理器 其在各機器時脈周期上能執行一或多個指令。另一種增加 每時脈周期執行的平均運算數目之方法係修正CPU中的硬 體。此處理量測量(即每指令的時脈周期)共同用以顯示高 性能處理器的架構特徵。指令管線及快取記憶體記憶體是 使得這種目標得以完成的電腦架構特徵。管線指令執行允 許後續指令在先前發出的指令已完成之前即開始執行。快 取記憶體儲存常用的及較接近處理器的其他資料,其可允 許指令在多數情況於不等待主記憶體的整個存取時間之下 持續執行。關於用預測硬體以多個執行單元來找出平行執
O:\55\55415.ptc 第9頁 432327 _案號 87117329 曰 修正 五、發明說明(5) 行的指令,已顯示出一些改善。 習知R I S C處理器的性能可以在超純量電腦及極長指令字 (V L I W )電腦中進一步增加,二種電腦皆可在每處理器周期 平行的執行一個以上的指令。在這些架構,設置多個功能 或執行單元來平行執行多個管線。在超純量架構中,指令 可以循序或隨意完成。循序完成表示在先前送出的所有指 令已完成之前,沒有指令能完成。隨意完成表示在先前送 出的所有指令已完成之前即允許完成一指令,只要滿足預 定的規則。 至於在超純量系統中的循序及隨意執行,在一些環境中 ,管線仍會中止(stall)。一指令,其依先前派出的指令 尚未完成的結果而定,會使得管線中止。例如依載入/儲 存指令的指令其中必要的資料不在快取記憶體中,即快取 記憶體失誤(m i s s ),則不能執行直到資料可以在快取記憶 體中使用。維持必要的資料在袂取記憶體中是持續執行所 必須的,以保有高命中比,即請求資料的數目&資料已存 在於快取記憶體中的次數之比,這對於需要大量"資料結構 的計算而言特別重要。一快取記憶體失誤能導致管線中止 數個周期,而且若多數時間不能使用資料,則記憶體的總 等待時間會更嚴重。雖然主記憶體用的記憶體裝置已愈來 愈快,但是這些記憶體晶片與高端處理器之間的速度差異 變的更大。因此目前高端處理器設計中有大量的執行時間 花在等待快取記憶體失誤的結果,而這些記憶體存取延遲 使用處理器執行時間的比例愈來愈大。 改善C P U中硬體效率的另一種方法是將一處理工作分成
O:\55\55415.ptc 第10頁 案號 87117329 曰 修正 五、發明說明(6) 數個稱為線程(t h r e a d)的獨立執行指令序列。此方法與一 大型工作分成數個小工作有關,用以由不同的處理器獨立 的執行,除了本文所述的線程是由同一處理器執行之外。 當一 C P U因為任何一種理由不能持續處理或執行這些線程 之一時,CPU即切換到另一線程並執行它。這是本文所述 的本發明主題,其設置有硬體多線(hardware mu ltithre a d i n g )以容許記憶體等待時間(丨a t e n c y )。電腦架構中定 義的名詞多線與軟體使用的該名詞並不相同,後者表示將 一工作分成許多相關的線程。在架構定義t,各線程是獨 立的。因此硬體多線常用以區分該名詞的這二種使用方 式。本發明用名詞多線表示硬體多線。 當偵測出目前線程中有管線中止的情況時,多線即允許 處理器的管線在不同線程上作有用的工作。當偵測出目前 線程中有管線中止的情況時,多線也允許處理器實施非管 線架構以便在另一線程上作有用的工作。有二種基本多線 形式。習用形式是在處理器中維持Ν個線程或狀態,並且 以一周期接著一周期的方式將各線程交錯。因為單一線程 中的指令是分開的,所以所有的管線相關性都不必要。另 一種多線形式(即本發明所考慮者)是在某一長等待時間事 件上將各線程交錯。 習用的多線形式需要複製各線程的處理器暫存器,例如 實施一架構的處理器,其以PowerPCTM為商品名稱來銷售以 執行多線,處理器必須維持N個狀態以執行N個線程。因此 以下各元件要複製N次:一般目的暫存器,浮點暫存器, 情況暫存器,浮點狀態及控制暫存器*計數暫存器,鏈暫
O:\55\55415.ptc 第11頁 ^3^327 . _案號 87117329 W 年((月 # 曰_ί^:_ 五、發明說明(7) 存器,例外暫存器,儲存/再儲存暫存器,及特殊目的暫 存器。此外,特殊緩衝器如區段查詢缓衝器,可以複製或 者各資料可以用線程號碼作標記,而且若非,則必須在每 一線程切換時執行。而且,一些分岔預測機制如相關連暫 存器及返回堆疊也應該複製。幸運的是,不必複製處理器 的部分較大功能如:層一指令快取記憶體(L i I快取記憶 體),層一資料快取記憶體(L 1 D快取記憶體),指令缓衝 器,儲存排序器,指令發送器,功能或執行單元,管線, 轉換查詢緩衝器(T L B ),及分岔記錄表。當一線程遇到延 遲時,處理器會快速的切換到另一線程,此線程的執行與 第一線程上的記憶體延遲重疊。 現存的多線方法敘述一快取記憶體失誤上或一記憶體參 考上的線程切換。此方法的主要例子可參考"S p a r c 1 e : A η Evolutionary Design for Large-Scale Multiprocessors, " by Agarwal e t a 1. , IEEE Micro Volume 13, No. 3, pp. 48-60, June 1993 。如RISC 架構 中所應用的,多個暫存器集一般用以支援功能呼叫,是修 正過以維持多個線程。修正8個重疊暫存器窗以成為4個不 重疊的暫存器集,其中各暫存器集保留作為陷阱(trap)及 訊息處理。此系統揭示一線程切換其發生在各個第一層快 取記憶體失誤上以導致一遠地記憶體請求。雖然此系統表 示一種技術上的進步,但是現代處理器設計時常利用多層 快取記憶體或高速記憶體,其與處理器連接。處理器系統 利用某一習知演算法以決定其主記憶體儲存區的那一部分 會載入快取記憶體的各層中,因此每當一記憶體參考發生
O:\55\554l5.ptc 第12頁 4 3 23 27 _案號87117329 0年//月日 修正_ 五、發明說明(8) 時(其不在快取記憶體的第一層),處理器必須嘗試從快取 記憶體的第二或更高層得到該記憶體參考。 因此應該很明顯的,需要一種改良式資料處理系統,其 能減少因多層快取記憶體系統中的記憶體等待時間而導致 的延遲,該系統配合多線資料處理系統而使用。 發明概述 本發明之目的是提供一種改良式資料處理系統及方法, 用於處理器硬體中實施的多線處理。藉由一多線處理器可 達成此目的,該處理器能在2個指令線程之間切換執行, 及實施在硬體暫存器中具額外軟體的線程切換邏輯,其可 克服線程切換情況。線程切換邏輯的附加優點是各指令線 程的處理允許處理器在各線程中的使用達到最佳。 本發明的另一目的是藉由允許處理器執行第二指令線程 而改善多線電腦處理,藉以增加處理器利用,否則其會閒 置,因為其從各記憶體元件如快取記憶體,記憶體,外部 I / 0,第一線程之直接存取儲存裝置等擷取必要的資料與/ 或指令。 本發明的額外目的是提供一種多線資料處理系統及方法 ,其執行條件線程切換,其中線程切換之條件可以根據線 程而不同,或者可以在處理期間藉由使用軟體線程控制管 理器而改變。 本發明之又一目的是當一第一線程具有一等待時間事件 如快取記憶體失誤時,允許一第二線程之處理,該失誤需 要許多周期來完成,在此時間第二線程在同一快取記憶體 階層遇到一快取記憶體失誤,其可以極少時間完成。
O:\55\55415.ptc 第13頁 ,。了 87117329 W 年"月日__ .........J ~ 五、發明說明(9) 本發明之又一目的是防止猛移(thrashing)執行,其中 各線程在不執行任何指令下鎖在諸線程切換之重覆周期 中。本發明提供一種向前進行計數暫存器及方法,在處理 器停止線程切換後,其允許稱為向前進行門檻之可程式極 大線程切換次數 ,直到一線程能執行。向前進行暫存器及其門檻監控線程 切換次數,其已在不執行一指令下發生,以及當該次數等 於不再發生線程切換之門檻,直到執行一指令。向前進行 計數暫存器的附加優點是能特別規劃某些等待時間事件的 暫存器及門檻,如一極長等待時間事件的門檻值,該事件 如存取外部電腦網路;以及較短等待時間事件如快取記憶 體失誤的另一向前進行門檻。 本發明之又一目的是防止一線程上之電腦處理停止時間 過久。達成此目的之本發明之特徵是等待一線程切換暫停 暫存器中指定的周期數之後,強制一線程切換。此特徵的 附加優點是電腦處理系統不會遇到因為共用資源競爭而導 致的閒置。可達成線程之間分配處理器周期的公平,而外 部中斷的極大回應等待時間及處理器以外的其他事件則受 到限制。 本發明之又一目的是提供快速線程切換情況。由硬體暫 存器來達成此目的,其儲存線程狀態,線程優先順序,及 線程切換情況。 本發明之又一目的是提供修正線程切換硬體暫存器的結 果之彈性。改變處理器中一或多個線程的優先順序即可達 成此目的。可使用中斷請求的信號或一軟體指令來修正狀
O:\55\55415.ptc 第14頁 _案號87117329 幻年〆月,乂日_ifi_ 五、發明說明(10) 態暫存器中的位元以指示各線程的優先順序15接著依各線 程的優先順序而定,可發生一線程切換以允許一較高優先 順序線程具有更多的處理周期。改變優先順序的優點可允 許改變線程切換的頻率,增加一臨界工作的執行周期,及 減少高優先順序線程因為線程切換事件而損失的處理周期 數目。 藉由提供一種在一資料處理系統中用以執行多線運!之 方法,其藉由在接至至少一記憶體單元之多線處理器中執 行眾多指令線程之至少一者,各具有一優先順序,並改變 眾多線程中一或多個的優先順序即可達成這些及其他相關 目的。根據所有線程的優先順序,多處理器能從一線程切 換至另一線程。藉由來自一中斷的信號或藉由稱為線程切 換管理器的硬體及軟體配置即可改變優先順序。 線程的優先順序表示一線程能具有比另一者更高的優先 順序,但是線程也可具有相同的優先順序。顯示一種優先 順序設計,其中各線程能具有三個優先順序之一。當一第 二線程在準備狀態時,即發生從較低優先順序的第一線程 切換。當高優先順序線程出現來自具有快速的回應時間之 一快取記憶體或其他記憶體單元階層之失誤時,較高優先 順序的一第一線程的切換即可中止。 簡言之,本發明是一種電腦處理之方法,根據處理器中 所有線程的相對優先順序而將處理器周期分配至一多線處 理器中眾多指令線程之每一者。 線程切換管理器是一種硬體及軟體配置,具有:至少一 優先順序切換指令,在一第一暫存器中之至少一線程切換
O:\55V55415.ptc 第15頁 4 3 23 27〆 _案號87117329 年"月日 修正_ 五、發明說明(11) 優先順序位元如一機器狀態暫存器與/或一線程切換控制 暫存器,及一第二暫存器中之數個優先順序狀態如一線程 狀態暫存器,其中優先順序切換指令能改變眾多優先順序 狀態位元的任一者。在具有一個線程以上的多線處理系統 中,線程執行稱為主動線程(cvc t i ν e t h r e a d )。優先順序 切換指令能改變對應於多線處理系統中的主動線程或任何 其他線程的優先順序狀態位元。接著若啟始一線程切換優 先順序位元,則多線處理器切換主動線程中的處理,以回 應主動線程或另一線程的優先順序改變。 為了使一現存處理器能再適應線程切換管理器,優先順 序切換指令不該改變一多線處理器之眾多設計暫存器之任 一者,而應該在無諸非法指令中斷(如可稱為no op指令的 優先順序切換指令)下,在一多線處理器上執行。 本發明也是一種電腦處理系統,包含:裝置,用以處理 眾多指令線程;裝置,用以儲存眾多線程之每一者之優先 順序狀態;裝置,用以改變眾多線程之每一者之優先順序 狀態並作回應,一裝置,用以使處理裝置從眾多線程之一 第一線程切換處理至第二線程。 由以下較佳實施例的詳細說明並配合附圖,即可明了本 發明的其他目標、功能及特徵;方法,操作,及結構的相 關元件的功能;元件的合併;及製造的經濟性,其皆形成 本說明書的一部分,其中相同的參考數字表示各圖中的對 應元件。 附圖之簡單說明 然而本發明本身以及較佳模式的使用,及其進一步目標
O:\55\55415.ptc 第16頁 432327 _案號 87117329 年y月广广 a__ 五、發明說明(12) 與優點,將可參考一繪示實施例的以下詳細說明並配合附 圖而明了 ,其中: 圖1的電腦系統方塊圖能實施本文所述的本發明。 圖2是根據本發明的多線資料處理系統的高階方塊圖。 圖3是圖2儲存控制單元的方塊圖。 圖4,其分為圖4 a及圖4b,可說明圖2的線程切換邏輯, 儲存控制單元及指令單元。 圖5說明一線程的狀態變化,其中線程遇到如圖4所示的 不同線程切換事件。 圖6是本發明向前進行計數的 元件符 流程 號說 圖。 明 10 電腦資料處理系統 100 中央處理器 110 處理器核心 120 快取記憶體 130 快取記憶體 140 主記憶體 ί 5 0 快取記憶體 152 區流排介面 155 系統匯流排 160 輸入/輸出處理器 162 輸入/輸出處理器 164 輸入/輸出處理器 166 輸入/輸出處理器 168 輸入/輸出處理器 170 直接存取儲存裝置 1 72 磁帶機 174 遠地通訊線 176 工作站 178 印表機 200 儲存控制單元 205 匯流排 210 轉換快取記憶體 220 指令單元 250 轉換查詢緩衝器 260 分岔單元 270 固定點單元 272 一般目的暫存器 274 特殊目的暫存器
O:\55\554i5.pic 第17頁 -^ 8^117329--年// μ ίΧ a_ 五、發明說明(13) 2 8 0 浮點單元 320 L1目標 3 5 0 排序器 3 7 0 第二多工器 410 線程切換控制暫存器 430 線私切換暫儲暫存写 4 4 2 T 0線程狀態暫存器 4 5 0 線程切換控制器 2 82 浮點暫存器 330 L2目標 3 6 0 多工器 4 0 0 線程切換邏輯 420 向前進行計數暫存器 440 線程狀態暫存器 4 44 T1線程狀態暫存器 較佳實施例之詳細說明 現在參考附圖尤其是參考圖1,其中顯示電腦資料處理 系統1 0的高階方塊圖,其可用以實施本發明的方法及系統 。圖1顯示能利用本發明的電腦資料處理系統1 〇的主要硬 體元件及連線。用以處理指令的中央處理器(CPU) 1〇〇接 至快取記憶體1 2 0 ’ 1 3 0,1 5 0。指令快取記憶體1 5 0儲存 C P U 1 0 0執行的指令。資料快取記憶體1 2 〇,1 3 0儲存c P U 1 0 0使用的資料。快取記憶體與主記憶體1 4 〇中的隨機存取 記憶體連接。CPU 100及主記憶體140也經由系統匯流排 155的匯流排介面152而連接。各輪入/輸出處理器(〖op) 160至168接至系統匯流排155並支援與各儲存及輸出 (I/O)裝置連接’該等裝置如直接存取儲 170,磁帶機172,遠地通訊線174,工你…严7严MSD)“ M 工作站1 7 6,及印表機 178等。該了解的是圖1僅用以形成—雷 1 电腦肓料處理车统10 的高階代表性元件,因此這些元件的赵a = 也理糸上1 變。 歎目及類型是可以改 在CPU 100中 處理器核心11 0包 含諸特殊功能單元,各
432327 _i號 修正 .,月一 曰 87117329^- 五、發明說明(14) 執行一些基本運算二 執行有關實數的遠# 間傳輸值。圖2說曰月 資料處理系統1 器 為PowerPCTM銷售的 604微處理器。 如以下所述,資抖 器,緩衝器,記憶# 如循序指令’執行有關整數的運算, ,在可定址儲存與邏輯暫存器陣列之 -處理器核心1 0 0 °在一較佳實施例中 _ 皋單一積體電路,管線,超純量微處理 ,貢料慝理系統= 構來實施,該等架構如以商品名稱 接,其可用任何電^SC處理器,及IBM銷售的PowerPCT« 處理系統1 0最好包括各種單元。暫存 ,及其他最好是都由積體電路製成的 構件。。解::在附圖中’已將各資料路徑簡化,事實 上有許多不同且平行的資料路徑進出各元件。此外’已將 與本發明無關的各元件的說明省略’但是要了解的是處理 器包含額外功能用的額外單元。資料處理系統1 〇能根據減 化指令集計算R I SC方法及其他計算方法來操作。 如圖2所示,資料處理系統1 0的處理器核心1 0 0最好包括 層一資料快取記憶體,L 1 D快取記憶體1 2 0,層二L2快取 記憶體1 3 0,主記憶體1 4 0,及層一指令快取記憶體L1 I快 取記憶體1 5 0,其皆可利用各匯流排連線於操作時與儲存 控制單元2 0 0連接。如圖2所示,儲存控制單元2 0 0包含: 轉換快取記憶體2 1 0以連接L 1 D快取記憶體1 2 0及L 2快取記 憶體1 3 0,主記憶體1 4 0,及許多執行單元。L1 D快取記憶 體1 2 0及L 1 I快取記憶體1 5 0最好設置在晶片上作為處理器 1 0 0的一部分,而主記憶體1 40及L2快取記憶體1 3 0則設置 在晶片外。記憶體系統1 4 0意欲表示隨機存取主記憶體可 設置(或不設置)在處理器核心1 0 0之中,而其他資料缓衝
O:\55\55415.ptc 第19頁 ά ’,:n 2 7 _______案號 五、發明說明(15) 87117329 年V月日 修正 器及快取記憶體(若有)則在處理器核心1 〇 〇的外.部,而其 他外部記憶體如D A S D 1 7 0,磁帶機1 7 2,及工作站1 7 6則在 圖ί中顯示。L2快取記憶體1 3 0最好是高於主記憶體1 4 〇的 高速記憶體系統’而且藉由儲存L 2快取記憶體1 3 0中的的 選疋資料’即可將參考主記憶體1 4 0所導致的記憶體等待 時間減至極小。如圖2所示,L 2快取記憶體1 3 0及主記憶體 1 4 0是經由儲存控制單元2 〇 〇而直接與L丨!快取記憶體丨5 〇 及指令單元220連接。 來自L 1 I快取&己憶體1 5 〇的指令最好輸出到指令單元 2 2 0 ’其根據本發明的方法及系統,用各子處理器單元來 控制多線的執行,該等單元如分岔單元2 6 〇,固定點單元 2 7 〇,儲存控制單元2 0 0,及浮點單元2 8 0與資料處理系統 1一〇的架構指定的其他元件。除了如圖2中所示的各執行單 兀1 :熟於此技術者可了解的是現代的超純量微處理器 ,,常包括各個這種執行單元的許多樣式,其可以在不違 明的精神及範圍之下加入。這些單元中的多數會具 目的射ί暫存器的輸入源運算元資訊,該等暫存器如三般 4=3存器01^5272,及浮點暫存器1^1^ 2 8 2。此外, ,用:午多特殊目的暫存器spRs 2 74。在圖2中,儲 2 ”早及疋:及轉換快取記憶體21 °直接與-般目的暫存存器 目的暫器2 8 2連接。一般目的暫存器272接至特殊
此多線處理器1 0 〇所特有的劝 H 輯4 〇 〇及轉換快取圮情舻9 , n 犯更體早兀·疋線程切換邏 t # H α ^ ^ f ^ ^ ^ ^ ^4°° ^ ^ ^ ^ 疋那線程會動作或是執行線程。線程切換邏
第20頁 _案號87117329 ^^年//月θ日 條_ 五、發明說明(16) 輯400於操作時與儲存控制單元200,執行單元260,270, 280 ’及指令單元220連接。儲存控制單元2〇〇中的轉換快 取記憶體2 1 0必須能實施多線。較佳的,儲存控制單元2 〇 〇 及轉換快取記憶體2 1 0允許每一線程至少有一未解決的資 料請求。因此當第一線程暫停以回應如發生L1 D快取記憶
體失誤時,第二線程即能存取目前存在其中的資料的Li D 快取記憶體1 2 0。若第二線程也產生L 1 D快取記憶體,則 發出另一資料請求因此多個資料請求必須包含在控制單元 2 0 0及轉換快取記憶體2 1 0。較佳的,轉換快取記憶體2 1 0 是美國專利申請案號0 8 / 76 1,3 7 8,申請日1 9 9 6年12月9曰 ’名稱 Multi-Entry Fully Associative Transition
Cache"所述的那一種轉換快取記憶體,該申請案在此供參 考°控制單元2〇〇,執行單元260,270,280及指令單元 2 2 0於操作時都接至線程切換邏輯4 0 0以決定要執行那一線 程。 如圖2所示,匯流排2 〇 5設置在控制單元2 〇 〇及指令單元 0之間以連接如資料請求至控制單元2 0 0,及連接L2快取 =憶體1 3 0失誤至指令單元2 2 0。此外,設置轉換查詢緩衝 裔TLB 250其包含虛擬轉成實際地址的對映表。雖然本發 明=沒有顯示’但是可設置各種額外的高階記憶體對映緩 衝0 ’如操作方式與轉換查詢緩衝器TLB 2 5 〇類似的區段 査詢緩衝器。 圖3„是儲存控制單元2 〇 〇的詳細說明,如該名稱所表示的 ’此控制來自各儲存單元的資料及指令的輸入與輸出 ’ &等單元包括各快取記憶體,緩衝器及主記憶體。如圖
O:\55\55415.ptc 第21頁 __案號 87117329 巧年//月/修正_ 五、發明說明(17) 3所示,儲存控制單元2 0 0包括轉換快取記憶體2 1 0其功能 為連接L 1 D快取記憶體1 2 0,多工器3 6 0,L 2快取記憶體 1 3 0 ’及主記憶體1 4 0。此外,轉換快取記憶體2 1 0接收來 自排序器350的控制信號。排序器350包括許多排序器,最 好是三個以處理指令與/或資料擷取請求。排序器3 5 0也輸 出控制信號到轉換快取記憶體2 1 0,L 2快取記憶體1 3 0,以 及與主記憶體1 4 0互相傳送控制信號。 圖3儲存控制單元200中的多工器360接收來自LI D快取 記憶體1 2 Q,轉換快取記憶體2 1 0,L 2快取記憶體1 3 0,主 記憶體1 4 0的資料,以及若資料要存入記憶體,則也接收 執行單元270 ’280的資料。多工器360從這些來源之一選 出資料’並輸出到L 1 D快取記憶體1 2 0或執行單元以回應 接收自排序器3 5 0的選擇控制信號。此外如圖3所示,排序 器350輸出一選擇信號以控制第二多工器370。根據排序器 3 5 0的選擇信號’多工器3 7 0即從L2快取記憶體1 30或主記 憶體1 4 0輸出資料到L 1 I快取記憶體1 5 0或指令單元2 2 0。 產生上述控制及選擇信號時,排序器350存取並更新LI D 快取記憶體1 2 0的L 1目標3 2 0及L 2快取記憶體1 3 0的L 2目標 3 3 0 ° 關於本文所述處理器的多線功能,儲存控制單元2 〇 〇的 排序器3 5 0也輸出信號到線程切換邏輯4 0 0,其指示資料及 指令請求的狀態。所以由於快取記憶體1 2 0,1 3 0,1 5 0, 主記憶體1 4 0的回饋,轉換查詢緩衝器2 5 0即傳送到排序器 3 5 0,並接著送入線程切換邏輯4 〇 〇而導致一線程切換,詳 如以下所述。或者,任何裝置,其中設計成使得一事件在
O:\55\554I5.ptc 第22頁 432327 修正 _案號 87117329 五、發明說明(18) 多線處理器中導致一線程切換的發生,都會於操作時接至 排序器3 5 0。 圖4是線程切換邏輯硬體400的邏輯表示及方塊圊,以決 定一線程是否會切換,以及若如此,是那一線程會切換。 儲存控制單元200及指令單元220與線程切換邏輯400連接 。線程切換邏輯400最好安裝在指令單元220中,但是若有 許多線程則線程切換邏輯4 0 0會更複雜,所以邏輯是在指 令單元2 2 0以外。為了便於解釋,將線程切換邏輯4 0 0畫在 指令單元2 2 0以外。 在此實施例中會在線程中導致切換的一些事件,則從儲 存控制單元200的排序器350經由線470,472,474,476, 478 ’480,482,484 ’4 86而傳送到線程切換邏輯4〇〇。其 他等待時間事件會導致線程切換;此表並不意欲包含一 切;反之,它僅表示線程切換可以如何實施。第一線程τ 〇 或第二線程τ 1請求的指令,其都不在指令單元2 2 〇中,即 是一種能導致線程切換的事件,分別如圖4的470及472所 示。線474指示何時主動的線程,不論是冗或了丨,會發生 L 1 D快取記憶體1 2 0失誤。分別在線4 7 6,4 7 8中標記出線 程T 0或Τ 1的L 2快取記憶體1 3 〇快取記憶體失誤。當 回以分別持續執行το線程或τι線裎時,即啟動線48 48 2。分別以線484及486來表示轉換查詢缓衝器 ^ 範圍的結束。 大误及表 這些事件都送入線程切換邏輯剡〇,尤其是送入 存器4 4 0及線程切換控制器4 5 0。線程切換邏輯4 〇二 線程都有-線程狀態暫存器a在本文所述的實施:中於'
O:\55\554l5.ptc
-^-^~JLU7329 年"月 曰 修正 五、發明說明(19) 示個線程即第—線程TO的TO狀態暫存琴442及第二後 4 0 0 〇 s線%切換控制暫存器41〇,其控制那些事件會導敖 線程切換二例如線程切換控制暫存器4 1 〇能阻止一些事 件丄其使得從線程切換控制器45 0看到狀態改變,^致因 為被阻止事件而不能切換線程。線程狀態暫存器及改變 線程操作的邏輯是本專利申請案的主題’並在此供參考 R0996-042。線程切換控制暫存器41〇是本專利申請案的主 題並在此供參考8〇997-104。用向前進行計數暫存器420來 防止猛移’並且可包含在線程切換控制暫存器41〇中。向 前進行計數暫存器4 2 0是本專利申請案的主題,並在此供 參考R 0 9 9 7 - 1 〇 5。線程切換暫儲暫存器4 3 〇,其係本專利申 請案的主題並在此供參考R〇 99 7 _1(n,則處理公平性及活 鎖等議題。最後,但並非僅限於此’線程切換控制器4 5 〇 包含許多邏輯閘,其表示所有邏輯的累加,其實際上決定 是否切換一線程,那一線程,以及在什麼情況下。以下所 現詳細說明這些邏輯元件及其功能的每一者。 線程狀態暫存器 線程狀態暫存器4 4 0包含各線程的狀態暫存器,如其名 稱所表明的’可儲存對應線程的狀態;在此情況下是τ 〇線 程狀態暫存器442及Τ1線程狀態暫存器444。至於一特殊架 構及線程切換優先順序設計,則可規定位元數目及特殊位 元的配置以便說明各線程的狀態。對於具有二個線程的多 線處理器,線程狀態暫存器4 4 2,4 4 4中位元配置的例子如 下表所述。
O:\55\55415.ptc 第24頁 43 23 2 7 _案號 87117329 ^^年"月 <曰__ 五'發明說明(20) 線程狀態暫存器位元配置 (0 ) 指令/資料 0 =指令 1 =資料 (1:2) 失誤型排序器 0 0 = 無 0 1 = 轉換查詢緩衝器失誤(I /D的檢查位元 是0) 1 0 = L1快取記憶體失誤 11 = L 2快取記憶體失誤 (3) 轉換 0 =轉換到目前狀態不會導致線程切換 1 = 轉換到目前狀態會導致線程切換 (4:7) 保留 (8 ) Q = 載入 1 =儲存 (9:14) 保留 (15:17) 向前進行計數器 111 = :重 設 (此線程期間已完成指令) 0 0 0 = 無 指 令 完 成 下 此 線程 的 第 一次 執 行 00 1 二 無 指 令 完 成 下 此 線程 的 第 二次 執 行 010 二 無 指 令 完 成 下 此 線程 的 第 三次 執 行 0 11 = 热 指 令 完 成 下 此 線程 的 第 四次 執 行 100 = 然 指 令 完 成 下 此 線程 的 第 五次 執 行
O:\55\55415.ptc 第25頁 Z ' Ί 2 7 _案號87117329 0年(/月 IX_ 0__ 五、發明說明(21) (18:19) 優先順序(可由軟體設定) 00 = 中等 01 = 低 10=高 1 1 =〈非法〉 (20:31)保留 ( 3 2:6 3 ) 保留給6 4位元實施 在本實施例中,位元0表示失誤或處理器中止執行的理 由是否為請求指令或資料的結果《位元1 ,2表示是否可使 用請求的資訊,而且若可使用,是從那一硬體,即資料或 指令的轉換地址是否不在轉換查詢缓衝器2 5 0中,或者資 料或指令本身不在L 1 D快取記憶體1 2 0或L 2快取記憶體1 3 0 中,詳如圖5的說明所述。位元3表示線程狀態的改變是否 會導致線程切換。在不導致線程切換之下,線程可改變狀 態。例如當線程T 1遇到L 1快取記憶體失誤時,若發生線程 切換,接著若線程T 1遇到L 2快取記憶體失誤,則不會有線 程切換因為線程已在L 1快取記憶體失誤上切換了 。然而T 1 的狀態仍會改變。或者若可以選擇,可將線程切換邏輯 4 0 0配置或規劃成不在L 1快取記憶體失誤上切換,接著當 線程遇到L丨快取記憶體失誤時,即使線程改變狀態仍不會 有線程切換。線程狀態暫存器4 4 2,4 4 4的位元8表示一特 殊線程請求的資訊是否載入處理器核心,或從處理器核心 存入快取記憶體或主記憶體。配置位元1 5到1 7以防止猛移 現象,這稍後會參考向前進行計數暫存器420來說明。可
O:\55\55415.ptc 第26頁 432327 _案號87117329 ^ 皋//月«日 修正__ 五、發明說明(22) 以在硬體中設定位元1 8,1 9或者由軟體設定以指示線程的 優先順序。 圖5顯示資料處理系統丨q處理的目前線程實施例的4個狀 態,以及線程狀態暫存器44〇中儲存的這些狀態’位元位 置1 : 2。狀態0 〇表示準傷狀態,即線程準備處理,因為所 有所需的資料及指令都可使用;狀態1 0表示線程狀態,其 中處理器中線程的執行已中止因為線程等待資料返回到L 1 D快取記憶體1 2 0之中,或等待指令返回到L 1 I快取記憶體 1 5 0 ;狀態1 1表示線程等待資料返回到L 2快取記憶體1 3 0之 中;而狀態01指示轉換查詢缓衝器250上有一失誤,即虛 擬地址錯誤或不能使用,這稱為表範圍(table walk)。圖 5中也顯示線程狀態層次,其中狀態〇 0,其指示線程準備 執行’具有最高優先順序。最好指定較高優先順序給短的 等待時間事件 〇 圖5也說明從各種來源擷取資料時狀態的變化。在符號 510中以狀態〇〇表示線程了〇的正常未中斷執行。若發生L1 D快取記憶體或I快取記憶體失誤,則線程狀態變成狀態1 〇 如符號5 1 2所示,這分別根據從儲存控制單元2 0 0傳送到線 474(圖4)的信號或根據從指令單元2 2 0傳送到線47 0 (圖4) 的信號。若所需的資料或指令在L 2快取記憶體1 3 0中而且 擷取了 ,則在符號5 1 〇恢復T 0的正常執行。類似的,圖5的 符號514表示一L2快取記憶體失誤’當儲存控制單元2 0 0指 示線476或478(圖〇上有失誤時,即改變了0或T1的線程狀 態成狀態1 1。從主記憶體1 4 0擷取L 2快取記憶體的指令或
O:\55V55415.ptc 第27頁 _案號 87117329 年// 月 /JT 日 五、發明說明¢23) 資料並載入處理器核心1 0 0如線4 8 0或4 8 2 (圏4 )所示時 ,狀態即再度在符號5 1 0變回狀態0 0。當請求資訊的虛擬 地址在轉換查詢缓衝器2 5 0中找不到時,儲存控制單元2 〇 〇 即與線484(圖4)上的線程暫存器440連線,如符號516所示 ,即T L B失誤或狀態0 1。當能使用地址或者若有資料儲存 中斷指令,如儲存控制單元200在線486上(圖4)所示,則 線程狀態返回狀態0 0以表示準備執行。 電腦設計者可自由選擇狀態數目,及各狀態表示的意義 。例如若線程具有多個L 1快取記憶體失誤,如L丨丨快取記 憶體及L 1 D快取記憶體失誤,則可以用不同狀態表示各種 快取記憶體失誤。或者,以單一線程狀態表示一個以上的 事件或發生的事。 現在說明2個相同優先順序有線程的線程切換演算法例 子,其判疋疋否給予線程切換。該演算法可根據'本發明的 教示對於更多個線程及線程切換情況而擴大並修正。儲存 在線程狀態暫存器4 4 0 (圖4 )中的各線程狀態與各線程優先 順序之間由線程切換演算法執行的互動是在各周期中動態 查詢的。若動作中的線程T 0具有一 L 1失誤,則演算法會作 線程切換到未使用的線程T 1,除非未使用的線程T1等待L 2 失誤的決定。若未發生切換,而動作中的線程T 0的L1快取 記憶體失誤轉成L 2快取記憶體失誤,則不論Τ Γ s的狀態演 算法都會命令處理器切換到未使用線程T 1。若二個線程都 在等待L 2快取記憶體失誤的決定,則具有已解決L 2失誤的 線程會首先成為動作中的線程。每一切換決定時間,多數 可能情況所採取的動作都是最佳的,以產生最佳性能。請
O:\55\55415.ptc 第28頁 “ 〜案號 87117329 矽年"月曰 修正_ 五、發明說明(24) 注意,L2快取記憶體失誤所導致的線程切換是依其他線程 的狀態而定,若沒有額外的線程切換發生則性能會下降。 線程切換控制暫存器 在任何多線處理器中,有一些與線程切換相關的等待時 間及性能障礙。在本文所述的較佳實施例的多線處理器中 ,此等待時間包括:完成目前線程至其可以被中斷以及當 再度請求時可以正確的重新開始處所需的時間,將線程特 定硬體設施從目前線程的狀態切換到新線程的狀態所需的 時間,以及重新開始新線程及開始其執行所需的時間。本 發明最好能操作線程特定硬體設施,包括上述的線程狀態 暫存器及記憶格如美國專利申請案號6 7 5 , 3 1 5,申請曰 1996/07/03,名稱11 Multithreaded Storage Cell1'所述 者,其在此供參考。為了在不精密的多線資料處理系統中 達成最佳性能,產生線程切換的一事件的等待時間必須大 於多線模式中線程切換相關的性能成本,這和一般單一線 程模式相反。 用以產生線程切換的一事件的等待時間是依硬體及軟體 而定。例如在多線處理器中特定硬體考量包括用以實施處 理器晶片*卜的L 2快取記憶體的外部S R A Μ速度。L 2快取記憶 體中的快速SRAM可減少L 1失誤的平均等待時間,然而慢速 S R A Μ會增加L 1失誤的平均等待時間。因此,若是將一線程 切換事件定義為硬體中的L 1快取記憶體失誤,其具有大於 線程切換障礙的外部L 2快取記憶體資料存取等待時間,則 會提高性能。特定軟體碼特徵如何影響線程切換事件的例 子如下,其考慮碼的L 2快取記憶體命中與失誤比,即L 2快
O:\55\55415.ptc 第29頁 43 23 2
87117329 if年月^曰 修正 五、發明說明(25) 取記憶體中實際可用資料的次數與必須從主記憶體中擷取 資料的次數(因為資料不在L 2快取記憶體中)之比。高的L 2 命中與失誤比,會降低L 1快取記憶體失誤的平均等待時 間,因L 1快取記憶體失誤不常產生較長的等待時間L2失 誤。低的L2命中與失誤比會增加,L1失誤的平均等待時 間,因為更多的L 1失誤會導致較長的等待時間L 2失誤。因 此若執行碼具有高的L 2命中與失誤比,則可以使L 1快取記 憶體失誤當作線程切換之事件失效(d i s a b 1 e d),因為L 2快 取記憶體資料存取等待時間比線程切換障礙小。當執行軟 體碼具有低的L 2命中與失誤比,則可以將L 1快取記憶體失 誤致能(enabled)當作線程切換事件,因為L1快取記憶體 失誤可能會轉成較長的等待時間L2快取記憶體失誤。 一些等待時間事件種類不是可以偵測的,例如在一些系 統中,當發生一快取記憶體失誤,L 2快取記憶體輸出信號 到指令早元。然而其他L 2快取記憶體不輸出這種信號5例 如若L 2快取記憶體控制器於在與處理器不同的晶片上,因 此處理器不能決定狀態變化。在這些架構中,處理器能包 括各未決L 1快取記憶體失誤的周期計數器。一預設周期數 目後 ,若失誤資料尚未從L2快取記憶體返回,則處理器會動作 ,仿佛有一個L 2快取記憶體失誤,並因此改變線程的狀態 。此演算法也適用於其他情況如超過一種以上等待時間的 情況。僅在此作為例子,在多處理器之中的L 2快取記憶體 失誤,主記憶體的資料等待時間與另一處理器的資料等待 時間明顯不同。因二個事件在線程狀態暫存器中可表示不
O:\55\55415.ptc 第30頁 4 3 23 27 ^ _m 87117329 g^-年/7 月 ^ 日 修正_ 五、發明說明(26) 同的狀態’若不存在區分這些狀態的信號,則可使用計數 器來估計它遇到L 2快取記憶體失誤後線程會在那一狀態 線程切換控制暫存器410是一軟體可程式暫存器,其選 擇事件以產生線程切換並具有不同的開始位元供各定義的 線程切換控制事件用。雖然本文所述的實施例不實施各線 程的不同線程切換控制暫存器410 ,但是可實施各線程的 不同線程切換控制暫存器4丨〇以提供更大的彈性與性能, 只需更多的硬體成本及複雜性。此外一線程切換控制暫存 器中的線程切換控制事件不必與任何其他線程切換控制暫 存器中的線程切換控制事件相同。 服務處理器可以用軟體來寫入線程切換控制暫存器4 1 〇 ’如美國專利5,079,725號,名稱"chip Identification
Method for Use with Scan Design Systems and Scan Testing Techniques"所述的動態掃描通訊介面軟體, ^由具有軟體系統碼的處理器本身來寫入。線程切/ 态4 5 0使用線程切換控制暫存器4丨〇的内容來開如、工 程切換的產生。暫存器410中的值”丨”使得該位α二=止線 程切換控制事件產生一線程切換。線程切換控=^屬的線 4 1 0中的值"0 "使得該位元所屬的線程切換控存器 生一線程切換。當然,執行線程中的指令可以伟牛不能產 其他線程的任何或所有線程切換情況都無效。# f特殊或 程切換事件與暫存器41 〇中其啟動位元間的結合。表顯示線 線程切換控制暫存器位元配置表
_案號 87117329 Θ年"月/<曰 修正_ 五、發明說明(27) (0 ) 於L 1資料快取記憶體擷取失誤時切換 (1 ) 於L 1資料快取記憶體儲存失誤時切換 (2 ) 於L 1指令快取記憶體失誤時切換 (3) 於指令TLΒ失誤時切換 (4) 於L2快取記憶體擷取失誤時切換 (5) 於L2快取記憶體儲存失誤時切換 (6 ) 於L 2指令快取記憶體失誤時切換 (7) 於資料TLΒ/區段查詢缓衝器失誤時切換 (8 ) 於L 2快取記憶體失誤及未使用的線程非L 2 快取記憶體失誤時切換 (9 ) 當到達線程切換暫停值時切換 (10) 當L2快取記憶體資料返回時切換 (11) 於I 0外部存取時切換 (12) 在雙重X儲存時切換:於二者之第一者上失誤* (13) 在雙重X儲存時切換:於二者之第二者上失誤* (14) 於儲存多重/串時切換:在任何存取上失誤 (15) 於載入多重/串時切換:在任何存取上失誤 (16) 保留 (17) 在雙重X載入時切換:於二者之第一者上失誤* (18) 在雙重X載入時切換:於二者之第二者上失誤* (19) 若機器狀態暫存器(問題狀態)位元msr(pr) = l , 則在〇 r 1,1,1指令時切換。允許軟體的優先 順序在與m s r ( p r )無關之下改變。若位元1 9是1 ,則〇 r 1,1,1指令設定低優先順序。若位元 19是0,唯有當or 1,1,1指令執行時若msr
O:\55\55415.ptc 第32頁 43232L 87117329 r>〆、 修正 五、發明說明(28) (p r ) = 0才設定優先順序為低《關於優先順序隨 著軟體而改變的說明將於稍後討論。 (20) 保留 (21 ) 線程切換優先順序啟動 (22:29) 保留 (30:31) 向前進行計數 ( 3 2:6 3 ) 在64位元暫存器實施中保留 *雙重X載入/儲存是指載入或儲存一基本半字,一字, 或雙字,以跨越雙字界限。本文中的雙重X載入/儲存不是 載入或儲存多個字或字串。 線程切換暫停暫存器 如上所述,不精密多線處理器依賴長等待時間事件以觸 發線程切換。有時在執行中,多處理器環境中的處理器, 或者多線架構中的背景線程,擁有只能具有單一所有者的 資源,而另一處理器或主動的線程在能向前進行之前要求 取用資源。例子包括更新一記憶體頁表或是從工作分配器 得到一工作。主動的線程不能得到資源的所有權並不會導 致線程切換事件,然而迴路中旋轉的線程不能作有效的工 作。在此情況下,保有資源的背景線程不能取用處理器, 所以它能釋出資源因為它永遠不會遇到線程切換事件而且 不會變成主動的線程。 在各線程中分配處理周期是另一項考量;若是在線程上 執行的軟體碼,與相同處理器中其他線程上執行的軟體碼 相比,極少遇到長的等待時間切換事件,則該線程會得到 比它應得的處理周期更多。會超過極大可接受時間的另一
O:\55V55415.ptc 第33頁 _案號 87117329 衫年V月«曰 修正_ 五、發明說明(29) 過度延遲是未使用線程的等待時間,其等待有限時段中服 務一外部中斷,或處理器外部的某一其他事件。因此若沒 有達成有效處理則在一些時間後最好強制一線程切換成為 不使用的線程,以防止系統間置。 一時段後強制線程切換的邏輯是:線程切換輸出暫存器 4 3 0 (圖4 ),減法器,及減法器暫存器以保有遞減的值。線 程切換暫停暫存器4 3 0保有線程切換輸出值,此實施例中 使用的線程切換暫停暫存器4 3 0實施例如下表所示: 線程切換暫停暫存器位元 (0:21) 保留 (22:31) 線程切換暫停值 本文所述的本發明實施例不會在各線程中設置另一線程切 換暫停暫存器4 3 0,雖然也可如此作以提供更大的彈性。 類似的,若有多個線程,則各線程不需要具有相同的線程 切換暫停值。每次發生線程切換時,硬體即將線程切換暫 停暫存器4 3 0的線程切換暫停暫存器值載入減法暫存器。 減法暫存器在每一周期遞減一次直到減法暫存器的值減為 0,接著將信號送到線程切換控制器4 5 0以強制作線程切換 ,除非無其他線程準備處理這些指令。例如若系統中所有 的其他線程都在等待一快取記憶體失誤並且不準備執行指 令,則線程切換控制器4 5 0不會強制線程切換。當減法暫 存器中的值變成0而且若沒有其他線程準備處理指令,則 將該遞減值固定在0直到另一線程準備處理指令,在此點 發生線程切換並且將該線程的線程切換暫停值重新載入減 法暫存器。類似的,可以將減法暫存器容易的命名為減法
O:\55\55415.ptc 第34頁 本//月〆曰__ 432327 _案號87117如€| 五、發明說明(30) 暫存器,而且當一線程正在執行以及當強制—線程切換時 ’會將暫存器增加到某一預設值。 如上所述可以用服務處理器或是由具有軟體碼的處理器 本身將線程切換暫停暫存器43〇寫入。根據特定硬體配置 與/或特疋軟體碼即可規定載入線程切換暫停暫存器的 線程切換暫停值,以使因不必要的線程切換所導致的周期 浪費減到極小。若線程切換暫停暫存器4 3 0中的值過高, 當主動的線程等待另一線程持有的資源時,或者一外部中 斷的回應等待時間或處理器外某一其他事件太長了 ,則會 使性能下降。若一線程遇到許多線程切換事件而其他線程 並沒有遇到,過高的值也會產生不公平。若—線程切換輸 出值二倍或數倍的大於最常出現的長等待時間事件,其導 致線,切換,則建議如存取主記憶體。等待線程切換暫停 暫存器4 3 0中指定的周期數目後強制一線程切換,即可防 止系統閉置因為共用了競爭資源,強制在線程之間作處理 器周期的公平分配,及限制外部中斷的極大回應等 以及處理器外的其他事件。 .· 向前進行保證 在 &環境下母畲發生線程切換以及新的線程開始使用 時=必須執行至少一指令的要求限制性太高了 ,例如當單 才曰1產生夕個快取s己憶體存取與/或多個快取記愫體尖 :f合ΐ請求的指令不存在於快取記憶體t,則擷取 才曰v g ¥致LI I快取記憶體15〇失誤;但是當指令返回時 ,要求的1料不會存在於L〗D快取記憶體丨2 〇中。同理, 轉換查詢缓衝器2 5 0也會導致資料快取記憶體失誤。所以
O:\55\554l5.ptc 第35頁 432327 / _案號 87117329 V年"月修正_ 五、發明說明(31) ,若嚴格強制向前進行,則後續存取上的失誤不會導致線 程切換。第二個問題是一些快取記憶體失誤會要求許多周 期才能完成,在此期間另一線程在相同的快取記憶體階層 中會遇到快取記憶體失誤,其可以在極少的時間内完成。 若是返回到第一線程,則強制嚴格的向前進行,而處理器 不能切換到具較短快取記憶體失誤的線程。 為了改正猛移的問題,其中各線程在不執行任何指令之 下鎖在線程切換的各周期中,並存在向前進行計數暫存器 4 2 0 (圖4 )其允許可程式化的極大數目線程切換(其稱為向 前進行門檻值)。該極大數目的線程切換後,必須在切換 能再度發生之前完成一指令。依此,可防止猛移。向前進 行計數暫存器4 2 0在線程切換控制暫存器4 1 0中實際上是位 元30:31,或是該處理器的軟體可程式向前進行門檻暫存 器。向前進行計數邏輯使用線程狀態暫存器44 2,444的位 元1 5 : 1 7,以指示線程狀態並分配給線程切換數目,在不 執行指令之下已遇到一線程。較佳的,接著這些位元包含 向前進行計數。 當線程改變狀態以開始線程切換演算法時,若在使用的 線程中完成至少一指令,則重設該使用的線程的向前進行 計數器,而線程切換演算法持續比較處理器中各線程間的 線程狀態。若沒完成指令,則將使用線程的線程狀態暫存 器中的向前進行計數暫存器值與向前進行門檻值比較。若 計數器值不等於門檻值,則線程切換演算法持續評估處理 器中線程的線程狀態。接著若發生線程切換,則將向前進 行計數器加一 ^然而若計數器值等於門檻值,則不會發生
O:\55V55415.ptc 第36頁 _案號 87117329 Θ年"月Λ" a_ί±^._ 五、發明說明(32) 線程切換直到能執行一指令,即直到發生向前進行。或者 ,若門檻暫存器具有0值,則在切換到另一線程之前必須 在使用線程中完成至少一指令。若各線程切換要求三個處 理器周期,而且若有二個線程,以及若將線程切換邏輯設 計成在嘗試五次後即停止再試,則在3 0周期的極大周期數 目時處理器即不能正常工作。熟於此技術者能了解的是禁 止線程切換之間存在一潛在衝突,因為在一方面沒有向前 進行,而在另一方面強制線程切換,因為已超過暫停計數 。根據本架構及軟體可容易的解決這種衝突。 圖6是可防止猛移的線程切換邏輯4 0 0的向前進行計數功 能的流程圖。在符號6 1 0,將狀態Τ 0相關的線程狀態暫存 器442中的位元15]7重設為狀態111。在符號620中嘗試此 線程的執行而且將狀態變為0 0 0。若一指令成功的在線程 Τ 0上執行,則線程Τ 0的狀態返回11 1並維持不變。然而若 線程Τ 0不執行指令,則線程Τ1會發生線程切換,或者若處 理器架構中允許二個以上的線程,則發生在另一背景線程 中。當線程切換發生在離開Τ 1或其他背景線程之處,則執 行返回線程Τ 0,發生執行線程Τ 0的第二次嘗試,而線程Τ 0 狀態在符號6 3 0中變成001。再一次,若線程TO遇到一線程 切換事件,則處理器的控制從線程T 0切換到另一線程。類 似的,每當發生從其他線程如τ 1回到線程T 0的線程切換 時,狀態T0即在第三次嘗試時變為010以執行T0 (符號6 40 ) ;在第四次嘗試時變為0 11以執行T 0 (符號6 5 0 ),以及在第 五次嘗試時變為1 0 0以指示T 0 (符號6 6 0 )。 在此實施中,有五次嘗試以切換到線程T 0。第五次嘗試
O:\55\55415.ptc 第37頁 案號87117329 Θ年"月 日 修正 " I 1 ....... 五、發明說明(33) 後或者每當線程狀態暫存器(TSR) 442中的位元15:17的值 等於指令3 0 : 3 1的值加上線程切換控制暫存器(T SC ) 4 1 0中 的一,即每當TSC (30:31) + 1 = TSR (15:17),即不會從線 程T 0發生線程切換。可了解的是五次嘗試只是一隨意數目 ,不成功執行的極大可允許切換數目,即向前進行門檻值 是可以規定的,而且可以在一些認為五不是λ多切換的架 構中實施,以及在其他認為五是太少的架構中實施。在任 何情況下,嘗試切換到一線程的次數與不執行指令之間的 關係必須與一門檻值比較,而且一旦到達該門檻值,則不 會從該線程發生線程切換,而處理器會等待直到已解決該 線程相關的等待時間。在本文所述的實施例中,線程狀態 暫存器4 4 2的位元1 5 : 1 7所表示的線程狀態與線程切換控制 暫存器4 1 0中的位元3 0 : 3 1比較。特殊事件時作的特別處置 ,該等事件具有極長的等待時間例如與輸入/輸出裝置的 互動,可以用向前進行邏輯來防止過早的阻止線程切換以 改善處理器性能。一種處置這些極長等待時間事件的方式 是阻止增加向前進行計數器,或是若資料未返回時,忽略 向前進行計數器與門檻值之間輸出信號的比較。另一種處 置極長等待時間事件的方式是使用這些特殊事件的其他較 大的向前進行計數。 線程切換管理器 分配給處理器的所有軟體線程的線程狀態最好類似在圖 4的線程狀態暫存器442,444之中。在單一處理器中,一 線程每次只能執行其指令,而所有其他的線程都不動作。 如上所述當主動的線程遇到向前進行暫存器4 2 0,線程切
O:\55V55415.ptc 第38頁 432327 . _案號 87117329 ri 年#月/^曰__ 五、發明說明(34) 換控制暫存器4 1 0,或線程切換暫停暫存器4 3 0相關的長等 待時間事件時,執行即從主動的線程切換到未動作的線程 。不論使用那一個線程,這些硬體暫存器使用的情況都不 會在執行期間作動態變化。 由線程切換管理器改變線程切換情況的彈性改善了系統 的總性能。軟體線程切換管理器能改變線程切換的頻率, 增加重要工作可使用的執行周期,及減少因為線程切換等 等時間而導致的總周期損失。可以在編譯時或是在執行期 間由作業系統規劃線程切換管理器,如一鎖迴路可改變線 程切換的頻率,或者因為一未使用線程在較低的優先順序 狀態下等待一外部中斷或者已準備好了 ,則可發出一作業 系統工作。不允許或減少從主動的線程作線程切換的頻率 的優點是,目前指令串的性能不受切換進/出導致等待時 間的影響。或者,藉由基本上降低其優先順序,線程即可 放棄其一部分或所有的執行周期,結果,減少切入其中的 頻率,或增加從線程切出的頻率以強化系統總性能。線程 切換管理器也無條件的強制或禁止線程切換,或影響下一 個要選出來作執行的線程。 多重優先順序線程切換設計指定一優先順序值給各線程 以合乎導致切換的條件。在一些情況下也可期望由硬體改 變線程優先順序。例如低優先順序線程可等待某一事件, 當其發生時,硬體能提高線程的優先順序以影響線程對於 該事件的回應時間。各線程間的相對優先順序,或是某一 線程的優先順序會影響這種事件的處理。線程切換管理器 軟體透過使用一或多個指令,或由硬體回應一事件,即可
O:\55\55415.ptc 第39頁 43 23 27 . ^ n f〆 _案號 87117329 年"月 ^ 曰_^__ / 五、發明說明(35) 調整線程的優先順序,線程切換管理器改變硬體線程切換 邏輯執行的動作以有效的改變線程的相對優先順序。 本文所述實施例的2個線程使用三個優先順序,並提供 線程之間足夠的區分以允許在不使系統性能下降之下達到 最佳性能。藉由三個優先順序,2個線程能具有相同的中 等優先順序狀態。2個線程使用三個優先順序的選擇其目 的並非用來限制。在一些架構中,正常狀態是指一線程一 直具有比其他線程高的優先順序,本發明的範圍意欲涵蓋 2個線程執行以上,其具有一或多個優先順序以便能由硬 體設定或由軟體來規劃。 各線程的三個所優先順序是高,中等及低。當線程TO的 優先順序與線程T 1相同時,在線程切換邏輯上即無效應。 二個線程都具有相等的優先順序,所以任一者都不會給予 —執行時間優勢。當線程T 0的優先順序大於線程T 1的優先 順序時,所有的L1快取記憶體失誤即不會從TO線程切換到 T1 ,即資料載入,資料儲存,及指令擷取,因為L1快取記 憶體失誤的處理速度遠快於其他情況如L2失誤及轉換。與 線程T 1相比,線程T 0具有接收更多執行周期的良好機會, 以允許T 0持續執行只要它不浪費過多的執行周期數目。然 而若線程TO遇到較長的執行等待時間,則處理器仍會放棄 控制線程T1。從T1至TO的線程切換則不受影響。除非切換 發生於未使用的線程TO準備好了 ,在此情況下線程TO會比 線程T 1優先。當線程TO切換時即可期望發生此例,因為有 L 2快取記憶體失誤或轉換請求,而且在T 0執行的同時在背 景解決該情況。線程T 0的優先順序比線程T 1低的情況與上
O:\55\55415.ptc 第40頁 案號 87117329 年"月;曰 修正 五、發明說明(36) 述例子類似,只是線程名稱相反。 藉由改變線程優先順序來實施線程切換的管理器現有多 種不同的可能方式。可將新指令加入處理器架構,具副作 用的現存處理器指令若具有期望的動作則也可以使用。影 響允許軟體控制方法選擇的有數個因素:(a)更容易重新 定義架構以包括新指令及現存處理器上架構改變的效應; (b)期望在不同處理器版本上執行相同的軟體;(c)使用新 的特殊目的指令與再使用現存指令之間的性能優劣評估及 定義產生的副作用;(d)軟體控制的期望位準,如是否可 藉由每次執行某一現存指令如特定載入或儲存來產生效 應,或者是否需要更多的控制,其方法是將一指令加入指 令串以特別產生該效應。 本文所述的架構最好利用未使用指令,其值不改變處理 器的架構一般目的暫存器,此特徵對於將多線功能裝設在 處理器架構中是極為重要的。可以將其他特別指令編碼。 指令是較佳no-op or 0,0,0;然而其他指令可以有效的當 作no-op。一no-op或nop是一指令,其執行使得電腦在次 一指令繼續執行,且不執行運算。在一較佳架構之實施例 中,藉由使用or指令,or 0,0, 0或1,1,1等的不同版本即 可改變線程優先順序,相同的指令_可以在無不良效應如 非法指令中斷之下在處理器上執行。一延伸使用機器狀態 暫存器的狀態以改變這些指令的意義。例如可期望允許一 使用將這些線程優先順序指令作部分或全部編碼,並取用 其提供的功能。其提供的特殊功能可定義為僅在一些執行 模式中發生,其對於其他模式則無效應,而且將可以正常
O:\55\55415.ptc 第41頁 432327 ♦ _ 案號 87117329 %年"月/^ 曰 修正 五、發明說明(37) 的,如當作no-op來執行。 一種可能的實施例(其使用雙線程的多線處理器)使用三 個指令其成為執行軟體本身的一部分以改變本身的優先順 序: tsop 1 or 1,1,1 - 切換為未使用的線程 t sop 2 or 1,1,1 -將主動的線程設定為低優先順 序 - 切換為未使用的線程 -注意:除非TSC[ 19] = 1,僅在 專屬模式中有效 tsop 3 or 2,2,2 -將主動的線程設定為中等優先 順序 tsop 4 or 3,3,3 -將主動的線程設定為高優先順 序 -注意:僅在專屬模式中有效 指令t s ο p 1及t s ο p 2可以是相同的指令即本實施例的〇 r 1 , 1,1 ,但是其也可以是不同的指令。這些指令與線程切 換控制暫存器410的位元19及21互動,以及與本文所述的 機器狀態暫存器的問題/專屬位元互動。若線程切換控制 暫存器4 1 0的位元2 1具有值1,則線程切換管理器能將其線 程的優先順序設定為三個優先順序之一如線程狀態暫存器 中的位元1 8 : 1 9所示。若線程切換控制暫存器4 1 0的位元1 9 具有0值,則指令tsop 2線程切換及線程優先順序設定可 由機器狀態暫存器的問題/專屬位元來控制。換言之,若 線程切換控制暫存器4 1 0的位元1 9具有1值,或者若機器狀
O:\55\55415.ptc 第42頁
_案號 87117329 年 月 五、發明說明(38) 修正
態暫存器的問題/專屬位元具有0值’而指令〇r 1,!,^出現 在碼中,則將使用中線程的優先順序設定為低,並且將 行立即切換為未使用,或是若未使用線程啟始則切換為 使用或背景線程。指令or 2,2,2設定使用中線程的優先p 序為中等,這與機器狀態暫存器的問題/專屬位元的值無順 關。至於指令or 3,3,3,當機器狀態暫存器位元的問題) 專屬位元具有0值時,即設定使用中線程的優先順序為τ 。若線程切換控制暫存器3 2 0的位元2 1是0,則將二個線^程 的優先順序都設定中等,並且阻止優先順序上or X,χ/χ指 令的效應。若外部中斷請求在動作,而且若對應線程的優 先順序是低的,則將線程的優先順序設為中等。 線程優先順序改變的事件是:(1)在L 1 D快取記憶體失 誤上切換以載入資料;(2)在L 1 D快取記憶體上切換以儲 存資料;(3 )在L1 I快取記憶體失誤上切換以擷取指令; 以及(4 )若未使用的線程在準備狀態則切換。此外,外部 中斷啟始時會改變對應線程的優先順序。下表顯示導致線 程切換的某些情況的優先順序的效應。行3,4中的簡單 T S C資料表示使用線程切換控制(TS c )暫存器4 i 〇中所述的 情況以啟始一線程切換。視為〇的TSC [ 2 ]資料表示將線 程,換控制暫存器4 1 〇的位元〇 : 2當成該線程的那些位元的 值是0,並且將線程切換控制暫存器4丨〇中的其他位元用來 定義導致線程切換的情況。行4中的片語「當線程以準備 好」f不一旦線程T〇不再等待失誤即發生切換到線程T0, 這使付它切換出去。若失誤事件是線程切換暫停,則不能 保證在高優先順序線程切換回來之前,即完成低優先順序
O:\55\55415.ptc
432327 , _____案號87117329 V 年"月/^日 修正 五、發明說明(39) 線程。
TO優先順序 T1優先順序 TO線程切換情況 T1線程切換情況 — _ 高 — TSC TSC -一一 中等 tsc[o:2]視爲 〇 TSC或者若TO準備好 高 低 TSC【0:2]視爲0 , TSC或者若TO準備好 中等 商 TSC或者若T1準備好 TSC[0:2]視爲 0 中等 中等 TSC TSC 中等 低 TSC[0_.2]視爲 0 TSC或者若TO準備好 低 TSC或者若T1準備好 TSC[0:2]視爲 0 低 中等’ TSC或者若T1準備好 TSC[0:2]視爲 0 低 低 TSC TSC 在此建議將不做生產性工作的線程設為低優先順序以避 免性能下降,即使閒置迴路中的每一指令都會導致切換。 況且更重要的是若請求一外部中斷成為一線程設定為低優 先順序,則允許硬體改變線程優先順序。在此情況下提高 線程為中等優先順序,以允許更快的回應中斷。此允許一 外部事件上的線程等待設定其本身在低優先順序,它會維 持在此直到通知有事件了。 雖然已用目前視為最實際且較佳的實施例來說明本發明 ,該了解的是本發明並不僅限於上述實施例,反之,意欲
O:\55\55415.ptc 第44頁 432327 案號 87117329 月
fX a 修正 五、發明說明(40) 涵蓋各種修 在不偏離附屬申請專利範圍之精神與範圍下 正及同等配置。
O:\55\55415.ptc 第45頁

Claims (1)

  1. 4 ? 7 修正 nk 87117329 六、申諳專利範圍 1 . 一種電腦處理之方法,包含: (a) 在一多線處理器中執行眾多指令線程之至少一者, 該等眾多線程各具有一獨立於該等眾多線程所位於佇列之 優先順序位元;以及 (b) 根據該等眾多線程之一所經驗之線程切換事件或是 由該處理器執行之指令而改變該等眾多線程之一之優先順 序位元。 2. 如申請專利範圍第1項之方法,更包含: (c) 根據各線程之優先順序位元,從眾多線程之一切換 至眾多線程之另一者。 3. 如申請專利範圍第1項之方法,其中藉由硬體產生之 信號改變一或多個線程之優先順序位元。 4. 如申請專利範圍第3項之方法,其中信號導因於多線 處理器以外之事件。 5. 如申請專利範圍第1項之方法,其中一線程切換管理 器改變一或多個線程之優先順序位元。 6. 如申請專利範圍第1項之方法,其中眾多線程之一之 優先順序高於眾多線程之另一者。 7. 如申請專利範圍第1項之方法,其中眾多線程之至少 二者能具有相同優先順序。 8. 如申請專利範圍第1項之方法,其中眾多線程之任一 者之優先順序可以是高,中等,或低。 9. 如申請專利範圍第2項之方法,其中當第一線程具有 比第二線程低之優先順序及第二線程在一準備狀態時,即 發生從眾多線程之第一者切換至眾多線程之第二者。
    O:\55\55415.ptc 第46頁 432327 _案號 87117329 年〆月^曰__ 六、申請專利範圍 / 1 0 .如申請專利範圍第1項之方法,其中從眾多線程之一 之切換,其具有比眾多線程之另一者高之優先順序,在一 指定線程切換事件時中止。 1 1 . 一種電腦處理之方法,包含: (a) 在連接至一快取記憶體之多線處理器中執行眾多線 程之至少一者,各線程具有一優先順序; (b) 使用包含一線程切換指令之線程切換管理器,以改 變眾多線程之一或多個之優先順序; (c) 若第一線程具有比第二線程低之優先順序及第二線 程在一準備狀態,即從眾多線程之第一者切換至眾多線程 之第二者, (d) 在諸指令線程切換事件中,不從具有較高優先順序 之眾多線程之一切換。 1 2. —種電腦處理之方法,包含: (a) 根據眾多線程之至少一者及是否眾多線程之至少一 者發生線程切換事件之優先順序位元相對於眾多線程之至 少另一者之各別優先順序位元及是否眾多線程之至少另一 者發生線程切換事件,而分配數個處理周期至一具有硬體 多線之多線處理器中眾多指令線程之至少一者。 (b) 於一多線處理器中執行眾多指令線程之至少一者, 各線程具有該優先順序位元。 1 3. —種電腦處理系統之線程切換管理器,包含: (a) 至少一優先順序切換指令; (b) 在一第一暫存器中之至少一線程切換優先順序; (c) 在一第二暫存器中之眾多優先順序狀態,其中切換
    O:\55\55415.ptc 第47頁 _案號 8ΉΠ329 年,/ 月 ^日_\±i-_ 六、申請專利範圍 指令能改變眾多優先順序狀態位元之任一者。 1 4.如申請專利範圍第1 3項之線程切換管理器,更包 含: (d ) —多線處理器;以及 (e )眾多指令線程,包含多線處理器中之至少一主動線 程; 其中優先順序切換指令改變眾多優先順序狀態位元之 一,多線處理器中之眾多指令線程之至少一者改變優先順 序。 1 5.如申請專利範圍第1 4項之線程切換管理器,其中若 啟始至少一線程切換優先順序位元,則多線處理器從主動 線程切換處理以回應至少一指令線程之優先順序改變。 1 6.如申請專利範圍第1 4項之線程切換管理器*其中眾 多優先順序狀態位元包含眾多組,各組對應於眾多指令線 程之各者。 1 7.如申請專利範圍第1 3項之線程切換管理器,其中該 第一暫存器及該第二暫存器係單一的。 1 8.如申請專利範圍第1 5項之線程切換管理器,其中一 第一暫存器中之至少一線程切換優先順序位元係一線程切 換控制暫存器中之至少一線程切換控制位元,其可操作以 連接至多線處理器。 1 9.如申請專利範圍第1 4項之線程切換管理器,其中第 二暫存器包含一線程狀態暫存器,可操作地連接至多線處 理器,線程狀態暫存器儲存眾多指令線程之至少一者之狀 態。
    O:\55\55415.ptc 第48頁 4323 27 _案號 87117329 Θ年"月曰 修正_ 六、申請專利範圍 2 0.如申請專利範圍第1 3項之線程切換管理器,其中優 先順序切換指令不改變一多線處理器之眾多設計暫存器之 任一者。 2 1.如申請專利範圍第1 3項之線程切換管理器,其中優 先順序切換指令在無非法指令中斷下能在一多線處理器上 執行。 2 2.如申請專利範圍第2 1項之線程切換管理器,其中切 換指令係一 η ο - ο ρ指令。 23. —種電腦處理器,包含: (a) —處理裝置,用以處理眾多指令線程 (b) —儲存裝置,用以儲存眾多線程之每一者之優先順 序狀態; (c) 一改變裝置,用以改變眾多線程之每一者之優先順 序狀態; (d) —致能裝置,其回應該改變裝置,用以致能該處理 裝置從眾多線程之一第一線程切換處理至第二線程。 2 4.如申請專利範圍第2 3項之電腦處理器,其中用以改 變優先順序狀態之該改變裝置更包含來自一中斷請求之信 號。 2 5.如申請專利範圍第2 3項之電腦處理器,其中用以改 變優先順序狀態之該改變裝置包含至少一軟體指令以操控 至少一硬體暫存器中之諸優先順序位元。 2 6. —種電腦資料處理系統,包含: (a) —多線處理器,能處理至少一指令線程,以及能在 至少兩個指令線程之間切換;
    O:\35\55415.ptc 第49頁 ,”一、^ ‘號 87117329 年,/ 月^"曰__ 六、申請專利範圍 (b )眾多内部記憶體單元; (c ) 一系統匯流排,將諸内部記憶體單元互連,及連接 至多線處理器; (d) 眾多外部連線連接多線處理器至以下外部裝置之一 或多個者:一記憶體裝置,一通訊裝置,一電腦網路,及 一輸入/輸出裝置,至少一外部記憶體裝置; (e) —匯流排介面,連接諸外部連線至多線處理器;以 及 (f) 一線程切換管理器,可操作地連接至多線處理器以 改變至少一指令線程之優先順序。
    O:\55\55415.ptc 第50頁
TW087117329A 1997-10-23 1998-10-20 Altering thread priorities in a multithreaded processor TW432327B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/958,718 US6212544B1 (en) 1997-10-23 1997-10-23 Altering thread priorities in a multithreaded processor

Publications (1)

Publication Number Publication Date
TW432327B true TW432327B (en) 2001-05-01

Family

ID=25501232

Family Applications (1)

Application Number Title Priority Date Filing Date
TW087117329A TW432327B (en) 1997-10-23 1998-10-20 Altering thread priorities in a multithreaded processor

Country Status (7)

Country Link
US (1) US6212544B1 (zh)
EP (1) EP1027650B1 (zh)
JP (1) JP3714598B2 (zh)
CN (1) CN1117319C (zh)
IL (1) IL135460A0 (zh)
TW (1) TW432327B (zh)
WO (1) WO1999021089A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7987346B2 (en) 2001-06-22 2011-07-26 Intel Corporation Method and apparatus for assigning thread priority in a processor or the like
TWI481993B (zh) * 2009-12-22 2015-04-21 Intel Corp 用於多核心及執行緒的時間戳記計數器偏移的控制設備、方法及系統與處理器
TWI502511B (zh) * 2004-03-31 2015-10-01 Synopsys Inc 用於管理多核心架構之資源的方法和設備

Families Citing this family (267)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
US6385715B1 (en) * 1996-11-13 2002-05-07 Intel Corporation Multi-threading for a processor utilizing a replay queue
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
DE59710317D1 (de) * 1996-12-27 2003-07-24 Pact Inf Tech Gmbh VERFAHREN ZUM SELBSTÄNDIGEN DYNAMISCHEN UMLADEN VON DATENFLUSSPROZESSOREN (DFPs) SOWIE BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN (FPGAs, DPGAs, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US8686549B2 (en) * 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
JP3027845B2 (ja) * 1997-11-21 2000-04-04 オムロン株式会社 プログラム制御装置および方法
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
DE19757876C2 (de) * 1997-12-24 2002-06-20 Bosch Gmbh Robert Verfahren zur Ermittlung der Auslastung eines Rechengeräts
US6952827B1 (en) * 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US6718457B2 (en) * 1998-12-03 2004-04-06 Sun Microsystems, Inc. Multiple-thread processor for threaded software applications
US7114056B2 (en) 1998-12-03 2006-09-26 Sun Microsystems, Inc. Local and global register partitioning in a VLIW processor
US7117342B2 (en) * 1998-12-03 2006-10-03 Sun Microsystems, Inc. Implicitly derived register specifiers in a processor
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
US7035997B1 (en) 1998-12-16 2006-04-25 Mips Technologies, Inc. Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
US6389449B1 (en) * 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US7529907B2 (en) 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US6477562B2 (en) * 1998-12-16 2002-11-05 Clearwater Networks, Inc. Prioritized instruction scheduling for multi-streaming processors
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
US7370325B1 (en) * 1999-02-19 2008-05-06 Lucent Technologies Inc. Eager evaluation of tasks in a workflow system
US6874144B1 (en) * 1999-04-05 2005-03-29 International Business Machines Corporation System, method, and program for implementing priority inheritance in an operating system
US6535905B1 (en) 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US7644439B2 (en) * 1999-05-03 2010-01-05 Cisco Technology, Inc. Timing attacks against user logon and network I/O
DE10081643D2 (de) 1999-06-10 2002-05-29 Pact Inf Tech Gmbh Sequenz-Partitionierung auf Zellstrukturen
US6542921B1 (en) * 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6606704B1 (en) * 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6631009B1 (en) * 1999-09-24 2003-10-07 Xerox Corporation Avoiding deadlock situations in a printing system using a locking time-out mechanism
US7518993B1 (en) * 1999-11-19 2009-04-14 The United States Of America As Represented By The Secretary Of The Navy Prioritizing resource utilization in multi-thread computing system
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6496925B1 (en) 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence 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
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) * 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US7051329B1 (en) 1999-12-28 2006-05-23 Intel Corporation Method and apparatus for managing resources in a multithreaded processor
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6832265B1 (en) * 2000-01-07 2004-12-14 Cisco Technology, Inc. Methods and apparatus for moving data elements within a data communications device
US7099855B1 (en) 2000-01-13 2006-08-29 International Business Machines Corporation System and method for electronic communication management
US8041754B1 (en) * 2000-01-22 2011-10-18 Intel Corporation Establishing thread priority in a processor or the like
US7299194B1 (en) * 2000-02-22 2007-11-20 International Business Machines Corporation Method and system for researching sales effects of advertising using association analysis
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US6810432B1 (en) * 2000-04-03 2004-10-26 Hewlett-Packard Development Company, L.P. Method for guaranteeing a device minimun bandwidth on a usb bus
US6931641B1 (en) 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
JP2004506261A (ja) 2000-06-13 2004-02-26 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト パイプラインctプロトコルおよびct通信
US6408277B1 (en) 2000-06-21 2002-06-18 Banter Limited System and method for automatic task prioritization
US8290768B1 (en) 2000-06-21 2012-10-16 International Business Machines Corporation System and method for determining a set of attributes based on content of communications
US9699129B1 (en) 2000-06-21 2017-07-04 International Business Machines Corporation System and method for increasing email productivity
JP2004518183A (ja) 2000-07-14 2004-06-17 クリアウオーター・ネツトワークス・インコーポレイテツド マルチスレッド・システムにおける命令のフェッチとディスパッチ
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
AU2002241767A1 (en) * 2000-10-23 2002-06-18 Xyron Corporation Concurrent-multitasking processor
US6467033B2 (en) * 2000-12-12 2002-10-15 International Business Machines Corporation Method and apparatus for implementing locking of non-data page operations
US7644057B2 (en) * 2001-01-03 2010-01-05 International Business Machines Corporation System and method for electronic communication management
GB2372847B (en) 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US20070299993A1 (en) * 2001-03-05 2007-12-27 Pact Xpp Technologies Ag Method and Device for Treating and Processing Data
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US20030014474A1 (en) * 2001-05-30 2003-01-16 Mckaig Ray S. Alternate zero overhead task change circuit
US6651158B2 (en) * 2001-06-22 2003-11-18 Intel Corporation Determination of approaching instruction starvation of threads based on a plurality of conditions
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US20060218556A1 (en) * 2001-09-28 2006-09-28 Nemirovsky Mario D Mechanism for managing resource locking in a multi-threaded environment
WO2003060747A2 (de) 2002-01-19 2003-07-24 Pact Xpp Technologies Ag Reconfigurierbarer prozessor
WO2003065214A1 (en) * 2002-01-30 2003-08-07 Real Enterprise Solutions Development B.V. Method of setting priority levels in a multiprogramming computer system with priority scheduling, multiprogramming computer system and program therefor
EP2043000B1 (de) * 2002-02-18 2011-12-21 Richter, Thomas Bussysteme und Rekonfigurationsverfahren
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
AU2003231945A1 (en) * 2002-05-31 2003-12-19 Guang R. Gao Method and apparatus for real-time multithreading
US20030225816A1 (en) 2002-06-03 2003-12-04 Morrow Michael W. Architecture to support multiple concurrent threads of execution on an arm-compatible processor
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
US7471688B2 (en) * 2002-06-18 2008-12-30 Intel Corporation Scheduling system for transmission of cells to ATM virtual circuits and DSL ports
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US20040034759A1 (en) * 2002-08-16 2004-02-19 Lexra, Inc. Multi-threaded pipeline with context issue rules
US7394284B2 (en) 2002-09-06 2008-07-01 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US7065596B2 (en) * 2002-09-19 2006-06-20 Intel Corporation Method and apparatus to resolve instruction starvation
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
US6965986B2 (en) * 2002-09-19 2005-11-15 International Business Machines Corporation Method and apparatus for implementing two-tiered thread state multithreading support with high clock rate
US7984268B2 (en) * 2002-10-08 2011-07-19 Netlogic Microsystems, Inc. Advanced processor scheduling in a multithreaded system
US7653906B2 (en) * 2002-10-23 2010-01-26 Intel Corporation Apparatus and method for reducing power consumption on simultaneous multi-threading systems
US7433307B2 (en) * 2002-11-05 2008-10-07 Intel Corporation Flow control in a network environment
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
US7673304B2 (en) 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7487502B2 (en) * 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
US7849465B2 (en) * 2003-02-19 2010-12-07 Intel Corporation Programmable event driven yield mechanism which may activate service threads
JP2006524850A (ja) * 2003-04-04 2006-11-02 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データ処理方法およびデータ処理装置
US7278141B2 (en) * 2003-04-23 2007-10-02 International Business Machines Corporation System and method for adding priority change value corresponding with a lock to a thread during lock processing
US7000047B2 (en) * 2003-04-23 2006-02-14 International Business Machines Corporation Mechanism for effectively handling livelocks in a simultaneous multithreading processor
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
US7363625B2 (en) * 2003-04-24 2008-04-22 International Business Machines Corporation Method for changing a thread priority in a simultaneous multithread processor
US7290261B2 (en) * 2003-04-24 2007-10-30 International Business Machines Corporation Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) 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
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
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
US20050187913A1 (en) * 2003-05-06 2005-08-25 Yoram Nelken Web-based customer service interface
US8495002B2 (en) * 2003-05-06 2013-07-23 International Business Machines Corporation Software tool for training and testing a knowledge base
EP1634182A2 (en) * 2003-06-17 2006-03-15 PACT XPP Technologies AG Data processing device and method
JP3892829B2 (ja) * 2003-06-27 2007-03-14 株式会社東芝 情報処理システムおよびメモリ管理方法
US7380247B2 (en) * 2003-07-24 2008-05-27 International Business Machines Corporation System for delaying priority boost in a priority offset amount only after detecting of preemption event during access to critical section
EP1676208A2 (en) 2003-08-28 2006-07-05 PACT XPP Technologies AG Data processing device and method
US7441101B1 (en) 2003-12-10 2008-10-21 Cisco Technology, Inc. Thread-aware instruction fetching in a multithreaded embedded processor
US7360064B1 (en) 2003-12-10 2008-04-15 Cisco Technology, Inc. Thread interleaving in a multithreaded embedded processor
US20060212874A1 (en) * 2003-12-12 2006-09-21 Johnson Erik J Inserting instructions
US8694976B2 (en) * 2003-12-19 2014-04-08 Intel Corporation Sleep state mechanism for virtual multithreading
US7206922B1 (en) 2003-12-30 2007-04-17 Cisco Systems, Inc. Instruction memory hierarchy for an embedded processor
US8643659B1 (en) 2003-12-31 2014-02-04 3Dlabs Inc., Ltd. Shader with global and instruction caches
US20050166177A1 (en) * 2004-01-27 2005-07-28 Ylian Saint-Hilaire Thread module chaining
US20050198475A1 (en) * 2004-02-06 2005-09-08 Infineon Technologies, Inc. Thread selection unit and method to fairly allocate processor cycles in a block multithreaded processor
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 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP4313720B2 (ja) * 2004-04-28 2009-08-12 パナソニック株式会社 データ処理プログラムおよびデータ処理装置
US20050246461A1 (en) * 2004-04-29 2005-11-03 International Business Machines Corporation Scheduling threads in a multi-processor computer
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
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
US7383403B1 (en) 2004-06-30 2008-06-03 Sun Microsystems, Inc. Concurrent bypass to instruction buffers in a fine grain multithreaded processor
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
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
US7523330B2 (en) * 2004-06-30 2009-04-21 Sun Microsystems, Inc. Thread-based clock enabling in a multi-threaded processor
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread 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
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US7676655B2 (en) * 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore 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
US7343474B1 (en) 2004-06-30 2008-03-11 Sun Microsystems, Inc. Minimal address state in a fine grain multithreaded processor
US7426630B1 (en) 2004-06-30 2008-09-16 Sun Microsystems, Inc. Arbitration of window swap operations
US7370243B1 (en) 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore processor
US7861063B1 (en) 2004-06-30 2010-12-28 Oracle America, Inc. Delay slot handling in a processor
US8225034B1 (en) 2004-06-30 2012-07-17 Oracle America, Inc. Hybrid instruction buffer
US7185178B1 (en) 2004-06-30 2007-02-27 Sun Microsystems, Inc. Fetch speculation in a multithreaded processor
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
US7774393B1 (en) 2004-06-30 2010-08-10 Oracle America, Inc. Apparatus and method for integer to floating-point format conversion
US7702887B1 (en) 2004-06-30 2010-04-20 Sun Microsystems, Inc. Performance instrumentation in a fine grain multithreaded multicore processor
US7890734B2 (en) * 2004-06-30 2011-02-15 Open Computing Trust I & II Mechanism for selecting instructions for execution in a multithreaded processor
US7178005B1 (en) 2004-06-30 2007-02-13 Sun Microsystems, Inc. Efficient implementation of timers in a multithreaded processor
US7747771B1 (en) 2004-06-30 2010-06-29 Oracle America, Inc. Register access protocol in a multihreaded multi-core processor
US7373489B1 (en) 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
US7434000B1 (en) 2004-06-30 2008-10-07 Sun Microsystems, Inc. Handling duplicate cache misses in a multithreaded/multi-core processor
US7487503B2 (en) 2004-08-12 2009-02-03 International Business Machines Corporation Scheduling threads in a multiprocessor computer
US7546308B1 (en) * 2004-09-17 2009-06-09 Symantec Operating Corporation Model and method of an n-tier quality-of-service (QoS)
US7392366B2 (en) * 2004-09-17 2008-06-24 International Business Machines Corp. Adaptive fetch gating in multithreaded processors, fetch control and method of controlling fetches
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
US8789051B2 (en) 2004-11-18 2014-07-22 Hamilton Sundstrand Corporation Operating system and architecture for embedded system
US7765547B2 (en) * 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
US8037250B1 (en) 2004-12-09 2011-10-11 Oracle America, Inc. Arbitrating cache misses in a multithreaded/multi-core processor
US7721292B2 (en) * 2004-12-16 2010-05-18 International Business Machines Corporation System for adjusting resource allocation to a logical partition based on rate of page swaps and utilization by changing a boot configuration file
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
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
US7506140B2 (en) * 2005-02-04 2009-03-17 Mips Technologies, Inc. Return data selector employing barrel-incrementer-based round-robin apparatus
US7657891B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
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
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
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
US7752627B2 (en) * 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor
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
US7681014B2 (en) 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US7921365B2 (en) * 2005-02-15 2011-04-05 Microsoft Corporation System and method for browsing tabbed-heterogeneous windows
CN102968302B (zh) * 2005-03-02 2016-01-27 英特尔公司 利用同步开销以改善多线程性能的机制
US20060206902A1 (en) * 2005-03-14 2006-09-14 Sujat Jamil Variable interleaved multithreaded processor method and system
US7917907B2 (en) * 2005-03-23 2011-03-29 Qualcomm Incorporated Method and system for variable thread allocation and switching in a multithreaded processor
US7765550B2 (en) * 2005-05-26 2010-07-27 Hewlett-Packard Development Company, L.P. System for controlling context switch of deferred requests using counter and flag setting of thread accessing shared resource or entering code region
US7631125B2 (en) * 2005-09-30 2009-12-08 Intel Corporation Dynamically migrating channels
US20070088680A1 (en) * 2005-10-14 2007-04-19 Microsoft Corporation Simultaneously spawning multiple searches across multiple providers
US8250503B2 (en) * 2006-01-18 2012-08-21 Martin Vorbach Hardware definition method including determining whether to implement a function as hardware or software
US8001549B2 (en) * 2006-04-27 2011-08-16 Panasonic Corporation Multithreaded computer system and multithread execution control method
US7584344B2 (en) * 2006-05-02 2009-09-01 Freescale Semiconductor, Inc. Instruction for conditionally yielding to a ready thread based on priority criteria
US8065459B2 (en) 2006-05-17 2011-11-22 Nxp B.V. Multi-processing system and a method of executing a plurality of data processing tasks
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
US20100192199A1 (en) 2006-09-07 2010-07-29 Cwi International, Llc Creating and using a specific user unique id for security login authentication
WO2008031050A2 (en) * 2006-09-07 2008-03-13 Black Lab Security Systems, Inc. Method of controlling a 32/64-bit parallel thread execution within a microsoft pc or server operating system utility program
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
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
US8479201B2 (en) * 2006-09-18 2013-07-02 Innovasic, Inc. Processor with hardware solution for priority inversion
JP2008123045A (ja) * 2006-11-08 2008-05-29 Matsushita Electric Ind Co Ltd プロセッサ
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
US8341604B2 (en) * 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
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
US7560945B2 (en) * 2007-02-06 2009-07-14 International Business Machines Corporation Integrated circuit failure prediction
US7779235B2 (en) * 2007-02-06 2010-08-17 International Business Machines Corporation Using performance data for instruction thread direction
US7895454B2 (en) 2007-02-06 2011-02-22 International Business Machines Corporation Instruction dependent dynamic voltage compensation
US7936153B2 (en) * 2007-02-06 2011-05-03 International Business Machines Corporation On-chip adaptive voltage compensation
US7865750B2 (en) * 2007-02-06 2011-01-04 International Business Machines Corporation Fan speed control from adaptive voltage supply
US8615767B2 (en) * 2007-02-06 2013-12-24 International Business Machines Corporation Using IR drop data for instruction thread direction
US8022685B2 (en) * 2007-02-06 2011-09-20 International Business Machines Corporation Temperature dependent voltage source compensation
US7714635B2 (en) * 2007-02-06 2010-05-11 International Business Machines Corporation Digital adaptive voltage supply
US7971035B2 (en) * 2007-02-06 2011-06-28 International Business Machines Corporation Using temperature data for instruction thread direction
WO2008109870A1 (en) * 2007-03-07 2008-09-12 Spinealign Medical, Inc. Transdiscal interbody fusion device and method
GB2448118B (en) * 2007-04-03 2011-08-24 Advanced Risc Mach Ltd Error recovery following erroneous execution with an instruction processing pipeline
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
US8832702B2 (en) * 2007-05-10 2014-09-09 Freescale Semiconductor, Inc. Thread de-emphasis instruction for multithreaded processor
EP2159692A4 (en) * 2007-06-20 2010-09-15 Fujitsu Ltd Information processor and load cancellation control method
KR101100145B1 (ko) * 2007-06-20 2011-12-29 후지쯔 가부시끼가이샤 명령실행 제어장치 및 명령실행 제어방법
GB2451845B (en) * 2007-08-14 2010-03-17 Imagination Tech Ltd Compound instructions in a multi-threaded processor
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US8005880B2 (en) * 2007-08-24 2011-08-23 International Business Machines Corporation Half width counting leading zero circuit
US8185572B2 (en) * 2007-08-24 2012-05-22 International Business Machines Corporation Data correction circuit
US7797131B2 (en) 2007-08-24 2010-09-14 International Business Machines Corporation On-chip frequency response measurement
US8972958B1 (en) 2012-10-23 2015-03-03 Convey Computer Multistage development workflow for generating a custom instruction set reconfigurable processor
JP2009080690A (ja) * 2007-09-26 2009-04-16 Nec Corp 情報記録再生システム,情報記録再生方法及びプログラム
DE112008003643A5 (de) * 2007-11-17 2010-10-28 Krass, Maren Rekonfigurierbare Fliesskomma- und Bit- ebenen Datenverarbeitungseinheit
US8151008B2 (en) * 2008-07-02 2012-04-03 Cradle Ip, Llc Method and system for performing DMA in a multi-core system-on-chip using deadline-based 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
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
US8640133B2 (en) 2008-12-19 2014-01-28 International Business Machines Corporation Equal duration and equal fetch operations sub-context switch interval based fetch operation scheduling utilizing fetch error rate based logic for switching between plurality of sorting algorithms
CN101661386B (zh) * 2009-09-24 2013-03-20 成都市华为赛门铁克科技有限公司 多硬件线程处理器的业务处理装置及其业务处理方法
WO2011051011A1 (en) * 2009-10-29 2011-05-05 International Business Machines Corporation A method, system and program to manage scheduling of processes
US8930907B2 (en) * 2009-12-01 2015-01-06 Microsoft Corporation Concurrency software testing with probabilistic bounds on finding bugs
WO2011161830A1 (ja) * 2010-06-25 2011-12-29 富士通株式会社 マルチコアシステムおよびスケジューリング方法
US20120005682A1 (en) * 2010-06-30 2012-01-05 International Business Machines Corporation Holistic task scheduling for distributed computing
US8789065B2 (en) * 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
US9465670B2 (en) 2011-12-16 2016-10-11 Intel Corporation Generational thread scheduler using reservations for fair scheduling
US9372478B2 (en) * 2012-01-04 2016-06-21 General Electric Company Control system for a power application
US10430190B2 (en) * 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
US10275251B2 (en) 2012-10-31 2019-04-30 International Business Machines Corporation Processor for avoiding reduced performance using instruction metadata to determine not to maintain a mapping of a logical register to a physical register in a first level register file
US9286068B2 (en) 2012-10-31 2016-03-15 International Business Machines Corporation Efficient usage of a multi-level register file utilizing a register file bypass
US8972803B2 (en) * 2012-11-14 2015-03-03 Alcatel Lucent Run-time default detection in a component associated with an application programming interface platform
US9569260B2 (en) 2013-05-31 2017-02-14 Microsoft Technology Licensing, Llc Efficient priority-aware thread scheduling
US9652284B2 (en) * 2013-10-01 2017-05-16 Qualcomm Incorporated GPU divergence barrier
US9665372B2 (en) 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9760375B2 (en) 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US10101889B2 (en) 2014-10-10 2018-10-16 Salesforce.Com, Inc. Dashboard builder with live data updating without exiting an edit mode
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
US10049141B2 (en) 2014-10-10 2018-08-14 salesforce.com,inc. Declarative specification of visualization queries, display formats and bindings
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US20180003614A1 (en) * 2015-01-30 2018-01-04 Hewlett-Packard Development Company, L.P. Multi-threaded fluid parameter signal processing
US10248463B2 (en) * 2015-02-13 2019-04-02 Honeywell International Inc. Apparatus and method for managing a plurality of threads in an operating system
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
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10706101B2 (en) 2016-04-14 2020-07-07 Advanced Micro Devices, Inc. Bucketized hash tables with remap entries
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US10248457B2 (en) 2016-08-10 2019-04-02 International Business Machines Corporation Providing exclusive use of cache associated with a processing entity of a processor complex to a selected task
US10275280B2 (en) 2016-08-10 2019-04-30 International Business Machines Corporation Reserving a core of a processor complex for a critical task
US10311047B2 (en) 2016-10-19 2019-06-04 Salesforce.Com, Inc. Streamlined creation and updating of OLAP analytic databases
US10248464B2 (en) 2016-10-24 2019-04-02 International Business Machines Corporation Providing additional memory and cache for the execution of critical tasks by folding processing units of a processor complex
US10223164B2 (en) 2016-10-24 2019-03-05 International Business Machines Corporation Execution of critical tasks based on the number of available processing entities
CN107391248B (zh) * 2017-07-28 2019-10-25 四川华泰电气股份有限公司 用于stm32系统的多级反馈队列调度方法
CN109726006B (zh) * 2017-10-27 2023-06-06 伊姆西Ip控股有限责任公司 用于控制存储系统的方法、装置和计算机存储介质
KR102327878B1 (ko) * 2017-11-07 2021-11-17 삼성전자주식회사 반도체 장치 및 반도체 시스템
US11068274B2 (en) * 2017-12-15 2021-07-20 International Business Machines Corporation Prioritized instructions in an instruction completion table of a simultaneous multithreading processor
CN109298942B (zh) * 2018-10-09 2022-07-12 Oppo广东移动通信有限公司 图片处理方法及电子装置
US11144318B2 (en) * 2019-08-26 2021-10-12 Arm Limited Method and apparatus for application thread prioritization
CN112579278B (zh) * 2020-12-24 2023-01-20 海光信息技术股份有限公司 用于同步多线程的中央处理单元、方法、设备及存储介质
CN114227716B (zh) * 2021-12-30 2024-06-04 重庆特斯联智慧科技股份有限公司 支持控制逻辑云调用的机器人系统及其方法
CN114490074B (zh) * 2022-01-30 2024-09-13 上海阵量智能科技有限公司 仲裁系统、方法、电子设备、存储介质及芯片
CN115080577B (zh) * 2022-05-27 2024-08-27 平安银行股份有限公司 数据统计周期切换方法、装置、设备及存储介质

Family Cites Families (57)

* 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
US4680698A (en) 1982-11-26 1987-07-14 Inmos Limited High density ROM in separate isolation well on single with chip
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
EP0473714A1 (en) 1989-05-26 1992-03-11 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 N.V., Eindhoven Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
DE69130723T2 (de) 1990-10-05 1999-07-22 Koninklijke Philips Electronics N.V., Eindhoven Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten
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
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
US5630128A (en) * 1991-08-09 1997-05-13 International Business Machines Corporation Controlled scheduling 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
DE69325785T2 (de) 1992-12-29 2000-02-17 Koninklijke Philips Electronics N.V., Eindhoven Verbesserte Architektur für Prozessor mit sehr langem Befehlswort
DE69429204T2 (de) 1993-03-26 2002-07-25 Cabletron Systems Inc Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk
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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7987346B2 (en) 2001-06-22 2011-07-26 Intel Corporation Method and apparatus for assigning thread priority in a processor or the like
US8850165B2 (en) 2001-06-22 2014-09-30 Intel Corporation Method and apparatus for assigning thread priority in a processor or the like
TWI502511B (zh) * 2004-03-31 2015-10-01 Synopsys Inc 用於管理多核心架構之資源的方法和設備
TWI481993B (zh) * 2009-12-22 2015-04-21 Intel Corp 用於多核心及執行緒的時間戳記計數器偏移的控制設備、方法及系統與處理器

Also Published As

Publication number Publication date
EP1027650B1 (en) 2012-06-20
IL135460A0 (en) 2001-05-20
CN1276890A (zh) 2000-12-13
CN1117319C (zh) 2003-08-06
WO1999021089A1 (en) 1999-04-29
EP1027650A1 (en) 2000-08-16
JP3714598B2 (ja) 2005-11-09
US6212544B1 (en) 2001-04-03
JP2001521219A (ja) 2001-11-06

Similar Documents

Publication Publication Date Title
TW432327B (en) Altering thread priorities in a multithreaded processor
TW409227B (en) Method and apparatus for selecting thread switch events 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
US6567839B1 (en) Thread switch control in a multithreaded processor system
US6018759A (en) Thread switch tuning tool for optimal performance in a computer processor
US7725689B2 (en) Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7836450B2 (en) Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US6061710A (en) Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US7870553B2 (en) Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
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