袁 博 劉紅俠
(西安電子科技大學(xué)寬禁帶半導(dǎo)體材料與器件國(guó)家重點(diǎn)實(shí)驗(yàn)室,西安,710071)
隨著SoC(片上系統(tǒng))設(shè)計(jì)的高速發(fā)展,如何降低系統(tǒng)功耗和面積成為越來越多設(shè)計(jì)者們共同關(guān)心的課題[1]。功耗主要有3種:即靜態(tài)功耗、動(dòng)態(tài)功耗和狀態(tài)跳變時(shí)電源與地間的短路功耗。其中動(dòng)態(tài)功耗,即電路節(jié)點(diǎn)電平翻轉(zhuǎn)時(shí)對(duì)負(fù)載電容的充放電功耗,是電路的主要功耗源;靜態(tài)功耗即當(dāng)電路處于靜態(tài)即狀態(tài)保持不變時(shí)的功耗,在電路功耗中所占比例很小。因此低功耗設(shè)計(jì)的一個(gè)重要思想就是通過減少電路中冗余的狀態(tài)翻轉(zhuǎn),實(shí)現(xiàn)降低功耗的目的[2]。在傳統(tǒng)數(shù)字設(shè)計(jì)中,人們往往希望通過降低系統(tǒng)時(shí)鐘頻率、減少冗余信號(hào)翻轉(zhuǎn)等方法來降低系統(tǒng)功耗。其中降低系統(tǒng)時(shí)鐘頻率會(huì)有效降低系統(tǒng)功耗,但系統(tǒng)性能和工作效率也會(huì)隨之降低;而減少冗余信號(hào)翻轉(zhuǎn)雖然不會(huì)影響系統(tǒng)性能,但需要在系統(tǒng)中增加額外控制電路,這會(huì)使得系統(tǒng)引入額外的功耗和面積[3]。常見的低功耗設(shè)計(jì)有:
(1)門控時(shí)鐘 其主要采用觸發(fā)器的設(shè)計(jì)方法,即當(dāng)觸發(fā)器狀態(tài)出現(xiàn)冗余翻轉(zhuǎn)時(shí),通過關(guān)閉時(shí)序部件的時(shí)鐘,使觸發(fā)器保持靜態(tài),同時(shí)以這些時(shí)序部件輸出為輸入信號(hào)的組合邏輯也將處于靜態(tài),可以實(shí)現(xiàn)降低功耗的作用。該方法的缺點(diǎn)是需要在時(shí)序部件的時(shí)鐘輸入端加入控制邏輯,使其能夠在部件處于冗余狀態(tài)時(shí)關(guān)閉輸入時(shí)鐘,即在降低部件功耗的同時(shí)引入控制邏輯帶來的額外功耗,影響部件低功耗優(yōu)化效果。
(2)操作數(shù)隔離 其優(yōu)化對(duì)象是系統(tǒng)中的算術(shù)、邏輯運(yùn)算模塊,主要方法是在系統(tǒng)處于冗余狀態(tài)下,即不進(jìn)行算術(shù)、邏輯運(yùn)算的時(shí)候,使模塊的所有輸入保持“0”值,禁止操作數(shù)進(jìn)入系統(tǒng)產(chǎn)生冗余信號(hào)翻轉(zhuǎn),該方法使系統(tǒng)輸出結(jié)果保持靜止。而當(dāng)系統(tǒng)需要進(jìn)行運(yùn)算時(shí),將模塊的所有輸入還原使其正常工作。該方法的缺點(diǎn)是需要在運(yùn)算模塊的輸入端增加控制邏輯,使其能夠在處于冗余狀態(tài)所有輸入信號(hào)賦“0”,但同時(shí)引入了控制邏輯帶來的額外功耗,影響模塊低功耗優(yōu)化效果。
(3)存儲(chǔ)器分塊訪問 主要方法是將系統(tǒng)中存儲(chǔ)器按照其內(nèi)部各子模塊所需容量進(jìn)行分塊,然后用高位地址線進(jìn)行片選譯碼。假設(shè)某系統(tǒng)分配到一塊128KB的RAM,其內(nèi)部?jī)蓚€(gè)子模塊各自需要一塊64KB的RAM,這時(shí)可以選用兩塊64KB的RAM和17位的地址線。其中低16位地址線直接提供給兩個(gè)RAM,最高位地址線接到下面RAM的片選端CS。通過這種方法,不管從CPU出來什么樣的地址,則每次只會(huì)選中一個(gè)64KB的RAM。如果采用單塊128KB的RAM,則每次都要選中一塊128KB的RAM,眾所周知,一塊64 KB RAM的功耗要遠(yuǎn)小于一塊128KB RAM的功耗。該方法的缺點(diǎn)是需要將地址總線的位寬擴(kuò)大,同時(shí)加入片選邏輯,使系統(tǒng)在降低功耗同時(shí)引入了總線擴(kuò)寬和片選邏輯帶來的額外功耗,影響系統(tǒng)的低功耗優(yōu)化效果。
隨著超大規(guī)模集成電路設(shè)計(jì)技術(shù)的進(jìn)步,高性能信號(hào)處理芯片已經(jīng)成為通信、電子、空間技術(shù)等領(lǐng)域必不可少的組成部分,因此如數(shù)字濾波器及數(shù)字信號(hào)處理器等含有大量小數(shù)乘法運(yùn)算的模塊也頻繁地被應(yīng)用于各種芯片和電路中[3]。對(duì)于小數(shù)乘法運(yùn)算而言,為了保持較高的運(yùn)算精度,要求寄存中間運(yùn)算結(jié)果的寄存器保留較寬的位寬,但系統(tǒng)功耗和面積也會(huì)隨之增大;如果試圖減小寄存器位寬,乘法運(yùn)算的精度損失則不可避免[4,5]。
本文的目的在于針對(duì)上述已有技術(shù)的不足,提出一種針對(duì)小數(shù)乘法運(yùn)算的低功耗設(shè)計(jì)算法,該算法的優(yōu)點(diǎn)在于:(1)采用了一種全新的設(shè)計(jì)和實(shí)現(xiàn)方案,使得綜合后只有優(yōu)化結(jié)果參與生成系統(tǒng)門級(jí)電路,而優(yōu)化算法自身的邏輯單元不會(huì)引入到系統(tǒng)中。對(duì)于含有大規(guī)模乘法運(yùn)算的系統(tǒng),避免其內(nèi)部各乘法器引入優(yōu)化邏輯自身的功耗和面積累加入被優(yōu)化系統(tǒng),提升優(yōu)化效果。(2)由于在運(yùn)算過程中只需搜索乘法器系數(shù)中“1”的排列和位置并加以計(jì)算[5],因此具有運(yùn)行速度快,占用資源少,簡(jiǎn)單易行的優(yōu)點(diǎn)。(3)該設(shè)計(jì)能夠在不降低系統(tǒng)工作效率、不損失運(yùn)算精度、不增加額外邏輯單元的條件下,大幅降低系統(tǒng)功耗和面積。
數(shù)字設(shè)計(jì)中,數(shù)據(jù)寬度n所能表達(dá)出的最大數(shù)被歸一化為“1”,小數(shù)則被表示為所占該“歸一化1”的比例,因此n位的小數(shù)B可以被整數(shù)化處理為X[6]
整數(shù)乘法運(yùn)算A×B的計(jì)算過程如式(2)所示,其中被乘數(shù)和乘數(shù)分別為A和B,B以二進(jìn)制表示為b3b2b1b0
提出系數(shù)b0后,式(2)可轉(zhuǎn)化為
由式(3)可得,如果b0為“0”,則bi2iA項(xiàng)也為“0”。因此對(duì)于每一項(xiàng),其分母必為“1”,否則整個(gè)項(xiàng)均為“0”。由此可得多項(xiàng)式
其等價(jià)多項(xiàng)式
由式(5)可以看出本級(jí)加法結(jié)果的末位不參與下級(jí)加法運(yùn)算,依然作為下級(jí)加法結(jié)果的末位存在。如果能夠缺省本級(jí)加法結(jié)果的最末i位(i等于下級(jí)加法運(yùn)算中另一個(gè)加數(shù)的左移位數(shù)),則可以減少下級(jí)加法結(jié)果的位寬,而缺省掉的也只是“最小貢獻(xiàn)位”[7,8]。在小數(shù)乘法運(yùn)算中,為了保持?jǐn)?shù)據(jù)寬度,這些“最小貢獻(xiàn)位”會(huì)在最終運(yùn)算結(jié)果中被缺省掉,但不能在中間各級(jí)加法結(jié)果中缺省,否則會(huì)出現(xiàn)較大的誤差累積從而影響運(yùn)算精度和準(zhǔn)確度。若能預(yù)先計(jì)算出各級(jí)加法結(jié)果中的“最小貢獻(xiàn)位”進(jìn)而缺省,從而降低各級(jí)加法結(jié)果位寬,而且保證最終運(yùn)算結(jié)果的一致性,不損失任何運(yùn)算精度和準(zhǔn)確度[9]。
以8位小數(shù)乘法153×31/255為例,依式(1)整數(shù)化處理為153×31,其乘法豎式如圖1所示,結(jié)果小數(shù)化處理并保留8位數(shù)據(jù)寬度為10010.100b。對(duì)該乘法依式(5)進(jìn)行優(yōu)化,缺省各級(jí)加法結(jié)果的“最小貢獻(xiàn)位”后的乘法豎式如圖2所示,結(jié)果小數(shù)化處理并保留8位數(shù)據(jù)寬度同樣為10010.100b。該乘法運(yùn)算轉(zhuǎn)化為4個(gè)加法器,優(yōu)化前其內(nèi)部加法結(jié)果位寬分別為9,11,12,13,優(yōu)化后其內(nèi)部加法結(jié)果位寬分別為8,9,9,9。因此在乘法運(yùn)算153×31/255內(nèi)部共節(jié)省寄存器位寬(9+11+12+13)-(8+9+9+9)=10位。對(duì)含有大量小數(shù)乘法運(yùn)算的系統(tǒng),優(yōu)化效果將十分明顯。
圖1 153×31的乘法豎式
圖2 缺省優(yōu)化過程
圖3是n位小數(shù)乘法A×B的優(yōu)化算法實(shí)現(xiàn)框圖,首先對(duì)小數(shù)系數(shù)B整數(shù)化處理為X,對(duì)整數(shù)X從最低位向最高位搜索,逢“1”則記錄其位置,以變量position-of-1表示;逢“0”則繼續(xù)向高位搜索。將以上過程實(shí)現(xiàn)為一個(gè)VHDL函數(shù)findmulti-factor-f(x),并放入庫(kù)中與系統(tǒng)分離,函數(shù)的輸入x為乘法器的小數(shù)系數(shù),輸出為表示系數(shù)中各“1”位置的變量position-of-1,記為findmulti-factor-f(x)=position-of-1=(n1,n2,…,nk)。因此乘法器被轉(zhuǎn)化為k-1個(gè)加法器,第一個(gè)加法器是由被乘數(shù)A左移n1位加A左移n2位構(gòu)成,并缺省加法結(jié)果的最末n2位存入寄存器作為第一個(gè)中間結(jié)果A1;第i個(gè)加法器是由A左移ni位加前一個(gè)中間結(jié)果Ai-1構(gòu)成,并缺省加法結(jié)果的最末ni位存入寄存器作為第i個(gè)中間結(jié)果Ai,以此類推直到構(gòu)建出k-1個(gè)加法器。最后需要對(duì)加法運(yùn)算結(jié)果進(jìn)行小數(shù)化處理,由于算法開始先對(duì)n位小數(shù)乘法器A×B中小數(shù)系數(shù)B進(jìn)行了整數(shù)化處理,相當(dāng)于將B左移n位,因此最后一級(jí)加法器的結(jié)果需要右移n位還原回小數(shù)后得到最終乘法結(jié)果。然而在優(yōu)化過程中最大缺省位為nk,即在優(yōu)化過程中已經(jīng)右移了nk位,所以最后一級(jí)加法器的結(jié)果只需右移n-nk位并由z-o輸出。
設(shè)計(jì)優(yōu)化乘法器模塊mtplr-mutiplication,其類屬參數(shù)為multi-find-g輸入端口為x-i與n,輸出端口為z-o。其中小數(shù)乘法器系數(shù)由模塊類屬參數(shù)multi-find-g輸入,被乘數(shù)由x-i輸入,數(shù)據(jù)寬度由n輸入,最終乘法運(yùn)算結(jié)果由z-o輸出,圖4所示為該優(yōu)化乘法器模塊的實(shí)體。
圖3 優(yōu)化算法實(shí)現(xiàn)框圖
圖4 優(yōu)化乘法器模塊mtplr-multiplication的實(shí)體
在模塊內(nèi)部,調(diào)用函數(shù)find-multi-factor-f(x),并使優(yōu)化乘法器模塊的類屬參數(shù) multifind-g作為該函數(shù)的輸入,即find-multi-factorf(multi-find-g),輸出結(jié)果以常數(shù)陣列shiftbits-c表示:constantshift-bits-c:nature-array:=find-multi-factor-f(x).position-of-1其與被乘數(shù)構(gòu)建移位加法運(yùn)算并且進(jìn)行優(yōu)化。
在綜合初期,常數(shù)shift-bits-c會(huì)根據(jù)乘法器系數(shù)計(jì)算得出。綜合后,乘法器僅僅根據(jù)這些常數(shù)便可轉(zhuǎn)化為對(duì)應(yīng)的移位加結(jié)構(gòu)并進(jìn)行優(yōu)化,而庫(kù)中的運(yùn)算邏輯自身不會(huì)引入乘法器,而且優(yōu)化算法是缺省對(duì)下級(jí)加法無進(jìn)位貢獻(xiàn)的本級(jí)加法結(jié)果的末位,從而減少存放各級(jí)加法結(jié)果的寄存器位寬。因此在聯(lián)合優(yōu)化乘法器模塊mtplr-multiplication內(nèi)部,沒有引入任何額外的運(yùn)算和邏輯單元。
將優(yōu)化乘法器模塊mtplr-multiplication置于庫(kù)中與系統(tǒng)設(shè)計(jì)分離。在系統(tǒng)設(shè)計(jì)中實(shí)例化該模塊并替換掉原有各定系數(shù)乘法器,替換時(shí)只需將各實(shí)例化模塊的類屬參數(shù)設(shè)定為所對(duì)應(yīng)乘法器系數(shù)即可完成該系統(tǒng)的優(yōu)化。系統(tǒng)設(shè)計(jì)的參數(shù)和特性一旦確定,其內(nèi)部各乘法器系數(shù)也將確定。而乘法器系數(shù)由類屬參數(shù)傳入而不以常數(shù)參數(shù)傳入的原因是:常數(shù)只能從設(shè)計(jì)實(shí)體的內(nèi)部得到賦值且不能再改變,而類屬的值可以由設(shè)計(jì)實(shí)體外部提供,因此設(shè)計(jì)者可以從外面通過類屬參量的重新設(shè)定而容易地改變?cè)撃K的內(nèi)部電路結(jié)構(gòu),即在替換時(shí)只需將各乘法系數(shù)通過類屬參量傳入模塊便可實(shí)現(xiàn)不同的優(yōu)化乘法器,圖5所示為替換8位小數(shù)乘法y=31/255x的優(yōu)化乘法器。153×31/255的優(yōu)化乘法仿真波形如圖6所示,其中乘法系數(shù)multifind-g為0.121 569,即31/255;被乘數(shù) x-i為153;位寬n為8,乘法器內(nèi)部4個(gè)加法運(yùn)算結(jié)果A1,A2,A3,A4分 別 為 11100101b,100001011b,100011110b,100101000b,最終8位運(yùn)算結(jié)果z-o為18.5,即10010.100b,與圖2運(yùn)算結(jié)果一致。
圖5 替換小數(shù)乘法y=31/255x的優(yōu)化乘法器
圖6 小數(shù)乘法153×31/255的優(yōu)化仿真波形
為了精確測(cè)試優(yōu)化指標(biāo),以某含有大量數(shù)字濾波器和數(shù)字信號(hào)處理器的射頻模塊作為測(cè)試對(duì)象進(jìn)行優(yōu)化。測(cè)試工具為Sequence Design公司的Power Theater,作為標(biāo)準(zhǔn)功耗計(jì)算工具,它可以對(duì)系統(tǒng)的前端RTL代碼計(jì)算出準(zhǔn)確的功耗和面積。表1,2為優(yōu)化前射頻模塊功耗與面積;表3,4為該射頻模塊經(jīng)一般優(yōu)化后的功耗與面積,即使用優(yōu)化算法優(yōu)化各乘法器,但優(yōu)化邏輯存在于各乘法器中;表5,6為該射頻模塊經(jīng)本文所述設(shè)計(jì)方案優(yōu)化后的功耗與面積,即模塊內(nèi)部所有小數(shù)乘法器均被優(yōu)化乘法器模塊mtplr-multiplication替換,且優(yōu)化邏輯不引入各乘法器??梢钥闯?,優(yōu)化前模塊的功耗為10.7mW,邏輯單元數(shù)為95 962,面積為1.479mm2;經(jīng)一般聯(lián)合優(yōu)化設(shè)計(jì)方案優(yōu)化后,以上參數(shù)分別為9.87mW,89 190,1.457mm2,分別降低7.76%,7.06%,1.49%;經(jīng)過本文所述設(shè)計(jì)方案優(yōu)化后,以上參數(shù)分別為8.69mW,84 915,1.312mm2,分別降低18.79%,11.51%,11.29%,優(yōu)化效果明顯。
表1 優(yōu)化前射頻模塊功耗
表2 優(yōu)化前射頻模塊邏輯單元數(shù)和面積
表3 射頻模塊經(jīng)一般優(yōu)化設(shè)計(jì)方案優(yōu)化后的功耗
表4 射頻模塊經(jīng)一般優(yōu)化設(shè)計(jì)方案優(yōu)化后的邏輯單元數(shù)和面積
表5 射頻模塊經(jīng)本文所述優(yōu)化設(shè)計(jì)方案優(yōu)化后的功耗
表6 射頻模塊經(jīng)本文所述優(yōu)化設(shè)計(jì)方案優(yōu)化后的邏輯單元數(shù)和面積
為了進(jìn)一步測(cè)試本文所述優(yōu)化設(shè)計(jì)方案的硬件優(yōu)化效果,分別對(duì)優(yōu)化前的射頻模塊和經(jīng)一般聯(lián)合優(yōu)化設(shè)計(jì)方案優(yōu)化后的射頻模塊以及本文所述優(yōu)化設(shè)計(jì)方案優(yōu)化過的射頻模塊分別進(jìn)行FPGA測(cè)試。測(cè)試采用StratixⅣ家族EP4SE820F43C3型號(hào)FPGA作為測(cè)試平臺(tái)。
測(cè)試采用QuartusⅡ作為FPGA的編譯、綜合工具,該工具來自于ATERA公司,并且作為業(yè)內(nèi)普遍認(rèn)可的一種FPGA開發(fā)工具。優(yōu)化前射頻模塊對(duì)該FPGA的邏輯占用率為5.6%,生成寄存器總數(shù)為18 175,存儲(chǔ)單元占用率為6.5%;經(jīng)一般聯(lián)合優(yōu)化方案優(yōu)化過的射頻模塊對(duì)該FPGA的邏輯占用率為5.1%,生成寄存器總數(shù)為16 805,存儲(chǔ)單元占用率為5.9%,分別降低8.9%,7.5%和9.2%;經(jīng)本文所述優(yōu)化方案優(yōu)化過的射頻模塊對(duì)該FPGA的邏輯占用率為4.6%,生成寄存器總數(shù)為12 600,存儲(chǔ)單元占用率為5.1%,分別降低17.9%,30.7%和21.5%。FPGA測(cè)試結(jié)果對(duì)比明顯,證明本文所述優(yōu)化設(shè)計(jì)方案解決了一般優(yōu)化設(shè)計(jì)中優(yōu)化邏輯自身被引入系統(tǒng)的問題,提升了系統(tǒng)優(yōu)化效果。
本文提出了一種針對(duì)小數(shù)乘法器的低功耗算法,對(duì)射頻模塊的功耗分析和FPGA測(cè)試結(jié)果表明該算法對(duì)含有大量乘法運(yùn)算的系統(tǒng)優(yōu)化效果十分顯著,而且解決了目前低功耗設(shè)計(jì)中算法自身的邏輯單元被引入系統(tǒng)從而降低系統(tǒng)優(yōu)化效果的問題。
[1] Graillat S,Langlois P,Louvet N.Compensated horner scheme[R].University of Perpignan,F(xiàn)rance,2005:10-26.
[2] Wong A C W,Kathiresan G,Chan C K T,et al.A 1Vwireless transceiver for an ultra low power SoC for biotelemetry applications[C]∥ 33rd European Solid State Circuits Conference.Abingdon:Toumaz,2007:127-130.
[3] 肖瑋,涂亞慶,劉良兵,等.一種頻率估計(jì)的倍頻等長(zhǎng)信號(hào)加權(quán)融合算法[J].數(shù)據(jù)采集與處理,2012,27(1):74-79.Xiao Wei,Tu Yaqing,Liu Liangbing.A long signal of a frequency estimated multiplier weighted fusion algorithm[J].Journal of Data Acquisition and Processing,2012,27(1):74-79.
[4] Malvar H S,Hallapuro A,Karczewicz M.Low complexity transform and quantization in H.264/AVC[J].IEEE Transactions on Circuits and Systems for Video Technology,2003:13(7):598-603.
[5] Kang S M.Elements of low power design for integrated systems[C]//Proceedings of the 2003International Symposium on Low Power Electronics and Design.Seoul,Korea:[s.n.],2003:205-210.
[6] 羅柏文,萬明康,于宏毅.兩種基于自適應(yīng)相位補(bǔ)償?shù)腇DOA估計(jì)算法[J].數(shù)據(jù)采集與處理,2012,27(1):20-26.Luo Baiwen,Wan Mingkang,Yu Hongyi.Two kinds of estimation algorithm based on adaptive phase compensation FDOA [J].Journal of Data Acquisition and Processing,2012,27(1):20-26.
[7] Samueli H.An improved search algorithm for the design of multiplierless FIR filters with power-of-two coefficients[J].IEEE Transactions on Circuits and System,1989,36(7):1044-1047.
[8] Yoo H,Anderdon D V.Hardware-efficient distribu-ted arithmetic architecture for high-order digit filters[C]//Proc IEEE International Conference on Acoustics,Speed and Signal Processing.[S.l.]:IEEE,2005:125-128.
[9] Brickell E B.A fast modular multiplication algorithm with application to two key cryptography[C]//Proceedings of Crypto 82.New York:Plenum,1982:51-60.