1、引言
近年來,功能強(qiáng)大和密集型的數(shù)字信號處理器(DSP)已廣應(yīng)用于當(dāng)前許多小型移動產(chǎn)品中,并成為必不可少的部分。
這些使用廣泛的小型移動產(chǎn)品包括蜂窩電話、手持PDA 和GPS導(dǎo)航器等。對于此類微型產(chǎn)品的設(shè)計,要求DSP芯片必須具有極低功耗從而最大程度延長電池壽命和減小產(chǎn)品尺寸。
現(xiàn)代的高性能DSP芯片中或多或少采取了一些與通用處理器相同的低功耗設(shè)計,如對于DSP芯片的片內(nèi)存儲器,就有通過設(shè)計低功耗的存儲單元,采用Divided-Word-L ine (DWL)譯碼設(shè)計等方法來降低DSP芯片的存儲器部分的功耗。但是對于SoC而言,由于其總線上掛有很多設(shè)備,導(dǎo)致總線的電容負(fù)載很大。如果總線與片外設(shè)備聯(lián)系,那么,它還要驅(qū)動很長的片外連線以及片外設(shè)備,負(fù)載高達(dá)50pF,比SoC內(nèi)部各個節(jié)點的電容負(fù)載0. 05pF高出三個量級。一般而言, SoC總線的功耗占SoC總功耗的10% ~80%;一個已經(jīng)對內(nèi)部電路優(yōu)化過的SoC,總線功耗約占50%。隨著寬度的增加,總線消耗的功率占SoC總功率的比重越來越大,因此,總線的低功耗設(shè)計很重要。
然而現(xiàn)代的許多高性能DSP芯片在設(shè)計過程中,并沒有考慮到這一問題,隨著集成電路工藝的不斷提升,如何降低總線功耗的問題已經(jīng)越來越重要。在文獻(xiàn)[ 1 ]中由Paul P. Sotiriadis和Anantha P. Chandrakasan提出的一個DSM總線的線間電容的模型下,人們已經(jīng)對于降低總線功耗提出了一些編碼算法和譯碼器,并且通過在采用RISC體系結(jié)構(gòu)處理器的芯片上試驗取得了較好的效果,其中比較有代表性的有Bus2Invert Code譯碼器、T0 Code譯碼器等。
(1)Bus2Invert Code譯碼器
定義總線的寬度是N, b ( t)為內(nèi)核MCU計算出來的t時刻總線數(shù)據(jù)(即編碼前的數(shù)據(jù)) , B ( t)是t時刻已放到總線上的數(shù)據(jù)(即編碼后的數(shù)據(jù)) , J ( t)是解碼器解碼后的數(shù)據(jù), H ( t)是指b ( t)和b ( t-1)的Hamming Distance??偩€傳輸數(shù)據(jù)時,相鄰兩次讀取的數(shù)據(jù)都是確定的,因此可以確定兩次數(shù)據(jù)b ( t)和b ( t-1)的Hamming Distance,如果2 ×H ( t) >N ,這說明總線上有超過一半的信號需要翻轉(zhuǎn),這時如果將第二次傳輸?shù)臄?shù)據(jù)逐位取反再傳輸,就可以減少信號翻轉(zhuǎn)的次數(shù)。這種譯碼器適用于數(shù)據(jù)總線,可以在數(shù)據(jù)總線上傳輸隨機(jī)數(shù)據(jù)時大幅降低的功耗,但是對于隨機(jī)性不強(qiáng)的地址總線的優(yōu)化并不明顯。
(2) T0 Code譯碼器
T0 譯碼器的原理在于盡可能地減少總線的翻轉(zhuǎn)次數(shù),由于指令總線上的地址在多數(shù)情況下都是以相同的增量增加(在沒有跳轉(zhuǎn)等情況下PC = PC +N。這里N 是一個定值) ,因此規(guī)定當(dāng)兩個相鄰的數(shù)據(jù)的差為N 時,總線上的數(shù)據(jù)不變化,只有當(dāng)不為N 時才傳輸新的數(shù)據(jù)。如果在設(shè)計中采用T0編碼的譯碼器和解碼器,那么則在下面這種情況下可以達(dá)到最低的功耗:如果數(shù)據(jù)流中的數(shù)據(jù)都是以同樣的間隔的無限序列,T0 編碼可以使得在總線上傳輸這些數(shù)據(jù)時,總線上沒有出現(xiàn)翻轉(zhuǎn)。譯碼器則對于有規(guī)律性變化的地址總線的優(yōu)化非常顯著,而對隨機(jī)性較大的數(shù)據(jù)總線的功耗降低沒有什么幫助。
由于DSP處理器與通用處理器的體系結(jié)構(gòu)的差異,決定了一些適用于通用處理器的方法并不一定適用于DSP處理器,以上的方法還未應(yīng)用在DSP處理器中。
然而DSP處理器的獨特構(gòu)造也為DSP處理器的低功耗總線設(shè)計提供了條件:DSP處理器執(zhí)行的程序中需要執(zhí)行大量的乘加運(yùn)算來實現(xiàn)DSP算法,需要獨立的地址生成器生成大量有相同間隔的連續(xù)地址,從而極其利于類似T0的編碼算法對其優(yōu)化;而DSP處理器處理的數(shù)據(jù)大多為隨機(jī)性非常強(qiáng)的隨機(jī)數(shù)列,可以發(fā)揮Bus-Invert Code譯碼器的作用。
2、總線模型
在芯片的制造技術(shù)到達(dá)了深亞微米級(DSM)時,總線功耗已經(jīng)成為一個重要的問題,總線功耗的降低對于芯片整體的功耗降低已經(jīng)越來越重要,因此在DSM下建立一個合理的總線模型是首先要解決的問題。
圖1是在文獻(xiàn)[ 1 ] 中由Paul P. Sotiriadis和Anantha P. Chandrakasan提出的一個DSM總線的線間電容的模型。從圖1可以看出,當(dāng)工藝水平達(dá)到深亞微米級時,總線模型已經(jīng)與以往的模型發(fā)生了較大的變化,我們必須細(xì)致的考慮線間的電感效應(yīng),因此,圖1模型具有較好的說明性。實際中,用到的是如圖2所示經(jīng)過簡化的模型。
用式(1)和式(2)表示在不同時刻第i根總線上的電壓:
其中T表示總線上的時鐘周期,Vinew表示第i根總線上的電壓(0或者是Vdd ) ,Vi ( x, t)表示t時刻上第i根總線上的電壓值,而當(dāng)一根總線的電壓發(fā)生變化時,其消耗的能量可以計算出為 Ei=∫T 0VddIi( x)dx,
而全部n根總線上的消耗的功耗為E = ∑Ei ,由此可以用矩陣的寫法式(3)和式(4)來表示
從式(6)可以明顯地發(fā)現(xiàn), 如果想降低總線上的功耗,主要的方法就是使總線上傳遞數(shù)據(jù)時,在兩次傳輸?shù)臄?shù)據(jù)過程中,盡量減少總線的翻轉(zhuǎn)次數(shù)。因此,在降低總線功耗的編碼方法中,就是通過編碼的方式進(jìn)行優(yōu)化,使得當(dāng)傳輸相同的數(shù)據(jù)時,經(jīng)過優(yōu)化的總線上的翻轉(zhuǎn)次數(shù)減少,從而降低總線上的功耗。
3、最小海明距離編碼的設(shè)計思路
現(xiàn)代的高性能DSP芯片中也或多或少采取了一些與通用處理器相同的低功耗設(shè)計,如對于DSP芯片的片內(nèi)存儲器就有通過設(shè)計低功耗的存儲單元, 采用Divided-Word-L ine(DWL)譯碼設(shè)計等方法來降低DSP芯片的存儲器部分的功耗,而由于DSP芯片的特殊性,我們可以采用一些特有的低功耗設(shè)計:DSP芯片支持的常用算法有FFT, F IR等,都需要大量乘加運(yùn)算,因此DSP芯片中有一個獨特的部件地址生成器來提高數(shù)據(jù)的地址生成速度,而生成的地址通常為具有固定步長的地址。
在總線上傳輸?shù)臄?shù)據(jù)也經(jīng)常出現(xiàn)具有固定步長地址序列,那么可以利用這一特點對其加以優(yōu)化。而乘加運(yùn)算中的數(shù)據(jù)是一個隨機(jī)的序列,需要用特殊的譯碼器來解決。對于超哈佛總線結(jié)構(gòu)的DSP芯片的低功耗總線設(shè)計,則要綜合考慮這兩方面的需求。
現(xiàn)在已經(jīng)提出的一些譯碼器和編碼算法都只是從一方面進(jìn)行優(yōu)化,如Bus-Invert Code對于降低隨機(jī)序列的功耗比較有效,但是對于順序序列的效果并不明顯; T0 Code由于需要增加一個信號參加譯碼器的譯碼,因此使譯碼器的硬件設(shè)計更為復(fù)雜,而且對于時序的控制比較困難。如果能找到一種合適的方法兼顧到各種不同的需要,就可以應(yīng)用在DSP芯片的總線設(shè)計中并達(dá)到降低總線功耗的作用。
首先,我們需要從編碼的角度看,設(shè)計出一種新的編碼算法,從而在不增加任何硬件開銷的情況下,通過采用改進(jìn)的編碼器來降低總線上的功耗;然后,再選取一種低功耗譯碼器,使它能彌補(bǔ)編碼算法的不足,從而進(jìn)一步降低功耗。
需要注意的是,兩種譯碼器不能是基于同一原理,否則兩者的結(jié)合無法互相彌補(bǔ)彼此的不足,其效果與單獨使用一種方法無本質(zhì)區(qū)別。我們不采用T0編碼器的原因在于,它只針對間隔固定的序列有效,由于這個間隔是一個確定的值,所以不是很靈活,而最小海明距離編碼算法則比它靈活一些。
4、最小海明距離編碼算法?
(1)局部化原理
局部化原理分為時間局部性原理和空間局部性原理。我們根據(jù)計算機(jī)的空間局部性原理,也就是說由于在相對較短的一段時間內(nèi),處理器會重復(fù)訪問相對集中的一部分?jǐn)?shù)據(jù),因此在總線上傳輸?shù)臄?shù)據(jù)有這樣一個特點:總線上傳輸?shù)牡刂肪哂幸欢ǖ倪B續(xù)性,也就是說,在一段時間內(nèi),總線上的數(shù)據(jù)具有連續(xù)性(如0000, 0001, 0010, 0011, .) 。隨著多媒體技術(shù)和DSP技術(shù)的廣泛應(yīng)用,現(xiàn)代高速處理器更是具有這樣的特點,在大部分?jǐn)?shù)字處理算法中,需要進(jìn)行大量的乘加運(yùn)算,通常這些數(shù)據(jù)都是存放在連續(xù)地址的存儲器內(nèi),對此加以利用,就可以找到一些方法來降低總線的功耗。?
(2) 算法目標(biāo)
通過一個合理的編碼方案,盡可能地減少當(dāng)有相同間隔的連續(xù)地址在總線上傳輸時總線上的翻轉(zhuǎn),從而達(dá)到降低總線功耗的目的。?
(3) 編碼算法數(shù)學(xué)模型
由于在前面已經(jīng)確定了算法的目的,因此建立了一個取得編碼的數(shù)學(xué)模型。算法的中心思想在于:將對于連續(xù)地址(更廣泛地說是指固定步長)的兩個碼字的編碼采取變化,使得在總線上傳輸?shù)膬蓚€相鄰的數(shù)據(jù)之間的海明距離變小,從而減少總線的翻轉(zhuǎn)次數(shù)。因此,可以將對于任意間隔固定步長兩個碼字的海明距離降到最低,即為1。?
定義一個無向圖G,定義總線寬度是N,總線上可能出現(xiàn)的所有的數(shù)據(jù)則有2N個,將其命名為M ( 1 ) , M ( 2 ) ,M(2N )作為圖的2N 個節(jié)點,當(dāng)且僅當(dāng)兩個節(jié)點M ( s)和M ( t(0 < s, t < 2N + 1)所對應(yīng)的編碼的海明距離為1時,存在一條無向邊連接這兩個節(jié)點,這樣就構(gòu)成了一個無向圖,因此,我們的目標(biāo)就是在這個無向圖中找到一個Hamilton圈,使得所有連續(xù)地址的編碼順次在這條軌上出現(xiàn),從而當(dāng)總線上順次出現(xiàn)連續(xù)地址時,總線翻轉(zhuǎn)減少。
也就是說,我們需要在一個有2個節(jié)點的無向圖中找到一個Hamilton圈,然后將地址依次對應(yīng)到每個節(jié)點上。在一個有n個節(jié)點的無向圖中搜索一個Hamilton圈本來是一個NP問題但是,由于這里n = 2N ,并且兩個節(jié)點之間的連接關(guān)系有一定的特殊性,因此,在這樣一個特定條件下在O ( n)的復(fù)雜度內(nèi)完全可以實現(xiàn)。?
5 、算法及其證明?
(1)構(gòu)造算法?
①首先構(gòu)造一個地址為兩位的排列,如圖3所示。兩位地址構(gòu)造,圓圈代表編碼,只有海明距離為1的點之間才有連線。
②當(dāng)n = k時成立,利用n = k的編碼序列作為基礎(chǔ),構(gòu)造n = k + 1的編碼序列。
注意:由于當(dāng)我們構(gòu)造一個n = k + 1情況下的編碼時,是利用一個已經(jīng)完成的n = k的編碼,因此當(dāng)選用不同的n = k的編碼,所得到的n = k + 1的編碼也是不同的。?
(2)證明。在這里,采用歸納的方法來證明算法的正確性?
①在N = 2的情況下,可以很容易找到一個解(圖4) 。
②當(dāng)N = K有解時,由于K≥2,因此,在N = K的Hamilton圈中至少有一條邊可以滿足擴(kuò)展時的需要。由構(gòu)造的方法可知,可以將N = K + 1情況下所有的點包含,因此,這樣構(gòu)造出的Hamilton圈是符合我們要求的。
③同時,我們可以通過在擴(kuò)展時選用不同的邊,可以構(gòu)造出所有滿足要求的Hamilton圈??梢?,在總線編碼這種特殊的模型下,在圖中搜索到一條Hamilton圈是可行的。?
6、設(shè)計的實現(xiàn)及硬件譯碼器的選擇?
(1)設(shè)計的實現(xiàn)方法?
在具體的實現(xiàn)上,我們采用將編碼算法固化的方法來實現(xiàn)這一方案。在DSP芯片的地址產(chǎn)生器的輸出端增加一個譯碼器,通過譯碼器對程序產(chǎn)生的地址進(jìn)行一次映射,由于這種映射是一一對應(yīng)的映射,因此對于程序員編寫程序沒有任何影響;存儲器的設(shè)計人員也不需要考慮譯碼器的問題,只需要采用Bus-Invert Code譯碼器代替通常采用的譯碼器。
這樣就可以兼顧兩者的優(yōu)點:當(dāng)總線上傳輸?shù)牡刂肥沁B續(xù)地址時,地址譯碼器輸出的地址碼是一個海明距離很小的序列,可以減少總線的翻轉(zhuǎn)次數(shù);當(dāng)總線上傳輸?shù)牡刂凡皇沁B續(xù)地址時,也就是說是一個較為隨機(jī)的序列,如果兩個數(shù)據(jù)之間的海明距離比較大時,Bus-Invert Code電路就可以發(fā)揮作用,使海明距離大于總線寬度一半的編碼序列,從而降低總線傳輸?shù)墓摹?
(2)舉例?
以一個0~16的序列在總線上傳輸為例,左邊一列是常規(guī)方法的譯碼結(jié)果,右邊一列為采用新方法的結(jié)果。
通過本例可以很明顯地看出當(dāng)總線上的數(shù)據(jù)出現(xiàn)連續(xù)序列時,可以大大降低總線上的翻轉(zhuǎn)次數(shù),從而降低總線功耗。
7 、實驗結(jié)果?
首先取得總線模型翻轉(zhuǎn)時在Hspice上的仿真結(jié)果。?
圖5中顯示的是總線在翻轉(zhuǎn)時電流的變化圖,我們可以清晰地看出當(dāng)總線翻轉(zhuǎn)時電流的變化非常大,而圖6則顯示的是總線在翻轉(zhuǎn)時電壓的變化圖,通過這兩幅圖可以得出結(jié)論,總線翻轉(zhuǎn)時的功耗遠(yuǎn)大于保持原狀態(tài)所需的功耗,因此通過減少翻轉(zhuǎn)的方法降低總線功耗是一個有效的途徑。通過在公司的ls0201DSP芯片上的仿真測試,得到如表1的結(jié)果。?
從表1可以看出,對于新的設(shè)計方案降低總線的功耗是有效的。其中,編碼算法對于地址譯碼器的數(shù)據(jù)線的優(yōu)化最為突出,這是由于DSP芯片自身的特點造成的。DSP處理器執(zhí)行的程序中需要執(zhí)行大量的乘加運(yùn)算,需要獨立的地址生成器生成大量的連續(xù)地址,從而極利于編碼算法對其優(yōu)化。因此,可以說新的設(shè)計方案對于全面降低DSP芯片內(nèi)總線的功耗是有效的。?
表1 模擬仿真結(jié)果?
8、結(jié)論?
DSP芯片,需要綜合考慮總線上傳輸指令地址和數(shù)據(jù)兩種情況,新方案兼顧了兩種編碼器的優(yōu)點。針對超哈佛總線結(jié)構(gòu)的DSP芯片的特點,利用編碼算法對指令地址的傳輸情況進(jìn)行優(yōu)化,并用硬件上Bus2Invert Code對數(shù)據(jù)傳輸情況進(jìn)行改良。試驗結(jié)果證明新方案對于降低超哈佛總線結(jié)構(gòu)的DSP芯片總線功耗是十分有效的;而在既傳輸數(shù)據(jù)又傳輸指令的普林斯頓總線上,新方案在傳輸指令和傳輸數(shù)據(jù)兩種情況下都可以降低總線功耗,達(dá)到了試驗的目的,證明通過多種編碼器來降低DSM總線上的功耗是一種可行的辦法。
?責(zé)任編輯:gt
評論
查看更多