專利名稱:控制流水線型處理器中的功率消耗的方法和系統的制作方法
技術領域:
本發明總地針對數據處理系統領域。
一方面,本發明涉及流水線型處理
器系統(pipelined processor system )中的動態功率控制。
背景技術:
在流水線型處理器設計中,典型地設計各個流水線級,以通過在每一級處使從存儲器(讀出)的等待時間和向存儲器(寫入)的等待時間最小化、并且使每一級處的帶寬最大化來提供最大性能。然而,這種處理器通常被"過度設計(over-designed)" 了,因為典型的處理器使用不需要在每個時鐘周期中所有級都最大限度地運行。在處理器被設計以在任何可能的時間都最大限度地執行的情況下,它們的操作可能導致大的功率消耗,并且實際上可能致使對于一些指令分發(instruction distribution)的性能P爭低。例如,當執行具有自然低的指令級并行性(instruction-level parallelization, ILP )的工作量時,處理器流水線不需要以全功率/高吞吐量(throughput)模式操作,實際上,這種操作模式由于各單元中的更高的等待時間可能對性能造成負面影響,并且不必要地耗費功率。因此,需要一種控制流水線型處理器系統中的性能和功率消耗的系統和方法。另外,需要一種流水線型處理器系統及設計,其提供所需要等級的性能和吞吐量、而沒有過多的功率消耗。在參照隨后的附圖和詳細說明來考察本申請的剩余部分后,傳統的解決方案的其它限制和缺陷對于本領域技術人員將會變得顯而易見。
發明內容
根據本發明的各種實施例,提出了一種處理器設計和方法,其中當處理器中的各個單元或者級執行給定的工作量時,可動態配置的處理器監視或檢
測所述處理器中的各個單元或者級的性能。可動態配置的處理器包括一個或多個具有高性能設計/模式以及低性能設計/模式的級。高性能設計/模式被用來以相對高的功率消耗等級執行工作量,但是當所檢測到的、執行工作量的性能特性許可時,處理器切換以使用低性能設計/模式來以相對較低的功率消耗等級執行工作量。通過配置處理器以從高性能設計后退到低性能設計以滿
足(meet)所檢測到的、執行工作量許可的性能特性,可以優化功率消耗。在所選擇的實施例中,諸如通過在所定義的時間窗口期間對級操作的數目進行計數,來在所述時間窗口期間監視各個流水線級(例如,取出、解碼、執行、回寫(write back)、完成)的吞吐量。 一開始,各個流水線級使用高吞吐量、高功率設計。然而,如果任一級的吞吐量計數指示在該級存在性能瓶頸,
則動態地重新配置處理器流水線以使用較低吞吐量、較低功率設計。
根據各種實施例,在使用這里描述的方法和/或裝置的軟件控制下,可以動態地配置各個流水線級中的一個或多個流水線級,以在高吞吐量、高功率設計以及較低吞吐量、較低功率設計之間切換,所述軟件控制可以在具有包括計算機可執行指令的計算機程序代碼的數據處理系統中實現。無論何種實現形式,都可以通過測量在高性能模式下操作的多個流水線級的吞吐量速率來控制流水線型處理器中的功率消耗。在示例實現中,對于每個流水線級,通過對在預定的窗口期間發生多少個級事件進行計數來測量吞吐量速率。通過隨時間推移測量吞吐量速率,諸如通過將一個或多個吞吐量速率與預定的高性能吞吐量閾值進行比較,可以檢測到速率中的任何跌落(drop-off)。在檢測到何時多個吞吐量速率中的一個或數個吞吐量速率被降低到第 一預定吞吐量速率時,將第一功率等級控制信號發送到該多個流水線級。在各種實施例中,可以將功率控制信號作為l-位功率等級控制信號廣播到所有流水線級,或者將該功率控制信號作為單獨的功率等級控制信號發送到每個流水線級。如果該級具有以各種吞吐量和功率速率操作的多個等級,則可以實現多個功率等級控制信號以在各操作等級之間進行選擇。響應于第一功率等級控制信號,每個流水線級被重新配置來在低性能模式下操作,從而降低該多個流水線級的功率消耗。可以通過響應于第一功率等級控制信號而在每一級處選擇第一低功率電路,來實現重新配置為低性能模式。為了返回高性能模式,監視現在在低性能模式下操作的多個流水線級的吞吐量速率,以在時鐘周期窗口中檢測何時吞吐量速率達到或超出第二預定闊值速率,在該時刻將第二功率等級控制信號發送到各流水線級,使得每個流水線級被重新配置為在高性能模式下操作。
當結合隨后的附圖考慮下面的詳細描述時,可以理解本發明的所選擇的
實施例、以及本發明的眾多目的、特性以及所得到的優點,附圖中
圖1圖示可以實現本發明的所選擇的實施例的多處理器計算機架構;圖2以簡化的示意形式圖示具有性能監視器邏輯的處理器流水線,該性
能監視器邏輯對在所定義的多個周期的窗口中的事件進行計數;
圖3以簡化形式圖示用于對可編程的周期窗口中的事件進行計數的計數
器;
圖4以簡化的示意開,式圖示處理器流水線,其中, 一個或多個功率等級信號饋送到流水線并控制各級的功能;
圖5圖示可以響應于功率等級信號而單獨選擇高性能設計和低性能設計的執行級的示例實現;以及
圖6示出用于監視各個流水線級的性能并且生成一個或多個功率等級位以控制各流水線級的示例序列的流程圖。
具體實施例方式
公開了一種用于監視流水線型處理器的性能來在檢測到處理器吞吐量降低時重新配置流水線以從高性能(高功率)模式切換到低性能(低功率)模式的方法、系統和程序。通過將各單元設計為具有多種操作模式,并且采用通過感測吞吐量或者執行工作量的ILP特性來在模式之間切換的機制,功率消耗可以與每個周期的執行等待時間一起被降低,使得性能并不必然惡化,并且實際上可能提高性能。在所選擇的實施例中,性能監視器協調如何配置每個流水線級的操作,使得使用高性能配置以相對高的功率消耗等級來執行工作量,而在所檢測到的、執行工作量的性能特性許可時,使用低性能配置以相對較低的功率消耗等級來執行工作量。
現在將參照附圖詳細描述本發明的各種示例實施例。將理解可以將這里描述的流程示和/或框圖整體地或者部分地由如下方式實現專用硬件電路、固件和/或計算機程序指令,該計算機程序指令被提供給通用計算機、專用計算機或者其它可編程數據處理裝置的處理器以產生一機器,使得該指令(其經由計算機或者其它可編程數據處理裝置的處理器執行)實現在流程圖和/或框圖中的一個或多個框中指定的功能/動作。另外,當在下面的描述中提出各種細節時,將了解可以在沒有這些特定細節的情況下實踐本發明,并且可以對這里描述的發明做出許多特定實現決定以達到設備設計者的特定目標,諸如遵循技術或者與設計有關的限制,這些限制將依每個實現而有所變化。盡管這樣的開發工作可能是復雜和耗時的,但對于受益于本公開的本領域普通技術人員來說這仍然是可以從事的工作。例如,以框圖形式、而不是詳細地示出所選擇的方面,從而避免限制本發明或者使本發明不明確。另外,按照關于計算機存儲器內數據的算法或者操作來呈現這里提供的詳細描述的一些部分。本領域技術人員使用這樣的描述和表述來將他們工作的主旨描述和傳遞給本領域其他技術人員。現在將在下面參照附圖詳細描述本發明的各種示例實施例。
現在參照圖1,其中圖示了根據本發明的所選擇的實施例的、提供程序
工作量的低功率執行而不降低性能的多處理器(MP)數據處理系統100的高層級框圖。數據處理系統100具有被布置在一個或多個處理器組中的一個或多個處理單元,并且如所示的包括處理器組10中的四個處理單元11、 21、31、 41。在對稱多處理器(SMP)實施例中,所有的處理單元ll、 21、 31、41通常是相同的,即它們都使用共同的指令和協議集或者子集來操作,并且通常具有相同架構。如用處理單元ll所示的,每個處理單元可以包括一個或多個處理器核16a、 16b,其運行程序指令從而操作計算機。示例處理單元可以是由國際商業機器公司出售的POWER5 處理器,其包括具有都由集成電路形成的各種執行單元、寄存器、緩沖器、存儲器、以及其它功能單元的單個集成電路超標量體系結構(superscalar)微處理器。處理器核可以根據精簡指令集計算(RISC)技術操作,并且可以采用流水線以及指令的亂序執行這兩者來進一步提高超標量體系結構架構的性能。
如圖1進一步所示的,每個處理器核16a、 16b包括由高速存儲器設備構成的板上(L1)高速緩沖存儲器19a、 19b(典型地,單獨的指令和數據高速緩沖存儲器)。高速緩沖存儲器一般被用來臨時存儲可能被處理器重復存取的值,從而通過避免從系統存儲器61加載值的較長(時間)的步驟來加快處理速度。處理單元可以包括諸如第二級(L2 )高速緩沖存儲器12的另 一高速緩沖存儲器,其連同高速緩沖存儲器控制器(未示出) 一起支持分別作為核16a和16b的部分的Ll高速緩沖存儲器19a、 19b。可以提供額外的緩沖存儲器級,諸如可經由結構總線(fabric bus) 50存取的L3高速緩沖存儲器66。從
7最高(LI )到最低(L3)的每個高速緩沖存儲器級依次可以存儲更多的信息,但是以更長的存取(時間)作為代價。例如,處理器核(例如,16a)中的板上L1高速緩沖存儲器(例如,19a)可能具有128千字節的存儲器存儲容量,L2高速緩沖存儲器12可能具有4兆字節的存儲容量,以及L3高速緩沖存儲器66可能具有132兆字節的存儲容量。為了便于修理/更換有缺陷的處理單元組件,可以以可更換電路板、可插入模塊、或者類似的現場可更換單元(FRU)的形式來構成每個處理單元11、 21、 31、 41,所述可更換電路板、可插入模塊、或者類似的現場可更換單元(FRU)可以被以組件形式容易地換入、裝入、或者換出系統100。
處理單元經由系統互連或者結構總線50與系統100的其它組件通信。將結構總線50連接到一個或多個服務處理器60、系統存儲器設備61、存儲器控制器62、共享的或者L3系統高速緩沖存儲器66、和/或各種外圍設備69。可選地,可以使用處理器橋70將另外的處理器組相互連接。盡管未示出,將理解數據處理系統IOO還可以包括固件,其存儲系統的基本輸入/輸出邏輯,并且無論何時首次打開(引導)計算機系統,都從外圍設備之一搜出并加載操作系統。
如圖1所描述的,可以將數據處理系統100中包括的每個核(例如16a)與流水線結構50 —起實現,在該流水線結構50中,提供多個流水線級使得每一級可以同時執行任務。在示例實現中,流水線結構50可以包括取出級51、解碼級52、執行級53、回寫級54以及完成級55,其中每一級可以包括一個或多個單元。當操作為流水線時,取出級51在給定的周期中取出一個或多個指令,同時在同一周期期間,解碼級52解碼在前一周期中取出的指令。同時,執行級53計算之前取出并解碼的一個或多個指令的結果,回寫級54執行前一周期中的執行級所需要的任何寄存器回寫操作,完成級55通過考慮之前執行的指令來維持正確的架構機器狀態。
系統存儲器設備61 (隨機存取存儲器或RAM)以易失性(臨時)狀態存儲由處理單元使用的程序指令和操作數數據(叩erand data),該系統存儲器設備61包括操作系統61A和應用程序61B。另外,可以以諸如操作系統模塊或者系統管理器(supervisor)的任何期望的形式將性能監視器模塊61C存儲在系統存儲器中,該系統管理器諸如是管理程序(hypervisor)組件等,并且響應于流水線結構50中的所檢測到的性能或者吞吐量狀況,使用該性能監視器模塊61C來優化處理器核的功耗。盡管作為系統存儲器內的設施示出,但本領域技術人員將理解可以替代地在數據處理系統100的另一組件內實現性能監視器模塊61C,或者可以在每個處理核中實現性能監視器模塊的各個實例(instance),以分別控制每個核處的功率消耗。無論被如何實現,性能監視器模塊61C都可以使用可執行指令、代碼和/或包括可編程寄存器的控制邏輯,以便在某一數目(或者窗口)的時鐘周期上檢查給定的流水線結構的性能吞吐量(例如,8個時鐘周期中有5個事件);檢測任何正在以較低的吞吐量性能進行操作(例如,正被停止運轉(stall))的流水線級;并且在受影響的流水線級中選擇以較低的功率消耗操作的低性能模式或者電路設計,且同時維持該流水線現有的性能等級,如在下面將更全面地描述的。
在各種實施例中,性能監視器模塊可被用來監視和控制處理器核中的各個流水線級的性能等級,從而將吞吐量(或者帶寬)與等待時間和功率進行權衡。圖2中描述了示例實施例,以筒化的示意形式圖示具有性能監視器邏輯220的示例處理器流水線200,該性能監視器邏輯220監視每個流水線級的吞吐量,然后基于所檢測到的各個流水線級的吞吐量來控制各個流水線級的功耗。可以使用包括多個級的任何期望的流水線架構。例如,流水線200可以包括取出并轉送指令的指令高速緩沖存儲器取出級202、解碼所取出的指令的指令解碼級204、基于執行和回寫反饋來執行解碼后的指令的執行級206、對寄存器文件執行回寫操作的回寫級208、以及完成各指令的完成級210。如圖2中所示,處理器流水線200的取出級、解碼級、執行任務(executionissue)級、回寫級、以及完成級中的每一級具有多種操作模式和/或可分別選擇的電路或者邏輯。例如,流水線200可以包括取出級202,該取出級202具有至少兩種模式,諸如(1 )在2個流水線周期上每周期可以取出4個指令的高功率、高吞吐量模式、以及(2)在1個流水線周期上每周期可以取出2個指令的低功率、低吞吐量模式。可以利用第一取出電路202A實現高功率、高吞吐量取出模式,可以利用第二取出電路202B實現低功率、低吞吐量模式。另外,解碼級204可以具有兩個或者多個可分別選擇的解碼電路,諸如(l)在3個流水線周期上解碼4個指令的第一解碼電路204A、以及(2)在1個流水線周期上解碼2個指令的第二解碼電路204B。以類似的方式,可以在執行級206處提供可分別選擇的電路、模式和/或邏輯,用來執行指令,諸如(1 )以解碼單元的時鐘頻率的兩倍的時鐘頻率運行的、在2個周期中執行一指令的第一執行電路206A、以及(2)以與解碼單元相同的時鐘頻率運行的、在4個周期中執行一指令的第二執行電路206B。類似地,可以給回寫級208提供可分別選擇的電路、模式和/或邏輯,以處理對于寄存器文件的各種回寫數目和各種回寫等待時間,并且在完成級210處處理各種完成指令數目和各種完成指令等待時間。在每個所描述的級中,利用后綴"A,,指示高功率、高吞吐量的電路或模式,而利用后綴"B"指示低功率、低吞吐量的電路或模式。
如圖2所描述的,流水線級202、 204、 206、 208、 210每一個具有通過檢測每個周期的吞吐量計數來監視每個流水線級的性能的邏輯和/或電路,該吞吐量計數被發送到性能監視器邏輯220。因此,指令高速緩沖存儲器取出級202對每個周期中被取出并被轉送到指令解碼級204的指令的數目進行計數,并將取出計數213提供給性能監視器220。同樣,指令解碼級204對每個周期的解碼事件進行計數,并將解碼計數215發送到性能監視器220,而執行級206對每個周期的執行事件進行計數,并將執行計數217提供給性能監斗見器220。以類似的方式,回寫級208發送被轉送到完成級210的回寫揭:作的數目的回寫計數219,而完成級210對所執行的完成的數目進行計數,并將完成計數221提供給性能監視器220。還示出了功率消耗信號222,其可由熱傳感器生成,并且指示系統的當前功率消耗狀態。信號222可以包括源自系統的不同部件的多個信號。
盡管可以使用任何期望的技術來監視流水線性能,但是本發明的所選擇的實施例通過在計數窗口期間對每一級的操作的數目進行計數來監視各個級的性能。圖3中描述示例實現,以筒化形式圖示給每一級提供的、以在可編程的周期窗口期間對在該級處發生的事件的數目進行計數的吞吐量計數器300。盡管可以使用任何期望的窗口來進行計數,但所描述的吞吐量計數器300通過使用8周期移位寄存器302來在8周期窗口上對級事件進行計數。提供可編程移位寄存器302來從該級接收事件計數指示,其中將每個事件計數指示加到由計數器304保持的值。還將計數器304耦接到可編程移位寄存器302的輸出端,使得從計數器304中減去從寄存器302中移出的事件計數。在操作中,進入移位寄存器302的最左邊的寄存器位的事件計數在每個時鐘點(tick)時被移到下一寄存器位。利用該配置,計數器304將輸出事件計數,該事件計數等于級的數目乘以當在高性能模式下以穩定狀態操作時每個時鐘周期在該級中可以發生的最大的事件數目。例如,如果每個時鐘周期可以發
10生4個事件并且寄存器302長為8級,則最大計數器值可以是"32"。然而,如果該級在一時鐘周期期間無法生成任何事件,則計數器304將輸出較低的事件值,從而發信號通知該級的降低的性能吞吐量。以此方式,由吞吐量計數器300生成的事件計數提供正被吞吐量計數器300監視的級的性能等級的指示。
返回參照圖2,性能監視器220使用吞吐量計數213、 215、 217、 219、221生成一個或多個信號以調節各個流水線級的性能,從而匹配最低性能級的性能等級。因此,如果性能監視器220由吞吐量計數確定處理器流水線的后端停止運轉(例如,等待明顯的負載丟失(outstanding load miss )、分支預測錯誤、以及執行單元等待時間),則可將前端級的性能從高性能、高功耗模式(其使用高性能取出電路202A)轉換到低性能、低功耗模式(其使用較低性能的取出電路202B)。在這樣的情況下,前端取出級202也可以使用較低性能電路202B或者模式來一次一個地取出較少的指令,而對于整個流水線200而言具有相同的性能,這是因為流水線的后端正在限制總吞吐量。同樣,如果前端級停止運轉(例如,取出級202由于指令丟失(miss)而停止運轉),則不需要隨后的解碼級204繼續使用高性能、高功耗解碼電路204A來在同一周期中解碼最大數目的指令以供在處理器流水線中的后面進一步使用,這是因為在這些指令被解碼后,由于取出單元停止運轉的狀況而在管道(pipe)中將出現空泡(bubble)。通過在使用較低性能解碼電路204B來解碼較少的指令而不存在性能影響時使用該較低性能解碼電路204B來解碼較少的指令,可以降低每個周期的功率消耗。以類似的方式,可以有效地降低其它后端級的功率,以匹配停止運轉的前端級的性能等級,從而實質上降低整個流水線的功耗。
在所選擇的實施例中,性能監視器220包括控制邏輯,'用于生成被廣播到所有各級的一個或多個功率等級信號224。實際上(in effect),控制邏輯將吞吐量計數213、 215、 217、 219、 221 (單獨地或者與功率消耗信號22組合地,該功率消耗信號22量化正被處理器流水線200消耗的功率量)拼合為一個(或多個)功率等級信號224。可以將性能監視器220中的控制邏輯配置為使用吞吐量計數來確定一級與其它各級相比是否具有降低的吞吐量,并且為該流水線識別具有最低吞吐量的流水線級。當檢測到低性能級時,性能監視器220中的控制邏輯生成一個或多個功率等級信號224來控制各個級的性能,以通過為每一級選擇較低功率的電路或者操作模式來匹配最低性能級
的吞吐量。因此,功率等級信號224向各級指示應當使用哪種操作模式,使得每一級要么提供高功率/高吞吐量、要么提供低功率/低吞吐量。
使用性能監視器控制邏輯,可以降低各個流水線級的功耗以滿足最低性能流水線級的性能吞吐量。為了例示的目的,下面示出了示例偽代碼,其可被操作系統或者系統管理器使用來利用事件閾值動態地重新配置被提供給各個流水線級的功率等級信號,以確定何時流水線的吞吐量計數將允許改變功率等級而不減損(impair)流水線的總體吞吐量。可以將該偽代碼實現為軟件、微代碼、或者硬件邏輯電路。此偽代碼可以適于其中每級每時鐘周期有4個
可能事件的8周期事件計數窗口。
#define HI_EVENT—THRESH 12#define L6[jEVENiLTHRESH 16#defme PL—COUNT—THRESH 256
FH = (FetohEventCount >= HI—EVENT—THRESH);DH = (DecodeEventCount >= 5l—EVElT丁一THRESH);EH = (ExecutionEventCount >= 5i一EVEl^i—THRESH);WH = (WritebackEventCount 〉= HY一EVENf一THRESH);CH = (CompletionEventCoimt >= H匸EVENiL丁HRESH);FL = (FetchEventCount = LO—EVE^TT—THRisH);DL = (DecodeEventCount = iTo—EVEl^T—THRESH);EL = (ExecuteEventCount = LO—EVENT—THRESH);WL = (WritebackEventCount = lo—EVENT—THRESH);CL = (CompleteEventCount = LO—EVENT—THRESH);
if ((!FH && !DH && !EH && !WH && !CH && 〃幾個事件PL) 〃高功率II SYS_POWER) { 〃系統功率消耗信號高PL = 0; 〃進入低功率PL—COUNT = 0; 〃復位} elseif(!PL&& 〃低功率
((FL && DL && EL && WL && CL) || 〃所有級都繁忙PL_COUNT 〉= PL—COUNT—THRESH)) { 〃低功率計數高PL=1; 〃進入高功率} else PL_COUNT++; 〃向上計lt直到闊值
利用此示例代碼序列,設置事件閾值以定義何時充分利用了處于高功率/高性能模式下的單個級(例如,在窗口期間來自級的事件計數何時超出
HI—EVENTJTHRESH,該HI—EVENTJTHRESH為12),并且定義何時充分利 用了處于低功率/低性能模式下的單個級(例如,在窗口期間來自級的事件計 數何時等于LO—EVENT—THRESH,該LO—EVENT—THRESH為16 )。另夕卜, 設置超時計數器閾值(PL—COUNT—THRESH )以定義在切換回高功率/高性 能模式之前流水線應當在低功率/低性能模式下運行多少時鐘周期,這給予監 視器確定流水線現在是否可以具有較高的總體吞吐量的機會。將來自每個流 水線級的事件計數(例如,FetchEventCount, DecodeEventCount, ExcuteEventCount, WritebackEventCount, CompleteEventCount ) 與高功率事件閾值
(HI—EVENT—THRESH)進行比較,并且使用比較結果來生成被用來控制流 水線執行的功率等級(PL)邏輯位。在所描述的代碼序列中,當所有級沒有 被很好地利用時(例如,來自各級的事件計數低于高功率事件閾值 HI—EVENT—THRESH),將在高功率模式(例如,當PL=1時)下操作的流水 線切換到低功率模式(例如,當PL=0時)。當將流水線切換到低功率模式(!PL ) 時,隨著每個時鐘周期對復位功率等級超時計數器(PL_COUNT)增計數, 并且將來自每個流水線級的事件計數與最大低功率事件閾值
(LO—EVENT—THRESH )進行比較,該最大低功率事件閾值
(LO—EVENT—THRESH)在一個實施例中意味著在8周期窗口上每個周期 計數2個事件。當此比較指示各流水線級在其低功率/低性能模式下被充分利 用并且功率等級超時計數器達到或者超出超時計數器閾值
(PL—COUNT—THRESH)時,選擇高功率模式(PL=1)。還示出了系統功率 消耗信號(SYS—POWER)的使用,當通過系統熱傳感器或者其它高功率狀 況,將該系統功率消耗信號設置為高(例如,SYS—POWER=l)時,該系統 功率消耗信號使得功率等級信號保持為低(例如,pl=0),其依次降低系統 功率并且逐漸使得功率消耗信號返回低(例如,SYS—POWER=0 )。
可以參照圖4中描述的示例來示出施加一個(或多個)功率等級(PL) 信號以控制各個流水線級的操作,圖4以筒化形式圖示處理器流水線400, 其中一個或多個功率等級信號412饋入流水線級402、 404、 406、 408、 410, 并且控制各級的功能。在每一級中,可以利用第一電路(如利用后綴"A" 指示的)實現第一高功率、高吞吐量模式,可以利用第二電路(如利用后綴
"B"指示的)實現第二低功率、低吞吐量模式。如果性能監視器檢測到完成單元410A每周期完成平均2個或者更少的指令,則可以使該各級使用低功 率/低吞吐量模式,這是因為在高功率/高吞吐量模式下運行取出、解碼、回寫 以及發出單元是不理智的。為了完成這點,性能監視器發出一個或多個功率 等級信號412來指示完成級和其它級開始在降低的或者低功率/低吞吐量模式 下執行。在功率等級信號412是被發送到所有級的單個信號的示例實施中, 接收"低"功率等級信號412的級選擇低功率模式或者低功率電路來執行其 功能。因此,如果取出級402A接收"低"功率等級信號412,則重新配置取 出級以使用低功率、低吞吐量電路402B,使得每周期僅取出2個指令,而不 是每周期取出4個指令(當其在高功率/高吞吐量^t式下時)。同樣,可以將 接收"低,,功率等級信號412的解碼級404A重新配置為低功率、低吞吐量 模式,其中,使用兩個低功率解碼器404B以便每周期最多僅解碼2個指令。 并且,當提供"低"功率等級信號412時,將高性能執行級406A重新配置 為低性能執行級406B,以便每周期僅調度(schedule)兩個指令或者在低頻 率模式下執行。另外,將高功率回寫級408A重新配置為低性能回寫級408B, 以便每周期4義回寫兩個指令。以此方式,當完成級410的吞吐量將流水線400 的總體工作量執行特性降低為每周期完成兩個指令時,可以"下移"其它級 來匹配完成單元410的性能等級,而不使總體流水線性能降級。
如將理解的,不應當無限期地將各流水線級留在低性能、低功率模式下, 并且應當提供在明顯地工作量可以受益于更高吞吐量時允許流水線返回高性 能模式的機制,如在程序執行階段中工作量的固有指令級并行性(ILP)增加 時發生的。這可以通過在各級在低功率/低吞吐量模式下操作時繼續監視來自 各級的吞吐量計數來完成。當性能監視器220 (圖2中示出)隨后檢測到處 于低功率/低吞吐量模式下的各級平均為或者接近于在低功率/低通過率模式 下所允許的每周期的最大利用指令處理時,可以將各流水線級重新配置以返 回高性能、高功率模式。為此目的,性能監視器220可以發出一個或多個功 率等級信號224以指示所有級切換到高功率/高吞吐量模式。 一旦返回高功率 /高吞吐量模式,性能監視器224繼續監視來自每一級的吞吐量計數,以確定 工作量特性是否已經改變以及現在是否可以并行地處理更多指令。如將理解 的,可以在同一周期或者不同周期中使各個級在各模式之間切換,并且可以 利用各個功率等級信號224單獨控制該各個級。
除了降低功耗之外,與有時被稱作設計的"貪婪(greedy)"方式的、僅
14被設計來用于最大性能執行的流水線級相比,對于各個級選擇性地使用較低 性能電路的能力實際上可以改進對于特定工作量的工作量性能。例如,凈皮設 計為在單個周期中解碼四個指令的流水線解碼級可能比單個周期解碼兩個指 令的解碼占用更多的時鐘周期。在此情況下,當工作量僅需要每周期解碼兩 個指令時,相對于更長的等待時間(但更高的吞吐量)而言,降低的等待時 間的解碼器將動態地是優選的。這種工作量的示例為具有自然低的指令級平 行性(ILP)的工作量,其中在全功率/高吞吐量中執行處理器流水線是不必 要的,并且由于各單元中較高的等待時間可能對性能造成負面影響,并且不 必要地耗費功率。
為了例示如何使用功率等級信號來動態地重新配置單個處理器級從而使
其在高性能和低性能模式之間切換,圖5圖示可以響應于功率等級信號而分 別選擇高性能設計和低性能設計的執行級500的示例實現。如所描述的,執 行級500包括多個可分別選擇的執行電路,其包括第一高功率執行流水線電 路520、第二高功率執行流水線電路522、低功率執行流水線電路524以及可 配置執行流水線電路526。高功率執行流水線520和522以及可配置流水線 526可以使用額外的電路或者倍頻以明顯更多的功率消耗為代價來降低指令 執行的等待時間。如所描述的,執行調度器510包括調度邏輯512以及門控
(gating)邏輯514、 516,該調度邏輯512以及門控邏輯514、 516接收解碼 后的指令501,并且取決于功率等級信號502的值來選擇性地路由指令,以 便由執行電路520、 522、 524、 526執行。 一般而言,功率等級信號確定執行 級500使用執行電路來實現高性能模式(其造成較高的功率消耗)還是低性 能模式(其造成較低的功率消耗)。如圖5的簡單示例實現中所示,被設置為
"高"并且被施加到門控邏輯514、 516的單個功率等級位502有效地使得所 有執行電路520、 522、 524、 526能夠被處于高性能模式下的執行級500使用。 然而,當將功率等級位502設置為"低"時,門控邏輯514、 516有效地禁用 第一和第二高功率執行流水線電路520、 522,使得低功率執行流水線電路524 被處于低性能模式下的執行級500使用。除了選擇性地使能高功率執行流水 線電路520、 522之外,還可以使用功率等級位502來單獨配置可配置執行單 元526。還可以將功率等級位502并入調度邏輯512中以限制所調度的操作。
當然,將理解可以使用其它途徑來在各個流水線級處降低功耗和性能, 而不降低在其當前吞吐量速率上的總體流水線吞吐量。例如,可以通過降低每一級的時鐘速率來節流(throttle back)各個流水線級。另外或者作為替換, 如果單個級包括重復的資源(例如,執行級中的兩個浮點單元),則可以通過
僅使用所述資源之一來將該級重新配置為較低功率^t式。
為了進一步例示本發明的所選擇的實施例,圖6示出了用于監視各個流 水線級的性能并且生成一個或多個功率等級位來控制流水線級的示例方法 600的流程圖示。在步驟601中,處理開始,諸如當處理器正在以被配置為 處于高性能、高功率模式下的流水線操作時。在步驟602中,監視流水線性 能以檢測流水線吞吐量或者性能何時下降。對于每一級,這可以通過計數或 者檢測在時間窗口中發生多少個級事件來完成,其中該窗口可以是固定的或 者可被可編程地調節。因此,性能監視器對在計數窗口期間在取出級處發生 的取出事件進行計數,并且分離地對在計數窗口期間在解碼級處發生的解碼 事件進行計數,依此類推。步驟602的結果是為每個流水線級測量吞吐量計 數或者事件窗口計數。在步驟603中,使用性能監視器中的控制邏輯將每一 級的事件窗口計數與預定閾值進行比較。基于比較,生成功率等級位以控制 流水線操作。如果來自單個級的事件窗口計數低于第一閾值,則該比較可以 生成"低"功率等級位,或者可以要求來自所有級的事件計數都低于第一閾 值。相反,如果來自所有級的事件窗口計數都等于或者高于第二閾值,則該 比較可以生成"高"功率等級位。在步驟604中,將功率等級位分發或者廣 播到各流水線級以控制在每一級處如何使用資源。當功率等級位在步驟604 中指示要實現較低性能、較低功率模式時,重新配置流水線級資源以降低取 出、解碼、執行、回寫以及完成指令時的速率。相反,如果功率等級位在步 驟604指示要實現較高性能、高功率模式時,則重新配置流水線級資源以提 高取出、解碼、執行、回寫以及完成指令時的速率。因此,當隨時間推進而 重復方法600時,使用檢測到的吞吐量計數以調節功率等級位來要么降低要 么提高流水線性能(以及隨之的功井毛)。
盡管已經參照用于控制流水線處理中的各個級的功耗的示例實現提供了 前述描述,但將理解這里公開的技術可被更廣泛地應用。例如,可以基于多 核處理器系統的總體工作量執行特性來將多核處理器系統從第一、高性能模 式(其中所有處理器核都在操作)動態地重新配置為第二、較低功率性能模 式(其中僅所選擇的處理器核被使能并且可操作)。在另一示例中,在較低性 能模式下可以選擇通用處理器核來應對圖形處理要求,否則該圖形處理要求將通過更快、更消耗功率的專用圖形加速器電路來應對。
如本領域技術人員將理解的,可以將本發明整體或者部分地實現為方法、
系統、或者計算機程序產品。因此,本發明可以采用以下形式整體硬件實 施例、整體軟件實施例(包括固件、駐留軟件、微代碼)等、或者組合軟件 和硬件方面的實施例,這些實施例在這里被統稱作"電路"、"模塊"、或者"系 統"。此外,本發明可以釆用計算機可用存儲介質上的計算機程序產品的形式, 在該計算機可用存儲介質上包含計算機可用程序代碼。例如,多處理器系統 中的每個處理器核可以具有其自身的編程指令或者代碼,用于基于檢測到的 流水線吞吐量來重新配置流水線性能以降低功耗。可替換地,性能監視器邏 輯可以集中地(centrally)位于整個多處理器系統的單個位置處。
已經為例示和說明的目的提出了前述描述。并非意在窮舉或者將本發明 限制為所公開的確切形式。按照上述教導,可以進行許多修改和變化。意在 本發明的范圍不由此詳細描述、而是由所附的權利要求書限制。上述說明和 示例實現提供了制造和使用本發明的組成部分的完整描述。由于可以在不背 離本發明的精神和范圍的前提下做出本發明的許多實施例,因此本發明在于 所附的權利要求書。
權利要求
1. 一種用于控制流水線型處理器中的功率消耗的方法,包括測量在高性能模式下操作的多個流水線級的對應的多個吞吐量速率;檢測該多個吞吐量速率中的一個或數個吞吐量速率何時被降低到第一預定吞吐量速率;在檢測到該多個吞吐量速率被降低到該第一預定吞吐量速率時,將第一功率等級控制信號發送到該多個流水線級;以及響應于該第一功率等級控制信號來重新配置該多個流水線級以在低性能模式下操作,從而降低該多個流水線級的功率消耗。
2. 如權利要求l所述的方法,還包括監^f見該多個流水線級的該多個吞吐量速率,以^r測該多個吞吐量速率何 時達到或超出第二預定閾值速率;在檢測到該多個吞吐量速率達到或超出第二預定閾值速率時,將第二功 率等級控制信號發送到該多個流水線級;以及響應于該第二功率等級控制信號來重新配置該多個流水線級以在高性能 模式下操作。
3. 如權利要求l所述的方法,其中,測量多個吞吐量速率包括對于每 個流水線級,計數在預定窗口期間發生多少個級事件。
4. 如權利要求l所述的方法,其中,檢測該多個吞吐量速率中的一個或 數個吞吐量速率何時被降低到第一預定吞吐量速率包括將該多個吞吐量速 率中的 一個或數個吞吐量速率與預定高性能吞吐量閾值進行比較。
5. 如權利要求l所述的方法,其中,發送第一功率等級控制信號包括 將1-位功率等級控制信號廣播到該多個流水線級。
6. 如權利要求l所述的方法,其中,發送第一功率等級控制信號包括 將單獨的功率等級控制信號發送到該多個流水線級中的每一個流水線級。
7. 如權利要求l所述的方法,其中,發送第一功率等級控制信號包括 將多個功率等級控制信號發送到每一級,以選擇對應的多個流水線級功率消 耗模式、等級或者電路。
8. 如權利要求l所述的方法,其中,重新配置該多個流水線級包括響 應于該第一功率等級控制信號,來在每一級處選擇第一低功率電路。
9. 一種婆:據處理系統,包括處理器,包括多個電路模塊,其中,每個電路模塊執行預定電路操作, 并且包括用于執行該預定電路操作的較高功率電路以及用于執行該預定電路 操作的較低功率電路;數據總線,其被耦接到該處理器;以及計算機可用介質,包含計算機程序代碼,該計算機可用介質被耦接到該 數據總線,該計算機程序代碼包括可由該處理器執行、并被配置為通過以下 步驟來控制該處理器中的功率消耗的指令測量多個電路模塊的對應的多個吞吐量速率,該多個電路模塊中的每 個電路模塊通過使用其較高功率電路來進行操作;檢測該多個吞吐量速率中的一個或數個吞吐量速率何時被降低到第 一預定吞吐量速率;在檢測到該多個吞吐量速率被降低到該第一預定吞吐量速率時,將第 一功率等級控制信號發送到該多個電路模塊;以及響應于該第一功率等級控制信號來重新配置該多個電路模塊,使得每 個電路模塊通過使用其較低功率電路而操作,從而降低該多個電路模塊的 功率消耗。
10. 如權利要求9所述的數據處理系統,還包括被配置為通過以下步驟 來控制該處理器中的功率消耗的指令監視該多個電路模塊的該多個吞吐量速率,以檢測該多個吞吐量速率何 時達到或超出第二預定閾值速率;在檢測到該多個呑吐量速率達到或超出第二預定閾值速率時,將第二功 率等級控制信號發送到該多個電路模塊;以及響應于該第二功率等級控制信號來重新配置該多個電路模塊,使得每個 電路模塊通過使用其較高功率電路而操作。
11. 如權利要求9所述的數據處理系統,其中,該多個電路模塊包括處 理器核中的多個流水線型處理器級。
全文摘要
提供了一種用于動態地重新配置流水線型處理器來以降低的功耗操作而不降低現有性能的方法、系統和程序。通過在處理器中的各個單元或者級執行給定的工作量時監視或者檢測它們的性能,每一級可以一直使用高性能電路直到諸如檢測到吞吐量性能下降時為止,在該時間點重新配置各級以使用較低性能的電路,從而使用較少的功率來滿足降低的性能吞吐量的要求。通過配置處理器以從高性能設計后退到低性能設計以滿足所檢測到的、執行工作量許可的性能特性,可以優化功率消耗。
文檔編號G06F1/32GK101464721SQ200810176830
公開日2009年6月24日 申請日期2008年11月25日 優先權日2007年12月19日
發明者小羅伯特·H·貝爾, 小路易斯·B·卡普斯, 邁克爾·J·夏皮羅 申請人:國際商業機器公司