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