TWI298458B - Multithreaded processor, computing system with thread livelock units and method for arbitrating livelock priority requests - Google Patents
Multithreaded processor, computing system with thread livelock units and method for arbitrating livelock priority requests Download PDFInfo
- Publication number
- TWI298458B TWI298458B TW094131659A TW94131659A TWI298458B TW I298458 B TWI298458 B TW I298458B TW 094131659 A TW094131659 A TW 094131659A TW 94131659 A TW94131659 A TW 94131659A TW I298458 B TWI298458 B TW I298458B
- Authority
- TW
- Taiwan
- Prior art keywords
- processor
- line
- logical
- core
- logical processor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 58
- 230000009471 action Effects 0.000 claims description 61
- 238000012545 processing Methods 0.000 claims description 45
- 235000003642 hunger Nutrition 0.000 claims description 22
- 230000037351 starvation Effects 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 11
- 239000003638 chemical reducing agent Substances 0.000 claims description 6
- 101100366060 Caenorhabditis elegans snap-29 gene Proteins 0.000 claims 1
- 230000008878 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reaction Methods 0.000 claims 1
- 230000000977 initiatory effect Effects 0.000 claims 1
- 230000007704 transition Effects 0.000 description 19
- 239000000872 buffer Substances 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 9
- 238000001514 detection method Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 239000012536 storage buffer Substances 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
-
- 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
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)
- Bus Control (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
- Hardware Redundancy (AREA)
- Power Sources (AREA)
Description
1298458 (1) 九、發明說明 【發明所屬之技術領域】 本發明一般係與資訊處理系統有關,更特別的,是與 偵測與更正一多線處理系統內複數個同時的線之活鎖有 關。 【先前技術】 • 爲了提昇資訊處理系統,像是包括那些包括微處理器 的系統之效能,業界已應用到許多硬體與軟體技術,在硬 體方面,用以提昇微處理器效能的微處理器設計方法包括 被提昇的時脈速度、管線化(pipelining )、分支預測 p ( branch prediction )、超純量執行(super-scalar ‘ execution )、非循序執行(out-of-order execution )、以 及快取等,其中許多會使得電晶體數目增加,甚至在某些 實例中,電晶體數目增加的比率比效能提升的比率要大得 • 多。 爲了避免單純以增加電晶體來提升效能的方法,有些 是採用軟體的技術,有種利用軟體方法來提升處理器效能 稱爲「多線(m u 11 i t h r e a d i n g )」。在軟體多線中,指令流 (instruction stream)可被切割爲多重指令流,以被平行 地執行。另外,多重獨立軟體流也可被平行地執行。 在一種稱爲時間分割多線或時間多工(time-multiplex, TMUX )多線的方法中,經過一固定時間後,單一處理器 會在不同線間切換,在另一方法中,單一處理器在一觸發 • 4 - (2) 1298458 事件,像是長潛伏的快取未中(long latency cache miss ) 發生時,會於不同線間切換,後者的方法又稱爲事件切換 多線(switch-on- event multithreading,SoEMT),在一給 定時間內,最多只有一條線爲作動中的。 越來越多的硬體支援多線功能,舉例來說,在多處理 器系統如晶片多處理器(chip multiprocessor,CMP)系統 中,每一個處理器可同時地對多重軟體線的其中一個執行 動作,在另一稱之爲同步多線 (simultaneous multithreading, SMT)的方法中,單一實體處理器被作業 系統與使用者程式當作多重邏輯處理器來使用,對於SMT 來說,多重軟體線可同時在單一處理器上作動與執行,而 不需要切換,也就是說,每一個邏輯處理器維持一組完整 的架構狀態,但是實體處理器的許多其他資源,像是快 取、執行單元、分支預測器(b r a n c h p r e d i c t 〇 r )、控制邏 輯以及匯流排等均爲共享的,對於SMT來說,來自多重 軟體線的指令如此一來就可以在每一邏輯處理器上同時執 行。 對於支援多重軟體線的同時執行之系統,像是SMT 以及/或者CMP系統來說,有可能會因爲2或更多個同 時作動中的線之間有共享資源的衝突,使得其中一條線無 法達到正向的進展,這種由於資源衝突而使得一條線無法 達到正向進展的現象就稱爲活鎖(livelock)。 【發明內容及實施方式】 -5- (3) 1298458 在以下的敘述中,會先提出各種特定細節像是處理器 類型、多線環境、以及微處理器架構等,以便較完整地了 解本發明。不過,熟悉此技藝者應可了解,本發明在沒有 此類特定細節的情況下也可被實施。另外,有些爲人所熟 知的架構、電路以及類似的元件,在此並沒有詳細地顯 示,以避免對本發明造成不必要的阻擾。 在此所提出的方法、裝置與系統實施例係用來在多線 處理系統中偵測與避免活鎖的情形。在至少一個實施例 中,線活鎖單元包括用以追蹤邏輯處理器內軟體線的指令 的退役(retirement )。追蹤退役只是用來追蹤一條線是 否有達成正向的進展(forward progress)的一種方法。儘 管在此所討論實施例係以指令的退役作爲正向進展的指示 器,不過熟悉此技藝者應可了解在其他實施例中,可以利 用不同、或額外的指示器來決定一條線是否有達到正向的 進展。舉例來說,也可評估線進展訊號(thread progress signal)或暫存器,追蹤指令指標(pointer)的進展,或 評估其他任何的進展指示訊號或指示器。 圖 1所示爲執行多線的處理器 104與仲裁器 (arbitrator ) 180的至少一個實施例,處理器104與仲裁 器180可位於單一晶片封裝(single chip package) 103之 內,處理器104可包括複數個邏輯處理器150a-150n,用 以支援同時多線。在至少一個實施例中,處理器1 04利用 其複數個邏輯處理器150a-150n以提供同步多線(SMT) 處理能力。在此類實施例中,每一個邏輯處理器150a- -6 - (4) 1298458 150η各具有其本身的指令定序器(instruction sequencer)(比如參考圖3的340)。在此實施例中,處 理器1 5 0維持架構狀態的本身版本,不過單一處理器核心 1 04的執行資源也可被所有的同時s MT軟體線所分享。 對於SMT來說,複數個軟體線的每一個可同時由複 數個邏輯處理器150的其中之一執行。邏輯處理器15〇a-15 0η也可互換地被稱爲實體線(physical threads ),除非 有另外特別提出,不然在此所用的「線(thread )」一 詞’如果沒有在前面加上「實體」或「軟體」的字眼,就 集合地表示作動中的邏輯處理器以及該邏輯處理器所執行 的相關軟體指令流。 圖1所示的線活鎖單元(thread livelock unit,TLU ) 165a-165n可相關邏輯處理器150a -150η的每一個。在至 少一個實施例中,TLU 1 65以每線爲單位加以複製,用於 處理器104的每一實體線150a-150n。用於特定實體線 150的TLU 165在此有時可以簡稱爲實體線的”tlu”。 圖1所示的處理器104也可包括記憶體活鎖單元 (MLU) 166。一個記憶體活鎖單元166可用來1) 根據 記憶體活鎖指示器,偵測用於單一處理器1 04的同時線的 記憶體操作之間的活鎖,以及2 ) 可採取行動以解決此 活鎖。 TLU 165的操作將在圖5至圖7詳細地討論。一般來 說,線活鎖單元(TLU ) 165可1 )根據特定線活鎖指示 器,決定相關邏輯處理器所用的軟體線不能達成正向的進 -7- (5) 1298458 展(被活鎖(li ve-locked )),以及2 ) 可採取行動以解 決此活鎖。在至少一個實施例中,線活鎖單元1 6 5藉由計 算從它的邏輯處理器將指令退役後所經過的週期數目,決 定是否沒有正向進展,或者是有展示出潛在的正向進展。 在許多條件中,線活鎖單元1 6 5可能會偵測到一種特殊條 件’稱之爲「指令飢餓(instruction starvation)」,指令 飢餓是第一線可能阻擋或不適當地延遲了其他線取得指令 的情形,因此,我們會說其他線爲「指令飢餓 (instruction starved )或(I-starved)」,一條經歷指令 飢餓的線。即表示該線正經歷缺乏可執行的指令的狀態, 因爲它沒有指令可供退役,所以它無法達成正向進展。 當線活鎖單元1 65採取行動試圖解除一活鎖時,線活 鎖單元165被稱爲「作動中的(active )」,線活鎖單元 1 65可變成作動中的以執行數個活鎖斷路器動作的任何一 個,其用意在於刺激與TLU 1 65相關的線之正向進展,舉 例來說,第一邏輯處理器150的TLU 165因應它對應的邏 輯處理器1 50無法達到正向進展,可採取行動,要求其他 的一或更多個邏輯處理器150被暫停,或者其他的一或更 多個邏輯處理器150的微架構狀態(microarchitectural state )被重設(在此有時候被稱爲被清除(nuked )), 同樣地,舉例來說,一作動中的TLU 165可引發活鎖斷路 器(像是,舉例來說,以下圖9與共享的活鎖斷路器950 有關的討論)以消除指令飢餓,同樣地,如果偵測到長潛 伏的快取未中,則作動中的 TLU 165 可向仲裁器 .1298458 (6) (arbitrator) 180要求優先權,在以下的圖5-7中將更進 一步討論一些採取此類動作的實施例。 因此,根據一實施例,TLU 165a-165η和仲裁器 1 80,在處理器104的邏輯處理器150a-150η與MLU 166 之間實施優先權,以便在執行S Μ Τ軟體線時,偵測與解 除活鎖條件,此外,TLU 165a-165η可自己在邏輯處理器 15 0a-150η之間實施優先權,以便偵測與解除特定的活鎖 m 狀況,最後,對多重核心處理系統來說,仲裁器1 8 0也可 在多重核心之間實施優先權,以便解除線活鎖。不過,在 各種不同的實施例中,這些特點的部份或全部,可能會或 可能不會存在。 圖2爲能夠執行被揭露技術,用以偵測與解除複數個 同時的線之間的活鎖之多重核心多線計算系統200的至少 一個實施例的方塊圖,圖1與圖2之間的類似元件具有同 樣的參考號碼。 • 圖2所示的計算系統200包括至少一個處理器核心 l〇4a與記憶體202,記憶體202可儲存資料240以及指令 241,用以控制處理器104a-104η之操作。對至少一個實 施例來說,處理器l〇4a爲位於單一晶片封裝103的複數 個處理器核心104a-104η的其中一個,其他額外的處理 器,包括處理器1 〇4η,均爲非必須的,在圖2中是以橢圓 和虛線表示非必須的處理器。 由圖2所示,除了處理器核心l〇4a-1〇4η以外,額外 的邏輯280也可位於晶片封裝103上,這種額外邏輯280 -9 - (7) 1298458 在此有時被稱爲「非核心(uncore)」 可包括一或更多個快取 251以及> (arbitration and control logic ) 252, 個最終層級的共享統合資料暨指令快取 104η所共享,仲裁與控制邏輯252可包 控制器,總體通訊佇列,以及/或者仲 1所示)。 Φ 額外的邏輯280也可非必須地包括 器(integrated memory controller ) 2 5 3 器253可提供連接晶片外記憶體202的 例中,晶片組2 5 5 —般支援圖形相關的 * 也可連接一或更多個輸入/輸出(I/O) - 一個實施例來說,晶片組25 5可包括一 置,每一個晶片組裝置提供個別的介面 其中一個晶片組裝置可支援圖形功能, • 置可支援I/O連線以及/或者與一韌體 hub )連接的介面(未顯示於圖上)。 對於在晶片封裝103中不包括整合 的實施例來說,晶片組25 5可提供連接 的介面,在此類實施例中,晶片組255 制功能外,也可提供圖形、I/O、以及/ 功能。 儘管在此有關系統200的實施例係 點通訊控制器,其作爲仲裁與控制邏輯 ,額外的邏輯2 8 0 沖裁與控制邏輯 快取251可以是一 ,由處理器 104a-括一個點對點通訊 裁邏輯180 (如圖 一整合記憶體控制 ,整合記憶體控制 介面,在這類實施 功能,晶片組255 裝置290,對至少 或更多個晶片組裝 功能,舉例來說, 而另一個晶片組裝 集線器(f i r m w a r e 記憶體控制器253 晶片外記憶體202 除了提供記億體控 /或者上述的韌體 被描述爲具有點對 2 5 2的一部分,不 10- (8) 1298458 過並非所有的實施例都會用到這類控制器。實際上,熟悉 此技藝者應可了解在此所討論的活鎖偵測和更正機制,也 可以採用多點分支匯流排(multidrop bus )或其他通訊架 構。 圖2說明,如圖1所示,系統200的一或更多個處理 器核心1 0 4 a - 1 0 4 η的至少一個實施例可以是多線核心,其 中每一個邏輯處理器150a-150n包括一個TLU 165,且同 時包括記憶體活鎖單元166。 對於包括複數個處理器核心1 04 a -1 04 η的處理系統 200來說,處理器核心104a-l〇4n上的實體處理器150a-15 0η的其中之一所用的TLU可通知仲裁邏輯180,它是 否已經採取修正動作,但是它的實體線1 5 0還是不能在執 行相關的軟體線上,達到正向進展,在此情況下,有可能 是另一個處理器核心1 04的動作干擾到第一處理器核心 104a達到正向進展的能力,而仲裁邏輯180可賦予要求的 核心1〇4優先權,以及/或者採取行動以「清除 (nuke)」其他核心,以下將詳加解釋。 因此,每一處理器核心104的TLU 165a-165η,加上 每一核心的MLU 166以及仲裁器180可一起形成協調的 活鎖縮減器(livelock reducer )。活鎖縮減器可包括用於 每一核心1 〇4的一活鎖電路,其中活鎖電路可包括TLU 165a-165η以及MLU 166。活鎖縮減器可接收有關來自第 一處理器核心1 〇4a的一條線的線進展資訊,也可因應來 自第一處理器核心1 〇4a的第一線的線進展資訊,調整一 -11 - (9) 1298458 第二處理器核心1 〇4n的線的活動,以下將詳細說明。 處理窃1 0 4的至少一個實施例可被設計爲因應T L U 1 65偵測到實體線1 50沒辦法爲現行指令流達到正向的進 展,用以引發 MLU 166的動作邏輯,舉例來說,如果 TLU 165採取行動以消除指令端(卜side )的飢餓,則 MLU 166的邏輯可被引發(可參考圖6的狀態604 )。 圖3爲能夠執行被揭露技術,用以偵測與解除複數個 同時的線之間的活鎖之處理器1 04的至少一個實施例的進 一步說明之方塊圖,處理器104可包括一前端320,可預 先取回可能會被執行之指令。 在至少一個實施例中,前端3 20包括一取回/解碼單 元3 22,其包括用於一或更多個邏輯處理器150a-150n之 邏輯獨立的定序器(sequencers) 340a-340n,取回/解碼 單元3 22可從一指令快取(如圖4的I-快取 444 )取回適 當的指令,取回/解碼單元322也可包括解碼邏輯,用以 將指令解碼爲最後或中間的格式。 因此,取回/解碼單元3 22包括複數個邏輯獨立的定 序器,每一個對應至一實體線1 5 0,實體線1 5 0的定序器 1 40決定相關的軟體指令流中,要被實體線執行的下一個 指令,定序器140a-140η可利用分支預測器(如圖4的 432 )來決定下一個要被執行的指令爲何。 圖3說明處理器1 04的至少一個實施例,其中包括執 行核心(execution core ) 330,用以準備供執行的指令、 執行指令、以及退役被執行的指令。執行核心330可包括 -12- (10) 1298458 非循序邏輯(out-of-order logic ),以排程用以非循序執 行的指令。執行核心33〇可包括一或更多個資源362,當 指令流經過執行管線並已被排定要執行時,用來順暢以及 重新排序指令流。這些資源3 62可包括一或更多個指令佇 列’用以維持未排程的指令、記憶體排序緩衝器、載入要 求緩衝器以維持未完成的載入指令的輸入項、儲存要求緩 衝器,以維持未完成的儲存指令的輸入項、MLU (如圖1 的166 )、以及其他等等。 執行核心330可包括退役邏輯,用以重新排序指令、 以非循序方式執行、重新回到原始的程式次序,這種退役 邏輯可包括至少一個退役佇列 (retirement queue ) 364, 以維持在執行管線內的指令之資訊,直到指令被退役爲 止。在至少一個實施例中,退役佇列可被切割給邏輯處理 器150a-l 5 On,使得退役佇列的一部分係配置給每一個邏 輯處理器150a-150n,另外,每一個邏輯處理器150a-150n 可利用獨立的退役佇列。 退役邏輯可接收來自執行單元3 60的被執行指令的完 成狀態,並可處理結果,以根據程式次序達到(退役)適 當的架構狀態。退役邏輯也可包括線活鎖單元 165a-165η。在至少一個實施例中,處理器104包括用於每一邏 輯處理器150a-150n之獨立的TLU 165a-165n。 當然了,熟悉此技藝者將可了解執行核心330可依據 程式次序處理指令,也不需要提供非循序的處理。在此情 況下,退役佇列364並非重新排序緩衝器,而只是以程式 -13- (11) 1298458 次序維持指令的緩衝器,直到指令被退役爲止。同樣地, 用於有次序的處理器之執行資源362並不具備用來重新排 序以及追蹤用以非循序處理的指令之架構。 圖4爲能夠實施被揭露技術的多線非循序處理系統 4 00的至少一個實施例之方塊圖,圖4與圖1、2以及/或 者圖3中的類似元件具有相同的參考數字,圖4說明的處 理系統可包括記憶體次系統490、處理器4〇4、以及記憶 體控制器453。 圖4說明的處理器4〇4可包括沿著前端320的連線之 一的前端420,前端420提供指令資訊給執行核心430。 對於至少一個實施例來說,前端420可依據程式次序提供 指令資訊給執行核心430。 前端420可包括取回/解碼單元322,其包括邏輯獨 立的定序器340a-340n,每一個對應多重邏輯處理器l5〇a-150η的其中之一。對於至少一個實施例來說,前端420預 先取回可能會被執行的指令,分支預測單元432可提供分 支預測資訊,用以協助前端420決定那個指令可能會被執 行。 對於至少一個實施例來說,執行核心430準備用於非 循序執行之指令、執行指令、以及退役被執行的指令,執 行核心430可包括TLU 165,用於處理器404的執行資源 462可包括MLU 166、指令佇列、載入要求緩衝器、以及 儲存要求緩衝器等。 MLU 1 66係用以消除與以下設計特點有關之活鎖:邏 -14 - (12) 1298458 輯處理器150a-150n可共享記憶體系統490的資源,因 此,在程式次序中,來自一個邏輯處理器1 5 0的較舊的記 憶體指令可能會被來自另一邏輯處理器1 50的較新的記憶 體指令所阻擋,MLU 1 66的設計係用以偵測與更正此一情 形,MLU可能會暫停一個邏輯處理器,使得另一邏輯處理 器可以完成一或更多個記憶體操作。 執行核心430可包括退役邏輯,用以在退役佇列464 • 中重新排序指令、以非循序方式執行、重新回到原始的程 式次序,退役佇列464被稱爲重新排序緩衝器(reorder buffer,ROB),退役邏輯由執行單元360接收被執行指令 的完成狀態資訊。執行核心430可包括超過一個重新排序 # 緩衝器464,也就是,只有單一分割的重新排序緩衝器 • 464的一部分可維持所有的邏輯處理器150a-150n的未退 役指令資訊。另外,每一個邏輯處理器150可使用一個獨 立的重新排序緩衝器464。 • 執行核心430也可報告分支歷史資訊給在處理器404 的前端420的分支預測器432,以告知最新已知的分支歷 史資訊。 在此,「指令資訊(instruction information)」指的 是可被指令核心430 了解與執行,以最終格式出現之工作 的基本單位。指令資訊可被儲存在快取425內,快取425 可以是執行指令快取或執行記錄快取(execution trace cache )。對於使用執行指令快取的實施例來說,「指令 資訊」包括已經從指令快取444取回的指令,這類被取回 -15- (13) 1298458 的指令在它們被儲存在執行指令快取之前,可以 被解碼成微操作(miCr〇-operati〇n )。對於使用 的實施例來說,「指令資訊」可包括已從I (m a c r 〇 i n s t r u c t i ο η )被解碼的微操作的記錄,對 執行指令快取或記錄快取的實施例來說,「指令 樣可包括可儲存於指令快取(像是卜快取444 ) 原始位元組。 • 處理系統400包括記憶體次系統490,其中 或更多個快取、444,以及記憶體202,熟悉 應可了解,儘管沒有顯示在圖4,但是所有或部 442、444可被賓體地實施爲接近處理器404的 ’ (〇 η - d i e c a c h e ),記憶體次系統4 9 0可被實施 - 階層(memory hierarchy)。同時也可包括互連 促進資訊像是資料240、以及/或者指令241, 202傳輸至階層等級。熟悉此技藝者應可了解在 ® 各種記憶體階層的配置,包括非內含的階層配置 對熟悉此技藝者來說,儘管圖4中所示的爲 處理系統400,不過這裏所討論的實施例同樣也 序處理系統(in-order processing system ),這 理系統一般並不包括ROB 464,不過這類循序處 可包括退役佇列(如圖3的364 ),以便追蹤未 令。 圖5、6、以及7 —起所呈現的狀態圖表,用 法5 00的至少一個實施例,其用以決定在複數個 或可以不 記錄快取 ί集指令 於不使用 資訊」同 的指令之 可包括一 此技藝者 份的快取 晶上快取 爲記億體 453,以 從記憶體 此可使用 〇 非循序之 適用於循 類循序處 理系統也 退役的指 以說明方 同時的線 -16- (14) 1298458 之間存在有活鎖條件,與用以採取行動以解除活鎖條件。 對至少一個實施例來說,線活鎖單元,像是圖1 -4的TLU 165,可執行方法500,TLU 165可以是一個硬體單元,將 方法500當作狀態機(state machine)來實施。 以下將參考圖3、4來說明圖5,作爲圖5的背景說 明,對至少一個實施例來說,一個SMT處理器,像是分 別於圖3與圖4所說明的處理器104與404,每一邏輯處 理器1 50維持一組完整的架構狀態,此外,處理器的某些 特點,像是退役佇列 364或ROB 464,以及執行資源 3 62、4 62,可爲每一個現行作動中的軟體線維持微架構狀 態資訊。在特定條件下,作動中的線可被暫停,而線的微 架構狀態可自SMT邏輯處理器丨50被清洗或清除 (nuked )。藉由暫停與清除非選擇的邏輯處理器(它也 可以達到正向進展)的微架構狀態,被選擇邏輯處理器就 能夠脫離現行的停滯狀態,在沒有非選擇的邏輯處理器的 干擾下,達到正向的進展。 圖5所示的方法500包括一閒置狀態(idie state) 5〇2,圖5進一步顯示當符合一或更多個重設條件5〇1 時’可進入(5 5 1 )閒置狀態5 02,爲了簡化圖5與6、區 塊5 〇 1與狀態5 02之間的箭頭5 5 i代表滿足任何重設條件 5 0 1 ’熟悉此技藝者應可了解。對於一或更多個重設條件 來說,可由狀態504、506、508、602、604、606的其中 個轉移至狀態502 ’如圖5與6所示。不過,爲了簡化 之故’顯示此類轉移的箭頭並沒有顯示在圖5與6之上。 -17- (15) 1298458 圖7所示爲一或更多個重設條件5 Ο 1的至少〜個實施 例,在此將參考圖4與5來說明圖7。對至少一個實施例 來說,重設條件501可被應用於單一核心處理系統或多重 核心處理系統,在以下的討論中,「現行邏輯處理器」一 詞所指爲,與執行方法500以決定重設條件501是否爲真 (true )的TLU1 65相關之邏輯處理器150。因此,儘管在 處理器104中一或更多個其他的TLU 165 a-165η也可同時 地執行方法,但是「現行邏輯處理器」是我們有興趣的邏 輯處理器,與處理器1 04的其他邏輯處理器1 5 0對照。 圖7所述的一或更多個重設條件501,在TLU 165於 圖5與6所述的任何一個狀態,包括狀態502、504、 506、508、602、604、606的情況下,可以爲真,如果一 或更多個重設條件成真,則會觸發轉移至狀態502的動 作,如上所述,從任何其他狀態轉移至狀態502是以箭頭 55 1所歸納,其代表從任何其他狀態轉移至閒置狀態 5 02 ° 圖7所示重設條件501的狀態Α顯示,如果TLU 165 已經被關閉的話,TLU 1 65應該維持在/回到閒置狀態 5 02,此類條件A反映一種假設,也就是,對至少一個實 施例來說,TLU可被關閉,舉例來說,TLU 165可於一例 外處理常式(exception-handling routine)的執行過程中 被關閉,在此類可由微程式碼或其他韌體所執行的常式 中,可關閉活鎖偵測動作,一種可能會導致TLU 1 65被關 閉的例外是一種訊號的加入,像是停止時脈訊號,其顯示 -18- (16) I29S458 晶片組(如圖2的25 )已經要求處理器1 04轉移至一較低 功率的狀態。 圖7所示重設條件501的狀態B顯示,如果有偵測到 重設觸發的話,TLU 1 65應該維持在/回到閒置狀態 502。在偵測到此類觸發時,TLU 165藉由維持在/回到 閒置狀態502,有效地重設它的活鎖決定活動,對於至少 一個實施例來說,重設觸發可由使用者啓動的事件,像是 啓動init pin或關機重設等,而加以啓動。 圖7所示重設條件501的狀態C說明,如果其相關的 邏輯處理器爲閒置的,而且因此並沒有現行地嘗試去執行 一軟體線,TLU 165應該維持在/回到閒置狀態502。對 至少一個實施例來說,此類條件可由檢查一暫存器,而非 爲TLU 165維持一個「線作動中」的指示器,而被TLU 165偵測到。 圖7進一步顯示重設條件501的狀態D說明,如果處 理器核心1 04的邏輯處理器1 5 0係處於獨佔存取模式的 話,TLU 165應該維持在/回到閒置狀態502。在獨佔存 取模式下,一個邏輯處理器可能正在採取行動,而其它所 有的邏輯處理器都需要知道。舉例來說,有時候當邏輯處 理器正在執行一個指令,該指令會影響到共享資源,像是 ROB 4 64的重新分割(re-partitioning )。或者是,舉例來 說,邏輯處理器可執行一指令,造成整體的改變,像是在 控制暫存器中設定一快取關閉位元(cache disable bit )。 在這類情況下,所有其他的邏輯處理器應該暫停執行,直 -19- (17) 1298458 到獨佔存取操作完成爲止。在這類期間,被暫停的TLU 1 65不應預期它的邏輯處理器可以作出正向進展,而且應 該維持在/回到閒置狀態502。對於至少一個實施例來 說,TLU 165可藉由檢查一共享訊號(可以由微架構暫存 器反映),決定是否符合條件D,以決定是否處理器1 04 的另一邏輯處理器1 5 0在獨佔存取模式。 圖7進一步所示的重設條件501的狀態E說明,如果 TLU 165的邏輯處理器150已轉移出指令端(I-side)飢 餓動作狀態604 (圖6 )的話,TLU 165應該維持在/回 到閒置狀態502。此類轉移顯示已採取成功的行動(以下 將配合狀態604加以討論)以消除現行邏輯處理器1 50的 指令端飢餓,而TLU 165應該回到閒置狀態502以開始新 的活鎖偵測序列,以便讓飢餓避免動作有時間生效。 圖7進一步所示的重設條件501的狀態F說明,如果 記憶體活鎖單元166目前爲作動中的,TLU 165應該維持 在/回到閒置狀態502。在條件F下,TLU 165將優先權 交給記憶體活鎖單元1 66,此類優先化方法可用於避免因 TLU 165與MLU 166之間的衝突而產生活鎖的情況。也就 是說,如上所述,MLU 166可暫停一個邏輯處理器150的 記憶體操作,使得另一邏輯處理器可完成一或更多個記憶 體操作,若沒有重設條件F,被暫停的邏輯處理器可能會 錯誤地偵測到它因爲一個不想要的活鎖情況,而無法達到 正向進展,條件F確保在這類狀況下,TLU 165將優先權 交給MLU 166,因此,重設條件F確保每一個TLU 165與 -20- (18) 1298458 MLU 1 66知道彼此,並彼此協調運作。 圖7進一步顯示的重設條件501的狀態G說明,如果 一個TLU 165的邏輯處理器150已被維持在一「清除 (nuke )」動作,則TLU 1 65應該維持在/回到閒置狀態 5 02。用於邏輯處理器150的清除動作具有以下的結果: 現行指令以及任何其他需要用來完成現行巨集操作的執行 動作都會被完成。所有進一步的指令執行動作會被暫停, 而所有的管線、以及用於邏輯處理器1 50的相關微架構狀 態會被清除。在此情況下,不僅是線的處理被暫停,同時 它的微架構狀態會被清除。 對現行邏輯處理器來說,條件G可爲真,舉例來說, 邏輯處理器150a-150η之中的另一個可啓動所有「清除」 的動作。舉例來說,另一邏輯處理器完成狀態606後,啓 動了一個全部「清除」的動作,就可滿足這類條件。在這 種情況下,對至少一個實施例來說。現行邏輯處理器會被 暫停,而其微架構狀態會被清除,用於現行邏輯處理器的 TLU 165因此會回到閒置狀態502。 另外,一特定邏輯處理器即使在另一邏輯處理器沒有 完成狀態606時,也可滿足條件G。在此,用於現行邏輯 處理器1 50的一「清除」動作可由處理器中幾個其他事件 的任何一個啓動,而這些事件除此之外與方法5 00的狀態 並不相關。舉例來說,「清除」事件可以是對現行邏輯處 理器1 5 0執行一中斷的結果,用以爲一非循序處理器1 〇 4 提供精確的例外處理。 -21 - (19) 1298458 圖7進一步顯示的重設條件5〇〗的狀態η說明,如果 另一邏輯處理器的TLU 165已經變成「作動中」,並且在 採取活鎖斷路器動作的過程中,則TLU 1 65應該維持在/ 回到閒置狀態502。以條件η來說,如果第一個TLU 165 已經從偵測階段(見502、504、506 )進至「作動中」的 階段(見508、60 2、606、604 ),視該TLU是否有採取 某種形式的更正動作以嘗試消除一活鎖條件而定,則第二 個TLU 165會被設計讓給第一 TLU丨65使用。要滿足條件 Η,必須每一個TLU 1 65都知道處理器上其他TLU 1 65的 狀態(由圖3所示,對至少一個實施例來說,所有的TLU 165a-165n都會彼此溝通)。 有一種「平手(tie )」的情況可能會發生,其‘中在同 一時脈週期內,有超過一個TLU 165試著轉移至作動中的 狀態。在此情況下,優先權可能只會給要求的TLU 1 65的 其中一個。舉例來說,優先權可能會被指派給編號最小 (lowest-numbered )的 TLU (也就是 165a 具有比 165b 要高的優先權,所以165b會回到閒置狀態502 )。另外, 在此也可應用其他許多種優先權選擇機制。對至少一個實 施例來說,是由仲裁器(如圖1的1 80 )實施優先權選 擇,用來指派優先權的仲裁器政策可以是’但不一定是’ 如同圖8中區塊806所用的政策。 圖7進一步顯示的重設條件501的狀態I說明’如果 一個TLU已顯示出貪婪的行爲,而且可能會導致另一邏 輯處理器150的活鎖條件,則該TLU 165應該維持在/回 -22- (20) 1298458 到閒置狀態5 02。此類貪婪的行爲可從幾種方向被識別。 也就是說,如果一個TLU的邏輯處理器150的ROB 3 64 部份因爲指令端飢餓以外的理由而變成空的,那麼TLU 1 65應該不用維持在非閒置狀態,比如說處理器1 50的 ROB 3 64部份因爲它的執行資源之一爲空的。 舉例來說,一邏輯處理器1 5 0藉由發出一連串儲存指 令,佔掉系統的記憶體頻寬,並使得現行邏輯處理器 150 所用的儲存緩衝器塞滿了儲存指令,這就有可能是貪婪的 行爲,對至少一個實施例來說,邏輯處理器1 5 0處理指令 的工作會被暫停,直到執行資源(像是儲存緩衝器)不再 滿載爲止,在邏輯處理器150因此而暫停的時間內,現行 邏輯處理器的ROB 364部份可能會是空的,但是另一執行 資源(也就是儲存緩衝器)爲滿的。因此,對條件I來 說,配置給現行邏輯處理器1 50的ROB 364部份爲空的, 但是其儲存緩衝器(或其他任何標示的執行資源)充滿被 退役的儲存指令,而其資料還沒放進快取或記憶體內,可 識別出貪婪行爲,在此情況下,現行邏輯處理器1 50會回 到閒置狀態502,並且在另一邏輯處理器的TLU 165需要 變成作動中的時候,暗示地讓出優先權。 圖7進一步顯示的重設條件501的狀態J說明,如果 TLU 165的邏輯處理器具有可執行的指令,且另一個邏輯 處理器正在執行高優先權上鎖順序(high-priority lock sequence),則TLU 165應該維持/回到閒置狀態。例 如,高優先權上鎖的順序可以爲一自動指令。依據自動指 -23- (21) 1298458 令,處理器的記憶體邏輯僅在被鎖住的線(locked thread )運作,無論多久,它會一直運作直到完成上鎖作 業。這種高優先權上鎖順序可代表處理器中最高的優先 權。因此,如果另一個邏輯處理器正在處理這種高優先權 上鎖的操作,重設條件J會維持/回到閒置狀態5 02以實 施此一優先權順序。如果其他處理器正執行一連串的優先 權上鎖操作,而使得現行邏輯處理器1 5 0有一段長時間無 Φ 法執行自己記憶體其中之一的指令,貝[J M L U 1 6 6可能會 被假設地被引發,以允許現行的邏輯處理器去執行其記憶 體指令。因此,由於2個邏輯處理器之間會出現競爭的記 憶體指令,MLU 166可保護一個邏輯處理器,使其避免因 ‘ 爲另一個邏輯處理器的一連串優先權上鎖操作,而導致長 ~ 時間不被處理的情形。 然而,如果現行邏輯處理器沒有指令要執行的話,則 不符合重設條件:ί (也就是現行邏輯處理器的ROB 464的 ® 部分是空的),換句話說,如果另一個邏輯處理器正在執 行高優先權上鎖操作,但是現行邏輯處理器的ROB 464的 部分是空的,則TLU 165不會回到閒置狀態502。如果 ROB的部分 464是空的,則現行邏輯處理器就沒有指令 要執行。因此MLU 166就無法用來保護現行邏輯處理 器,使其避免受到另一個邏輯處理器的一連串高優先權上 鎖操作的影響。在這種情形之下,TLU 165就負責要保護 現行邏輯處理器,避免其因爲一連串的高優先權上鎖操作 而被暫停過久。所以在階段506應該決定:如果現行邏輯 -24- (22) 1298458 處理器150有一個空的ROB 464部分,且另一線有高優先 權上鎖正在進行,則現行TLU 1 65是否應執行指令端飢餓 的避免行動。 圖7進一步顯示的重設條件5 0 1的狀態K說明,如果 現行邏輯處理器1 5 0收到長潛伏的資料,則TLU 1 6 5應該 維持/回到閒置狀態。對至少一個實施例來說,因爲快取 未中而一直等待資料或指令的邏輯處理器終於收到資料或 指令時,則滿足條件K,此時,現行邏輯處理器! 50就應 回到閒置狀態5 0 2,這是因爲邏輯處理器1 5 0如果不回應 條件 K的滿足而回到閒置狀態5 0 2,可能會錯誤地將傳 送一與快取未中相關的優先權要求5 3 0給仲裁器i 8 〇 (如 圖1與2 )(見以下有關狀態506的討論)。 圖7進一步顯示的重設條件5 01的狀態L說明,如果 在相關的時間間隔內,現行邏輯處理器1 5 0已經退役至少 一個最終格式指令(final-format instruction),則 TLU 165應該維持在/回到閒置狀態 502。在至少一實施例 中,最終格式指令係一微操作(micro-operation),以及 相關的時間週期則是單一時脈週期。如果滿足條件L,那 麼我們可以說現行邏輯處理器1 50已經達成執行其線指令 資料流的進展,因此活鎖條件不存在,TLU 1 65應回到或 維持在閒置狀態502。
圖7進一步顯示的重設條件5 0 1的狀態Μ說明,如果 邏輯處理器傳送優先權要求530給仲裁器180 (如圖1與 2 )(見以下狀態506的描述)的能力被關閉,貝TLU -25- (23) (23)
1298458 165應該維持在/回到閒置狀態502。當邏輯處 優先權要求530給仲裁器180的能力被關閉, 『功能失效(defeature )』爲真。在1 ) 任何 狀態506傳送優先權要求530以外的條件爲真, 功能失效爲真的情況下,則條件Μ可被滿足。在 之下,即使從狀態506傳送優先權要求530的條 邏輯處理器150也無法傳送要求。因此邏輯處理 該維持在/回到閒置狀態502,而不是轉移至/ 殊情形的狀態506 (詳見下述)。 在至少一實施例中,如果邏輯處理器1 50 (on-core)快取未中(資料或指令)且正等待來 來源(off-core source )(像是核心外共享快取 片外記億體202 )的指令或資料,即滿足第一部 Μ (也就是「1 )任何除了導致狀態506傳送優 530以外的條件爲真」)。這類的未中可能發 如,如果 1 )發生載入指令(load instruction ) 中,且該載入指令在退役’但卻因爲載入資料並 器核心1 04而無法退役(也就是不在任何核心內 不在載入暫存器(l〇ad Buffer,LDRB)中。這種 能發生在,例如2 )邏輯處理器1 50正在經歷一 的核心未中且正等待來自核心外來源(像是核心 取2 5 1或晶片外記憶體2 0 2 )的指令資訊’或考 處理器150正在經歷一 STA微操作(micr0-0P) 未中(其可以是關於儲存巨集指令 理器傳送 我們就說 除了導致 還有2) 這種情形 件爲真, 器150應 維持在特 的核心內 自核心外 251或晶 分的條件 先權要求 生於,例 的快取未 不在處理 快取,亦 未中也可 指令取回 外共享快 3)邏輯 的核心內 (Store -26- (24) 1298458 M a c r 〇 i n s t r u c t i ο η ) 的一'最終格式儲存位址( Address )微操作)且因此正等待取回由儲存位址 標示的記憶體位置的核心外資訊。 同樣地,如果STA微操作是在退役的,但卻因 入資料的儲存指令相關的記憶體位置(儲存位址) 理器核心 104,也不在快取或是儲存緩衝器 Buffers, STBR)上,這就滿足第3條件。一般說來 種條件的任一種都可造成TLU 1 65轉移至特殊情 5 0 6。不過,如果功能失效爲真,重設條件μ表示 應發生,因爲在這個條件之下,邏輯處理器1 5 0傳 權要求5 30的能力已經被停止。 回到圖5,我們可以看到,藉由TLU 1 65可進 的狀態504、506,以判斷活鎖條件是否存在。這 504、506,加上閒置狀態502,在此被稱爲『偵 態。雖然TLU 165在這種偵測狀態502, 504, 506, 會被視爲作動中的,因爲它只是在監視某些條件, 會採取任何確定的動作以企圖打斷活鎖。因此參照丨 示,當邏輯處理器1 50在偵測狀態502、504、506 個之中,不會觸發重設條件5 01的重設條件Η,而 造成其他的邏輯處理器,見150a - 150η,將優先權 行邏輯處理器150。 要進入到兩個剩下的偵測狀態5 04與5 0 6,是 斷條件是否會造成邏輯處理器1 5 0轉移出閒置狀態 外來區分,包括1 )最終可從傳送優先權要求5 3 0
Store 微操作 爲與寫 不在處 (Store ,這3 況狀態 轉移不 送優先 入其他 類狀態 測』狀 它並不 而且不 圏7所 的任一 且不會 讓給現 藉由判 502之 給仲裁 -27- (25) 1298458 器180(如圖1與2)獲得利益,或者2)邏輯處理器150 處於指令端(I-side )的飢餓,但卻由於另一線的高優先 權上鎖而被阻擋(這類條件在此被稱爲「特殊情形」)。 如果是的話,則TLU 165從閒置狀態502轉移5 52成爲初 始計數狀態(i n i t i a 1 c 〇 u n t i n g s t a t e ) 5 0 4 (動作 5 5 3 )。 每個狀態504、506將在下面分別進一步地詳述。 從閒置狀態502進入到這個特殊狀態506 (動作 • 552)是在,當1 )沒有重設條件501爲真,且2) a ·邏輯處理器1 5 0正經歷核心內快取未中;或 b.邏輯處理器1 50有個空的ROB 464 ,但是另 一個邏輯處理器卻正處於最優先權(HP )上鎖的過程中。 ’ 在後者的情形下(條件2b ),現行邏輯處理器1 5 0可 ’ 能正處於指令端(I-side )飢餓。然而,現行邏輯處理器 1 5 0也在暫停中,因爲另一線正執行高優先權上鎖操作。 因此,除非高優先權上鎖操作被解除,現行邏輯處理器 ® 1 5 〇不應進行至任何『作動中』狀態。 在前者的情形下(條件2a ),邏輯處理器1 50正經歷 核心內快取未中,對至少一個實施例來說,這類快取未中 可由檢查上述關於重設條件50 1之條件Μ的3個條件來加 以判斷:在除役的載入或STA指令,或無法完成指令取 回。當然,熟習此技藝者應可了解,這類實施例不應用來 限制本發明,而且在其他實施例中,偵測核心內快取未中 可藉由評估其他或額外的條件加以決定。在任何事件中, 當邏輯處理器1 50正在經歷核心內快取未中(而功能失效 -28- (26) I.29S458 (defeature )不爲真)的時候,TLU 165轉移至特 狀態506 (動作5 52 ),以允許傳送一優先權要求訊 給仲裁器1 8 0,這對其他邏輯處理器所造成的影響 比起直接轉移至更劇烈的動作狀態,像是暫停維 5 08來說,後者很快地影響到其他邏輯處理器的處g 處於特殊情形狀態506的期間,TLU 1 65可利 器來算時脈週期的次數,其時間係從進入特殊情形 5 06開始計算。或者在另一實施例,亦可利用其他 間的方法,而不是僅限於計算時脈週期。在經過一 的時脈週期(X )次數之後,TLU 1 65可維持一優 求5 3 0。如果1 )現行邏輯處理器丨5 〇正經歷快取 以及2 )從TLU I65進入特殊情形狀態506已經過 的總時間(X ),則發出優先權要求530。 優先權要求53〇到達仲裁器180 (圖1與2 ) 求仲裁器180提供現行邏輯處理器15〇相較於其他 理器(見150a - 150η)的記憶體要求更高的優先 外,在多核心的實施例中(見圖2的104a-104η ) 權要求530可要求仲裁器180提供現行處理器核心 較於其他處理器核心的記憶體要求更高的優先權。 的實施例中,優先權要求5 3 0並不適用於單一核心 (見圖1 )。因此,用於單一核心實施例的特定核 先權要求5 3 0係以圖5的虛線呈現,以表示其非必 質。在發出優先權要求5 30之後,TLU 165可維持 情形狀態506,直到以下將討論的離開條件的其中 殊情況 號5 3 0 最小, 持狀態 I 〇 用計數 的狀態 計算時 段預定 先權要 未中, 了預定 ,並要 邏輯處 權。另 ,優先 104年巨 在後面 的系統 心的優 要的本 在特殊 之一成 • 29 - (27) 1298458 真爲止。 只要與TLU 165相關的ROB部分464是空的,以及 任何其他的邏輯處理器(見150a-l 50η)在爲處理器核心 1 〇4執行高優先權上鎖操作,則邏輯處理器會停留(動作 555)在特殊情形狀態506中。然而,如果TLU 165在特 殊情形狀態506期間,決定另一個邏輯處理器的HP上鎖 進展指示器(lock-in-progress indicator)已經從真轉爲假 (false),則TLU 165會離開特殊情形狀態506,並進入 (動作554 )到「作動中」狀態,即暫停維持狀態508, 在此期間現行邏輯處理器1 5 0對其他邏輯處理器維持一暫 停。因此,如果ROB 464部分是空的,就略過初始計數狀 態504。當ROB 464部分是空的時候,狀態506至狀態 5 08的轉移(動作554 )實施高優先權處理,因爲它不用 花時間執行初始倒數狀態504。如果ROB 464是空的,倒 數會花費太久,在此情形中,邏輯處理器沒有任何的指 令,而且TLU 1 65係被設計用以盡快獲得更多的指令給 ROB 464。 圖5顯示,如果TLU 165決定用於核心104的記憶體 活鎖單元166已經被觸發,則TLU 165亦可轉移(動作 556 )出特殊情形狀態506。在這種情形下,TLU 1 65從特 殊情形狀態5 0 6轉移(動作5 5 6 )到初始計數狀態5 04。 在這個操作中,TLU 165暫時將優先權讓給MLU 166,讓 MLU邏輯得以打斷因邏輯處理器1 50所經歷的長潛伏的核 心內快取未中(見上述用以進入特殊情形狀態506的條件 -30- (28) I29S458 2a),所造成的潛在的活鎖。在處理的期間,MLU 指定優先權給特定的線。TLU 166藉由在轉移556 先權讓給MLU 1 66,雖然已經指定優先權給不同的 理器150,TLU可有效地避免將優先權指定給現行 理器時,而MLU 1 66已經把優先權指派給另一邏 器150的情形。據此,TLU 165與MLU 166 —起合 次僅將優先權指定一線。因此,TLU 165轉移556 # 計數狀態504,以允許在決定MLU 166還不能消除 活鎖,以及決定現行邏輯處理器1 5 0在經過一段可 時間後仍無法有進一步的進展之前,MLU 166可以 的預定時間間隔Υ (見以下有關狀態504的詳述) ” 要注意的是,依據上述圖7所述的重設條件Κ 〜 MLU可成功地打斷記憶體活鎖使得未中的快取資訊 或指令)終被接收,則TLU 165會轉移551出初始 態504而回到閒置狀態502。 ® 要注意的是,依據重設條件Κ,在正常處理 中’如果被要求的資料或被取回的指令最終被接收 在沒有MLU 166的協助之下,也可發生從特殊情 5 0 6轉移回閒置狀態5 0 2的動作5 5 1。 如上所述,如果特殊情形的條件不存在(核心 未中或空的R Ο Β + Η Ρ上鎖)且沒有任何重設條件 真’則TLU 165從閒置狀態502轉移5 5 3至初始計 5 04。在初始計數狀態的期間,TLU 1 65維持一計 決定TLU 165是否已經在初始計數狀態504停留一 166可 時將優 邏輯處 邏輯處 輯處理 作,一 至初始 記憶體 接受的 有完整 〇 ,如果 (資料 計數狀 器操作 的話, 形狀態 內快取 5〇1爲 數狀態 數器以 段預定 -31 - (29) 1298458 時間Y。預定的時間Y的長短可被決定,以反映在經過了 這段時間後,如果現行邏輯處理器1 50 —直無法達成進 展,則可假設現行邏輯處理器1 50正經歷一活鎖條件。 對至少一個實施例來說,TLU 1 65在初始計數狀態 5 04下維持一個倒數計時器,其中計時器被設定爲預定的 時間量Υ,然後經過一個時脈週期就減1。如果計數器變 成〇 (或其他預定的最小値),則邏輯處理器1 50可能在 活鎖條件下,並保證可以轉移至「作動中」的狀態。從預 定的計時數値Υ,倒數至預定的最小値。對至少一個實施 例來說,代表一預定數目的時脈週期,在此時間內缺少正 向進展是可被容忍的。 要注意的是,如果在初始計數狀態(initial counting state ) 5 04中任何重設條件501爲真,則TLU 165會轉移 至閒置狀態502,而在初始計數狀態504所用的計數器可 被重新初始化。在這類重設狀態,即狀態L是最終格式指 令的退役。如果在初始計數狀態5 04並未發生這類退役情 形,那麼現行邏輯處理器在執行其指令時並沒有達到正向 進展。其他的重設狀態,即A - K、以及Μ可提供可能的正 向進展的其他指示方式。如果在預定數目的時脈週期內並 沒有發生任何一種重設狀態,那麼TLU 1 65會從初始計數 狀態504轉移5 57至暫停維持狀態508 (動作557 )。 因此,圖5所示爲可從初始計數狀態5 〇4 (見轉移動 作5 57 )或特殊情形狀態506 (見轉移動作554 )進入暫停 維持狀態508。在暫停維持狀態508期間,TLU 165對處 -32- (30) 1298458 理器104的每一個邏輯處理器150a-150ri維持一暫停訊 號,除了它自己的邏輯處理器(也就是現行邏輯處理器) 以外,這個動作對處理器104的所有邏輯處理器150a-1 5 On實施了 一優先權。對至少一個實施例來說,在暫停維 持狀態508期間維持的暫停訊號讓其他邏輯處理器(見 150a- 150η)無法對執行單元360發出指令,TLU 165維 持在暫停維持狀態,並持續在處理器1 04的每一個其他的 邏輯處理器1 50維持一暫停訊號,直到符合以下任何一個 離開條件爲止。 圖5所示爲TLU 1 6 5的至少一個實施例,其中當預定 的時間期間一--以Ζ 1個時脈週期表不--已經逾時,而 且同時ROB 464與現行邏輯處理器相關的部份並不是空 的,貝U TLU 165可離開暫停維持狀態508 (動作5 5 8 ), 在此情況下,因爲適當的ROB 464部份並不是空的,現行 邏輯處理器1 50並沒有經歷指令飢餓,然而,現行邏輯處 理器1 50仍持續對其他所有的邏輯處理器維持一暫停訊號 已經Ζ!個時脈週期,還不能經歷正向的進展。暫停其他 邏輯處理器並不允許現行邏輯處理器150達到正向進展, 因此需要額外的動作以嘗試消除活鎖條件,因此TLU 165 在該離開條件爲真的情況下,會轉移至圖6的狀態602 (動作5 5 8 )。 如果另一方面,用於現行邏輯處理器150的ROB 464 的被指定部份是空的,那麼上述有關狀態508的第1個離 開條件不爲真,由於ROB 464部份爲空的,現行邏輯處理 -33- (31) 1298458 器150可能正經歷指令飢餓,因此,如果ROB 464部份是 空的,TLU 165在轉移至圖6的狀態602 (動作559 )之 前,會等待一預定長度的時間,其中邏輯處理器1 50可採 取行動以消除指令飢餓。 參考圖6,其中將搭配圖4予以說明,我們可了解指 令端飢餓動作狀態604可因應其ROB 464部份持續至少預 定長度的時間Z2爲空,而自暫停維持狀態508進入。在 指令端飢餓動作狀態604中,TLU 165採取一或更多個行 動,以嘗試將更多的指令送進現行邏輯處理器的ROB 464 部份。這些動作被稱爲飢餓避免動作。在狀態604,TLU 165取消在狀態508時對其他邏輯處理器150a-150n維持 的暫停訊號,在此維持狀態下,現行邏輯處理器1 50無法 達到正向進展,暫停並沒有幫助,而現行邏輯處理器1 50 仍經歷缺少指令(也就是它的ROB 464仍是空的)。的 確,在進入狀態604時,於狀態508內維持的暫停訊號一 直防止其他邏輯處理器完成巨集指令的執行,而巨集指令 可能阻止了現行邏輯處理器150所需的資源被釋放出來。 在進入狀態604的時候,假設現行邏輯處理器的確有 指令端飢餓的問題(也就是它缺乏可執行的指令)。這種 飢餓可能由幾種因素的任一種所造成,對於至少一個實施 例來說,這類因素可包括:它的指令取回要求被記憶體指 令仲裁邏輯(memory instruction arbitration logic)(圖 中未顯示)所阻擋,一或更多個邏輯處理器正在執行一連 串的高優先權上鎖操作,或者現行邏輯處理器1 50的指令 -34- (34) 1298458 理器150a-150η維持的暫停訊號。在維持狀態中,現行邏 輯處理器150無法達成正向進展,暫停並沒有幫助。的 確,在剛進入狀態604時,於狀態508內維持的暫停訊號 一直防止其他邏輯處理器完成巨集指令的執行,而巨集指 令可能阻止了現行邏輯處理器1 5 0所需的資源被釋放出 來。不過,暫停也可能會阻撓其他邏輯處理器的計時,在 協助現行邏輯處理器150達成正向進展上,也有正面的效 益。 當進入清除倒數狀態602時,現行邏輯處理器1 50可 能會在最終能夠達到正向進展的狀態中。舉例來說,現行 邏輯處理器150可能正處於記億體活鎖階段,而MLU 166 現在才變成作動中,需要多一點時間來完成活鎖斷路處 理。在清除倒數狀態602的期間,TLU 165等候一預定長 度的時間(其可由,舉例來說,Μ週期的計數所反映), 希望現行邏輯處理器150可達到重設條件501的其中之 一。對於至少一個實施例來說,圖6中的Μ與Ν計數可 能是同樣的數目,不過並非所有的實施例都要求它們相 同。 圖6說明,對至少一個實施例來說,TLU 165在以下 的條件下會由清除倒數狀態 602轉移652至清除狀態 606 :現行邏輯處理器已被指派「線優先權」,並已持有 線優先權有一段連續的時間在追期間’現行邏輯處理 器1 50儘管有線優先權,但是無法達成正向的線進展。如 上述,如果現行邏輯處理器爲指令飢餓的。也就是說,如 -37- (35) 1298458 果在狀態6〇4期間所採取的指令端飢餓動作並不成功,那 麼TLU 165也可轉移651至清除狀態606。 在狀態606中,TLU 165發出核心內部的「清除」訊 號給處理器核心104的其他邏輯處理器(見150a-150n) 的每一個,希望藉此讓現行邏輯處理器1 5 0能夠達成正向 進展。對單一核心的實施例,如圖1所示來說,方法500 可以從閒置狀態502轉移654至狀態606 (見圖中的連接 器C )。 根據圖6所示,清除狀態606也可因應一外部事件, 而非上述狀態轉移之一的結果,而被進入655。這類外部 事件可以舉例來說是接收到由另一核心的TLU 1 65在選用 狀態608 (以下將討論)下產生的一個所有線清除要求。 從狀態606來看,如果在狀態606中被發出的核心內 部所有線「清除」訊號,並沒有在預定時間量P之內爲現 行邏輯處理器150達到正向的進展,則可能會發生一選用 狀態轉移65 3。要注意的是,狀態608在圖6是以虛線表 示。這是因爲轉移653與狀態608僅適用於多核心的實施 例,像是圖2的實施例200,因此它們爲選用的。在狀態 608,所有核心清除要求被傳送給仲裁器18〇 (圖1與 2 )。爲因應狀態608所產生的要求,仲裁器180在至少 一個實施例中啓動以下的動作:在所有核心104a-Ι 40η上 的所有線150a-150n (現行還輯處理器除外),所有由仲 裁器1 80維護的佇列均被排放。同樣地,除了由現行邏輯 處理器1 50所發出的要求以外,所有新的所有核心清除要 -38- (36) 1298458 求都被阻擋(如圖8的方塊806 )。最後,一個所有線清 除要求(見以上有關狀態508的討論)會被發出至所有其 他的處理器核心l〇4a-104η,以及與現行邏輯處理器150 有關的處理器核心104上所有其他的線150a-15 On (除了 現行邏輯處理器以外)(如上所述,這類清除要求,當被 其他處理器核心的邏輯處理器收到時,會使得該邏輯處理 器的TLU 165進入狀態606,見以上有關區塊620的討 論)。從狀態 608,TLU 165回到閒置狀態(見連接器 D ) 〇 圖8所示爲用以處理在多核心實施例中,於狀態608 期間所發出的所有核心清除要求之方法800的流程圖。對 至少一個實施例來說,方法8 00可由例如圖1與2所示的 仲裁器1 80的仲裁器來執行。對至少一個實施例來說,仲 裁器可以包括邏輯於核心外部份2 8 0 (如圖2 )的一部份 之邏輯電路,在此稱之爲「非核心(u n c 〇 r e )」。 圖8所示的方法800由區塊802開始並進行至區塊 8〇4 ’如果有一個單一的所有核心清除要求被產生(也就 是從第一處理器核心104a的TLU 165),處理工作就進 至區塊806。如上述與狀態608相關的處理工作,要求的 核心104a在區塊806被指派給優先權,而所有來自其他 核心104 a-Ι 04η的後續的所有核心清除需求都會被丟棄。 處理工作由區塊806進至區塊808,在區塊808,一 個所有線清除要求被發出給所有其他的核心1 0 4 a - 1 0 4 η, 除了原先發出所有核心清除要求的核心除外,這類要求可 -39- (37) 1298458 由其他核心所接收’並且讓它們轉移至清除狀態606 圖6的區塊6 2 0 ),處理於區塊8丨4結束。 如果同時收到由多個核心所發出的2個或更多的 核心清除需求。那麼處理工作會從區塊8〇4進至 810,在區塊810,方法800應用仲裁政策以選擇多個 核心之一作爲有優先權的核心,對至少一個實施例來 要求的核心可以提供核心ID,加上清除要求,傳送 ® 裁者,仲裁者1 80接著可應用簡單的選擇演算法,像 擇具有最高或最低ID的核心,作爲有優先權的核心 區塊810 ’處理工作進至區塊808,然後進至814,如 段所述。 ' 上述的討論以方法、系統與裝置的選擇實施例來 κ 複數條線之間的線優先權,以便允許執行線指令時, 正向的進展,同時也在活鎖斷路器邏輯、指令端飢餓 邏輯、以及高優先權上鎖處理之間維持優先權,在此 β 的機制可應用於單核心或多核心多線系統,在先前 中,已說明了各種方法、系統與裝置,爲了解釋之故 此提出特定的數字、範例以及組態設定,以達到更深 了解,但是,熟悉此技藝者應可了解,在此所述的方 裝置不須特定的細節也可實施,在其他實例中,一些 的特點可能會被刪除或簡化,從而不致妨礙其方法 置。 在此所述的方法的實施例可利用硬體、硬體模擬 或其他軟體、韌體、或上述實施方式的組合加以實施 (見 所有 區塊 要求 說, 給仲 是選 ,從 前一 協調 達到 避免 所述 敘述 ,在 入的 法與 已知 與裝 軟體 ,本 -40- (38) 1298458 發明的實施例可利用包含至少一個處理器、一資料儲存系 統(包括揮發與非揮發記憶體以及/或者儲存元件)、至 少一個輸入裝置、以及至少一個輸出裝置之可程式系統加 以實施’爲達成本應用的目的,處理系統包括具有一處理 益’像疋數位訊號處理窃(D S P )、微控制器、特定應用 積體電路(A S IC )、或微處理器等的系統。 程式可被儲存於可被一般或特殊用途可程式化處理系 ^ 統讚取之儲存媒體或裝置(例如硬碟、軟碟機、唯讀記憶 體(R Ο Μ ) 、C D - R Ο Μ裝置、快閃記憶體裝置、數位多功 能光碟(DVD )、或其他儲存裝置)內,當處理系統讀取 儲存媒體或裝置中的指令時,指令可被處理系統中的處理 ' 器存取,用以設定或操作處理系統,以執行上述的程序。 • 本發明的實施例同樣也以機器可讀之儲存媒體來實施,或 設定於處理系統中使用,其中被設定的儲存媒體讓處理系 統以特定以及預定的方式,執行上述的功能。 ® 圖4所示爲此類處理系統的至少一個實施例,舉例來 說,樣本系統400可被用來偵測活鎖條件和進行更正動 作,以嘗試消除這類條件,可代表樣本系統400的處理系 統包括以英特爾公司 (Intel) 的 Pentium®、 Pentium®Pro、Pentium® II Λ Pentium®III、Pentium®4、以 及Itanium®與Itani u m®2微處理器爲基礎的處理系統,不 過在此也可使用其他系統(包括具有其他微處理器的個人 電腦(PC )、工程工作站、個人數位助理、以及其他手持 型裝置、機頂盒、以及類似的裝置)。在一實施例中’樣 -41 - (39) 1298458 本系統可執行微軟(Microsoft )的 Window sTM作業系統 的一種版本,舉例來說,也可以使用其他作業系統與圖形 使用者介面。 參考圖4,樣本處理系統400可包括記憶體系統490 與處理器4〇4,記憶體系統490可儲存指令241與資料 24〇,用以控制處理器404的操作。 記憶體系統490是記憶體的一般化敘述,而且可包括 ^ 各種形式的記憶體,像是硬碟、CD-ROM、隨機存取記憶 體(RAM )、動態隨機存取記憶體(DRAM )、靜態隨機 存取記憶體(SRAM )、快閃記憶體以及相關的電路。記 憶體系統490可儲存由資料訊號所代表的指令24 1以及/ 或者資料240,可由處理器404執行,指令241以及/或 、 者資料240可包括用以執行任何或所有上述技術的程式 碼。 儘管上述已說明本發明的特定實施例,但是熟悉此技 ^ 藝者應可了解,在本發明所包含的廣義範疇中,可進行各 種更動與修正,舉例來說,上述討論的計數器數値X、 Y、Zl、Z2、Μ、N、以及P可被應用爲向上計數(count-up) 或向 下計數 (count-down) 的計數 器數値 ,此 類計數 器數値的每一個可以,但不一定要是不同的數値,比如對 至少一個實施例來說,P>>M、P>>N、Z1>Y、Z2>Y、 Ρ>Ζ1、Ρ>Ζ2、以及Χ>Ζ1,這類計數器數値的預設値可被 設定於硬體內,在某些實施例中,預設的計數器數値可以 是可程式化,因此可以被微程式碼或其他韌體或軟體碼所 -42 - (40) 1298458 修正。 本發明已經透過參考實施例加以說明,不過上述的說 明並非用來限制本發明的範圍,熟悉此技藝者在了解上述 的說明後,應可了解本發明還有各種變化與其他的實施方 式’因此各種貫施例的內容與變化,均應包含在本發明附 屬的申請專利範圍之精神與範疇中。 【圖式簡單說明】 以下將以附屬的圖表說明本發明的實施例,其中相同 的參考數字代表類似的元件,所附的圖表並非用來限縮本 發明,而是用來說明在多線處理系統中用以偵測與更正同 時的複數條線之間的活鎖的裝置、系統與方法時,所用到 的實施例。 圖1爲包括複數個線活鎖單元的處理器的至少一個實 施例之方塊圖,每一個線活鎖單元係用以決定用於複數個 邏輯處理器之一的正向線進展。 圖2爲可執行被揭露技術的的多線系統的至少一個實 施例的方塊圖。 圖3爲用於一處理器的至少一個實施例的前端與執行 核心之方塊圖,其中該處理器的複數個邏輯處理器的每一 個均具有一線活鎖單元。 圖4爲用於一處理系統的至少一個實施例的記憶體階 層之方塊圖,其中該處理系統的複數個邏輯處理器的每一 個均具有一線活鎖單元。 -43- (41) 1298458 圖5與6爲在多重同時的線之間用以偵測與解除活鎖 的方法的至少一個實施例之狀態圖。 圖7說明圖5與6所述方法中,用以進入一閒置狀態 的重設條件之區塊圖。 圖8爲用以仲裁複數個處理器間的活鎖優先權要求的 方法的至少一個實施例之流程圖。 圖9爲線活鎖單元以及一記憶體活鎖單元間共享活鎖 斷路器邏輯的至少一個實施例之一方塊圖。 【主要元件符號說明】 103 :單一晶片封裝 104a-104n 、 104 :處理器 150a-150n :邏輯處理器 1 6 5 a -1 6 5 η、1 6 5 :線活鎖單元 166 :記憶體活鎖單元 180 :仲裁器 200 :計算系統 202 :記憶體 240 :資料 241 :指令 2 5 1 :快取 252 :仲裁與控制邏輯 253 :整合記憶體控制器 280 :額外的邏輯(非核心) -44 - (42) 1298458 290:輸出/輸入裝置 320 :前端 322 :取回/解碼單元 3 3 0 :執行核心 340a-340n :定序器 3 6 0 :執行單元 3 6 2 :資源 # 364 :退役佇列 400 :多線非循序處理系統 404 :處理器 420 :前端 ‘ 425 :快取 ^ 430 :執行核心 432:分支預測單元 442 :資料快取 Φ 444 ··指令快取 453 :記憶體控制器 462 :執行資源 464 :退役佇列 4 90 :記憶體次系統 500 :方法 5 0 1 :重設條件 502 :閒置狀態 504 :初始計數階段 -45
Claims (1)
1298458 煩謂委貝 7F 所提之修正本有無超出原説明書 或ΘΛ. 之兄!4。 十、申請專利範圍 附件2Α: 第94 1 3 1 659號專利申請案 中文申請專利範圍替換本 民國97年2月 1 . 一種包含線活鎖單元的多線處理器,包含 包含第一邏輯處理器與第二邏輯處理器之 • 心; 耦接至該第一邏輯處理器之第一線活鎖單元 耦接至該第二邏輯處理器之第二線活鎖單元 其中該第一線活鎖單元係因應缺乏可供該第 • 單元執行之指令時,用以要求暫停該第二線活鎖 一 及 一仲裁器; 其中該第一與第二線活鎖單元與該仲裁器進 • 以在該第一邏輯處理器與該第二邏輯處理器之間 先權。 2.如申請專利第1項之多線處理器,其中: 該第一線活鎖單元係進一步用以決定該第一 器在爲第一軟體線執行指令時,是否無法達到 展;以及 該第二線活鎖單元係進一步用以決定該第二 器在爲第二軟體線執行指令時,是否無法達到 展。
29曰修正 處理器核 一線活鎖 單元;以 一步係用 實施一優 邏輯處理 正向的進 邏輯處理 正向的進
1298458 3 ·如申請專利第丨項之多線處理器,進一步包含: 親接至該第一與第二邏輯處理器之記憶體活鎖單元。 4.如申請專利第3項之多線處理器,其中: _記憶體活鎖單元係進一步用以啓動記憶體活鎖避免 動作。 5 ·如申請專利第丨項之多線處理器,其中: 該仲裁器係用以在該第一邏輯處理器與該第二邏輯處 φ 理器間實施優先權,以解決一長潛伏的快取未中。 6·如申請專利第3項之多線處理器,其中: 該第一與第二線活鎖單元係進一步用以讓出優先權給 該記憶體活鎖單元。 • 7.如申請專利第丨項之多線處理器,其中: „ 該等線活鎖單元係進一步因應缺乏用來執行的可用指 令時,用以啓動飢餓避免動作。 8 ·如申請專利第6項之多線處理器,其中: • 該第一線活鎖單元係進一步用以決定與該第一邏輯處 理器有關之第一軟體線,是否有缺少可用指令的情形;以 及 該第二線活鎖單元係進一步用以決定與該第二邏輯處 理器有關之第二軟體線,是否有缺少可用指令的情形。 9·如申請專利第2項之多線處理器,其中: 該第一線活鎖單元進一步因應決定該第一邏輯處理器 在該第一軟體線執行指令而無法達到正向的進展時,成爲 作動中的。 -2 - 1298458 10·如申請專利第9項之多線處理器,其中: 若該第一邏輯處理器爲作動中的,則該第二線活鎖單 元會讓出優先權給該第一邏輯處理器。 1 1 ·如申請專利第2項之多線處理器,其中: 該第二線活鎖單元進一步因應決定該第二邏輯處理器 在該第二軟體線執行指令而無法達到正向的進展時,成爲 作動中的。 φ 12·$卩申請專利第11項之多線處理器,其中: 若該第二邏輯處理器爲作動中的,則該第一線活鎖單 元會讓出優先權給該第二邏輯處理器。 1 3 ·如申請專利第1 2項之多線處理器,其中: 〃 當該第二邏輯處理器在執行一高優先權鎖定操作時, . 該第一線活鎖單元會讓出優先權給該第二邏輯處理器。 14·如申請專利第1項之多線處理器,其中·· 該處理器核心包括至少一個額外的邏輯處理器,每一 鲁個額外處理器耦接至一額外的線活鎖單元;以及 該至少一個額外的線活鎖單元,加上該第一與第二線 活鎖單元與該仲裁器,係用以在該第一邏輯處理器、該第 二邏輯處理器,以及該至少一個額外的邏輯處理器之間實 施一優先權。 1 5 · —種包含多活鎖單元的多線處理器的計算系統, 包含: 一記憶體系統;以及 第一處理器核心,具有至少第一邏輯處理器;以及 -3 - 猶頁 1298458 第二處理器核心; 該第一處理器核心進一步包含第一活鎖單元,用以決 定在該第一邏輯處理器內是否存在複數個條件,並根據該 複數個條件的滿足,用以決定該第一邏輯處理器是否被活 鎖, 其中該第一活鎖單元係進一步因應決定該第一邏輯處 理器被活鎖時,用以要求暫停該第二處理器核心。 16·如申請專利第15項之計算系統,其中: 該第一活鎖單元係進一步因應決定該第一邏輯處理器 被活鎖時,用以要求清除與該第二處理器核心有關的至少 一個微架構結構。 17·如申請專利第15項之計算系統,其中·· 該第一活鎖單元係進一步根據該複數個條件的滿足, 決定該第一邏輯處理器是否缺少指令。 18·如申請專利第17項之計算系統,其中: 該第一活鎖單元係進一步因應當決定該第一邏輯處理 器缺少指令時,啓動飢餓避免動作。 19·如申請專利第15項之計算系統,更包含: 一仲裁器係用以仲裁來自該第一與第二處理器的優先 權要求’其中該優先權要求係根據活鎖決定。 20·如申請專利第15項之計算系統,其中·· 該記憶體系統進一步包含一動態隨機存取記憶體。 21· —種用以仲裁活鎖優先權要求之方法,包含: 決定用於一第一處理器之第一邏輯處理器在執行至少 -4-
1298458 一個指令時,是否無法達到正向的進展; 若是如此,維持第二邏輯處理器之暫停操作; 決定該暫停是否導致該第一邏輯處理器的正向進展; 若否,則決定該第一邏輯處理器是否缺少指令,以 及’若是如此,採取飢餓避免動作;以及 要求該第二邏輯處理器之暫停。 2 2 ·如申請專利第2 1項之方法,進一步包含: φ 要求與該第二邏輯處理器有關之管線被清除。 2 3 ·如申請專利第2 1項之方法,進一步包含: 要求第二邏輯處理器之暫停。 24·如申請專利第21項之方法,其中該第二邏輯處理 • 器之暫停操作進一步包含: • 除非該第二邏輯處理器係於一作動中的活鎖避免狀 態,否則維持該暫停。 25·如申請專利第21項之方法,其中該第二邏輯處理 • 器之暫停操作進一步包含: 除非該第二邏輯處理器正在執行一高優先權鎖定操 作,否則維持該暫停。 2 6 ·如申請專利第21項之方法,其中該第二邏輯處理 器之暫停操作進一步包含: 因應當決定該第一邏輯處理器在至少經過一預定的時 間長度,已無法達成正向的進展時,維持該暫停。 27· —種在多線處理器中在複數條線與記憶體活鎖單 元間指定線優先權的方法,包含:
1298458 決定在該處理器的該記憶體活鎖單元與至少兩條線之 間,是否存在複數個條件,該至少兩條線包括第一線與一 組剩餘的線; 根據該複數個條件的滿足下,決定該第一線是否被活 鎖;以及 若是如此’指定優先權給該第一線而非該組剩餘的線 的任一條。 φ 28.如申請專利第27項之方法,進一步包含·· 決定該第一線已經被活鎖至少一預定的時間長度。 29.如申請專利第27項之方法,進一步包含: 採取一動作,以刺激該第一線之正向的進展。 • 3 0 ·如申請專利第2 9項之方法,其中採取一動作的步 _ 驟進一步包含: 對該組剩餘的線的至少一個發出一暫停。 3 1·如申請專利第29項之方法,其中採取一動作的步 # 驟進一步包含: 因應決定指令方面的飢餓,啓動一活鎖斷路部。 32·如申請專利第31項之方法,進一步包含: 評估退役佇列的一部分是否爲空的。 33·如申請專利第29項之方法,其中採取一動作的步 驟進一步包含: 因應一快取未中,對一仲裁器發出一優先權要求。 34.如申請專利第29項之方法,其中採取一動作的井 驟進一步包含: v -6-
1298458 對另一處理器發出一暫停要求。 3 5 . —種包含線活鎖單元之多重核心多線處理器,包 含: 複數個處理器核心,該複數個處理器核心的每一個均 爲可執行複數條線的多線處理器; 耦接以與複數個處理器核心的每一個通信之活鎖縮減 器’該活鎖縮減器用以從第一處理器核心接收有關第一線 0 之線進展資訊’以及因應從該第一處理器核心之有關該第 一線的該線進展資訊,用以調整該複數個處理器核心的第 二處理器核心之第二線的動作。 3 6 ·如申請專利第3 5項之多重核心多線處理器,其 ‘ 中: . 該活鎖縮減器包含複數個活鎖電路,至少一個活鎖電 路與該複數個處理器核心的其中一個有關。 37.如申請專利第35項之多重核心多線處理器,其中 # 該活鎖縮減器包含: 耦接至該複數個處理器核心之仲裁控制邏輯,該仲裁 控制邏輯用以接收來自該複數個核心之線進展資訊,並仲 裁優先權以決定要協助那些線。 3 8 .如申請專利第3 5項之多重核心多線處理器,其中 每一處理器核心包含: 耦接至該核心以量測線活鎖指示器之線活鎖單元;以 及 耦接至該核心以量測記憶體活鎖指示器之記憶體活鎖
1298458 單元。 39.如申請專利第38項之多重核心多線處理器,進一 步包含: 一仲裁器,用以從該複數個核心的每一個核心之該線 活鎖單元和/或該記憶體活鎖單元接收活鎖資訊,該仲裁 器用以因應該活鎖資訊,給予一條線高於其他線的優先 權。
1298458 年月曰修正替換頁 附件5 ··第94131659號專利申請案 中文圖式替換頁 民國96年6月26曰修正 圖9
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/948,878 US7748001B2 (en) | 2004-09-23 | 2004-09-23 | 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 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200632740A TW200632740A (en) | 2006-09-16 |
TWI298458B true TWI298458B (en) | 2008-07-01 |
Family
ID=35997071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW094131659A TWI298458B (en) | 2004-09-23 | 2005-09-14 | Multithreaded processor, computing system with thread livelock units and method for arbitrating livelock priority requests |
Country Status (7)
Country | Link |
---|---|
US (2) | US7748001B2 (zh) |
JP (1) | JP4603583B2 (zh) |
KR (1) | KR100880470B1 (zh) |
CN (2) | CN101031877B (zh) |
DE (1) | DE112005002305B4 (zh) |
TW (1) | TWI298458B (zh) |
WO (1) | WO2006034288A2 (zh) |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US9626194B2 (en) * | 2004-09-23 | 2017-04-18 | Intel Corporation | Thread livelock unit |
US7525986B2 (en) * | 2004-10-28 | 2009-04-28 | Intel Corporation | Starvation prevention scheme for a fixed priority PCI-Express arbiter with grant counters using arbitration pools |
US7810083B2 (en) * | 2004-12-30 | 2010-10-05 | Intel Corporation | Mechanism to emulate user-level multithreading on an OS-sequestered sequencer |
US7380038B2 (en) * | 2005-02-04 | 2008-05-27 | Microsoft Corporation | Priority registers for biasing access to shared resources |
WO2007031696A1 (en) * | 2005-09-13 | 2007-03-22 | Arm Limited | Cache miss detection in a data processing apparatus |
US7558946B2 (en) * | 2005-12-12 | 2009-07-07 | Intel Corporation | Breaking a lock situation in a processor without detection of the lock situation using a multi-level approach |
WO2007099273A1 (en) * | 2006-03-03 | 2007-09-07 | Arm Limited | Monitoring values of signals within an integrated circuit |
WO2007101969A1 (en) * | 2006-03-06 | 2007-09-13 | Arm Limited | Accessing a cache in a data processing apparatus |
JP4557949B2 (ja) * | 2006-04-10 | 2010-10-06 | 富士通株式会社 | 資源ブローカリングプログラム、該プログラムを記録した記録媒体、資源ブローカリング装置、および資源ブローカリング方法 |
US7434033B2 (en) | 2006-04-14 | 2008-10-07 | International Business Machines Corporation | Placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline |
US7437539B2 (en) * | 2006-04-14 | 2008-10-14 | International Business Machines Corporation | Issue unit for placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline |
WO2007132424A2 (en) * | 2006-05-17 | 2007-11-22 | Nxp B.V. | Multi-processing system and a method of executing a plurality of data processing tasks |
US20080046684A1 (en) * | 2006-08-17 | 2008-02-21 | International Business Machines Corporation | Multithreaded multicore uniprocessor and a heterogeneous multiprocessor incorporating the same |
JP4841358B2 (ja) | 2006-08-18 | 2011-12-21 | 富士通株式会社 | リクエスト送信制御装置およびリクエスト送信制御方法 |
US7590784B2 (en) * | 2006-08-31 | 2009-09-15 | Intel Corporation | Detecting and resolving locks in a memory unit |
US8276151B2 (en) | 2006-09-06 | 2012-09-25 | International Business Machines Corporation | Determination of running status of logical processor |
CN100458751C (zh) * | 2007-05-10 | 2009-02-04 | 忆正存储技术(深圳)有限公司 | 并行闪存控制器 |
US8117618B2 (en) * | 2007-10-12 | 2012-02-14 | Freescale Semiconductor, Inc. | Forward progress mechanism for a multithreaded processor |
JP4691153B2 (ja) * | 2008-12-10 | 2011-06-01 | 富士通株式会社 | マルチコアプロセッサ,制御方法および情報処理装置 |
US8392667B2 (en) * | 2008-12-12 | 2013-03-05 | Nvidia Corporation | Deadlock avoidance by marking CPU traffic as special |
JP5035469B2 (ja) * | 2009-03-31 | 2012-09-26 | 富士通株式会社 | データ転送回路及びデータ転送方法 |
US8352561B1 (en) | 2009-07-24 | 2013-01-08 | Google Inc. | Electronic communication reminder technology |
US8516577B2 (en) | 2010-09-22 | 2013-08-20 | Intel Corporation | Regulating atomic memory operations to prevent denial of service attack |
US8898434B2 (en) | 2011-11-11 | 2014-11-25 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Optimizing system throughput by automatically altering thread co-execution based on operating system directives |
WO2013101138A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Identifying and prioritizing critical instructions within processor circuitry |
US20130332910A1 (en) * | 2012-05-22 | 2013-12-12 | Nec Laboratories America, Inc. | Dynamic livelock analysis of multi-threaded programs |
US9336357B2 (en) * | 2012-09-28 | 2016-05-10 | Intel Corporation | Secure access management of devices |
JP6201591B2 (ja) * | 2013-09-30 | 2017-09-27 | 富士通株式会社 | 情報処理装置および情報処理装置の制御方法 |
US9575916B2 (en) | 2014-01-06 | 2017-02-21 | International Business Machines Corporation | Apparatus and method for identifying performance bottlenecks in pipeline parallel processing environment |
US9501377B2 (en) | 2014-03-18 | 2016-11-22 | International Business Machines Corporation | Generating and implementing data integration job execution design recommendations |
US9424160B2 (en) | 2014-03-18 | 2016-08-23 | International Business Machines Corporation | Detection of data flow bottlenecks and disruptions based on operator timing profiles in a parallel processing environment |
US9642787B2 (en) | 2014-04-25 | 2017-05-09 | The Procter & Gamble Company | Method of inhibiting copper deposition on hair |
US9626749B2 (en) | 2014-12-10 | 2017-04-18 | Intel Corporation | Sub-pixel modification of digital images by locally shifting to an arbitrarily dense supergrid |
US10248463B2 (en) * | 2015-02-13 | 2019-04-02 | Honeywell International Inc. | Apparatus and method for managing a plurality of threads in an operating system |
WO2016178658A1 (en) * | 2015-05-01 | 2016-11-10 | Hewlett Packard Enterprise Development Lp | Throttled data memory access |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US10191747B2 (en) * | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US9766946B2 (en) * | 2015-11-11 | 2017-09-19 | International Business Machines Corporation | Selecting processor micro-threading mode |
TWI597666B (zh) * | 2015-12-28 | 2017-09-01 | 緯創資通股份有限公司 | 共享裝置的使用方法及資源共享系統 |
GB2558076B (en) * | 2016-06-20 | 2019-02-20 | Imagination Tech Ltd | Livelock detection in a hardware design using formal verification |
US10069949B2 (en) | 2016-10-14 | 2018-09-04 | Honeywell International Inc. | System and method for enabling detection of messages having previously transited network devices in support of loop detection |
US9798549B1 (en) | 2016-10-31 | 2017-10-24 | International Business Machines Corporation | Out-of-order processor that avoids deadlock in processing queues by designating a most favored instruction |
US10740102B2 (en) | 2017-02-24 | 2020-08-11 | Oracle International Corporation | Hardware mechanism to mitigate stalling of a processor core |
US10810086B2 (en) | 2017-10-19 | 2020-10-20 | Honeywell International Inc. | System and method for emulation of enhanced application module redundancy (EAM-R) |
US10783026B2 (en) | 2018-02-15 | 2020-09-22 | Honeywell International Inc. | Apparatus and method for detecting network problems on redundant token bus control network using traffic sensor |
EP3818440A4 (en) | 2018-07-02 | 2021-08-18 | Drivenets Ltd. | SYSTEM FOR IMPLEMENTATION OF MULTIPLE APPLICATIONS |
US10831563B2 (en) * | 2019-03-19 | 2020-11-10 | International Business Machines Corporation | Deadlock resolution between distributed processes using process and aggregated information |
CN110058931B (zh) * | 2019-04-19 | 2022-03-22 | 上海兆芯集成电路有限公司 | 用以任务调度的处理系统及其加速方法 |
CN110032453B (zh) | 2019-04-19 | 2022-05-03 | 上海兆芯集成电路有限公司 | 用以任务调度与分配的处理系统及其加速方法 |
CN110083387B (zh) | 2019-04-19 | 2021-11-12 | 上海兆芯集成电路有限公司 | 使用轮询机制的处理系统及其访存方法 |
CN110046053B (zh) | 2019-04-19 | 2021-11-12 | 上海兆芯集成电路有限公司 | 用以分配任务的处理系统及其访存方法 |
US11422849B2 (en) * | 2019-08-22 | 2022-08-23 | Intel Corporation | Technology for dynamically grouping threads for energy efficiency |
CN112187581B (zh) * | 2020-09-29 | 2022-08-02 | 北京百度网讯科技有限公司 | 服务信息处理方法、装置、设备及计算机存储介质 |
CN115408153B (zh) * | 2022-08-26 | 2023-06-30 | 海光信息技术股份有限公司 | 多线程处理器的指令分发方法、装置和存储介质 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US621254A (en) | 1899-03-14 | Track-sight | ||
JP3760035B2 (ja) * | 1996-08-27 | 2006-03-29 | 松下電器産業株式会社 | 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ |
JPH10111828A (ja) * | 1996-09-27 | 1998-04-28 | Internatl Business Mach Corp <Ibm> | メモリシステム、データ転送方法 |
US6658447B2 (en) * | 1997-07-08 | 2003-12-02 | Intel Corporation | Priority based simultaneous multi-threading |
US6343352B1 (en) * | 1997-10-10 | 2002-01-29 | Rambus Inc. | Method and apparatus for two step memory write operations |
US6212544B1 (en) * | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
US6216178B1 (en) * | 1998-11-16 | 2001-04-10 | Infineon Technologies Ag | Methods and apparatus for detecting the collision of data on a data bus in case of out-of-order memory accesses of different times of memory access execution |
US6535905B1 (en) * | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
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 |
US6543002B1 (en) * | 1999-11-04 | 2003-04-01 | International Business Machines Corporation | Recovery from hang condition in a microprocessor |
US6898617B2 (en) * | 1999-11-18 | 2005-05-24 | International Business Machines Corporation | Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations by dynamically altering eligible thread pools |
US6618825B1 (en) * | 2000-04-20 | 2003-09-09 | Hewlett Packard Development Company, L.P. | Hierarchy of fault isolation timers |
US6920516B2 (en) * | 2000-08-31 | 2005-07-19 | Hewlett-Packard Development Company, L.P. | Anti-starvation interrupt protocol |
US6880073B2 (en) * | 2000-12-28 | 2005-04-12 | International Business Machines Corporation | Speculative execution of instructions and processes before completion of preceding barrier operations |
US7401211B2 (en) * | 2000-12-29 | 2008-07-15 | Intel Corporation | Method for converting pipeline stalls caused by instructions with long latency memory accesses to pipeline flushes in a multithreaded processor |
US6651158B2 (en) * | 2001-06-22 | 2003-11-18 | Intel Corporation | Determination of approaching instruction starvation of threads based on a plurality of conditions |
US7454600B2 (en) * | 2001-06-22 | 2008-11-18 | Intel Corporation | Method and apparatus for assigning thread priority in a processor or the like |
US7248585B2 (en) * | 2001-10-22 | 2007-07-24 | Sun Microsystems, Inc. | Method and apparatus for a packet classifier |
US6968431B2 (en) * | 2001-11-15 | 2005-11-22 | International Business Machines Corporation | Method and apparatus for livelock prevention in a multiprocessor system |
US7065596B2 (en) * | 2002-09-19 | 2006-06-20 | Intel Corporation | Method and apparatus to resolve instruction starvation |
US7000047B2 (en) * | 2003-04-23 | 2006-02-14 | International Business Machines Corporation | Mechanism for effectively handling livelocks in a simultaneous multithreading processor |
US20040216103A1 (en) * | 2003-04-24 | 2004-10-28 | International Business Machines Corporation | Mechanism for detecting and handling a starvation of a thread in a multithreading processor environment |
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 |
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 |
US7437539B2 (en) * | 2006-04-14 | 2008-10-14 | International Business Machines Corporation | Issue unit for placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline |
US7434033B2 (en) * | 2006-04-14 | 2008-10-07 | International Business Machines Corporation | Placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline |
-
2004
- 2004-09-23 US US10/948,878 patent/US7748001B2/en not_active Expired - Fee Related
-
2005
- 2005-09-13 KR KR1020077006549A patent/KR100880470B1/ko active IP Right Grant
- 2005-09-13 DE DE112005002305T patent/DE112005002305B4/de not_active Expired - Fee Related
- 2005-09-13 WO PCT/US2005/033699 patent/WO2006034288A2/en active Application Filing
- 2005-09-13 CN CN2005800322593A patent/CN101031877B/zh not_active Expired - Fee Related
- 2005-09-13 JP JP2007532620A patent/JP4603583B2/ja not_active Expired - Fee Related
- 2005-09-13 CN CN200810127366XA patent/CN101334721B/zh not_active Expired - Fee Related
- 2005-09-14 TW TW094131659A patent/TWI298458B/zh not_active IP Right Cessation
-
2010
- 2010-05-19 US US12/783,469 patent/US8276149B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE112005002305B4 (de) | 2011-03-17 |
KR20070055554A (ko) | 2007-05-30 |
DE112005002305T5 (de) | 2007-09-06 |
JP2008513894A (ja) | 2008-05-01 |
WO2006034288A2 (en) | 2006-03-30 |
US20100229172A1 (en) | 2010-09-09 |
CN101334721B (zh) | 2013-06-19 |
KR100880470B1 (ko) | 2009-01-28 |
WO2006034288A3 (en) | 2006-11-23 |
JP4603583B2 (ja) | 2010-12-22 |
CN101031877A (zh) | 2007-09-05 |
US20060064695A1 (en) | 2006-03-23 |
CN101334721A (zh) | 2008-12-31 |
US7748001B2 (en) | 2010-06-29 |
US8276149B2 (en) | 2012-09-25 |
CN101031877B (zh) | 2010-05-05 |
TW200632740A (en) | 2006-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI298458B (en) | Multithreaded processor, computing system with thread livelock units and method for arbitrating livelock priority requests | |
JP5047542B2 (ja) | マルチスレッドプロセッサのディスパッチ時にスレッドをブロックする方法、コンピュータプログラム、および装置(精細なマルチスレッドディスパッチロックメカニズム) | |
JP6113705B2 (ja) | ロック命令を実行するためのプロセッサ及び装置 | |
TWI742032B (zh) | 用於使用者等級執行緒暫止的方法、設備及指令 | |
JP5653431B2 (ja) | マルチプロセッサシステム | |
RU2233470C2 (ru) | Способ и устройство для блокировки сигнала синхронизации в многопоточном процессоре | |
JP5054665B2 (ja) | スリープ‐起動機構を用いた比較および交換動作 | |
US6542921B1 (en) | Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor | |
TWI266987B (en) | Method for monitoring locks, processor, system for monitoring locks, and machine-readable medium | |
JP3760035B2 (ja) | 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ | |
US20060184769A1 (en) | Localized generation of global flush requests while guaranteeing forward progress of a processor | |
TW200941340A (en) | A method and apparatus for suspending execution of a thread until a specified memory access occurs | |
CN107003896B (zh) | 具有共享事务处理资源的装置和数据处理方法 | |
JP4767361B2 (ja) | キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム | |
US7080209B2 (en) | Method and apparatus for processing a load-lock instruction using a relaxed lock protocol | |
US11030018B2 (en) | On-demand multi-tiered hang buster for SMT microprocessor | |
JP5155655B2 (ja) | マイクロプロセッサ出力ポート、及び、そこから提供された命令の制御 | |
US9626194B2 (en) | Thread livelock unit | |
KR0172310B1 (ko) | 교착 상태 방지를 위한 버스 유닛 | |
US7558946B2 (en) | Breaking a lock situation in a processor without detection of the lock situation using a multi-level approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |