Cache結(jié)構(gòu)的低功耗可重構(gòu)技術(shù)研究
2.2 動(dòng)態(tài)重構(gòu)算法
在程序運(yùn)行過(guò)程中,通過(guò)軟件監(jiān)測(cè)自動(dòng)選擇優(yōu)化的Cache結(jié)構(gòu)。一般采用啟發(fā)式算法,即根據(jù)程序過(guò)去執(zhí)行的狀況預(yù)測(cè)未來(lái)的運(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ā)生頻率,如果改變的程度超過(guò)設(shè)定閾值則進(jìn)入重構(gòu)過(guò)程,否則程序繼續(xù)運(yùn)行。
圖3是可重構(gòu)算法的狀態(tài)圖。RESET為程序開(kāi)始運(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)的原因是失效率的上升,則沿著排序表開(kāi)始,朝失效率降低的方向依次搜索新的Cache結(jié)構(gòu)。如果引起重構(gòu)的原因是程序分支頻率的改變,則需要搜索所有的Cache結(jié)構(gòu)。
2.3 可重構(gòu)Cache中問(wèn)題
(1)數(shù)據(jù)重名問(wèn)題
Cache中的數(shù)據(jù)重名問(wèn)題是指主存中同一地址的數(shù)據(jù)同時(shí)出現(xiàn)在Cache中兩個(gè)不同的位置。實(shí)地址Cache中本來(lái)不存在數(shù)字重名問(wèn)題,但引入可重構(gòu)概念的同時(shí),也帶來(lái)了數(shù)據(jù)重名問(wèn)題。解決這一問(wèn)題的簡(jiǎn)單辦法是在Cache重構(gòu)的時(shí)候讓Cache中的內(nèi)容全部無(wú)效,需要寫(xiě)回的內(nèi)容都進(jìn)行寫(xiě)回。但這樣會(huì)導(dǎo)致Cache性能下降,特別是在Cache重構(gòu)比較頻繁的時(shí)候。但是如果動(dòng)態(tài)重構(gòu)的指令片段較大,則影響比較小。
(2)映射錯(cuò)誤問(wèn)題
Cache在重構(gòu)時(shí),其組數(shù)量會(huì)變化,從而導(dǎo)致需要比較的Tag位的數(shù)量也發(fā)生變化,這會(huì)導(dǎo)致映射錯(cuò)誤的出現(xiàn)。為了保證處于任何一種狀態(tài)的時(shí)候都有足夠的Tag來(lái)做比較,按照Tag位最長(zhǎng)的一種配置來(lái)保存Cache地址結(jié)構(gòu),也就是組數(shù)量最少的情況。這樣做雖然會(huì)增加一些無(wú)用的比較,但卻能避免刷新Cache帶來(lái)的性能損失。
結(jié) 論
本文在傳統(tǒng)Cache結(jié)構(gòu)的基礎(chǔ)上分析了一種可重構(gòu)Cache的體系結(jié)構(gòu)及其動(dòng)態(tài)重構(gòu)的配置算法,指出了可重構(gòu)Cache可能會(huì)遇到的問(wèn)題。通過(guò)對(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)論