隨著(zhù)集成電路的工作速度和芯片集成度不斷提高,芯片的功耗問(wèn)題變得越來(lái)越突出,高性能低功耗設計已經(jīng)成為當前集成電路領(lǐng)域的一個(gè)重要課題。在以微處理器為核心部件的VLS1系統中,Cache是系統取得高數據傳輸率的關(guān)鍵部件。在現代CPU 中,Cache的功耗約占處理器總功耗的30%~60%,有效降低這部分的功耗,對芯片的低功耗設計有著(zhù)重大的意義。 1 Cache低功耗相關(guān)研究 Cache平均訪(fǎng)問(wèn)功耗是Cache性能表現的一個(gè)重要因素。Cache平均訪(fǎng)問(wèn)功耗由Cache 命中時(shí)的訪(fǎng)問(wèn)功耗、失效時(shí)的訪(fǎng)問(wèn)功耗和失效率三者決定。失效時(shí)的訪(fǎng)問(wèn)功耗又包括兩部分:一部分是Cache失效時(shí)Cache電路的功耗,另一部分則是下一級存儲系統的訪(fǎng)問(wèn)功耗。因此降低Cache功耗可以從三個(gè)方面考慮:一是降低Cache的失效率,二是降低Cache訪(fǎng)問(wèn)能量,三是降低主存訪(fǎng)問(wèn)能量。 為了達到低功耗的目的,對Cache結構做了一些改進(jìn):Phase—lookup Cache結構,應用兩級查詢(xún)的機制,即先訪(fǎng)問(wèn)tag array,只有命中的那一路data才會(huì )在第二相去訪(fǎng)問(wèn),這樣就降低了組相聯(lián)Cache中數據array部分的功耗,但增加了Cache訪(fǎng)問(wèn)的時(shí)間;Way predictive組相聯(lián)Cache結構,在默認情況下只訪(fǎng)問(wèn)一個(gè)tag array和一個(gè)data array,只有在默認訪(fǎng)問(wèn)失效時(shí)才會(huì )去訪(fǎng)問(wèn)其他的tag和data array,這種方法也以增加Cache訪(fǎng)問(wèn)時(shí)間的代價(jià)來(lái)?yè)Q取低功耗;偽組相聯(lián)Cache結構,是具有多個(gè)命中時(shí)間的Cache結構,Cache中的每一路可以被順序讀取,從而可以比傳統的同時(shí)讀取結構節省一部分功耗;另外還有基于壓縮方法方面的研究,針對高頻值的局部性,在讀寫(xiě)Cache的過(guò)程中,對高頻出現的數據值進(jìn)行壓縮存儲,用較少存儲空間保存編碼后的數據,在一定程度上減少了Cache的訪(fǎng)問(wèn)功耗。 低功耗可重構的Cache研究在最近幾年得到關(guān)注,通過(guò)改變Cache的結構參數,不管是用硬件實(shí)現還是用軟件實(shí)現,針對不同的程序來(lái)配置優(yōu)化的Cache結構,盡可能地關(guān)閉不使用的Cache,兼顧了系統的性能和功耗。Cache的結構參數很多,主要的參數有容量大小、相聯(lián)度、塊大小、替換算法、寫(xiě)回策略等。一般而言,系統中的Cache替換算法和寫(xiě)策略是固定的,如果改變也可以在軟件層面上實(shí)現。所以主要關(guān)注Cache的硬件結構是否可重構,僅研究其中幾個(gè)參數(如Cache容量、塊大小和相聯(lián)度)對訪(fǎng)問(wèn)功耗的影響。在設計芯片之前可以使用CAD 工具來(lái)確定對命中時(shí)間和功耗的影響。CACTI程序是一個(gè)可以評估CMOS微處理器各種Cache結構訪(fǎng)問(wèn)時(shí)間和功耗的CAD工具。對于一個(gè)給定的最小特征值,可以改變Cache容量、相聯(lián)度和讀/寫(xiě)端口的數目,以估計各種情況的Cache命中時(shí)間和功耗?芍貥婥ache結構需要綜合考慮Cache的命中率、平均訪(fǎng)問(wèn)時(shí)間和訪(fǎng)問(wèn)能量等性能,合理選擇Cache的配置參數。 2 可重構Cache的體系結構 要實(shí)現可重構Cache,首先Cache的結構要支持運行過(guò)程中的動(dòng)態(tài)劃分,其次要有檢測 Cache命中率的硬件或者軟件機制,并且有相應的動(dòng)態(tài)配置算法。 2.1 可重構Cache系統設計 文獻提出了一種可重構的數據Cache結構。該Cache的數據區被平均分為4個(gè)子分區 (subarray),每個(gè)子分區又分為4組。在Cache訪(fǎng)問(wèn)時(shí),只有一個(gè)子分區打開(kāi),其他子分區的線(xiàn)路不被激活,從而節省了功耗。圖1給出了整個(gè) Cache體系結構及功能模塊。 ![]() 與傳統Cache結構相比,圖1中增加了Cache配置動(dòng)態(tài)選擇器(Cache Configuration Dynamic Selector, CCDS),CCDS用來(lái)更新內部狀態(tài)機,并決定合適的Cache配置。通過(guò)配置CCDS,可以使整個(gè)子陣列無(wú)效,或者使有效子陣列中的某些路無(wú)效。對于無(wú)效的子陣列或者路,局部自選線(xiàn)(Local Word Line)、預充電(Precharge)和讀出放大器(Sense Amplifier)都無(wú)激勵。通過(guò)這些改進(jìn)使得傳統的固定劃分的Cache具備了動(dòng)態(tài)配置能力。 改進(jìn)后的Cache外在表現為一個(gè)虛擬的兩級Cache:Ll/L2。這種分級方式同傳統的 L1/L2兩級Cache結構不同,L1 Cache由激活的不同子分區以及子分區內不同的路數構成,未激活的部分為L(cháng)2,在L1未命中時(shí)激活以進(jìn)行訪(fǎng)問(wèn),L1和L2在物理實(shí)現上表現為同一級。 Cache的地址劃分仍為三部分:標志位、索引位和塊內地址。圖2給出了Cache的地址劃分情況,可分為塊地址(Block Address)和塊內偏移(Block offset)。塊地址可以進(jìn)一步分為標志字段(Tag)和索引字段(Index)。其中Tag的后兩位SS用來(lái)做子分區的選擇位。訪(fǎng)問(wèn)Cache時(shí),首先訪(fǎng)問(wèn)L1,當L1命中時(shí)就直接返回,只有在L1訪(fǎng)問(wèn)失效時(shí)才會(huì )將所有數據區打開(kāi)。對不同的應用程序,L1和L2大小的劃分不同,其訪(fǎng)閩時(shí)間和運行功耗也會(huì )有較大差異。 ![]() 2.2 動(dòng)態(tài)重構算法 在程序運行過(guò)程中,通過(guò)軟件監測自動(dòng)選擇優(yōu)化的Cache結構。一般采用啟發(fā)式算法,即根據程序過(guò)去執行的狀況預測未來(lái)的運行情況,并為其配置相應的優(yōu)化結構。重構流程是:在程序運行的時(shí)候,CPU按固定的時(shí)間間隔檢查一系列的硬件計數器;這些計數器記錄上一時(shí)間段內的Cache缺失率和分支跳轉的發(fā)生頻率,如果改變的程度超過(guò)設定閾值則進(jìn)入重構過(guò)程,否則程序繼續運行。 圖3是可重構算法的狀態(tài)圖。RESET為程序開(kāi)始運行時(shí)的初始狀態(tài);UNSTABLE為非穩定狀態(tài),該狀態(tài)下進(jìn)行結構的搜索與重構;STABLE為選擇好優(yōu)化的Cache結構進(jìn)入穩定運行的狀態(tài);TRANSl,TRANS2為狀態(tài)相互切換時(shí)的中間狀態(tài)。圖4是在UNSTABLE狀態(tài)下的搜索流程。首先根據統計將各種配置的Cache結構按照失效率進(jìn)行排序。進(jìn)入重構搜索狀態(tài)后,如果引起重構的原因是失效率的上升,則沿著(zhù)排序表開(kāi)始,朝失效率降低的方向依次搜索新的Cache結構。如果引起重構的原因是程序分支頻率的改變,則需要搜索所有的Cache 結構。 ![]() ![]() 2.3 可重構Cache中問(wèn)題 (1)數據重名問(wèn)題 Cache中的數據重名問(wèn)題是指主存中同一地址的數據同時(shí)出現在Cache中兩個(gè)不同的位置。實(shí)地址Cache中本來(lái)不存在數字重名問(wèn)題,但引入可重構概念的同時(shí),也帶來(lái)了數據重名問(wèn)題。解決這一問(wèn)題的簡(jiǎn)單辦法是在Cache重構的時(shí)候讓Cache中的內容全部無(wú)效,需要寫(xiě)回的內容都進(jìn)行寫(xiě)回。但這樣會(huì )導致Cache性能下降,特別是在Cache重構比較頻繁的時(shí)候。但是如果動(dòng)態(tài)重構的指令片段較大,則影響比較小。 (2)映射錯誤問(wèn)題 Cache在重構時(shí),其組數量會(huì )變化,從而導致需要比較的Tag位的數量也發(fā)生變化,這會(huì )導致映射錯誤的出現。為了保證處于任何一種狀態(tài)的時(shí)候都有足夠的Tag來(lái)做比較,按照Tag位最長(cháng)的一種配置來(lái)保存Cache地址結構,也就是組數量最少的情況。這樣做雖然會(huì )增加一些無(wú)用的比較,但卻能避免刷新Cache帶來(lái)的性能損失。 結論 本文在傳統Cache結構的基礎上分析了一種可重構Cache的體系結構及其動(dòng)態(tài)重構的配置算法,指出了可重構Cache可能會(huì )遇到的問(wèn)題。通過(guò)對傳統Cache結構的改進(jìn),在嵌入式處理器上實(shí)現Cache可重構技術(shù),這對嵌入式處理器的存儲器體系結構功耗優(yōu)化有著(zhù)重要意義?芍貥婥ache的設計方法具有非常好的低功耗潛力,也是目前計算機體系結構方面的研究熱點(diǎn)之一。 參考文獻 1. Vijaykrishman N.Kandemir M.Irwin M J Energy-driven Integrated Hardware-software Optimization Using Simplepower 2000 2. Hasegawa A.Kawasaki I.Yamada K SH3:High Code Density,Low Power 1995(6) 3. Hennessy John L.Patterson David A 計算機體系結構:量化研究方法 2007 4. Balasubramonian R.Albones D.Buyuktosunoglu A Memory Hierarchy Reconfiguration for Energy and Performance in General-purpose Processor Architectures 2000 5. Yang J.Gupta R Energy Efficient Frequent Value Data Cache Design 2002 作者: 同濟大學(xué) 殷婧 來(lái)源:單片機與嵌入式系統應用 2009 (1) |