TWI291132B - A method for managing power in a simultaneous multithread processor, a processor using the method and a related system - Google Patents
A method for managing power in a simultaneous multithread processor, a processor using the method and a related system Download PDFInfo
- Publication number
- TWI291132B TWI291132B TW093110993A TW93110993A TWI291132B TW I291132 B TWI291132 B TW I291132B TW 093110993 A TW093110993 A TW 093110993A TW 93110993 A TW93110993 A TW 93110993A TW I291132 B TWI291132 B TW I291132B
- Authority
- TW
- Taiwan
- Prior art keywords
- thread
- instruction
- time
- power mode
- during
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 22
- 238000012545 processing Methods 0.000 claims description 23
- 230000008901 benefit Effects 0.000 claims description 8
- 230000001360 synchronised effect Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 6
- 230000000717 retained effect Effects 0.000 claims 6
- QGZKDVFQNNGYKY-UHFFFAOYSA-N Ammonia Chemical compound N QGZKDVFQNNGYKY-UHFFFAOYSA-N 0.000 claims 2
- 229910021529 ammonia Inorganic materials 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
- 238000007667 floating Methods 0.000 description 6
- 239000002699 waste material Substances 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 235000021251 pulses Nutrition 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 1
- 244000046052 Phaseolus vulgaris Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 239000010902 straw Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000036962 time dependent Effects 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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/30181—Instruction operation extension or modification
-
- 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
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
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)
- Power Sources (AREA)
Description
1291132 九、發明說明: 【發明所屬之技術領域】 用於一具有同步多線程(SMT)及單 的方法與電路。 本發明大體上係關於 線程作業模式之處理器 【先前技術】 長期以來,逵成ρ4 、 咬风更夕效忐之秘訣係每個循環執行更多的 〜或者通%為指令級平行處理能力(Μ),或者減少指 π之寺待時間。為在每個循環中執行更多的指+,不得不 2更多的功能單元(例如,整數、浮點、載人/儲存單元, 寺寺)為了此更一致地執行多重指令,可使用被稱為非循 序處理(OOP)的處理範例, ,. J丘爭貫上,此類型之處理已成為 主流。 〇价之出現係因為許多指令有賴於其它指令之結果,其 中。亥等其匕心令已經被送入管線。為幫助緩解此問題,儲 存了大量的指令以允許立即執行。如此做的原因係為了尋 找更夕的被此互不依賴之指令。將用於儲存即將立即執行 之指令的儲存區域稱為重新排序緩衝器。在大多數具有一 t此夠儲存多達126個指令之系統的現代化商用電腦架構 I ’重㈣序緩衝11之大小已經增加。增加重新排序緩衝 、口口之大小的理由很簡| ··就執行(可能排除複雜結構及鍵接 清單之陣列)而言,空間相關的程式碼亦趨向於時間相關。 隹的問題在方、·此等指令亦趨向依賴於先前指令之結 果。隨著CPU之所需程式碼的量不斷增加,當前唯一能尋 找更夕獨立各7的方法為增加重新排序緩衝器的大小。然 92244.doc 1291132 ’吏用此項技術卻在增加之效能率方面已達成了相當令 亡印象:刻的回落且事實上,已展示出了呈遞減性之收 :::前正使愈來愈多的電晶體來達成相同的效能增加 '口人可猎由多線程(多處理)(但並不藉由作為主要約束 =職流排)來集t於指令或線程級下之一更為大範圍 工提取效月匕,而非專心地集中於單處理器1LP提取。 在單個晶片上放置更多電晶體的能力已允許晶片上多重 外^ (CMP)。為利用潛在的效能增加,該架構不能將此等多 “理器用作單處理器而是必須使用依賴於以平行方式來 :仃私令的多重處理。此要求亦能寫入在⑽上執行的程 =便能以平行的方式來執行,而非以純粹的串行或連續 式來執仃。假定寫入了應用程式以便能以平行的方 (Λ線Γ)來執行,則要使以此方式所寫人的程式能更快地二 :一 ’、所添加之處理器的數目成比例會存在固有的困難。
晶粒上來使用多個核心之一般概念為:藉由同時執 订兩個線程來提取更多的效能。如此,兩個C =-直:在進行有用工作的功能單元之總數具有較二 數L二一處理盗具有更多的功能單元’則一較低百分 U早70可在任—_進行有料H晶片上多重 =器降低了每個處理器之功能單元的數目,並將獨立的 t程)分配給每個處理器。如此,可在所結合的兩個往 矛,上來達成—較高的處理能力。―個可匹敵的單處理 比⑽晶片更快地穿過—個線程(或任務其原因在於,雖 然存在浪費的功能單元,但是亦存在在處理器同時計 92244.doc 1291132 多資料片段並使用所有可獲得之功能單元時所產生的活動 之’’猝發(burst)”。多重處理器背後的一個理念為阻止個別處 理為經歷該等猝發活動時間且取而代之的是,使每一處理 裔使用其可更能經常地獲得之資源且因此能有效地來使 用。將對在一個時脈循環中之一些功能單元的不使用稱為,, 水平浪費’’,此係CMP需設法避免的。 然而’ CMP存在若干問題。傳統的cmp晶片會犧牲單線 程效能以加速完成兩個或兩個以上之線程。如此,對一般 使用而言,CMP晶片之彈性將變得相對較低,因為若只有 一個線程,則該等分配資源中之的整整一半處於空閒狀態 並且元全無用(正如在一傳統的多重處理器(Mp)系統中,在 一系統中添加另一使用單線程程式之處理器係無用的)。一 種使CMP中之功%單元變得更有效的途徑係使用大範圍資 料點型多線程(course-grained叩;⑽了)。藉由 為固疋數目之時脈循環執行一線程,CMT能改良相對於 功能單元之使用的效率效率之改良係由於,,垂直浪費,,之降 低所致。垂直浪費描述了其中由於一線程停止(stai;ing)而 導致無一功能單元在進行工作之情形。 *切換至另-線程時,處理器保存了彼線程之狀態(; 即,其保存了哪里的指令位於管線、哪些單元正被使 且切換至另一個。其可藉由使用多個暫存器組來達成上: 目的。如此做之優勢係歸因於以下事實:通常一線程可$ =其遭遇了-快取記憶體未t◎完了用以執行的獨立名 …運行了很長的時間。CMT處理器可以此方式 92244.doc 1291132 多達其可支援之數目的不同的線程。因此,其可僅儲存與 用於此等線程中之每一線程的實體位置一樣多的線程以儲 存其執行之狀態。因此,需要一N路之0]^丁處理器具有能儲 存N個線程狀態的能力。 此概念之一變化為執行一線程直至其已經歷了一快取記 憶體未中(通常為一L2(二階)快取記憶體未中),此時,系統 將切換至另一線程。此具有之優勢為簡化了藉由一處理界 來旋轉該等線程所需的邏輯,因為一停止先前線程,其2 會簡單地切換至另一線程。接著緩解了等待將—所請求之 區塊傳送回快取記憶體中之損失。此與一些處理器所使用 之未命中快取方案下的命中(或多重未命中下的命中)類 似,但其又不同,因為其對線程而非對指令進行操作。相 較於CMP,CMT之優勢在於:CMT不會犧牲單線程之效能, 且具有較少的硬體複製(較少之用來平分以使得兩個處理 益’’相當’’於一可比較之CMT的硬體)。
、,將種更具有杈略性的多線程技術的途徑稱為小範圍資 料點型多線程(fine-grained multithreading ; FMT)。與 CMT 類似的是,FMT的基礎係快速地在線程之間進行切換。然 而,與CMT不同的是,觀點為切換每個循環。雖然cMT及 兩者事實上皆的確減慢完成一線程,但是FM^卻加速 完成所有正在進行工作之線程,且其通常為最重要的總處 理能力。 某種程度上,CMP可移除其自身中及其自身旁邊的浪 費。CMT及FMT可移除—些(或者全部)之垂直浪費。然而, 92244.doc -10- 1291132 可使用包含一先進形式之多線程的架構(稱為同步多線程 (SMT))以減少水平浪費與垂直浪費兩者。SMT之主要目標 係具有能在任何給定時間下及在任何給定功能單元中運行 來自力不同線程之指令的能力。藉由通過線程來進行旋轉, SMT架構的作用猶如麗處理器’ ^藉由同時執行來自不 同線程之指令,SMT架構的作用猶如CMp。由於此,其允 許建築師將核心設計得更寬一些,而不用擔心會使回落逐 漸減J。對於SMT而言,達成比FMT高的效率係合理的, 因為其具有能在不同線程間共享"未使用"之功能單元的能 力;如此,SMT達成了 CMP機器之效率。然而,與CMp系 統不同的是,SMT系統使得為單線程效能所作的犧牲(將在 後文令對微小犧牲作討論)很小甚至沒有。對此,理由报巧 單處理器之大部分在運行—單線程時保持心 二閒狀悲且CMP晶片上之更多的處理器使得此問題變得更 為顯著,隨處理器可使所有功能單元專用於該單線程。 儘官此明顯地沒有比能夠運行多線程來得有價值,但是在 單線程與多線程環境之間達到平衡的能力係非常有用的特 性。此意味著若線程級平行處理能力(TLp)存在則咖處理 盗可對其加以利用且若不存在線程級平行處理能力 (TLP),則讀處理器將全部注意力轉向指令級平行處理能 力(ILP) 月匕 為了支援多線程,SMT處理器需要比傳統之超標量處理 器更多的暫存卜總體目標係為每—所支援之線程提 當於能提供給一單處理哭的軔六抑 阳的暫存器。對於一傳統的精簡指 92244.doc 1291132 令集電腦(RISC)之晶片而+ f ^ ,χτ . 〇,此0日含32乘以Ν個暫存哭(豆 中Ν為SMT處理器可在一循产 °口(,、 衣中此處理的線程之數目)加上 所萬之任何重新命义勒左^ 叫‘ 盗。就4路SMT處理器之RISC處理 斋而言,此將意指128個暫存器加上 重新命名暫存器。 切*之〇多少數目的 :二广模型係習知之非猶序處理器的直接擴展。隨 ==能力的增長,無意中發現了對指令發出寬度具 案大Π’並且其應相應地增加。由於上述之暫存器楷 以、:、的增加’因此SMT管線之長度可藉由兩個階段而得 “口(-個階段為選擇暫存器組,且一個階段為進行一讀 或者‘寫入過程)’以使得不會減慢時脈猶環之長声。暫 =讀取及暫存器寫入階段兩者因此皆被分解為兩㈣線 為了不讓任-線程支配管線,應努力保證其它線程取得 :執行:間及資源中之現實的一部分。當功能單元要求得 到工=時’提取機制將為彼等具有最少之已經存在於管線 中的私令之線程提供一較高的優先順序。當然,若其它線 '、’、事了做,則更多來自線程的指令正已經支配著管線y S—Μτ正忙於共享任何可能的東西。然而,在一些情況下, :會擾亂傳統的資料組織以及指令流。分支預測單元在共 予蚪效率會變得較低,因為其不得不藉由更多的指令來追 蹤更夕的線程且將因此會在給定一準確預測下變得效率更 低。此意指由於差錯預測(miss predicti〇n)致使需要更經常 地對管線進行清洗,但是運行多線程之能力足以彌補此不 92244.doc -12- 1291132 足。 由於SMT架構所使用之f線較長(藉由兩個階段),致使對 此差錯預報的懲罰較大里 平乂入具中SMT架構所使用之管線較長 又歸因於所需之暫存器檔案相當大。然而,已經發展了若 干種技術以使SMT架構中之每線程所需的暫存器數目最少 化。此可藉由用於更好的暫存器儲存單元分配之更有效的 作業系統_及硬體支援以及共享來自另_線程語境之暫 存益(若另一線程並不使用所有的暫存器)的能力來達成。 另-問題係與快取記憶體大小、快取記憶體線大小及由 其所給予之帶寬有關的線程數目。與單線程程式之情況一 樣,增加快取記憶體線大小會減少未中率但亦會增加未中 磁刻。具有對更多之使用更多不同資料的線程之支援會惡 化此問題且因此可有效地用於每一線程之快取記憶體更 少。此對於快取記憶體之爭論在處理多程式工作負荷時將 比在處理多線程工作負荷時更為顯著。因此,若使用更多 的線程,則該等快取記憶體應更大。此觀點亦適用於具有 共享之L2快取記憶體的CMP處理器。 使用更多的線程會導致總效能變得更高,且與記憶體資 料相關聯之差異會變得更加明顯。存在一指示··當使L 1 (主 要的)快取記憶體大小保持恒定時,可使用更具有相關性之 快取記憶體來達成最高級的效能,而不管存取時間合更 長。已進行了測試以藉由改變區塊大小來確定效能,其中 當改變線程之數目時,該等區塊大小會作相關性的變化。 如前所述,增加相關性的區塊級會一直增加效能;麸而 92244.doc -13- 1291132 若使用了兩個以上的線程,則增加區塊大小會降低效能。 如此,使得區塊相關性之程度方面的增加不能彌補由於較 大區塊大小之更大未令懲罰所導致的不足。 若一線程進入了對系統效能而言並不重要的程式碼流, 則應由軟體來向其指派最不可能的優先順序。可將此實踐 用來保存電源,因為硬體的效能並不令人擔心。在一高效 能之SMT處理器中,電源消耗總是令人擔心。因此,需要 一種能基於多線程中之指令的執行優先順序來保存電源的 方法。 【發明内容】 在具有兩個線程的SMT系統中,當兩個線程皆具有最低 俊先順序時,線程優先順序邏輯會建構一低電源模式。可 變:數器對—讀取時脈進行計數,該讀取時脈可為指令調 度早το (IDU)中之每一線程自指令佇列(IQ)來讀取指令。通 常,自每一線程來選擇指令,並以與每一線程之程式控制 優先順序成比例及以由讀取時脈所確定之比率來僞隨機地 自I⑽取該等指令在低電源模式中’將可變計數器之選定 數目的最高有效位元(MSB)組合為邏輯以確定所有位元何 時=邏輯U處於相同的所要狀態)。此情形糾個時脈循環 可發生-次,其中N由選定之數目確定。當所有的聰 :為邏輯,,選擇來自第一個線程之指令並自㈣來將其 項取。在緊接著的下-個時脈循環中’自IQ來讀取來自第 二線=的指令。在當所有刪並非為邏輯_間,將停用自 IQ之項取,且不將指令轉發至指令解碼及指令排序器且下 92244.doc 14 1291132 流邏輯不具有有效之指令來處理,藉此節省了電源。一旦 兩個線程皆停止處於相同的最低優先順序並取消了低帝 源,即能_來讀取指令且载入指令解碼器會回復至正常 模式;自每—線程來選擇指令並以與每—線程之程式控制 優先,序成_及以由讀取時脈所衫之比率來僞隨機地 自IQ項取該等指令。 上述内容已相當廣泛地概括了本發明之特點及技術優勢 以便可更好地理解隨後對本發明所作的詳細描i將在下 文中來描述形成本發明之t請專利範圍主題的 外特點及優勢。 【實施方式】 $ u』闹述以便徹底 來理解本發明。然而對熟習此項技術者而t,报明顯地, 本發明無需該等特定細節便可實踐。在其它情況中,。r 方塊圖形式來展示已知電路以便不會在不必要的細節= 混清本發明。就大部分而言,已省略了關於計時的細節、 通信協定内的資料格式及其類似物,因為該等細節對獲得 本發明之完整理解並不必需,且在為—般的熟習相關技術 者所已知的範圍内。現參考圖示,圖中並不需要按比例來 繪製所展不之元件,且盆中由甚+同士上 ^且具肀由右干圖中相同的參考數字來 指定相似或類似的元件。 參看圖卜具有對CPU 410所作之說明性細節。cpu 41〇 被設計成每個時脈循環執行多重指令。 囚此,可在任一時 脈循裱期間於執行單元、固定點單元(Fxu)U4、浮點單元 92244.doc -15- 1291132 (FPU)118及載入/儲存單元(LSU)116中之任一單元中來執 行多重指令。類似地,CPU 410可在SMT模式下同步執行來 自多線程的指令。 程式計數器(PC) 134對應於具有用於執行之指令的線程 〇(TO)及線程ι(Τ1)。線程選擇器133在丁〇與11之間進行交替 選擇以將一指令位址耦接至指令提取單元(IFU)丨〇8。將指 令位址載入指令提取位址暫存器(IFAR)l〇3内。IFAR 103自 指令快取記憶體(I-快取記憶體)1〇4交替地提取每一線程的 指令。指令被緩衝處理而排入το之指令佇列(IQ)135中及T1 之指令佇列IQ 136。將IQ 135及IQ 136耦接至指令調度單元 (IDU)132。在線程優先順序選擇器137之控制下,自iq 及IQ 136中來選擇並讀取指令。通常,線程優先順序選擇 器137與母一線程之程式控制優先順序成比例之方式自iq 135及IQ 136中讀取指令。 在IDU 132中之解碼器(未圖示)中來對指令進行解碼。隨 後,指令排序器113可按各種演算法所確定之順序將指令置 於若干組中。將該等指令組轉發給指令發出佇列(IIQ)131。 才曰令排序器113按程式順序接收來自兩個線程的指令,但可 不按程式順序自IIQ丨3丨並自任一線程發出該等指令。通用 暫存器(GPR)槽案115及浮點暫存器(FpR)檔案ιΐ7由多個執 行单元來使用且其代表了系統之程式狀態。可將此等硬體 暫存器稱作”架構,,暫存器。當使一指令進入一發出佇列 時,便會對每一所架構之暫存器進行重新命名。對每一正 被修改之所架構的暫存器指派一實體暫存器,且一對應之 92244.doc 16 1291132 :二別與所架構之暫存器相關聯的實體暫存器。因 二魯出仔列中,已對該所架構之暫存器進行重新命名 =同時存在所架構之暫存器的多個複本。此允許二 循序地來執行指令,只要 人々, 叔仔不源運异兀。暫存器重新 〒名早兀140能對暫存器進行 ▲ 仃重新〒名及映射,使得當所有 蒼考一特殊實體暫存器之指令 0770成並且该貫體暫存器不包 :,之所架構的狀態時’可對未使用的實體暫存器進行 重新指派。 將指令排列於nQ131中以在適當之執行單元中來執行。 若一指令包含固定點運算,則可使用多個固定點單元 (FXU)U4中之任—個。將所有執行單元、FXU114、FPU118 及Lsurn皆麵接至完成單元119,該完成單元119具有能指 不已發出之指令中有哪些已完成及其它狀態資訊的多個完 成表(未圖示)。將來自完成單元119之資訊轉發給IFU108。 IDU132亦將資訊發送給完成單元119。將來自之儲 存作業的資料耦接至資料快取記憶體(D_快取記憶 體)1〇2。可將此資料儲存於D_快取記憶體1〇2中以便近期使 用及/或轉發給匯流排介面單元(BIU)1〇1,該匯流排介面單 几(BIU)lOl藉由匯流排412將資料發送給記憶體139。lsu 116可自D-快取記憶體i 〇2來載入資料以便可由執行單元 (例如,FXU 114)來使用。 圖2為本發明之實施例中之功能單元的方塊圖。將來自每 一線程之指令排列於IQ 135及IQ 136,且僅為說明之目的將
其展示作為IFU 108之一部分。可將IQ 135及IQ 136視為IDU 92244.doc -17- 1291132 132之一部分。線程選擇器137包含多工器(MUX)202、可變 計數器(203)、僞隨機產生器(PRG)223、「及」(AND)閘205、 206及221、「或」(OR)閘222及最高有效位元(MSB)邏輯 (204)。MUX 202在來自IQ 135與IQ 136的指令之間進行交 替選擇以回應輸出213之邏輯狀態。當輸出213為邏輯1時, 選擇IQ 135,且當輸出213為邏輯〇時,選擇iq 136。使用低 電源訊號220以在用來切換MUX 202的兩種方法之間進行 選擇。在正常操作下,PRG 223以大體上與IQ 134及IQ 135 之各自的程式控制優先順序成比例之方式載入來自IQ 1 34 及IQ 135的指令。若兩個線程皆處於相同的最低優先順序 下’則可將低電源訊號220設定為能停用「及」(And)閘205 的邏輯1。低電源訊號220上之邏輯i啓用AND閘極「及」 (AND)閘221,從而允許MSB邏輯204之輸出210及LSB 215 能藉由「或」(OR)閘222來控制輸出213。當低電源訊號220 為邏輯0(正常電源模式)時,將MSB邏輯204之閘極輸出210 設定為邏輯1,使得總能啓用AND閘極「及」(AND)閘206, 從而允許時脈訊號CLK 207通過到達輸出208。
當低電源訊號220為邏輯1且兩個線程皆處於最低優先順 序下時,可進一步來控制低電源模式。可使用發送給可變 计數器203之MSB選擇訊號214來控制低電源之程度。MSB 邏輯204選擇對計數器203中之哪些MSB進行邏輯組合以形 成輸出210。當MSB邏輯204之所有輸入皆處於邏輯i時,其 輸出21 〇為邏輯1且在其它時間下為邏輯〇。若計數器2〇3具 有最大计數N,則藉由選擇合適之MSB,輸出21〇將在CLK 92244.doc -18- 1291132 207之每N次循環時為邏輯1。 舉例而言,假定將可變計數器203組態為4位元計數器(最 大計數為16)且將三個上MSB耦接至MSB邏輯204。在CLK 207之時脈循環15及16期間,該等三個MSB皆為邏輯1,從 而使得能啓用AND閘極「及」(AND)閘221。類似地,最低 有效位元(LSB)215在時脈循環15時為邏輯0且在時脈循環 16時為邏輯1。隨後,輸出2 1 3在時脈循環15期間選擇IQ 135,且在時脈循環16期間選擇1(^ ι36。輸出21〇在時脈循 環15及16期間啓用AND閘極「及」(AND)閘206,且一時鐘 脈衝在時脈循環15期間藉由一來自][Q 135之指令將線程合 併階段載入指令解碼器132中,而在時脈循環16期間則藉由 一來自IQ136之指令來完成。當停用了「及」(AND)閘206 牯’指令解碼器132不會接收載入脈衝且來自之指令被有 效地’’控制"。藉由改變可變計數器2〇3之階段,可將來自IQ 135及IQ 136之指令轉發給指令排序器113,且處於降低速 率下之IIQ 1 3 1藉此在稍後的階段中會減慢指令執行並節省 電源。 在本發明之另一實施例中,訊號213及218可用於將指令 之有效位元閘控為0FF,該等指令之〇FF有效位元在低電源 被標識為”無效”,所以將不會使其繼續,藉此節省了電源。 類似地,管、線階段可回應在低電源模式期間所#收之具有 OFF有效位元的指令,將其自身的時脈訊號閘控為請。 圖3為本發明之實施例中之方法步驟的流程圖。在步驟 92244.doc -19· 1291132 中考慮到線程優先順序並藉& ^ y ^ N 71稭由遙擇時脈除法器數目 N,在SMT處理器中設定一采守 —、 式控制、,及操作電源。在步驟302 T ’完成了一測試以確定所 W&模式疋否為低電源模式。若 並沒有選擇低電源模式,則在 卜 T為弟一線程及第二 線私來僞卩过機地產生所選指 使付所4指令中之第一線 私才曰々及弟一線程指令大體卜# 一 α , — 體上成一比例,該比例相對應於 母一線程之指令執行優先順序 ^ 貝斤在步驟3〇4中,在用於控制 一官線電路之時脈循環的每一 、 卜 母循J衣期間,將該等所選指令 載入該管線電路,由# @ $ a i 电峪纟該官線電路來處理指令。隨後,返回 步驟302以確定電源模式是否已變化。 若步驟302中之測試的妹果為 、W、、°果為疋」,則選擇正常電源模 ^。在步驟305中,對來自第—線程及第二線程之指令進行 父替選擇,使得在-時脈訊號之每隔關循環僅發生一次的 選擇時間期間,選擇了數 ^ 數目相等的第一線程指令及第二線 ^ 八中"亥日守脈衝循環能控制一用於處理該第一線程 指令及該第二線程指令的管線電路。在步驟规中,該時脈 訊號之每個循環期問,脸# ’ 將该專所選指令載入該管線電路。 隨後,返回步驟3〇2 + 確疋電源模式是否已改變。 圖4中描緣了 一用认v . 用於只5戈本發明之代表性的硬體環境,其 說明了根據本發明之呈古 具有中央處理單元(CpU)41〇(具有同 步多線程(SMT)處理u 0 ^ y♦里j及终多其它經由系統匯流排412而被 互連的單兀之工作站的一典型硬體組態。圖4中所展示之工 作站包括· |^機存取記憶體(汉趟)414 ;唯讀記憶體 ()16 ,及用來將諸如磁碟單元420及磁帶機440之周邊 92244.doc -20- 1291132 裝置連接至匯流排412的輸入/輸出(I/O)配接器418 ;用於將 鍵盤424、滑鼠426、揚聲器428、麥克風432及/或其它諸如 觸控螢幕裝置(未圖示)之使用者介面連接至匯流排4丨2的使 用者介面配接器422 ;用於將工作站連接至資料處理網路的 通信配接器434 ;以及用於將匯流排412連接至顯示裝置438 的顯示配接器436。 雖然已對本發明及其優勢作了詳細描述,但是應瞭解, 可在不背離如由附加之申請專利範圍所界定的本發明之精 神及範圍内在本文中對本發明作各種改變、替代及變更。 【圖式簡單說明】 圖1係根據本發明之實施例之SMT處理器中的功能單元 之方塊圖; 圖2係用於建構本發明之實施例之電路的方塊圖; 【主要元件符號說明】 圖3係根據本發明之實施例之方法步驟的方塊圖丨及 圖4係用於實踐本發明之一代表性硬體環境。 101 匯流排介面單元BIU 102 D-快取記憶體 103 指令提取位址暫存器(IFAr) 104 I-快取記憶體 108 指令提取單元 113 指令排序器 114 固疋點單元FXU 115 通用暫存器(GPR)檔案及通
92244.doc -21 - 1161291132 117 118 119 131 132 133 134 135 136 137 139 140 202 203 204 205, 207 208, 210 214 215 (GPR)重新命名緩衝器 載入/儲存單元(LSU) 浮點暫存器(FPR)檔案及浮點暫存器 (FPR)重新命名緩衝器 浮點單元(FPU) 完成單元 指令發出佇列 指令調度單元/指令解碼器 線程選擇器 程式計數器 佇列T0/指令佇列線程1 佇列T1/指令佇列線程2 線程優先順序選擇器 記憶體 暫存重新命名 多工器(MUX) 可變計數器 最高有效位元(MSB)邏輯 206, 221 「及」(AND)閘 時脈訊號 213 訊號 輸出 MSB選擇訊號 最低有效位元(LSB) 92244.doc -22- 1291132 220 低電源訊號 222 「或」(OR)閘 223 僞隨機產生器 410 中央處理器(CPU) 412 系統匯流排 414 隨機存取記憶體(RAM) 416 唯讀記憶體(ROM) 418 輸入/輸出(I/O)配接器 420 磁碟單元 422 使用者介面配接器 424 鍵盤 426 滑鼠 428 揚聲器 432 麥克風 434 通信配接器 436 顯示配接器 438 顯示裝置 440 磁帶機 451 網路 92244.doc -23-
Claims (1)
1291132 .................... 第093110993號專利申請案(' ·象' 申請專利範圍替換本(95f丨丨耳厂一 一- 十、申請專利範圍·· 識__奮磁明書 1. 種用於在一同步多線程(SMT)處理器中來管理電源之 方法,其中該同步多線程(S Μ T)處理器具有—用於處理來 自第一線程及第二線程之指令的f線電路,該方法包括: _確定該第一線程及該第二線程中每一線程之一指令執 行優先順序並設定一所選電源模式; 回應該所選之電源模式及一時脈訊號,在一第一選擇 時間遠擇該第-線程,且在-第二選擇時間選擇該第 程;及 7應該時脈訊號之-頻率,在該第_選擇時間及該第 一選擇時間期間將指令載入該管線電路内。 2. ^求項!之方法,其中當該第—線程及該第二線程皆具 相冋的最低指令執行優先順序時’該所選電 為一低電源模式設定。 、k 3·=求項2之方法’其中當該所選電源模式為一正常 該第-選擇時間及該第二選擇時: 】:::令:^_令之對應指令執 令。^方式來執行該第-線程指令及該第二線程指 4 ·如請求項3之方、本 . /,八中在該正常電源模式期間,該第 選擇時間及該第二選摆日卑n拟士人 。亥弟 第二線…3 ^擇時間形成-介於該第-線程! 一攻氨之間的僞隨機分配。 5·如請求項2之方法,A 時間區間相互Ί 選擇時間在1 該區間被設定成於該低電源模3 92244-951129.doc
fl 1291132 間每N個該時脈訊號循環就會發生,其中來自—被選定的 ,程之該等指令於該閘控時間區間中的每_時脈訊號循 環時被載入,而且該等指令在該閘控時間區間外的全部 其他時間都被保留著。 6·如請求項5之方法,其中藉由將一對應指令的有效位元設 定為一能產生一保留指令的0FF狀態來保留指令,其中管 線階段接收含一 OFF狀態有效位元之該保留指令,將一^ 應之管線時脈訊號閘控為0FF,藉此節省電源。 7. ^請求項5之方法,其中在該時脈訊號之每個循環時保留 才曰令並使其不被載入下一個管線階段,藉此節省電源。 8. 一種管理同步多線程之電源的同步多線程⑺馗/處理 器’其包括: -用於處理來自第一線程及第二線程之指令的 電 路; 、 八用於確定該第一線程及該第二線程中每一線程之一指 令執行優先順序並設定一所選電源模式的電路; 用於回應該所選電源模式及一時脈訊號在一第一選擇 時間中來選擇該第—線程且在—第二選擇 該第二線程的電路;及 擇 /於回應該時脈訊號之一頻_,在言亥第-選擇時間 /第4擇犄間期間將指令載入該管線電路中的電路 9·::求項8之處理器,其中當該第一線程及該第二線程 、相同的最低指令執行優先順序時,該所選電源模 為一低電源模式設定。 ’、、 92244-951129.doc 1291132 Ώ修⑸正替換頁j Μ.如請求項9之處理器,其中當該所選電源模式為—正常電 源換式時’該第-選擇時間及㈣ 你% ^ 、 坪呀間會導致以 ^-、線程指令及第二線程指令之對應指令執行優先順 :成比例之方式來執行該第一線程指令及該第二線程指 Π·Γ求項1〇之處理器,其中在該正常電源模式期間’該 苐一選擇時間及該第二選擇時間形成一介於該 與該第二線程之間的僞隨機分配。 ' Χ ^ 12·如請求項9之處理器,#中在該低電源模式期間,令第一 ,擇時間及Μ二選擇時間在—閘控時間段期間進行交 替设定以在能於該時脈訊號之每隔關循環發生, ^時間段期間會在該時脈訊號之每一猶環時載入該 專來自—料線程之指令,且在制控時間段期間以外 的所有其它時間期間保留該等指令。 1 3 ·如請求項12之處理,盆中益 益其中猎由將一對應指令的有效位 ㈣定為-能產生一保留指令的〇FF狀態來保留指令,1 中管線階段接收含一猜狀態有效位元之該保留指令,將 一對應之管線時脈訊號閘控為0FF,藉此節省電源。 14.如請求項12之處理器’其中在該時脈訊號之每個循環時 保留指令並使苴石姑截Α π 、 ”不被載入下一個管線階段,藉此節省電 源。 1 5 · —種管理同步多綠在口 f 、、泉私之電源的同步多線程處理器系 其包括: -中央處理單元(CPU),其具有一個或多個同步多線程 92244-951129.doc 1291132
正替換】 (SMT)處理器; 一隨機存取記憶體(RAM); 一輸入輸出(I/O)配接器; 一通信配接器; 一匯流排,其用於耦接該CPU、RAM、I/O配接器及該 通信配接器; 一位於該SMT處理器中之管線電路,該管線電路用於處 理來自第一線程及第二線程的指令; 用於確定該第一線程及該第二線程中每一線程之一指 令執行優先順序並設定一所選電源模式的電路; 用於回應該所選電源模式及一時脈訊號在一第一選擇 時間中來選擇該第一線程且在一第二選擇時間中來選擇 該第二線程的電路;及 用於回應該時脈訊號之一頻率,在該第一選擇時間及 該第二選擇時間期間將指令載入該管線電路中的電路。 16·如凊求項15之系統,其中當該第一線程及該第二線程具 有一相同之最低指令執行優先順序時,該所選電源模^ 為一低電源模式設定。 、、> 17·如請求項16之系統’其中當該所選電源模式為_正常電 源模式時’該第一選擇時間及該第二選擇時間合導致以 =線程指令及第二線程指令之對應指令執行優先順 令。 式來執行該第-線程指令及該第二線程指 18.如請求項17之系統 其中在該正常電源模式期間,該第 92244-951129.doc 1291132 -選擇時間及該第二選擇時間形成一介於該第 s亥第二線程之間的僞隨機分配。 、,王人 9. ^求項16之系統’其中在該低電源模式期間,— 二::間及該第二選擇時間在一閑控時間段期間:行: 叹疋Μ在能於該時脈訊號之每隔N個循環發生其 =她期間會在該時脈訊號之每一循環時载二 的所有/斤4線程之指令,且在該閘控時間段期間以外 的所有其它時間期間保留該等指令。 2〇.=請求们9之系統,其中藉由將對應指令有效位元設定 階一保留指令的⑽狀態來保留指令,其中管線 又接收S - OFF狀態有效位元之該保留指令,將一對應 之管線時脈訊號閉控為0FF,藉此節省電源。 92244-951129.doc
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/422,674 US7013400B2 (en) | 2003-04-24 | 2003-04-24 | 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 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200516493A TW200516493A (en) | 2005-05-16 |
TWI291132B true TWI291132B (en) | 2007-12-11 |
Family
ID=33298950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW093110993A TWI291132B (en) | 2003-04-24 | 2004-04-20 | A method for managing power in a simultaneous multithread processor, a processor using the method and a related system |
Country Status (3)
Country | Link |
---|---|
US (1) | US7013400B2 (zh) |
TW (1) | TWI291132B (zh) |
WO (1) | WO2004095245A2 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7360064B1 (en) | 2003-12-10 | 2008-04-15 | Cisco Technology, Inc. | Thread interleaving in a multithreaded embedded processor |
US7441101B1 (en) * | 2003-12-10 | 2008-10-21 | Cisco Technology, Inc. | Thread-aware instruction fetching in a multithreaded embedded processor |
US7574439B2 (en) * | 2004-05-20 | 2009-08-11 | International Business Machines Corporation | Managing a nested request |
US7890735B2 (en) * | 2004-08-30 | 2011-02-15 | Texas Instruments Incorporated | Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture |
JP4557748B2 (ja) | 2005-02-28 | 2010-10-06 | 株式会社東芝 | 演算処理装置 |
US8195922B2 (en) * | 2005-03-18 | 2012-06-05 | Marvell World Trade, Ltd. | System for dynamically allocating processing time to multiple threads |
US20060212853A1 (en) * | 2005-03-18 | 2006-09-21 | Marvell World Trade Ltd. | Real-time control apparatus having a multi-thread processor |
US7917907B2 (en) * | 2005-03-23 | 2011-03-29 | Qualcomm Incorporated | Method and system for variable thread allocation and switching in a multithreaded processor |
US7689838B2 (en) * | 2005-12-22 | 2010-03-30 | Intel Corporation | Method and apparatus for providing for detecting processor state transitions |
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 |
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 |
US8484516B2 (en) * | 2007-04-11 | 2013-07-09 | Qualcomm Incorporated | Inter-thread trace alignment method and system for a multi-threaded processor |
JP5182792B2 (ja) * | 2007-10-07 | 2013-04-17 | アルパイン株式会社 | マルチコアプロセッサ制御方法及び装置 |
US8689222B2 (en) * | 2008-10-30 | 2014-04-01 | International Business Machines Corporation | Controlling priority of multi-threaded hardware resources by system calls |
US20240192949A1 (en) * | 2022-12-07 | 2024-06-13 | Dell Products, L.P. | Systems and methods for adaptive responsiveness in a heterogeneous computing platform |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5396635A (en) * | 1990-06-01 | 1995-03-07 | Vadem Corporation | Power conservation apparatus having multiple power reduction levels dependent upon the activity of the computer system |
US5247677A (en) | 1992-05-22 | 1993-09-21 | Apple Computer, Inc. | Stochastic priority-based task scheduler |
US6105127A (en) * | 1996-08-27 | 2000-08-15 | Matsushita Electric Industrial Co., Ltd. | Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream |
US6073159A (en) * | 1996-12-31 | 2000-06-06 | Compaq Computer Corporation | Thread properties attribute vector based thread selection in multithreading processor |
US6658447B2 (en) * | 1997-07-08 | 2003-12-02 | Intel Corporation | Priority based simultaneous multi-threading |
US6697935B1 (en) * | 1997-10-23 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for selecting thread switch events in a multithreaded processor |
US6212544B1 (en) * | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
US6076157A (en) * | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
US6256775B1 (en) * | 1997-12-11 | 2001-07-03 | International Business Machines Corporation | Facilities for detailed software performance analysis in a multithreaded processor |
US6308279B1 (en) * | 1998-05-22 | 2001-10-23 | Intel Corporation | Method and apparatus for power mode transition in a multi-thread processor |
US6341347B1 (en) | 1999-05-11 | 2002-01-22 | Sun Microsystems, Inc. | Thread switch logic in a multiple-thread processor |
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 |
US6931639B1 (en) * | 2000-08-24 | 2005-08-16 | International Business Machines Corporation | Method for implementing a variable-partitioned queue for simultaneous multithreaded processors |
US6735707B1 (en) * | 2000-10-27 | 2004-05-11 | Sun Microsystems, Inc. | Hardware architecture for a multi-mode power management system using a constant time reference for operating system support |
US6687838B2 (en) | 2000-12-07 | 2004-02-03 | Intel Corporation | Low-power processor hint, such as from a PAUSE instruction |
US6651158B2 (en) * | 2001-06-22 | 2003-11-18 | Intel Corporation | Determination of approaching instruction starvation of threads based on a plurality of conditions |
US6622253B2 (en) | 2001-08-02 | 2003-09-16 | Scientific-Atlanta, Inc. | Controlling processor clock rate based on thread priority |
EP1351117A1 (en) * | 2002-04-03 | 2003-10-08 | Hewlett-Packard Company | Data processing system and method |
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 |
-
2003
- 2003-04-24 US US10/422,674 patent/US7013400B2/en not_active Expired - Lifetime
-
2004
- 2004-04-15 WO PCT/GB2004/001613 patent/WO2004095245A2/en active Application Filing
- 2004-04-20 TW TW093110993A patent/TWI291132B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US7013400B2 (en) | 2006-03-14 |
US20040215984A1 (en) | 2004-10-28 |
WO2004095245A3 (en) | 2005-04-21 |
TW200516493A (en) | 2005-05-16 |
WO2004095245A2 (en) | 2004-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI291132B (en) | A method for managing power in a simultaneous multithread processor, a processor using the method and a related system | |
US7469407B2 (en) | Method for resource balancing using dispatch flush in a simultaneous multithread processor | |
US7627770B2 (en) | Apparatus and method for automatic low power mode invocation in a multi-threaded processor | |
US7853777B2 (en) | Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions | |
US7600135B2 (en) | Apparatus and method for software specified power management performance using low power virtual threads | |
US7490230B2 (en) | Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor | |
US7657891B2 (en) | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency | |
US7664936B2 (en) | Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages | |
US7363625B2 (en) | Method for changing a thread priority in a simultaneous multithread processor | |
US7506140B2 (en) | Return data selector employing barrel-incrementer-based round-robin apparatus | |
US7213135B2 (en) | Method using a dispatch flush in a simultaneous multithread processor to resolve exception conditions | |
US20040210743A1 (en) | Dynamically shared group completion table between multiple threads | |
KR100745904B1 (ko) | 동시적 멀티스레드 프로세서에서 파이프라인 길이를변경하기 위한 방법 및 회로 | |
US20070089112A1 (en) | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor | |
US8370671B2 (en) | Saving power by powering down an instruction fetch array based on capacity history of instruction buffer | |
US7093106B2 (en) | Register rename array with individual thread bits set upon allocation and cleared upon instruction completion | |
JP2003516570A (ja) | マルチスレッド・プロセッサ内の複数のスレッドに入り、出る方法と装置 | |
US7194603B2 (en) | SMT flush arbitration | |
JP2010061642A (ja) | スレッドのスケジューリングテクニック | |
US20040215937A1 (en) | Dynamically share interrupt handling logic among multiple threads | |
Cecil | Dual Core On-Chip Multiprocessors and the IBM Power5 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |