Cache結(jié)構(gòu)的低功耗可重構(gòu)技術(shù)研究
2.2 動(dòng)態(tài)重構(gòu)算法
在程序運(yùn)行過程中,通過軟件監(jiān)測(cè)自動(dòng)選擇優(yōu)化的Cache結(jié)構(gòu)。一般采用啟發(fā)式算法,即根據(jù)程序過去執(zhí)行的狀況預(yù)測(cè)未來的運(yùn)行情況,并為其配置相應(yīng)的優(yōu)化結(jié)構(gòu)。重構(gòu)流程是:在程序運(yùn)行的時(shí)候,CPU按固定的時(shí)間間隔檢查一系列的硬件計(jì)數(shù)器;這些計(jì)數(shù)器記錄上一時(shí)間段內(nèi)的Cache缺失率和分支跳轉(zhuǎn)的發(fā)生頻率,如果改變的程度超過設(shè)定閾值則進(jìn)入重構(gòu)過程,否則程序繼續(xù)運(yùn)行。
圖3是可重構(gòu)算法的狀態(tài)圖。RESET為程序開始運(yùn)行時(shí)的初始狀態(tài);UNSTABLE為非穩(wěn)定狀態(tài),該狀態(tài)下進(jìn)行結(jié)構(gòu)的搜索與重構(gòu);STABLE為選擇好優(yōu)化的Cache結(jié)構(gòu)進(jìn)入穩(wěn)定運(yùn)行的狀態(tài);TRANSl,TRANS2為狀態(tài)相互切換時(shí)的中間狀態(tài)。圖4是在UNSTABLE狀態(tài)下的搜索流程。首先根據(jù)統(tǒng)計(jì)將各種配置的Cache結(jié)構(gòu)按照失效率進(jìn)行排序。進(jìn)入重構(gòu)搜索狀態(tài)后,如果引起重構(gòu)的原因是失效率的上升,則沿著排序表開始,朝失效率降低的方向依次搜索新的Cache結(jié)構(gòu)。如果引起重構(gòu)的原因是程序分支頻率的改變,則需要搜索所有的Cache結(jié)構(gòu)。
2.3 可重構(gòu)Cache中問題
(1)數(shù)據(jù)重名問題
Cache中的數(shù)據(jù)重名問題是指主存中同一地址的數(shù)據(jù)同時(shí)出現(xiàn)在Cache中兩個(gè)不同的位置。實(shí)地址Cache中本來不存在數(shù)字重名問題,但引入可重構(gòu)概念的同時(shí),也帶來了數(shù)據(jù)重名問題。解決這一問題的簡(jiǎn)單辦法是在Cache重構(gòu)的時(shí)候讓Cache中的內(nèi)容全部無效,需要寫回的內(nèi)容都進(jìn)行寫回。但這樣會(huì)導(dǎo)致Cache性能下降,特別是在Cache重構(gòu)比較頻繁的時(shí)候。但是如果動(dòng)態(tài)重構(gòu)的指令片段較大,則影響比較小。
(2)映射錯(cuò)誤問題
Cache在重構(gòu)時(shí),其組數(shù)量會(huì)變化,從而導(dǎo)致需要比較的Tag位的數(shù)量也發(fā)生變化,這會(huì)導(dǎo)致映射錯(cuò)誤的出現(xiàn)。為了保證處于任何一種狀態(tài)的時(shí)候都有足夠的Tag來做比較,按照Tag位最長(zhǎng)的一種配置來保存Cache地址結(jié)構(gòu),也就是組數(shù)量最少的情況。這樣做雖然會(huì)增加一些無用的比較,但卻能避免刷新Cache帶來的性能損失。
結(jié) 論
本文在傳統(tǒng)Cache結(jié)構(gòu)的基礎(chǔ)上分析了一種可重構(gòu)Cache的體系結(jié)構(gòu)及其動(dòng)態(tài)重構(gòu)的配置算法,指出了可重構(gòu)Cache可能會(huì)遇到的問題。通過對(duì)傳統(tǒng)Cache結(jié)構(gòu)的改進(jìn),在嵌入式處理器上實(shí)現(xiàn)Cache可重構(gòu)技術(shù),這對(duì)嵌入式處理器的存儲(chǔ)器體系結(jié)構(gòu)功耗優(yōu)化有著重要意義。可重構(gòu)Cache的設(shè)計(jì)方法具有非常好的低功耗潛力,也是目前計(jì)算機(jī)體系結(jié)構(gòu)方面的研究熱點(diǎn)之一。
評(píng)論