摘 要:運(yùn)用可重構(gòu)cache和動(dòng)態(tài)電壓縮放技術(shù),為處理器及其cache提出了一種基于程序段的自適應(yīng)低能耗算法PBLEA(phasebased low energy algorithm)。該算法使用建立在指令工作集簽名基礎(chǔ)上的程序段監(jiān)測(cè)狀態(tài)機(jī)來判斷程序段是否發(fā)生變化,并作出cache容量及CPU電壓和頻率的調(diào)整決定。在程序段內(nèi),使用容量調(diào)整狀態(tài)機(jī)和通過計(jì)算頻率縮放因子β來先后對(duì)cache容量及CPU電壓和頻率進(jìn)行調(diào)整。在Simpanalyzer模擬器上完成了該算法的實(shí)現(xiàn)。通過對(duì)MiBench測(cè)試程序集的測(cè)試表明:與傳統(tǒng)的cache和CPU相比較,該算法使系統(tǒng)能耗平均節(jié)省了49.1%,而平均性能損失為8.7%。
關(guān)鍵詞:可重構(gòu)高速緩沖存儲(chǔ)器;動(dòng)態(tài)電壓縮放;自適應(yīng)算法;運(yùn)行程序段;低能耗
中圖分類號(hào):TP303 文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2008)09-2692-05
Phasebased lowenergy algorithm for reconfigurable cache and processor
PENG Manman,LI Renfa,PENG Fang,WANG Yuming
(School of Computer Communication, Hunan University, Changsha 410082, China)
Abstract:Utilizing the technology of reconfigurable cache and dynamic voltage scaling (DVS), this paper proposed a phasebased lowenergy algorithm (PBLEA) for cache and processor. The algorithm used a state machine based on instruction working set signature for identifying the change in program and making a decision to adjust cache’s size and processor’s supply voltage and clock frequency. In every runningprogram phase, the algorithm used a state machine for governing cache and determining cache’s size, and setting processor’s voltage and clock frequency by calculating the ratio of the total offchip access time to the total onchip computation time (β). The algorithm has been realized in the Simpanalyzer. By simulating numerous MiBench benchmarks, the results show that the algorithm saves on average 49.1% of total system energy compared with a conventional cache and CPU, then the average performance loss is close to 8.7%.
Key words:reconfigurable cache; dynamic voltage scaling(DVS); selftuning algorithm; runningprogram phase; low energy
在系統(tǒng)結(jié)構(gòu)設(shè)計(jì)中,能耗是與性能同等重要的首要設(shè)計(jì)約束。處理器及其cache(高速緩沖存儲(chǔ)器)是計(jì)算機(jī)系統(tǒng)能耗的主要來源,降低兩者的能耗是低能耗系統(tǒng)設(shè)計(jì)關(guān)注的焦點(diǎn)。動(dòng)態(tài)電壓縮放(DVS)技術(shù),允許CPU在工作時(shí)動(dòng)態(tài)地改變其時(shí)鐘頻率和供電電壓,能有效地減少處理器的能耗。可重構(gòu)cache[1]具有可變的配置參數(shù)集,可以在自適應(yīng)算法的指導(dǎo)下根據(jù)運(yùn)行程序的需求,通過關(guān)閉cache閑置未用的部分來調(diào)整容量,較大地提高能量效率。既然可重構(gòu)cache與DVS都能分別有效地降低cache和處理器的能耗,那么,能否結(jié)合兩者的特點(diǎn)使系統(tǒng)能耗進(jìn)一步減少是值得研究的問題。
本文針對(duì)可重構(gòu)cache和處理器電壓提出了一種基于程序段的自適應(yīng)算法PBLEA。該算法通過監(jiān)測(cè)指令工作集來判定程序段的變化,采用自適應(yīng)的方法動(dòng)態(tài)準(zhǔn)確地配置cache容量以及處理器電壓和頻率,以滿足不同程序段的資源需求。該算法能有效地降低cache和CPU的能耗。
1 PBLEA算法方案
PBLEA必須解決兩個(gè)問題:a)如何監(jiān)測(cè)程序運(yùn)行過程中的行為和性能信息,判斷運(yùn)行程序段是否變化;b)在程序段內(nèi)如何對(duì)cache容量及處理器電壓和頻率進(jìn)行動(dòng)態(tài)配置。
1.1 PBLEA算法的程序段監(jiān)測(cè)策略
運(yùn)行程序可以分為多個(gè)程序段,每個(gè)段內(nèi)指令工作集基本保持不變;而不同的程序段具有不同的指令工作集特征。若能準(zhǔn)確地判斷指令工作集的變化,則能準(zhǔn)確地推斷出運(yùn)行程序段的變化,有效地減少不必要的重構(gòu)及其帶來的性能損失[2]。
工作集簽名最早由Dhodapkar等人[3]提出。每個(gè)簽名包含了在100k指令間隔內(nèi)的指令工作集信息,其形成過程如圖1所示。指令工作集簽名是一個(gè)n位向量,向量每一位的值由程序計(jì)數(shù)器PC的值右移b位(b=log2m,m=ICache塊大小)得到。隨機(jī)哈希函數(shù)用來選擇向量位地址。若S1和S2代表相鄰間隔的兩個(gè)指令工作集簽名,則定義相對(duì)簽名距離為
Δ=|S1S2|/|S1+S2|(1)
其中:分子部分為兩個(gè)簽名的異或運(yùn)算;分母部分為兩個(gè)簽名的同或運(yùn)算。若Δ=1,則表明兩個(gè)簽名完全不同;而Δ=0,則表明兩個(gè)簽名完全相同。為了準(zhǔn)確地判斷運(yùn)行程序段的變化,定義了一個(gè)相對(duì)簽名距離閾值Δth。如果Δ≥Δth,則表明程序的運(yùn)行段發(fā)生了變化;否則表明程序段沒有改變。但一個(gè)合適的閾值可能隨著運(yùn)行程序段的不同而變化,因此,該閾值將隨程序運(yùn)行而自調(diào)整。由于cache的資源需求和處理器的工作負(fù)荷在同一程序段內(nèi)均不作明顯變化[3,4],PBLEA算法以程序段為單位對(duì)cache容量和處理器電壓進(jìn)行動(dòng)態(tài)調(diào)整。
PBLEA算法使用程序段監(jiān)測(cè)狀態(tài)機(jī)來判斷運(yùn)行程序段是否發(fā)生轉(zhuǎn)變。如圖2所示,該狀態(tài)機(jī)有工作集穩(wěn)定、工作集不穩(wěn)定、配置調(diào)整和閾值調(diào)整四種狀態(tài)。在工作集穩(wěn)定態(tài)下,程序的指令工作集特征保持不變。工作集不穩(wěn)定態(tài)由一系列指令工作集特征不相似的間隔組成。在該狀態(tài)機(jī)中,判定程序段是否發(fā)生變化的操作是在每一固定間隔末進(jìn)行的,所以不可避免在程序段的自然邊界與間隔邊界之間存在不匹配情況,工作集不穩(wěn)態(tài)正是這種不匹配情況的集中表現(xiàn)。在配置調(diào)整態(tài)下,該狀態(tài)機(jī)先后對(duì)cache容量及CPU的電壓和頻率進(jìn)行調(diào)整。由于不同程序的差別閾值是不同的,在閾值調(diào)整態(tài)下,程序段監(jiān)測(cè)狀態(tài)機(jī)對(duì)判定程序段是否變化的差別閾值進(jìn)行調(diào)整。
1.2 PBLEA算法的動(dòng)態(tài)配置策略
進(jìn)入程序段后,PBLEA算法首先使用容量調(diào)整狀態(tài)機(jī)對(duì)cache容量進(jìn)行調(diào)整。在找到最優(yōu)cache容量后,再統(tǒng)計(jì)cache容量固定后的CPU性能信息,從而對(duì)CPU的電壓和頻率進(jìn)行調(diào)整。
條件A:如果Δ<Δth,則表明運(yùn)行程序段未作改變,PBLEA保持在工作集穩(wěn)定態(tài),并監(jiān)測(cè)指令工作集的變化。
條件B:如果Δ<Δth,且cache的缺失數(shù)量持續(xù)大于一定的閾值,則表明Δth過大。PBLEA進(jìn)入閾值調(diào)整態(tài),對(duì)Δth進(jìn)行調(diào)整。
條件C:如果Δth被改變,則PBLEA進(jìn)入工作集穩(wěn)定態(tài) 。
條件D:如果Δ≥Δth,則表明運(yùn)行程序段開始發(fā)生改變,PBLEA進(jìn)入工作集不穩(wěn)定態(tài),并監(jiān)測(cè)指令工作集的變化。
條件E:如果Δ≥Δth,且PBLEA保持在工作集不穩(wěn)態(tài)的持續(xù)間隔數(shù)小于5,則PBLEA算法繼續(xù)保持在工作集不穩(wěn)定態(tài),并監(jiān)測(cè)指令工作集的變化。
條件F:如果Δ≥Δth,且PBLEA保持在工作集不穩(wěn)態(tài)的持續(xù)間隔等于5,則表明Δth值過小,PBLEA進(jìn)入閾值調(diào)整態(tài),對(duì)Δth進(jìn)行調(diào)整。
條件G:如果Δ<Δth,則表明程序已經(jīng)進(jìn)入另一運(yùn)行程序段。PBLEA進(jìn)入配置調(diào)整態(tài),對(duì)目前的cache容量和CPU頻率進(jìn)行調(diào)整。
條件H:如果Δ≥Δth,則表明程序段可能發(fā)生變化,PBLEA進(jìn)入工作集不穩(wěn)定態(tài)。
條件I:如果Δ<Δth,且未找到該程序段的cache和CPU優(yōu)化配置,則PBLEA繼續(xù)尋找優(yōu)化配置。
條件J:如果Δ<Δth,且已找到該程序段的cache和CPU優(yōu)化配置,則PBLEA進(jìn)入工作集穩(wěn)定態(tài)。
1.2.1 Cache容量調(diào)整策略
為了在程序段變化后,根據(jù)程序段的動(dòng)態(tài)需求找到更優(yōu)的cache配置,PBLEA使用了如圖3所示的容量調(diào)整狀態(tài)機(jī)。
該狀態(tài)機(jī)有正常、小容量、大容量和容量重構(gòu)四種狀態(tài)。正常態(tài)下,cache容量保持不變;小容量態(tài)下,PBLEA將對(duì)目前容量的cache與更小容量的cache進(jìn)行性能比較(若目前cache的容量不為最小,則定義更小cache的容量為當(dāng)前容量的一半;否則轉(zhuǎn)到正常態(tài)),并決定是否對(duì)容量進(jìn)行調(diào)整。大容量態(tài)下,PBLEA將對(duì)目前容量的cache與更大容量的cache進(jìn)行性能比較(若目前cache的容量不為最大,則定義更大cache具有比目前相聯(lián)度多1的容量;否則轉(zhuǎn)到正常態(tài)),并決定是否對(duì)容量進(jìn)行調(diào)整。容量重構(gòu)態(tài)下,PBLEA算法將通過路關(guān)閉寄存器對(duì)目前的cache容量進(jìn)行調(diào)整。其參數(shù)配置如下:
a)訪問計(jì)數(shù)器accessnum(AN)。分為IAN和DAN兩個(gè)計(jì)數(shù)器,分別用來統(tǒng)計(jì)ICache和DCache在不同狀態(tài)下的訪問次數(shù)。
b)訪問邊界寄存器accessbound(AB)。分為IAB和DAB兩個(gè)寄存器,分別用來決定ICache和DCache在不同狀態(tài)下的最大訪問次數(shù);如果超出,則PBLEA進(jìn)入另一狀態(tài)。
c)連續(xù)失效計(jì)數(shù)器consecutivemissnum (CMN)。分為ICMN和DCMN,分別用來統(tǒng)計(jì)ICache和DCache在正常態(tài)下的連續(xù)失效次數(shù)。
d)連續(xù)失效邊界寄存器consecutivemissbound (CMB)。分為ICMB和DCMB,分別用來決定ICache和DCache在正常態(tài)下的最大連續(xù)失效次數(shù)。一定量的連續(xù)失效表明目前容量的cache不能滿足運(yùn)行程序段的需求,需要對(duì)容量進(jìn)行調(diào)整。
e)最近最少cache路命中計(jì)數(shù)器LRUwayhitnum (LWHN)。分ILWHN和DLWHN,分別用來統(tǒng)計(jì)ICache和DCache在小容量態(tài)下,最近最少兩路的命中次數(shù)。
f)最近最少cache路命中邊界寄存器LRUwayhit bound(LWHB)。分為ILWHB和DLWHB,分別用來決定ICache和DCache在小容量態(tài)下,最近最少訪問的兩路的最大命中次數(shù)。一定量的LRU路命中,表明如果關(guān)閉這兩路,將會(huì)造成cache失效率的明顯增加和性能的下降。
條件A:如果 IAN<IAB且ICMN 條件B:如果 IAN≥IAB且ICMN 條件C:如果IAN<IAB且ILWHN 條件D:如果ILWHN≥ILWHB,表明減少容量后會(huì)造成ICache性能的明顯下降。PBSTA清空IAN和ILWHN,返回正常態(tài)。 條件E:如果 IAN≥IAB且ILWHN < ILWHB,則表明目前的ICache容量超出程序的需求。PBSTA清空IAN和ILWHN后,進(jìn)入容量重構(gòu)態(tài),減小ICache的容量。 條件F:如果cache容量發(fā)生變化,則PBSTA進(jìn)入正常態(tài)。 條件G:如果ICMN≥ICMB,則表明目前容量的ICache可能不能夠滿足程序的需求。PBSTA清空IAN和ICMN,進(jìn)入大容量態(tài)。 條件H:如果IAN<IAB且IEWHN<IEWHB,則PBSTA保持在大容量態(tài)。 條件I:如果IEWHN≥IEWHB,則表明目前的ICache容量不能滿足程序的需求。PBSTA清空IAN和IEWHN后,進(jìn)入容量重構(gòu)態(tài),增大ICache的容量。 條件J:如果 IAN≥IAB且IEWHN<IEWHB,則表明增大ICache的容量不會(huì)帶來性能的明顯提升。PBSTA清空IAN和IEWHN,返回正常態(tài)。 g)額外cache路命中計(jì)數(shù)器extrawayhitnum (EWHN)。分為IEWHN和DEWHN,分別統(tǒng)計(jì)ICache和DCache在大容量態(tài)下,將要打開的那一路的命中次數(shù)。 h)額外cache路命中邊界寄存器extrawayhitbound(EWHB)。分為IEWHB和DEWHB,分別用來決定ICache或DCache在大容量態(tài)下,額外cache路的最大命中次數(shù)。一定量的額外cache路命中,表明增加那一路容量后會(huì)帶來cache性能的提升;否則只會(huì)帶來不必要的能耗。 1.2.2 CPU電壓和頻率調(diào)整策略 文獻(xiàn)[4,5]的DVS算法使用了cache缺失事件來觸發(fā)處理器的電壓縮放,即在片外空轉(zhuǎn)周期內(nèi)通過降低CPU電壓和頻率來節(jié)省能耗。文獻(xiàn)[6]通過實(shí)驗(yàn)驗(yàn)證了CPU的占用需求在程序的運(yùn)行過程中具有階段性變化的特征。如果有一算法能以運(yùn)行程序段為單位對(duì)CPU電壓和頻率進(jìn)行變換,那么它就能在更準(zhǔn)確的時(shí)間區(qū)域里使CPU運(yùn)行在低能耗狀態(tài)。 程序運(yùn)行時(shí)會(huì)經(jīng)歷多個(gè)程序段,每個(gè)程序段的任務(wù)量以周期(cycles)為基準(zhǔn)可分為三個(gè)不同區(qū)域: 四個(gè)要素決定[7]: a)程序段所需執(zhí)行的指令數(shù)量n(在PBLEA中,n=100k)。 b)程序段所需的內(nèi)存訪問數(shù)量m。 c)程序段中每條指令所需執(zhí)行的周期數(shù)CPIionchip(0≤i≤n)。 d)程序段中每次內(nèi)存訪問所占用的內(nèi)存訪問周期數(shù)CAPjoffchip(0≤j 對(duì)于不同的程序段,TonchipR和ToffchipR的比例關(guān)系往往也不同。如果降低CPU電壓和頻率使系統(tǒng)性能損失很大,則表明該程序段具有 為了計(jì)算進(jìn)入程序段后前兩個(gè)間隔的m、CPIavgonchip和CPAavgoffchip,需要采取如下監(jiān)測(cè)策略: a)監(jiān)測(cè)前兩個(gè)間隔內(nèi)CPU執(zhí)行過程的時(shí)鐘周期數(shù)。PBLEA使用CPU周期計(jì)數(shù)器CCN,統(tǒng)計(jì)執(zhí)行過程中的CPU周期數(shù)。當(dāng)程序進(jìn)入該程序段的第三個(gè)間隔,PBLEA清空CCN。b)監(jiān)測(cè)前兩個(gè)間隔內(nèi)的內(nèi)存訪問周期數(shù)。PBLEA使用內(nèi)存周期計(jì)數(shù)器MCN,統(tǒng)計(jì)執(zhí)行過程中的內(nèi)存訪問周期數(shù)。當(dāng)進(jìn)入該程序段的第三個(gè)間隔,PBLEA算法清空MCN。 c)監(jiān)測(cè)前兩個(gè)間隔內(nèi)的L2Cache缺失數(shù)。由于每次L2Cache缺失都觸發(fā)了內(nèi)存訪問事件,PBLEA使用L2Cache缺失計(jì)數(shù)器LMN,統(tǒng)計(jì)執(zhí)行過程中的內(nèi)存訪問數(shù)量。當(dāng)進(jìn)入該程序段的第三個(gè)間隔,PBLEA清空LMN。 有了上述監(jiān)測(cè)策略,當(dāng)程序段第二個(gè)固定間隔結(jié)束時(shí),LMN中的值為前兩個(gè)間隔的內(nèi)存訪問數(shù)m;CCN中的值為前兩個(gè)間隔CPU執(zhí)行過程的周期數(shù),它與200k相除即可得到前兩個(gè)間隔的CPIavgonchip;MCN中的值為前兩個(gè)間隔的內(nèi)存周期數(shù),它與m相除即可得到前兩個(gè)間隔的CPAavgoffchip。然后,根據(jù)式(7)(10),即可求得不同程序段前兩個(gè)間隔的TonchipR、ToffchipR值和它們之間的比例關(guān)系。根據(jù)程序段內(nèi)不同間隔的特征相似性,可以設(shè)定前兩個(gè)間隔TonchipR與ToffchipR的比例關(guān)系即為該程序段的CPU頻率變化因子βR。 下面將解決在程序段內(nèi)如何改變CPU電壓和頻率的問題。由式(11)可知,CPU的理論優(yōu)化頻率foptimalR不僅取決于頻率變化因子βR,而且與程序段允許的最大性能損失PFlossR和CPU初始頻率fcpu有很大關(guān)系。 首先要確定PFlossR和fcpu。本文采用預(yù)先設(shè)定的方法,在程序運(yùn)行前設(shè)定PBLEA的PFlossR(該值可隨程序的運(yùn)行而變化,但需增加額外的監(jiān)測(cè)措施,還需作進(jìn)一步的研究)。而程序段前兩個(gè)間隔內(nèi),CPU的頻率不作變化,因此很容易求得fcpu。 接著需要確定CPU電壓和頻率的變化范圍。理想中的支持DVS技術(shù)的處理器能夠在線性條件下變換頻率。但目前支持DVS技術(shù)的處理器通常只支持離散頻率模式,因此,本文將處理器頻率和電壓分為五個(gè)離散級(jí)別:F1(333 MHz,0.91 V)、F2(400 MHz,0.99 V)、F3(466 MHz,1.05 V)、F4(533 MHz,1.12 V)和F5(600 MHz,1.19 V)。內(nèi)存訪問時(shí)鐘頻率不隨CPU頻率變化,固定為100 MHz。 理想的DVS技術(shù)能夠瞬間改變CPU的電壓和頻率。但在實(shí)際應(yīng)用中,CPU電壓和頻率的改變往往需要一定的系統(tǒng)負(fù)擔(dān)。文獻(xiàn)[8]中指出,當(dāng)處理器的頻率處于1 GHz時(shí),頻率和電壓切換操作可以在12 ns以內(nèi)完成。因此本文假設(shè)切換電壓和頻率帶來的系統(tǒng)延遲為20個(gè)CPU時(shí)鐘周期。 最后,PBLEA使用下列步驟確定程序段的CPU優(yōu)化頻率foperR,并完成電壓和頻率的變化操作: a)當(dāng)程序段運(yùn)行到第二個(gè)間隔的末尾(第200k條指令),停止預(yù)取新的指令。 d)將CPU的電壓和頻率切換為foperR所處的電壓和頻率級(jí)別,并等待固定的時(shí)間間隔。這段間隔包括計(jì)算優(yōu)化頻率帶來的延遲和電壓切換帶來的延遲,本文假定它為200個(gè)CPU時(shí)鐘周期。 e)開始預(yù)取指令,并以新的CPU電壓和頻率進(jìn)入下個(gè)固定間隔。 2 實(shí)驗(yàn)與結(jié)果 本文使用Simpanalyzer[9]模擬器和Mibench[10]測(cè)試程序集來仿真和模型化通用處理器及其cache的性能。處理器采用Simoutorder結(jié)構(gòu),并在此基礎(chǔ)上加入了PBLEA算法和DVS功能,修改了其cache結(jié)構(gòu),使之具有可重構(gòu)能力。表1為PBLEA算法的處理器和存儲(chǔ)器參數(shù),表2為PBLEA算法參數(shù)。 表1 處理器及存儲(chǔ)器參數(shù) 參數(shù)取值處理器工藝0.18 μm 處理器頻率F1:333 MHz、F2:400 MHz、F3:466 MHz、F4:533 MHz、F5:600 MHz 處理器電壓F1:0.91 V,F2:0.99 V,F3:1.05 V,F4:1.12 V,F5:1.19 V 預(yù)取和提交寬度 4條指令 發(fā)射和解碼寬度 4條指令 L1Cache容量8k 1路、16k 2路、24k 3路、32k 4路 L1Cache塊大小32 Byte L1Cache延遲 1個(gè)時(shí)鐘周期 L2Cache容量128 k 1路、256k 2路、384k 3路、512k 4路 L2Cache塊大小64 Byte L2Cache延遲 6個(gè)時(shí)鐘周期 內(nèi)存總線頻率100 MHz 內(nèi)存訪問延遲100內(nèi)存周期 表2 PBLEA算法參數(shù) 參數(shù)取值 工作集簽名向量1 024位 工作集簽名取樣間隔100k指令周期 相對(duì)簽名距離閾值范圍 0.1~0.4 連續(xù)缺失邊界范圍 ICache、DCache: 1~6 最近最少路命中邊界范圍ICache、DCache:1~4 額外路命中邊界范圍ICache、DCache:1~4 訪問邊界范圍 ICache, DCache: 31 072~131 072 為了驗(yàn)證PBLEA算法的能耗優(yōu)化效果,本文將PBLEA算法與只采用動(dòng)態(tài)cache重構(gòu)(phasebased cache reconfiguration algorithm,PBCRA)和只采用DVS技術(shù)(phasebased DVS algorithm,PBDVSA)的兩種算法進(jìn)行了能耗比較。 如圖4所示,以未采用重構(gòu)技術(shù)的cache(L1Cache:32K4Way、L2Cache:512K4Way)能耗為基準(zhǔn),采用PBCRA算法的可重構(gòu)cache平均節(jié)省了34.2%的能耗,范圍從28%到43%;以未采用DVS技術(shù)的CPU(600MHz、1.19V)能耗為基準(zhǔn),采用PBDVSA算法的處理器平均節(jié)省了27.1%的能耗,范圍從17.3%到48.1%;而以未采用可重構(gòu)cache和DVS技術(shù)的處理器為基準(zhǔn),采用PBLEA算法的cache與處理器平均節(jié)省了49.1%的能耗,范圍從38.1%到61.2%。實(shí)驗(yàn)結(jié)果表明,PBLEA算法能夠合理結(jié)合PBCRA算法與PBDVSA算法的特點(diǎn),做到兩種低能耗技術(shù)協(xié)同工作。 評(píng)價(jià)性能的主要指標(biāo)是由配置重構(gòu)所帶來的額外時(shí)鐘延遲的數(shù)量。如圖5所示,以未采用可重構(gòu)cache和動(dòng)態(tài)電壓縮放技術(shù)的處理器為基準(zhǔn),采用PBCRA算法的cache平均性能損失為3.9%,范圍從3.1%到5.6%;采用PBDVSA算法的處理器平均性能損失為6.1%,范圍從4.1%到7.2%;而采用PBLEA算法的cache與處理器的平均性能損失為8.7%,范圍從7%到11.9%。實(shí)驗(yàn)結(jié)果表明,由于PBLEA算法是PBCRA算法與PBDVSA算法的線性疊加,需要同時(shí)指導(dǎo)cache容量和處理器電壓的動(dòng)態(tài)變化,有更高的性能損失。但PBLEA算法更有效地降低了系統(tǒng)的能耗,具有更高的性能能耗比。 3 結(jié)束語(yǔ) 本文為可重構(gòu)cache和處理器電壓提出了一種基于程序段的自適應(yīng)算法PBLEA。該算法結(jié)合動(dòng)態(tài)cache重構(gòu)和DVS技術(shù)的優(yōu)勢(shì),使用程序段監(jiān)測(cè)狀態(tài)機(jī)來判斷運(yùn)行程序段是否發(fā)生變化,以程序段為基礎(chǔ)對(duì)cache容量與CPU電壓和頻率進(jìn)行動(dòng)態(tài)調(diào)整。實(shí)驗(yàn)表明,PBLEA算法在保證性能的前提下,有效地節(jié)省了cache和CPU的能耗。 參考文獻(xiàn): [1]ZHANG Chuanjun,VALID F,LUSECKY R.A selftuning cache architecture for embedded systems[J].ACM Trans on Embedded Computing System,2004,3(2): 407-425. [2]BALASUBRAMONIAN R, ALBONESI D.Memory hierarchy reconfiguration for energy and performance in general purpose architecture[C]//Proc of the 33rd International Symposium on Microarchitecture.New York:ACM Press,2000:245-257. [3]DHODAPKAR A S, SMITH J E. Managing multiconfiguration hardware via dynamic working set analysis[C]//Proc of the 29th Annual International Symposium on Computer Architecture.New York:ACM Press,2002:233-244. [4]LI Hai,CHER C Y,VIJAYKUMAR T M,et al.VSV:L2MissDriven variable supplyvoltage scaling for low power[C]//Proc of the 36th International Symposium on Microarchitecture.New York:ACM Press,2003:19-29. [5]MARCULESCU D.On the use of mircroarchitecturedriven dynamic voltage scaling[C]//Proc of Workshop on ComplexityEffective Design.2000. [6]RUSU C,ABOUGHAZALEH N,F(xiàn)ERREIRA A,et al.I(xiàn)ntergrated CPU and L2 cache fequency/voltage saling using spervised learning[C]//Proc of HiPEAC Workshop on Satistical and Machine Learning Approaches Applied to Architectures and Compilation.2007:41-50. [7]GOVIL K,CHAN E,WASSERMAN H.Comparing algorithms for dynamic speedsetting of a lowpower CPU[C]//Proc of the 1st ACM International Conference on Mobile Computing and Networking.New York:ACM Press,1995:13-25. [8]HENNESSY J,PATTERSON D.Computer architecture a quantitative approach[M].San Francisco: Morgan Kaufmann Publishers,1996. [9]KIN N,AUSTIN T,MUDGE T.Challenges for architectural level power modeling[M].Boston:Kluwer Academic Publishers,2001. [10]GUTHAUS M R, RINGENBERG J S. Mibench:a free commercially representative embedded benchmark suite[C]//Proc of the 4th IEEE International Workshop on Workload Characterization.2001:314.