新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > Cache結構的低功耗可重構技術分析

        Cache結構的低功耗可重構技術分析

        作者: 時間:2011-05-29 來源:網絡 收藏

        在分析Cache性能的基礎上介紹了當前低功耗Cache的設計方法,提出了一種可重構Cache模型和動態可重構算法。Cache模型能夠在程序運行過程中改變相聯度和大小,動態可重構算法能夠在運行時針對不同的應用程序對可重構Cache進行配置。通過對Cache的動態配置,不僅可以提高Cache命中率,還能夠有效降低處理器的功耗。

        關鍵詞 Cache 低功耗 可重 構體系結構

        引言

          隨著集成電路的工作速度和芯片集成度不斷提高,芯片的功耗問題變得越來越突出,高性能低功耗設計已經成為當前集成電路領域的一個重要課題。在以微處理器為核心部件的VLSI系統中,Cache是系統取得高數據傳輸率的關鍵部件。在現代CPU中,Cache的功耗約占處理器總功耗的30%~60%[1],有效降低這部分的功耗,對芯片的低功耗設計有著重大的意義。

        1 Cache低功耗相關研究

          Cache平均訪問功耗是Cache性能表現的一個重要因素。Cache平均訪問功耗由Cache命中時的訪問功耗、失效時的訪問功耗和失效率三者決定。失效時的訪問功耗又包括兩部分:一部分是Cache失效時Cache電路的功耗,另一部分則是下一級存儲系統的訪問功耗。因此降低Cache功耗可以從三個方面考慮:一是降低Cache的失效率,二是降低Cache訪問能量,三是降低主存訪問能量。

          為了達到低功耗的目的,對Cache結構做了一些改進:Phaselookup Cache[2]結構,應用兩級查詢的機制,即先訪問tag array,只有命中的那一路data 才會在第二相去訪問,這樣就降低了組相聯Cache 中數據array 部分的功耗,但增加了Cache 訪問的時間;Way predictive 組相聯Cache結構,在默認情況下只訪問一個tag array 和一個data array,只有在默認訪問失效時才會去訪問其他的tag 和data array,這種方法也以增加Cache 訪問時間的代價來換取低功耗;偽組相聯Cache 結構,是具有多個命中時間的Cache結構,Cache 中的每一路可以被順序讀取,從而可以比傳統的同時讀取結構節省一部分功耗;另外還有基于壓縮方法方面的研究[3],針對高頻值的局部性,在讀寫Cache的過程中,對高頻出現的數據值進行壓縮存儲,用較少存儲空間保存編碼后的數據,在一定程度上減少了Cache的訪問功耗。

          低功耗可重構的Cache研究在最近幾年得到關注,通過改變Cache的結構參數,不管是用硬件實現還是用軟件實現,針對不同的程序來配置優化的Cache結構,盡可能地關閉不使用的Cache,兼顧了系統的性能和功耗。Cache的結構參數很多,主要的參數有容量大小、相聯度、塊大小、替換算法、寫回策略等。一般而言,系統中的Cache替換算法和寫策略是固定的,如果改變也可以在軟件層面上實現。所以主要關注Cache的硬件結構是否可重構,僅研究其中幾個參數(如Cache容量、塊大小和相聯度)對訪問功耗的影響。在設計芯片之前可以使用CAD工具來確定對命中時間和功耗的影響。CACTI程序是一個可以評估CMOS微處理器各種Cache結構訪問時間和功耗的CAD工具。對于一個給定的最小特征值,可以改變Cache容量、相聯度和讀/寫端口的數目,以估計各種情況的Cache命中時間和功耗[3]。可重構Cache結構需要綜合考慮Cache的命中率、平均訪問時間和訪問能量等性能,合理選擇Cache的配置參數。

        2 可重構Cache的體系結構

          要實現可重構Cache,首先 Cache的結構要支持運行過程中的動態劃分,其次要有檢測Cache命中率的硬件或者軟件機制,并且有相應的動態配置算法。

        2.1 可重構Cache系統設計

          文獻[4]提出了一種可重構的數據Cache結構。該Cache的數據區被平均分為4個子分區(subarray),每個子分區又分為4組。在Cache訪問時,只有一個子分區打開,其他子分區的線路不被激活,從而節省了功耗。圖1給出了整個Cache體系結構及功能模塊。

        按此在新窗口瀏覽圖片
        圖1 可重構Cache體系結構模型

          與傳統Cache結構相比,圖1中增加了Cache配置動態選擇器(Cache Configuration Dynamic Selector, CCDS),CCDS用來更新內部狀態機,并決定合適的Cache配置。通過配置CCDS,可以使整個子陣列無效,或者使有效子陣列中的某些路無效。對于無效的子陣列或者路,局部自選線(Local Word Line)、預充電(Precharge)和讀出(Sense Amplifier)都無激勵。通過這些改進使得傳統的固定劃分的Cache具備了動態配置能力。

          改進后的Cache外在表現為一個虛擬的兩級Cache:L1/L2。這種分級方式同傳統的L1/L2兩級Cache結構不同,L1 Cache由激活的不同子分區以及子分區內不同的路數構成,未激活的部分為L2,在L1未命中時激活以進行訪問,L1和L2在物理實現上表現為同一級。Cache的地址劃分仍為三部分:標志位、索引位和塊內地址。

        按此在新窗口瀏覽圖片
        圖2 Cache地址劃分

          圖2給出了Cache的地址劃分情況,可分為塊地址(Block Address)和塊內偏移(Block offset)。塊地址可以進一步分為標志字段(Tag)和索引字段(Index)。其中Tag的后兩位SS用來做子分區的選擇位。訪問Cache時,首先訪問L1,當L1命中時就直接返回,只有在L1訪問失效時才會將所有數據區打開。對不同的應用程序,L1和L2大小的劃分不同,其訪問時間和運行功耗也會有較大差異。

        2.2 動態重構算法

          在程序運行過程中,通過軟件監測自動選擇優化的Cache結構。一般采用啟發式算法,即根據程序過去執行的狀況預測未來的運行情況,并為其配置相應的優化結構。重構流程是:在程序運行的時候,CPU按固定的時間間隔檢查一系列的硬件計數器;這些計數器記錄上一時間段內的Cache缺失率和分支跳轉的發生頻率,如果改變的程度超過設定閾值則進入重構過程,否則程序繼續運行。

          圖3是可重構算法的狀態圖。RESET為程序開始運行時的初始狀態;UNSTABLE為非穩定狀態,該狀態下進行結構的搜索與重構;STABLE為選擇好優化的Cache結構進入穩定運行的狀態;TRANS1,TRANS2為狀態相互切換時的中間狀態。圖4是在UNSTABLE狀態下的搜索流程。首先根據統計將各種配置的Cache結構按照失效率進行排序。進入重構搜索狀態后,如果引起重構的原因是失效率的上升,則沿著排序表開始,朝失效率降低的方向依次搜索新的Cache結構。如果引起重構的原因是程序分支頻率的改變,則需要搜索所有的Cache結構。

        按此在新窗口瀏覽圖片
        圖3 可重構算法的狀態轉換圖

        按此在新窗口瀏覽圖片
        圖4 搜索算法

        2.3 可重構Cache中問題

        (1) 數據重名問題

          Cache中的數據重名問題是指主存中同一地址的數據同時出現在Cache中兩個不同的位置。實地址Cache中本來不存在數字重名問題,但引入可重構概念的同時,也帶來了數據重名問題。解決這一問題的簡單辦法是在Cache重構的時候讓Cache中的內容全部無效,需要寫回的內容都進行寫回。但這樣會導致Cache性能下降,特別是在Cache重構比較頻繁的時候。但是如果動態重構的指令片段較大,則影響比較小。

        (2) 映射錯誤問題

          Cache在重構時,其組數量會變化,從而導致需要比較的Tag位的數量也發生變化,這會導致映射錯誤的出現。為了保證處于任何一種狀態的時候都有足夠的Tag來做比較,按照Tag位最長的一種配置來保存Cache地址結構,也就是組數量最少的情況。這樣做雖然會增加一些無用的比較,但卻能避免刷新Cache帶來的性能損失。

        結論

          本文在傳統Cache結構的基礎上分析了一種可重構Cache的體系結構及其動態重構的配置算法,指出了可重構Cache可能會遇到的問題。通過對傳統Cache結構的改進,在嵌入式處理器上實現Cache可重構技術,這對嵌入式處理器的存儲器體系結構功耗優化有著重要意義。可重構Cache的設計方法具有非常好的低功耗潛力,也是目前計算機體系結構方面的研究熱點之一。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 天水市| 苏尼特左旗| 富阳市| 九江市| 肇东市| 加查县| 大宁县| 浏阳市| 龙陵县| 横山县| 华阴市| 宁蒗| 渭源县| 新竹市| 渑池县| 桓台县| 江津市| 平乐县| 华容县| 常州市| 海淀区| 资源县| 宁海县| 府谷县| 耒阳市| 泽州县| 阜新| 福州市| 礼泉县| 深州市| 湖北省| 巩留县| 新民市| 安阳县| 昆明市| 弥勒县| 博乐市| 屏东县| 曲麻莱县| 霍州市| 外汇|