文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.02.001
中文引用格式: 李嵩,褚廷斌,袁正希. 一種軟硬件協(xié)同控制的片上緩存功耗優(yōu)化方法[J].電子技術(shù)應(yīng)用,2016,42(2):6-8,13.
英文引用格式: Li Song,Chu Tingbin,Yuan Zhengxi. A power optimization method of cache-on-chip with software-hardware co-control[J].Application of Electronic Technique,2016,42(2):6-8,13.
0 引言
近些年來(lái),片上多核處理器已經(jīng)作為主流的硬件微型結(jié)構(gòu)被廣泛應(yīng)用在通信領(lǐng)域。隨著半導(dǎo)體深微技術(shù)的發(fā)展,晶體管的集成度越來(lái)越高,高速緩存占據(jù)片上多核處理器面積增加帶來(lái)的漏過(guò)能量的增加也愈加成為一個(gè)不可忽視的難題。
為了減小高速緩存漏過(guò)能量的消耗,許多采用控制高速緩存供電電壓的技術(shù)手段被相繼提出。門(mén)控電壓[1]和高速緩存衰變[2]作為其中極具代表性的技術(shù)手段得到了廣泛的應(yīng)用。門(mén)控電壓技術(shù)是采用在靜態(tài)隨機(jī)存儲(chǔ)器單元與地之間接入一個(gè)高閾值的控制晶體管的方式來(lái)開(kāi)關(guān)控制高速緩存的供電電壓。當(dāng)靜態(tài)隨機(jī)存儲(chǔ)器單元不工作時(shí),高速緩存的漏過(guò)能量就相應(yīng)被節(jié)省下來(lái)了。然而這種方式有一個(gè)很大的弊端,切斷供電電壓的同時(shí)容易造成數(shù)據(jù)的丟失,這和電腦突然斷電隨機(jī)存儲(chǔ)的數(shù)據(jù)容易丟失是一樣的原理。而文獻(xiàn)[3]提出了一種介于開(kāi)關(guān)之間的一種工作模式(睡眠模式)完美地解決了這個(gè)問(wèn)題,同時(shí)節(jié)省了50%-75%的能耗。另一種技術(shù)手段——高速緩存衰變技術(shù),其核心是在高速緩存的每一行設(shè)置一個(gè)時(shí)間監(jiān)控器,如果緩存行的訪問(wèn)時(shí)間高于所設(shè)閾值時(shí)間,則認(rèn)為該行將不會(huì)被再次訪問(wèn),因此可以采用門(mén)控電壓的方式將其關(guān)斷。
本文也采用門(mén)控電壓機(jī)制?;诟咚倬彺娴臄?shù)據(jù)部分訪問(wèn)分為協(xié)議訪問(wèn)和數(shù)據(jù)訪問(wèn)的前提下,采用這種門(mén)控電壓的方式對(duì)高速緩存塊的供電電源進(jìn)行控制,不僅可以獲得能耗上比較理想的優(yōu)化,同時(shí)采用這種方式也不會(huì)破壞高速緩存的一致性通信機(jī)制。
1 相關(guān)研究動(dòng)態(tài)
高速緩存衰變技術(shù)是對(duì)高速緩存的每個(gè)塊使用門(mén)控電壓的硬件控制能源減少機(jī)制。文獻(xiàn)[2]中,死區(qū)時(shí)間被定義為一個(gè)塊最后訪問(wèn)和驅(qū)逐之間的時(shí)間。高速緩存衰變決定是否一個(gè)塊是在死區(qū)時(shí)間是使用一個(gè)對(duì)相應(yīng)的數(shù)據(jù)塊駐留在緩存中的時(shí)鐘周期進(jìn)行計(jì)數(shù)的計(jì)數(shù)器來(lái)進(jìn)行判斷。訪問(wèn)高速緩存的每一個(gè)數(shù)據(jù)塊時(shí),計(jì)數(shù)器會(huì)被重置。如果計(jì)數(shù)器的值超過(guò)給出的衰變時(shí)間間隔,則緩存數(shù)據(jù)塊是在死區(qū)時(shí)間。那么就可以利用門(mén)控電壓的方式來(lái)切斷高速緩存數(shù)據(jù)塊的供電電源。
軟件自失效技術(shù)[4]可以有效減少漏過(guò)能耗。軟件自失效適用于門(mén)控電壓控制自失效技術(shù)[5-6]的概念。自失效技術(shù)是為維持在多處理器環(huán)境中的緩存一致性而設(shè)計(jì)的。上面提到的引用基于一個(gè)至關(guān)重要的事實(shí)那就是無(wú)效塊并沒(méi)有有效的數(shù)據(jù)。因此,可以從能耗角度關(guān)閉數(shù)據(jù)塊的供電電源。另一方面,基于預(yù)測(cè)的自失效技術(shù)置本地緩存副本于無(wú)效可以在無(wú)效消息接收到之前就能有效地切斷無(wú)效數(shù)據(jù)塊的供電電源從而保證高速緩存的一致性。
休眠高速緩存[3]提出了一種新的工作模式。 每次訪問(wèn)緩存行時(shí),緩存控制器通過(guò)檢測(cè)緩存休眠位來(lái)控制高速緩存的供電電壓。如果訪問(wèn)的緩存行是在正常工作模式下,可以讀取緩存行的數(shù)據(jù)內(nèi)容而不會(huì)損失任何性能。其沒(méi)有性能處罰是因?yàn)橥ㄟ^(guò)檢測(cè)休眠位來(lái)檢查緩存行電源模式和讀取、比較標(biāo)記位的行為是并行發(fā)生的行為。然而,如果內(nèi)存數(shù)組是在休眠的模式下,需要防止內(nèi)存數(shù)組的位線放電,因?yàn)樗赡軙?huì)讀出不正確的數(shù)據(jù)。為了解決這個(gè)問(wèn)題,緩存行在下一個(gè)周期會(huì)自動(dòng)喚醒,即緩存行工作在正常模式下。所以在喚醒期間可以訪問(wèn)緩存行的數(shù)據(jù)。
前面提出的軟件自失效技術(shù)雖然可以有效地減少漏過(guò)能耗,但采用門(mén)控電壓的技術(shù)來(lái)開(kāi)關(guān)數(shù)據(jù)塊的供電電源會(huì)導(dǎo)致數(shù)據(jù)的丟失,從而導(dǎo)致性能上的較大損失。然而采用文獻(xiàn)[3]中提出的技術(shù)手段可以很好地避免這個(gè)問(wèn)題,同時(shí)也可以一定程度上減少漏過(guò)能耗。所以本文也采用這種技術(shù)手段來(lái)節(jié)省緩存的能耗。
2 研究動(dòng)機(jī)
為了確定漏過(guò)能量的優(yōu)化空間,分別對(duì)協(xié)議訪問(wèn)和數(shù)據(jù)訪問(wèn)的訪問(wèn)量作一個(gè)統(tǒng)計(jì),統(tǒng)計(jì)結(jié)果如圖1所示。在統(tǒng)計(jì)過(guò)程中,通過(guò)對(duì)SimpleScalar 3.0[7]仿真器進(jìn)行修改來(lái)獲得最后一級(jí)高速緩存中協(xié)議訪問(wèn)和數(shù)據(jù)訪問(wèn)的情況。其中具體的參數(shù)設(shè)置如表1所示。
通過(guò)6個(gè)PARSEC[8]的應(yīng)用程序和8個(gè)SPLASH2[9]的應(yīng)用程序來(lái)對(duì)仿真器進(jìn)行測(cè)試。本次仿真的時(shí)間直到執(zhí)行完一億條指令才截止,仿真結(jié)果如圖1所示。
如圖1所示, 水平軸是14個(gè)不同的測(cè)試應(yīng)用程序,用于測(cè)試和驗(yàn)證本文的假設(shè)。垂直軸是兩個(gè)不同的緩存數(shù)據(jù)塊被(協(xié)議塊和數(shù)據(jù)塊)訪問(wèn)的比例。結(jié)果表明,協(xié)議訪問(wèn)接近一半的緩存訪問(wèn)。由于協(xié)議訪問(wèn)不會(huì)進(jìn)行數(shù)據(jù)的讀寫(xiě),若是協(xié)議訪問(wèn),那么可以通過(guò)切斷該數(shù)據(jù)塊供電電源來(lái)達(dá)到節(jié)省能耗的目的。但是會(huì)造成當(dāng)前保存在數(shù)據(jù)塊中的數(shù)據(jù)大量丟失,從而進(jìn)一步導(dǎo)致應(yīng)用程序訪問(wèn)最后一級(jí)緩存行時(shí)產(chǎn)生丟失。在此情況下,程序會(huì)訪問(wèn)主存從而產(chǎn)生非常大的延遲。所以這種方法會(huì)對(duì)仿真器的性能造成很大的影響。然而,如果采用文獻(xiàn)[3]中提出的控制方案就不會(huì)出現(xiàn)這個(gè)問(wèn)題。因此,本設(shè)計(jì)采用休眠的方式對(duì)數(shù)據(jù)塊進(jìn)行控制。另一方面,數(shù)據(jù)塊從睡眠模式喚醒,只需要幾個(gè)周期的時(shí)間消耗[10]。這意味著,這種休眠方式并不會(huì)帶來(lái)性能上的較大損失。另一個(gè)原因僅僅睡眠數(shù)據(jù)塊而不是整個(gè)緩存行,那是由于程序每次訪問(wèn)緩存行時(shí)都要并行比較緩存行的標(biāo)記數(shù)組位,若休眠標(biāo)志位將會(huì)引起頻繁的喚醒,從而帶來(lái)額外的性能損失。除此之外,標(biāo)記數(shù)組位和數(shù)據(jù)塊相比只消耗輕微的能量,因此它可以工作在正常模式下。
3 軟硬件協(xié)同控制方案
3.1 硬件設(shè)計(jì)方案
為了控制最后一級(jí)高速緩存塊的供電電壓,使用 標(biāo)記數(shù)組中的有效位(圖2中用V表示)來(lái)開(kāi)關(guān)控制相應(yīng)的數(shù)據(jù)塊供電電源。該有效位能夠表示緩存行數(shù)據(jù)是否可用。如圖2所示,有效位直接連接到相應(yīng)的門(mén)控電壓。如果有效位是邏輯1,表示該數(shù)據(jù)快數(shù)據(jù)可以被訪問(wèn),因此相應(yīng)的數(shù)據(jù)塊供電電源被接通為關(guān)閉。如果它是邏輯0,表示數(shù)據(jù)塊中的數(shù)據(jù)不可用,此時(shí)數(shù)據(jù)塊被懸空。當(dāng)有效位為邏輯1時(shí),此時(shí)緩存數(shù)據(jù)塊將分為兩部分(協(xié)議數(shù)據(jù)快和數(shù)據(jù)塊)來(lái)進(jìn)行控制。兩部分?jǐn)?shù)據(jù)塊將工作在圖3所示的兩種模式中,模式的切換由A位控制,A位標(biāo)識(shí)數(shù)據(jù)塊訪問(wèn)的類(lèi)型。
如圖 3 所示,電壓切換是通過(guò)A位來(lái)實(shí)現(xiàn)的。如果只有協(xié)議數(shù)據(jù)訪問(wèn),就將A置為邏輯1或者邏輯 0。在本設(shè)計(jì)中置為邏輯0。
在硬件中執(zhí)行這種機(jī)制時(shí),標(biāo)記數(shù)組的工作電源既沒(méi)有被切斷也沒(méi)有在低電壓休眠模式,有兩個(gè)方面的考慮。其一是如果標(biāo)記數(shù)組總是工作在正常的電壓,可以在多處理器環(huán)境中避免緩存相干問(wèn)題,而且其能耗和數(shù)據(jù)塊相比是非常小的。其二是程序?qū)?biāo)記數(shù)組的訪問(wèn)更加頻繁,頻繁的喚醒和開(kāi)關(guān)對(duì)系統(tǒng)的性能會(huì)有很大的影響。
3.2 軟件層控制方案
研究發(fā)現(xiàn),性能退化的主要原因是緩存數(shù)據(jù)塊頻繁從休眠模式中喚醒。因此提出一種改進(jìn)的高速緩存衰退的方法在軟件控制層面優(yōu)化本設(shè)計(jì)從而達(dá)到減小性能損失的目的。在軟件層方面,測(cè)試程序的平均訪問(wèn)時(shí)間間隔被設(shè)置為睡眠時(shí)間間隔。具體算法流程如圖4所示。如果前后兩次休眠的時(shí)間間隔比設(shè)置的休眠時(shí)間閾值小,認(rèn)為喚醒代價(jià)太大,數(shù)據(jù)塊將工作在正常的電壓,反之喚醒的代價(jià)較小,此時(shí)它將在睡眠模式下工作。
4 仿真結(jié)果
通過(guò)修改Simple Scalar仿真器對(duì)提出的硬件設(shè)計(jì)方案做了性能上的仿真統(tǒng)計(jì),仿真器相關(guān)配置參數(shù)如前表1所示。此外,使用惠普實(shí)驗(yàn)室提出的能耗統(tǒng)計(jì)工具Cacti6.0[11]來(lái)獲得最后一級(jí)高速緩存的泄漏能耗。測(cè)試程序集為8個(gè)SPLASH2的測(cè)試程序和6個(gè)PARSEC的測(cè)試程序。對(duì)比對(duì)象均為未經(jīng)修改的仿真器。仿真結(jié)果如圖5~圖8所示,其中未加入軟件控制的系統(tǒng)能耗優(yōu)化和性能損失情況如圖5和圖6所示,加入軟件控制之后的仿真結(jié)果如圖7和圖8所示。
從以上仿真結(jié)果不難看出,單一的硬件控制方案可以很大程度上節(jié)約系統(tǒng)的能耗,然而性能上的損失是比較嚴(yán)重的,其中raytrace更是達(dá)到了5%以上。然而加入了軟件控制方案之后,系統(tǒng)的性能損失得到了很明顯的改善,均降低到了2%一下,同時(shí)系統(tǒng)的能耗優(yōu)化較之前只減少了2%,這個(gè)是可以接受的。
5 小結(jié)
在此研究中,目標(biāo)是減少協(xié)議訪問(wèn)情況下的漏過(guò)能量消耗。統(tǒng)計(jì)發(fā)現(xiàn)近一半是協(xié)議訪問(wèn),基于此提出了一種基于門(mén)控電壓技術(shù)的硬件設(shè)計(jì)。使用了14個(gè)測(cè)試程序集來(lái)對(duì)修改后的仿真器進(jìn)行性能和功耗評(píng)估。統(tǒng)計(jì)結(jié)果表明,能耗比正常情況減少了76.78%,但不可忽略的是系統(tǒng)的性能損失非常嚴(yán)重。繼而提出了一種改善的高速緩存衰退策略的軟件層次控制算法。仿真結(jié)果表明,性能損失得到了很好的改善。未來(lái)的工作是要更加細(xì)化設(shè)定的休眠間隔閾值使性能損失更小,從而完善整個(gè)設(shè)計(jì)。
參考文獻(xiàn)
[1] POWELL M,YANG S H,F(xiàn)ALSAFI B,et al.Gated-Vdd:a circuit technique to reduce leakage in deep-submicron cache memories[C].Proc.of ISLPED,2000:90-95.
[2] KAXIRAS S,HU Z,MARTONOSI M.Cache decay:exploiting generational behavior to reduce cache leakage power[C].Proc.of 28th ISCA,2001:240-251.
[3] FLAUTNER K,KIM N S,MARTIN S,et al.Drowsy caches:simple techniques for reducing leakage power[C].Proc.of Computer Architecture 2002.Proceedings.29th Annual International Symposium on,2002:148-157.
[4] TANAKA K,F(xiàn)UJITA T.Leakage energy reduction in cache memory by software self-invalidation[C].Proc.of 12th Asia-Pacific Computer Systems Architecture Conference(AC-SAC),Springer,2007:163-174.
[5] LEBECK A R,WOOD D A.Dynamic self-invalidation:reducing coherence overhead in shared-memory multiprocessors[C].Proc. of ISCA,1995:48-59.
[6] LAI A C,F(xiàn)ALSAFI B.Selective,accurate and timely selfinvalidation using last-touch prediction[C].Proc.of ISCA,2000:139-l48.
[7] BURGER D,AUSTIN T,BENNETT S.Evaluating future microprocessors:the simplescalar toolset[R].Tech Report CSTR-96-1308,Univ.of Wisconsin,CS Dept.,1996.
[8] PRINCETON P.Princeton application reposity for sharedmemory computers(PARSEC)[EB/OL].http://parsec.cs.princeton.edu/.
[9] WOO S C,OHARA M,TORRIE E,et al.The SPLASH-2 programs:characterization and methodological considerations[C].In Proceedings of the 22nd International Symposium on Computer Architecture,1995:24-36.
[10] Wang Yue,ROY S,RANGANATHAN N.Run-time powergating in caches of GPUs for leakage energy savings[C].Proc.of Design,Automation & Test in Europe Conference & Exhibition,2012:300-303.
[11] MURALIMANOHAR N,BALASUBRAMONIAN R,JOUPPIN.CACTI 6.0:an intergrated cache timing power and area model[M].Hewlett Packard Labs,2009.