摘要:在分析現(xiàn)有體系結(jié)構(gòu)級低功耗cache設(shè)計方案的基礎(chǔ)上,提出了一種混合cache低功耗設(shè)計策略,通過在常規(guī)混合cache結(jié)構(gòu)上增加一標(biāo)志域來區(qū)分cache某組中的指令和數(shù)據(jù),限制了處理器每次訪問的路數(shù),從而達(dá)到低功耗的效果。詳細(xì)闡明了該方法的原理和硬件實現(xiàn),并將其應(yīng)用到自主研發(fā)的龍騰C2微處理器上。實驗結(jié)果表明,該方法不損耗cache性能,面積犧牲僅1.45%,總功耗降低了23.1%。
關(guān)鍵詞:混合高緩; 低功耗; 體系結(jié)構(gòu)
中圖分類號:TN47
文獻(xiàn)標(biāo)志碼:A
文章編號:1001-3695(2008)06-1894-03
當(dāng)前,低功耗設(shè)計對處理器系統(tǒng)具有重大意義,功耗的增加不僅制約了微處理器集成度的增長,而且由于需要復(fù)雜的冷卻技術(shù)而使成本提高。片上cache消耗了整個處理器功耗的30%~60%[1],降低其功耗對提高處理器的競爭性無疑有重要意義。CMOS電路中功耗包括動態(tài)功耗和靜態(tài)功耗兩部分。前者是由漏電流引起的;后者是由短路電流和狀態(tài)改變時充放電引起的。對于按地址關(guān)聯(lián)cache,動態(tài)功耗占主體地位。組相連cache因為每次訪問要從cache的SRAM中并行地讀出一組中的所有路,但最后只有一路數(shù)據(jù)被使用,造成功耗損失,所以減少每次訪問的路數(shù)可以有效降低功耗。現(xiàn)有的基于此方法的策略有很多,如數(shù)據(jù)符號壓縮[2]、兩段訪問[1]以及增加線性緩沖區(qū)等,但是它們大多是針對哈佛結(jié)構(gòu)的指令或者數(shù)據(jù)cache,且實現(xiàn)的復(fù)雜度和硬件代價較高,較大地犧牲了cache的性能或者面積。
本文研究混合cache的低功耗策略,通過分析若干現(xiàn)有基于上述策略的cache低功耗方法,結(jié)合混合cache自身的特點,提出了一種對混合cache中指令數(shù)據(jù)區(qū)分訪問的cache低功耗思想。通過對比實現(xiàn)該策略前后的龍騰C2處理器功耗,證明了該策略的有效性。
1龍騰C2的基本結(jié)構(gòu)
1.1龍騰C2微處理器整體結(jié)構(gòu)
龍騰C2微處理器是由西北工業(yè)大學(xué)航空微電子中心自主設(shè)計研究的一款面向嵌入式應(yīng)用領(lǐng)域的低功耗32 bit CISC微處理器,與Intel 486DX2完全兼容,工作頻率133 MHz。它包括一個32 bit的整數(shù)處理單元、一個浮點單元、一個16 KB的指令數(shù)據(jù)混合cache、存儲器管理單元、總線接口單元、指令譯碼器和微程序控制器。其結(jié)構(gòu)如圖1所示。
其中,cache采用指令數(shù)據(jù)混合的結(jié)構(gòu)。混合cache的優(yōu)點是能夠動態(tài)平衡指令負(fù)載和數(shù)據(jù)負(fù)載。當(dāng)程序需要更大的指令cache 和更小的數(shù)據(jù)cache(或者相反)時,分立型cache不能改變分配,而混合cache 則會自動執(zhí)行這種動態(tài)平衡。
1.2龍騰C2中cache的基本結(jié)構(gòu)
單從低功耗角度考慮,直接映射的方式每次只訪問cache中的一路,能夠最大程度地減少了每次訪問的數(shù)據(jù)寬度,而且它不需要比較電路,從而最有利于低功耗的實現(xiàn),但眾所周知,它因缺失率高而使其性能遠(yuǎn)遠(yuǎn)低于組相連cache。龍騰C2中的cache經(jīng)過cache模擬工具以及綜合庫的預(yù)算,從速度、性能和面積的折中角度已經(jīng)設(shè)計好了其大小、組數(shù)和相連度等參數(shù),分別是16k、256組和4路。其最初的基本結(jié)構(gòu)如圖2所示。
與常規(guī)組相連混合cache一樣,它包括一個數(shù)據(jù)存儲器和一個標(biāo)志存儲器,當(dāng)給出物理地址和請求信號時,根據(jù)索引并行地讀出標(biāo)志存儲器和數(shù)據(jù)存儲器,并進(jìn)行標(biāo)志比較,根據(jù)命中的路數(shù)信息從讀出四路數(shù)據(jù)中選擇一路供處理器使用。由于是混合cache,數(shù)據(jù)存儲器中讀出的四路可能是數(shù)據(jù),也可能是指令,還可能是兩者的混合。
2Cache低功耗策略分析
從上面四路組相連cache的工作過程可以看出,每次訪問cache需要并行地讀出四路的tag和data,而根據(jù)命中信息最終只選擇數(shù)據(jù)中某一路。對cache功耗研究表明,對直接相連、兩路組相連和四路組相連,數(shù)據(jù)線和數(shù)據(jù)傳感放大分別消耗了55%、65% 和75% 的cache總能量[3]。可見路數(shù)越多,因為讀的數(shù)據(jù)位寬的增大而增加的cache功耗越明顯,如果每次只訪問其中一路,則可大大降低功耗。基于此思想,文獻(xiàn)[4]給出了一種兩段式cache,即先訪問tag域,再根據(jù)命中信息從數(shù)據(jù)域中選擇一路訪問。此方法避免了對其他無效組的訪問,有效地降低了cache功耗,但是需要一個額外的時鐘周期,降低了cache性能。文獻(xiàn)[5]提出通過預(yù)測技術(shù)使得這個延遲被消去,但是其原理是基于指令的順序執(zhí)行規(guī)律,所以該方法只適用于指令cache的功耗優(yōu)化。同樣,增加一個cache行緩沖的方法也不太符合數(shù)據(jù)的訪問規(guī)律,讀寫數(shù)據(jù)有很大的隨機(jī)性,下一個讀寫操作并不一定在同一cache行中,此策略也只針對指令cache。CPU對數(shù)據(jù)訪問存在基地址相關(guān)性,即連續(xù)若干次取數(shù)或者存數(shù)基地址相同的概率很大,不同的只是地址偏移量。文獻(xiàn)[6]利用此規(guī)律提出增加保存組選信息的結(jié)構(gòu)以減少對數(shù)據(jù)cache內(nèi)存儲器的訪問次數(shù),取得了很好的效果。
混合cache的情況比較特殊。從上面分析可以發(fā)現(xiàn),目前cache低功耗策略主要集中在哈佛結(jié)構(gòu)指令cache或者數(shù)據(jù)cache上。由于CPU對指令與數(shù)據(jù)的訪問存在不同的規(guī)律,簡單地套用上述這些方法到混合cache上并不可行。通過研究混合cache的行為,發(fā)現(xiàn)在訪問混合cache時同時讀出的一組四路很可能是指令和數(shù)據(jù)的混合體,如果每次訪問cache前能區(qū)分開兩者,根據(jù)處理器的請求類型:在取指令請求時,只讀取該組中是指令的那些路。在取數(shù)據(jù)請求時,只讀取該組中是數(shù)據(jù)的那些路。這樣不僅大大節(jié)約了功耗,而且判斷命中的比較邏輯也會減少。
3龍騰C2 cache低功耗方案實現(xiàn)
根據(jù)上面的思想,筆者在原有cache的基礎(chǔ)上加了標(biāo)志向量,用來指示cache某組中某路是指令還是數(shù)據(jù)。其具體實現(xiàn)原理圖如圖3所示。
在圖2的基礎(chǔ)上,增加一個向量寄存器組(vec),其深度與cache組數(shù)相同,每個大小是4 bit,用來標(biāo)志該組四路中分別是指令還是數(shù)據(jù),1代表指令,0代表數(shù)據(jù)。另外需增加一個二選一多路選擇器,其選擇控制信號是來自處理器的請求類型信號(為1表示是取指令請求,選擇vec作為cache的tag域和data域的讀使能信號;為1表示是取數(shù)據(jù)請求,選擇vec的反作為cache的tag域和data域的讀使能信號)。
例如,在訪問某一組cache中,該組對應(yīng)的vec=4′b1010,即第一、第三路是數(shù)據(jù),如果當(dāng)前處理器發(fā)出的請求類型request_type==1′b1,表示是取指令請求,則只選通第一路和第三路對cache進(jìn)行訪問,對應(yīng)的標(biāo)志和數(shù)據(jù)存儲器的使能信號cache_rd_en=4′b1010;反之,如果是數(shù)據(jù)讀寫請求,則選擇二、四路進(jìn)行訪問,對應(yīng)的標(biāo)志和數(shù)據(jù)存儲器的使能信號cache_rd_en=4′b0101。所以此二選一的verilog描述為
cache_rd_en=(request_type==1′b1) ? vec:~vec;
另外,在對cache進(jìn)行替換處理時,不僅要替換標(biāo)志和數(shù)據(jù)域中的內(nèi)容,而且還需要將本次替換的是指令還是數(shù)據(jù)標(biāo)志位寫入對應(yīng)位的vec寄存器。不過,這個寫操作是并行的過程,不需要額外的時間開銷。
該方法是以面積換取功耗,其工作機(jī)制與圖2中的混合cache相同,故命中率不會受影響。與圖2常規(guī)混合cache相比,它只是增加了一組標(biāo)記,需要的處理器選擇信號可以從譯碼器提前獲得,所以沒有任何延遲,實現(xiàn)起來也非常簡單。
4結(jié)果分析
4.1面積影響分析
筆者先后在RTL級實現(xiàn)了上述兩種cache模型,以smic18工藝庫,采用DC將cache模塊和龍騰C2系統(tǒng)在約束相同的情況下分別綜合成門級網(wǎng)表。結(jié)果如表1所示。
由表1結(jié)果可以計算出,實現(xiàn)改進(jìn)后的cache結(jié)構(gòu)面積僅增加了原來cache的1.45%,整個處理器的面積只增加了0.63%,所以其面積影響極小。
4.2功耗分析
為了評估其功耗,本文分別將兩種方案實現(xiàn)的cache分別置于龍騰C2的系統(tǒng)中,用VCS進(jìn)行仿真DOS中典型程序,對輸出的VCD文件利用synopsys的功耗分析工具PrimePower分析功耗。由于龍騰C2是面向嵌入式工控機(jī)的,其操作系統(tǒng)是DOS,本文選取DOS下的典型程序進(jìn)行測試。結(jié)果如表2所示。
從表2可以得出,改進(jìn)后的方案運(yùn)行DOS的幾種典型程序的功耗降低幅度分別是19.9%、20.3%、28.0%、24.2%,平均為23.1%。圖4對應(yīng)表2中的數(shù)據(jù)。
5結(jié)束語
通過分析現(xiàn)有的基于減少ccache中SRAM訪問量的低功耗策略,本文提出了一種適合于混合cache的優(yōu)化功耗方法。它既發(fā)揮了混合cache指令、數(shù)據(jù)可以充分利用cache空間的優(yōu)點,又通過標(biāo)志區(qū)分指令還是數(shù)據(jù)減少了平均訪問SRAM的數(shù)量,從而在不損失性能的前提下,達(dá)到了降低功耗的目的。實驗表明,該方法僅增加1.45%的面積開銷,而功耗可降低約23.1%,以較少的面積損失換得較好的功耗優(yōu)化結(jié)果。此策略具有很好的通用性,可以應(yīng)用到任何混合cache的設(shè)計中。
參考文獻(xiàn):
[1]GONZALEZ R,HOROWITZ M. Energy dissipation in general purpose micro-2 processors[J].IEEE Journal of Solid-State Circuits,1996, 31(9):1277-1284.
[2]BELLAS N, HAJJ I N, PLYCHRONOPOULOS C D. Architectural and compiler techniques for energy reduction in high performance microprocessors[J].IEEE Trans VLSI Syst, 2000,8(3):317-326.
[3]WILTON S J E, JOUPPI N P. CACTI:an enhanced cache access and cycle time model[J].IEEE Journal of Solid-State Circuits, 1996,31(5):677-688.
[4]HASEGAWA A, KAWASAKI I, YAMADA K, et al. SH3: high code density, low power [J]. IEEE Micro, 1995,15(6):11-19.
[5]INOUE K, ISHIHARA T, MURAKAMI K. Way-predicting set-associative cache for high performance and low energy consumption[C] //Proc of International Symposium on Low Power Electronics and Design. San Diego:[s.n.], 1999:273-275.
[6]張宇弘,王界兵,嚴(yán)曉浪,等. 利用基地址相關(guān)的低功耗數(shù)據(jù)cache設(shè)計[J].浙江大學(xué)學(xué)報, 2005,39(10):1524-1528.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文