引言 面向便攜式設(shè)備的SoC設(shè)計,不僅僅要求性能高、體積小,更要求功耗低。一般而言,SoC的靜態(tài)功耗很小,而對負載電容充放電的動態(tài)功耗很大。 SoC內(nèi)部,總線上掛著很多功能設(shè)備,導(dǎo)致總線的電容負載很大。如果總線與片外設(shè)備聯(lián)系,那么,它還要驅(qū)動很長的片外連線以及片外設(shè)備,負載高達50pF,比SoC內(nèi)部各個節(jié)點的電容負載0.05pF高出三個量級。一般而言,總線的功耗占SoC總功耗的10%~80%;一個已經(jīng)對內(nèi)部電路優(yōu)化過的SoC,總線功耗約占50%[1]。隨著寬度的增加,總線消耗的功率占 SoC總功率的比重越來越大,因此,總線的低功耗設(shè)計很重要。 很多通過減少總線動態(tài)翻轉(zhuǎn)來降低總線功耗的算法已經(jīng)被提出來。數(shù)據(jù)總線的數(shù)據(jù)隨機性較大,地址總線的地址向量連續(xù)性較大。它們傳送的數(shù)值各有特點,所以,針對不同類型總線的算法也不一樣。針對數(shù)據(jù)總線有bus- invert算法,針對地址總線有PBE (Page-Based Encoding)算法、WZE(Working Zone Encoding)算法等。本文利用地址總線零翻轉(zhuǎn)編碼方法,通過設(shè)計編碼器和解碼器的結(jié)構(gòu),有效地降低SoC地址總線的功耗。 1 集成電路功耗分析 數(shù)字集成電路的靜態(tài)功耗非常小,往往只有nW(納瓦)級,因此,它的功耗近似等于動態(tài)功耗 [2],如式(1)所示: 其中,P表示數(shù)字集成電路的總功耗;Ci表示電路第i個節(jié)點的負載電容;Vdd表示電源電壓;f表示工作頻率;表示t時刻節(jié)點i的活動因子,正比于節(jié)點i的電平翻轉(zhuǎn)頻率。 設(shè)參數(shù)Cint表示內(nèi)部節(jié)點的平均負載,Cbus表示總線各位的平均負載,Nint表示單位時間所有內(nèi)部節(jié)點的平均翻轉(zhuǎn)次數(shù),Nbus表示單位時間總線的平均翻轉(zhuǎn)次數(shù)。那么,式(1)可以簡化為式(2): 因為內(nèi)部節(jié)點的個數(shù)遠遠大于總線的位數(shù),所以平均翻轉(zhuǎn)次數(shù)Nint遠遠大于Nbus;而負載Cint卻遠遠小于Cbus。前者大約只有后者的千分之一,所以,式(2)中Nbus具有很大的權(quán)重。減小Nbus,能夠顯著地降低P。 2 低功耗設(shè)計 2.1 地址總線零翻轉(zhuǎn)編解碼原理 總線寬度為N,t時刻,總線需發(fā)送的數(shù)據(jù)為Bt。如果Bt與Bt-1相等,則時刻總線狀態(tài)完全不變;如果Bt與Bt-1不相等,則t時刻,總線就會發(fā)生電平翻轉(zhuǎn)。Bt與 Bt-1不同的比特位數(shù)目(0≤≤N)越大,總線電平翻轉(zhuǎn)的位數(shù)就越多,功耗就越大。當Bt與Bt-1互為反碼,則總線每一位都要翻轉(zhuǎn),此時總線翻轉(zhuǎn)的功耗最大。 零翻轉(zhuǎn)編碼法利用降低總線的電平翻轉(zhuǎn)次數(shù),來降低總線功耗。定義bt為內(nèi)核MCU計算出來的t時刻總線數(shù)據(jù)(即編碼前的數(shù)據(jù)),Bt是t時刻已放到總線上的數(shù)據(jù)(即編碼后的數(shù)據(jù)),Jt是解碼器解碼后的數(shù)據(jù)。 總線連續(xù)取址時,相鄰兩次地址的差是相等的,定義為Stride。一般的ROM尋址Stride=1;對Cache尋址時,Stride根據(jù)Cache的尋址特性而定。如果Cache尋址步長是一個word,則Stride=2。 編碼需要一個額外的狀態(tài)信號INC。 零翻轉(zhuǎn)編碼的算法步驟如下: ① 計算bt-1+Stride,比較bt與bt-1+ Stride; ② 如果bt=bt-1+Stride,表明是連續(xù)尋址,那么Bt= Bt-1,置INC=1; ③ 如果bt≠bt-1+Stride,表明是不連續(xù)尋址,那么Bt=bt,置INC=0; ④ 接收端解碼器根據(jù)INC來處理收到的總線數(shù)據(jù)。 零翻轉(zhuǎn)解碼的算法步驟如下: ① 計算Jt-1+Stride; ② 如果INC=1,表明是連續(xù)尋址,那么Jt=Jt-1+stride; ③ 如果INC=0,表明是不連續(xù)尋址,那么Jt=Bt。 中斷和跳轉(zhuǎn)子程序的多少,會影響功耗的降低。中斷和跳轉(zhuǎn)越少,地址向量連續(xù)性越高,零翻轉(zhuǎn)編碼后總線電平翻轉(zhuǎn)越少,節(jié)省的功耗就越大。當?shù)刂房偩一直連續(xù)尋址時,零翻轉(zhuǎn)法理論上可以達到地址總線的零翻轉(zhuǎn),并且,Stride變量可以根據(jù)尋址對象的不同而設(shè)置成對應(yīng)的數(shù)值。 2.2 零翻轉(zhuǎn)編解碼器電路結(jié)構(gòu) 編碼器組成如圖1左半部分。D1寄存bt-1,加法器將bt-1與Stride相加。比較器EQ比較 bt和bt-1+Stride,輸出INC。選擇器MUX的兩組輸入是bt和Bt-1。 圖1 零翻轉(zhuǎn)編碼器和解碼器 編碼器是組合邏輯,不可避免的有毛刺。毛刺雖然時間很短,但依然會增加總線功耗,因此,利用D2、D3觸發(fā)器來同步,過濾掉所有的毛刺。 解碼器結(jié)構(gòu)如圖1右半部分,在接收設(shè)備Memory控制邏輯中實現(xiàn)。寄存器D存儲Jt-1,MUX的兩組輸入是(bt-1+Stride)和Bt。它的結(jié)構(gòu)比編碼器簡單得多。 相對整個SoC而言,編碼器和解碼器的電路規(guī)模很小,帶來的額外硬件面積和功耗也很小[3,4]。 3 驗證結(jié)果分析 將零翻轉(zhuǎn)法應(yīng)用于SoC中,改變SoC設(shè)計的地址總線寬度,分別是8、16、32、64位。對內(nèi)部地址總線和外部地址總線分別計算出優(yōu)化前后的功耗,并分析結(jié)果。使用的EDA工具是Synopsys公司的功耗分析軟件Power Compiler。 3.1 零翻轉(zhuǎn)編碼對內(nèi)部地址總線功耗的影響 本測試方案中,地址總線上懸掛了15個功能模塊,完全在SoC電路內(nèi)部,總線每一位的負載最大為2.1pF。以10 000個完全連續(xù)的地址向量運行SoC,計算地址總線功耗。計算結(jié)果如表1所列。 表1 內(nèi)部總線功耗測試 當總線寬度N增大時,編碼器的MUX寬度隨之增大,它的控制信號sel的負載增加,導(dǎo)致sel時延增大。當 N = 32時的RTL代碼,基于TSMC-0.25μm工藝庫,經(jīng)Design Compiler綜合,得出的關(guān)鍵路徑從D1觸發(fā)器時鐘端到MUX的輸出,最大延時為4.7ns。時鐘頻率是50MHz,編碼器的延遲只占時鐘周期的 23.5%。這個百分比很小。解碼器的結(jié)構(gòu)比編碼器更簡單。可見,編碼器和解碼器都能夠滿足時序要求。 如圖2所示,優(yōu)化后的總線功耗降低了。其中8位總線降低幅度最大,達到了88.3%;而隨著N的增加,功耗降低的幅度變小。由于驗證的10 000組地址向量沒有變,所以優(yōu)化后總線活動減少而節(jié)省的功耗幾乎不隨N的變化而變化;而當N增大時,編碼器的規(guī)模成倍增大(見表1),編碼器硬件所消耗的功率上升很快。因此,編碼器的功耗不斷增大,總線活動節(jié)省的功耗幾乎不變,導(dǎo)致總功耗降低的幅度越來越小。 圖2 零翻轉(zhuǎn)編碼降低的功耗與總線寬度的關(guān)系 如果地址不完全連續(xù),那么功耗降低的幅度更小。所以,當內(nèi)部地址總線寬度過大,超過32位時,不適宜應(yīng)用零翻轉(zhuǎn)算法。 3.2 零翻轉(zhuǎn)編碼對外部地址總線功耗的影響 本測試方案中,地址總線經(jīng)過PAD連接到片外存儲器,總線每一位的負載為50pF。運行一個帶有循環(huán)和跳轉(zhuǎn)的程序?qū)ζ獯鎯ζ鲗懼?總線功耗結(jié)果如表2 所列。 表2 外部總線功耗測試 總線負載為50pF,優(yōu)化后節(jié)省的功耗遠大于編碼器硬件產(chǎn)生的功耗,后者對功耗降低比例的影響減小。所以, 隨著N的增大,功耗節(jié)省比例降低的幅度變小。SoC總線寬度一般在64位以內(nèi),因此,零翻轉(zhuǎn)編碼法幾乎適用于所有的SoC外部地址總線。 由表1與表2的功耗量級的差別知道,總線負載越大,零翻轉(zhuǎn)法優(yōu)化的功耗就越大,編碼器硬件的負面影響越小。 結(jié)語 本文介紹了零翻轉(zhuǎn)編碼地址總線低功耗設(shè)計方法。當?shù)刂房偩一直連續(xù)取址時,通過零翻轉(zhuǎn)編碼,理論上可以達到地址總線電平的零翻轉(zhuǎn),最大限度地降低地址總線功耗。這種設(shè)計方法,既適用于片外地址總線,也適用于寬度在32位以內(nèi)的SoC內(nèi)部地址總線。 參考文獻 1. Stan M R.Burleson W P Bus-invert coding for low-power I/O 1995 2. Weste N.Eshraghian K Principles of CMOS VLSI Design 1988 3. Mehta H.Owens R M.Irwin M J Some Issues in Gray Code Addressing 1996(96) 4. Benini L.De Micheli G.Macii E Asymptotic ZeroTransition Activity Encoding for Busses in Low-power Microprocessor-Based Systems 5. Benini L.De Micheli G.Macii E Address Bus Encoding Technique for System-Level Power Optimization 1998 作 者:東南大學(xué) 殷宏 陸生禮 來 源:單片機與嵌入式系統(tǒng)應(yīng)用2004(1) |