新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 零翻轉(zhuǎn)編碼地址總線SoC的低功耗設(shè)計(jì)

零翻轉(zhuǎn)編碼地址總線SoC的低功耗設(shè)計(jì)

作者: 時(shí)間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
引言

面向便攜式設(shè)備的SoC設(shè)計(jì),不僅僅要求性能高、體積小,更要求功耗低。一般而言,SoC的靜態(tài)功耗很小,而對(duì)負(fù)載電容充放電的動(dòng)態(tài)功耗很大。

SoC內(nèi)部,總線上掛著很多功能設(shè)備,導(dǎo)致總線的電容負(fù)載很大。如果總線與片外設(shè)備聯(lián)系,那么,它還要驅(qū)動(dòng)很長的片外連線以及片外設(shè)備,負(fù)載高達(dá)50pF,比SoC內(nèi)部各個(gè)節(jié)點(diǎn)的電容負(fù)載0.05pF高出三個(gè)量級(jí)。一般而言,總線的功耗占SoC總功耗的10%~80%;一個(gè)已經(jīng)對(duì)內(nèi)部電路優(yōu)化過的SoC,總線功耗約占50%[1]。隨著寬度的增加,總線消耗的功率占 SoC總功率的比重越來越大,因此,總線的低功耗設(shè)計(jì)很重要。

很多通過減少總線動(dòng)態(tài)翻轉(zhuǎn)來降低總線功耗的算法已經(jīng)被提出來。數(shù)據(jù)總線的數(shù)據(jù)隨機(jī)性較大,地址總線的地址向量連續(xù)性較大。它們傳送的數(shù)值各有特點(diǎn),所以,針對(duì)不同類型總線的算法也不一樣。針對(duì)數(shù)據(jù)總線有bus- invert算法,針對(duì)地址總線有PBE (Page-Based Encoding)算法、WZE(Working Zone Encoding)算法等。本文利用地址總線零翻轉(zhuǎn)編碼方法,通過設(shè)計(jì)編碼器和解碼器的結(jié)構(gòu),有效地降低SoC地址總線的功耗。

1集成電路功耗分析

數(shù)字集成電路的靜態(tài)功耗非常小,往往只有nW(納瓦)級(jí),因此,它的功耗近似等于動(dòng)態(tài)功耗 [2],如式(1)所示:



其中,P表示數(shù)字集成電路的總功耗;Ci表示電路第i個(gè)節(jié)點(diǎn)的負(fù)載電容;Vdd表示電源電壓;f表示工作頻率;表示t時(shí)刻節(jié)點(diǎn)i的活動(dòng)因子,正比于節(jié)點(diǎn)i的電平翻轉(zhuǎn)頻率。

設(shè)參數(shù)Cint表示內(nèi)部節(jié)點(diǎn)的平均負(fù)載,Cbus表示總線各位的平均負(fù)載,Nint表示單位時(shí)間所有內(nèi)部節(jié)點(diǎn)的平均翻轉(zhuǎn)次數(shù),Nbus表示單位時(shí)間總線的平均翻轉(zhuǎn)次數(shù)。那么,式(1)可以簡化為式(2):



因?yàn)閮?nèi)部節(jié)點(diǎn)的個(gè)數(shù)遠(yuǎn)遠(yuǎn)大于總線的位數(shù),所以平均翻轉(zhuǎn)次數(shù)Nint遠(yuǎn)遠(yuǎn)大于Nbus;而負(fù)載Cint卻遠(yuǎn)遠(yuǎn)小于Cbus。前者大約只有后者的千分之一,所以,式(2)中Nbus具有很大的權(quán)重。減小Nbus,能夠顯著地降低P。

2低功耗設(shè)計(jì)

2.1地址總線零翻轉(zhuǎn)編解碼原理

總線寬度為N,t時(shí)刻,總線需發(fā)送的數(shù)據(jù)為Bt。如果Bt與Bt-1相等,則時(shí)刻總線狀態(tài)完全不變;如果Bt與Bt-1不相等,則t時(shí)刻,總線就會(huì)發(fā)生電平翻轉(zhuǎn)。Bt與 Bt-1不同的比特位數(shù)目(0≤≤N)越大,總線電平翻轉(zhuǎn)的位數(shù)就越多,功耗就越大。當(dāng)Bt與Bt-1互為反碼,則總線每一位都要翻轉(zhuǎn),此時(shí)總線翻轉(zhuǎn)的功耗最大。

零翻轉(zhuǎn)編碼法利用降低總線的電平翻轉(zhuǎn)次數(shù),來降低總線功耗。定義bt為內(nèi)核MCU計(jì)算出來的t時(shí)刻總線數(shù)據(jù)(即編碼前的數(shù)據(jù)),Bt是t時(shí)刻已放到總線上的數(shù)據(jù)(即編碼后的數(shù)據(jù)),Jt是解碼器解碼后的數(shù)據(jù)。

總線連續(xù)取址時(shí),相鄰兩次地址的差是相等的,定義為Stride。一般的ROM尋址Stride=1;對(duì)Cache尋址時(shí),Stride根據(jù)Cache的尋址特性而定。如果Cache尋址步長是一個(gè)word,則Stride=2。
編碼需要一個(gè)額外的狀態(tài)信號(hào)INC。
零翻轉(zhuǎn)編碼的算法步驟如下:
①計(jì)算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)解碼的算法步驟如下:
①計(jì)算Jt-1+Stride;
②如果INC=1,表明是連續(xù)尋址,那么Jt=Jt-1+stride;
③如果INC=0,表明是不連續(xù)尋址,那么Jt=Bt。

中斷和跳轉(zhuǎn)子程序的多少,會(huì)影響功耗的降低。中斷和跳轉(zhuǎn)越少,地址向量連續(xù)性越高,零翻轉(zhuǎn)編碼后總線電平翻轉(zhuǎn)越少,節(jié)省的功耗就越大。當(dāng)?shù)刂房偩€一直連續(xù)尋址時(shí),零翻轉(zhuǎn)法理論上可以達(dá)到地址總線的零翻轉(zhuǎn),并且,Stride變量可以根據(jù)尋址對(duì)象的不同而設(shè)置成對(duì)應(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)編碼器和解碼器

編碼器是組合邏輯,不可避免的有毛刺。毛刺雖然時(shí)間很短,但依然會(huì)增加總線功耗,因此,利用D2、D3觸發(fā)器來同步,過濾掉所有的毛刺。

解碼器結(jié)構(gòu)如圖1右半部分,在接收設(shè)備Memory控制邏輯中實(shí)現(xiàn)。寄存器D存儲(chǔ)Jt-1,MUX的兩組輸入是(bt-1+Stride)和Bt。它的結(jié)構(gòu)比編碼器簡單得多。

上一頁 1 2 下一頁

評(píng)論


技術(shù)專區(qū)

關(guān)閉