TW432327B - Altering thread priorities in a multithreaded processor - Google Patents
Altering thread priorities in a multithreaded processor Download PDFInfo
- 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
Links
- 238000012545 processing Methods 0.000 claims abstract description 66
- 238000000034 method Methods 0.000 claims abstract description 44
- 230000015654 memory Effects 0.000 claims description 191
- 238000003860 storage Methods 0.000 claims description 35
- 230000008859 change Effects 0.000 claims description 26
- 230000004044 response Effects 0.000 claims description 11
- 238000013461 design Methods 0.000 claims description 9
- 238000004891 communication Methods 0.000 claims description 6
- 230000003252 repetitive effect Effects 0.000 abstract description 2
- 239000000872 buffer Substances 0.000 description 19
- 238000006243 chemical reaction Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 18
- 238000004422 calculation algorithm Methods 0.000 description 10
- 230000000694 effects Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000014616 translation Effects 0.000 description 8
- 238000013519 translation Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 238000011068 loading method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000007704 transition Effects 0.000 description 5
- 238000007667 floating Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 230000007306 turnover Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 210000004027 cell Anatomy 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002028 premature Effects 0.000 description 2
- 210000000352 storage cell Anatomy 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 208000000044 Amnesia Diseases 0.000 description 1
- 208000031091 Amnestic disease Diseases 0.000 description 1
- 101100310641 Caenorhabditis elegans sop-2 gene Proteins 0.000 description 1
- 101100518501 Mus musculus Spp1 gene Proteins 0.000 description 1
- 208000027418 Wounds and injury Diseases 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000006986 amnesia Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 208000014674 injury Diseases 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000010387 memory retrieval Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
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)
- 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頁
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)
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)
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)
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 |
-
1997
- 1997-10-23 US US08/958,718 patent/US6212544B1/en not_active Expired - Lifetime
-
1998
- 1998-10-14 CN CN98810355A patent/CN1117319C/zh not_active Expired - Lifetime
- 1998-10-14 EP EP98952308A patent/EP1027650B1/en not_active Expired - Lifetime
- 1998-10-14 JP JP2000517342A patent/JP3714598B2/ja not_active Expired - Lifetime
- 1998-10-14 WO PCT/US1998/021724 patent/WO1999021089A1/en active Application Filing
- 1998-10-14 IL IL13546098A patent/IL135460A0/xx not_active IP Right Cessation
- 1998-10-20 TW TW087117329A patent/TW432327B/zh not_active IP Right Cessation
Cited By (4)
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 |