孫軍凱,蔣安平
(北京微電子技術(shù)研究所,北京100076)
隨著手持設(shè)備和電池供電設(shè)備的普及和不斷發(fā)展,設(shè)計(jì)者對(duì)微處理器在功耗方面的要求越來越高。低功耗微處理器的設(shè)計(jì)可以從不同的抽象層次采用相應(yīng)的低功耗設(shè)計(jì)技術(shù)進(jìn)行,也可以通過分別對(duì)微處理器的各個(gè)組成部分進(jìn)行功耗優(yōu)化來實(shí)現(xiàn)。ALU是進(jìn)行數(shù)據(jù)處理的場(chǎng)所,是微處理器的重要組成部分,其工作頻率直接決定了微處理器的性能。由于在幾乎100%的時(shí)間里都處于工作狀態(tài),所以ALU是微處理器中消耗能量最多的組成部分之一,也是最容易形成熱點(diǎn)的地方[1]。因此,設(shè)計(jì)低功耗的ALU可以顯著減小微處理器的功耗。
由于ALU的結(jié)構(gòu)與功耗、延遲和面積有著復(fù)雜的聯(lián)系,所以采用不同結(jié)構(gòu)的ALU也通常會(huì)有不同的功耗。根據(jù)資源復(fù)用程度的不同,ALU結(jié)構(gòu)主要有以下三類:①復(fù)合結(jié)構(gòu)[2-3];②加法器獨(dú)立結(jié)構(gòu)[4-5];③樹形結(jié)構(gòu)和鏈?zhǔn)浇Y(jié)構(gòu)[6]。對(duì)三類 ALU 結(jié)構(gòu)的詳細(xì)描述將在文章的第三部分進(jìn)行。
基于三種不同結(jié)構(gòu),設(shè)計(jì)了一個(gè)8比特的執(zhí)行加、減運(yùn)算和邏輯運(yùn)算的ALU,并且用三種常見的ALU結(jié)構(gòu)分別予以實(shí)現(xiàn)。通過對(duì)三種ALU結(jié)構(gòu)的比較,結(jié)合功耗分析的結(jié)果,我們得到了采用復(fù)合結(jié)構(gòu)的ALU更有利于低功耗設(shè)計(jì)的結(jié)論。
ALU是一個(gè)從寄存器堆、寫回總線或者數(shù)據(jù)存儲(chǔ)器取操作數(shù),并對(duì)操作數(shù)進(jìn)行處理的單元。ALU的設(shè)計(jì)主要包括三個(gè)方面:功能定義、核心加法器設(shè)計(jì)以及結(jié)構(gòu)設(shè)計(jì)三個(gè)方面。由于主要關(guān)心不同的ALU結(jié)構(gòu)對(duì)功耗的影響,所以這里主要進(jìn)行的是結(jié)構(gòu)設(shè)計(jì)。
通過研究發(fā)現(xiàn)通用微處理器的ALU執(zhí)行的指令都可以使用加、減、與、或、非等基本運(yùn)算來完成。為了研究ALU結(jié)構(gòu)對(duì)功耗的影響,設(shè)計(jì)了一個(gè)執(zhí)行10種基本運(yùn)算的8比特ALU,并分別用三種結(jié)構(gòu)來實(shí)現(xiàn)它。表1列出了所設(shè)計(jì)的ALU執(zhí)行的運(yùn)算和操作。
表1 ALU的功能表
加法器是運(yùn)算電路的核心,通常處于ALU的關(guān)鍵路徑上[4]。設(shè)計(jì)低功耗高速加法器單元是獲得低功耗高速運(yùn)算電路的關(guān)鍵。
行波進(jìn)位加法器(Ripple Carry Adder,RCA)是最早的最基本的加法器,其延時(shí)正比于加法器的位數(shù)N,面積也正比與加法器的位數(shù)N。超前進(jìn)位加法器(Carry Look-ahead Adder,CLA)憑借著速度快和模塊化的優(yōu)勢(shì)而被廣泛采用,其延時(shí)正比于加法器位數(shù)N的對(duì)數(shù)logN,面積正比于N·logN。除此之外,相同位數(shù)的CLA功耗也要比進(jìn)位選擇加法器(Carry Select Adder,CSL)和進(jìn)位保留加法器(Carry Save Adder,CSA)低[7]。
N位全加器中,第k位的進(jìn)位輸出與第k位的加數(shù)、被加數(shù)以及第k-1位的進(jìn)位輸出之間存在如下關(guān)系:
CLA通過消除行波進(jìn)位來加速加法運(yùn)算,因此CLA中Cout可以表示為:
其中Pk表示第k位的進(jìn)位傳播信號(hào),Gk表示第k位的進(jìn)位產(chǎn)生信號(hào)。
由于公式(2)所建議的超前結(jié)構(gòu)只在N值較小(N≤4)的時(shí)候有效[7],因此可以采用兩個(gè)4比特的超前進(jìn)位加法器串聯(lián)設(shè)計(jì)來實(shí)現(xiàn)ALU中的8比特全加器。
復(fù)合結(jié)構(gòu)ALU將執(zhí)行算術(shù)運(yùn)算和邏輯運(yùn)算指令的電路復(fù)用起來,用幾個(gè)控制信號(hào)來控制電路執(zhí)行相應(yīng)的指令操作。加法器獨(dú)立ALU開始只考慮用單獨(dú)的加法器實(shí)現(xiàn)所有算術(shù)運(yùn)算指令,然后再加上獨(dú)立于加法器的其他電路以實(shí)現(xiàn)所有邏輯運(yùn)算指令。這種ALU結(jié)構(gòu)中,實(shí)現(xiàn)算術(shù)運(yùn)算的電路和實(shí)現(xiàn)邏輯運(yùn)算的電路相互獨(dú)立。樹形結(jié)構(gòu)和鏈?zhǔn)浇Y(jié)構(gòu)ALU是把一些功能單元組織成樹狀或者鏈狀,每一個(gè)功能單元執(zhí)行某一種算術(shù)運(yùn)算或邏輯運(yùn)算,利用這些功能單元的組合來實(shí)現(xiàn)所有的算術(shù)運(yùn)算指令和邏輯運(yùn)算指令。
在復(fù)合結(jié)構(gòu)ALU中,通過修正核心加法器的進(jìn)位傳播(Propagation)和進(jìn)位產(chǎn)生(Generation)模塊,使進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算的電路得以復(fù)用。圖1顯示了修正后的P G模塊。圖2顯示的是一個(gè)4比特的采用復(fù)合結(jié)構(gòu)的ALU。
圖2中,s0、s1、s2和s3是控制P G模塊功能的控制信號(hào),c是選擇ALU進(jìn)行算術(shù)運(yùn)算或邏輯運(yùn)算的選擇信號(hào)。
由于ALU中8比特的加法器是由兩個(gè)4比特CLA串聯(lián)組成,所以8比特復(fù)合結(jié)構(gòu)的ALU也采用兩個(gè)圖2所示的4比特ALU串聯(lián)組成。
這種結(jié)構(gòu)中,一個(gè)CLA用于執(zhí)行算術(shù)運(yùn)算,一個(gè)獨(dú)立于加法器的模塊用于執(zhí)行邏輯運(yùn)算。邏輯運(yùn)算模塊的電路如圖3所示。加法器獨(dú)立結(jié)構(gòu)的ALU如圖4所示。出于低功耗考慮,我們對(duì)加法器獨(dú)立結(jié)構(gòu)的ALU采用操作數(shù)隔離技術(shù),如圖4中虛線框所示。
根據(jù)文獻(xiàn)[6],鏈?zhǔn)浇Y(jié)構(gòu)ALU比樹形結(jié)構(gòu)ALU有更小的面積和潛在的更快的速度。此外,對(duì)于鏈?zhǔn)浇Y(jié)構(gòu)ALU,功能單元在鏈中位置的不同也會(huì)導(dǎo)致功耗的不同。因此,這里我們選擇鏈?zhǔn)浇Y(jié)構(gòu)ALU作為研究對(duì)象?;贒hrystone基準(zhǔn)測(cè)試程序,通過改變功能單元在鏈中的位置,我們找到一種功耗最低的鏈?zhǔn)浇Y(jié)構(gòu)ALU,如圖5所示。
出于低功耗考慮,我們對(duì)鏈?zhǔn)浇Y(jié)構(gòu)ALU采用操作數(shù)隔離技術(shù),在兩個(gè)操作數(shù)后面分別增加了一個(gè)隔離單元,如圖5中虛線框所示。
圖5 鏈?zhǔn)浇Y(jié)構(gòu)ALU
使用Verilog HDL硬件描述語言在RTL級(jí)對(duì)該8比特ALU進(jìn)行描述,用Modelsim仿真軟件進(jìn)行功能仿真,完成ALU的設(shè)計(jì)。再用Synopsys公司的Design Compiler對(duì)設(shè)計(jì)好的RTL級(jí)代碼進(jìn)行邏輯綜合(采用SMIC 0.18μm工藝)生成該8比特ALU的門級(jí)網(wǎng)表。為驗(yàn)證綜合正確與否這里需要對(duì)門級(jí)網(wǎng)表進(jìn)行門級(jí)的功能仿真,此時(shí)需要生成記錄節(jié)點(diǎn)翻轉(zhuǎn)信息的VCD文件。最后用Synopsys公司的Prime Power功耗分析工具,采用基于事件的功耗分析方法進(jìn)行功耗分析。
在100MHz的頻率下執(zhí)行Dhrystone基準(zhǔn)測(cè)試程序時(shí),三種不同結(jié)構(gòu)ALU的功耗、延時(shí)和面積如表2所示。從表中可以看出,復(fù)合結(jié)構(gòu)ALU具有最小的功耗和最小的面積。
表2 不同結(jié)構(gòu)ALU的功耗、延時(shí)和面積
比較圖1和圖3,可以發(fā)現(xiàn)復(fù)合結(jié)構(gòu)中修正后的P G模塊僅僅比加法器獨(dú)立結(jié)構(gòu)中的邏輯運(yùn)算單元多了一個(gè)3輸入的“或”門。但是在加法器獨(dú)立結(jié)構(gòu)中,CLA需要一個(gè)“與”門和一個(gè)“異或”門來產(chǎn)生P G信號(hào)。此外,加法器獨(dú)立結(jié)構(gòu)ALU需要一個(gè)多路選擇器來選擇合適的輸出。由于多路選擇器處于關(guān)鍵路徑的末端,其開關(guān)活動(dòng)性比ALU的其他部分都要大。因此,加法器獨(dú)立結(jié)構(gòu)ALU的功耗比復(fù)合結(jié)構(gòu)ALU的功耗大就不足為奇了,面積也是如此。仿真的結(jié)果也印證了這一點(diǎn)。
對(duì)比圖3、圖4和圖5,可以發(fā)現(xiàn)加法器獨(dú)立結(jié)構(gòu)ALU與鏈?zhǔn)浇Y(jié)構(gòu)ALU的不同之處僅在邏輯運(yùn)算單元。然而由于二者的邏輯運(yùn)算單元結(jié)構(gòu)差別比較大,很難從直觀上判斷哪種結(jié)構(gòu)更有利于低功耗設(shè)計(jì)。應(yīng)該注意到這里邏輯運(yùn)算單元的功耗在總功耗中所占的比例是比較小的,所以兩者功耗的差別也會(huì)比較小。為了探明哪種結(jié)構(gòu)更省功耗,選取另外三組隨機(jī)產(chǎn)生的測(cè)試向量對(duì)這三種不同結(jié)構(gòu)的ALU進(jìn)行功耗分析,其結(jié)果如表3所示。
表3 不同結(jié)構(gòu)ALU在不同類型的測(cè)試向量下的功耗(mw)
從表3中可以看出,當(dāng)執(zhí)行隨機(jī)產(chǎn)生的操作時(shí)與執(zhí)行Dhrystone基準(zhǔn)測(cè)試程序時(shí)相比,復(fù)合結(jié)構(gòu)ALU和加法器獨(dú)立結(jié)構(gòu)ALU的功耗都有明顯的下降。這是因?yàn)樵贒hrystone基準(zhǔn)測(cè)試程序中算術(shù)運(yùn)算的比例遠(yuǎn)比隨機(jī)產(chǎn)生的指令中算術(shù)運(yùn)算的比例高,而且ALU執(zhí)行一條算術(shù)運(yùn)算指令消耗的功耗要遠(yuǎn)比執(zhí)行一條邏輯運(yùn)算指令消耗的功耗高。當(dāng)執(zhí)行Dhrystone基準(zhǔn)測(cè)試程序的時(shí)候,加法器獨(dú)立結(jié)構(gòu)ALU的功耗要比鏈?zhǔn)浇Y(jié)構(gòu)ALU的功耗高,但是當(dāng)執(zhí)行隨機(jī)產(chǎn)生的指令時(shí),加法器獨(dú)立結(jié)構(gòu)ALU的功耗又比鏈?zhǔn)浇Y(jié)構(gòu)ALU的功耗少。這是因?yàn)殒準(zhǔn)浇Y(jié)構(gòu)ALU中功能單元的排放順序是根據(jù)Dhrystone基準(zhǔn)測(cè)試程序來設(shè)計(jì)的,而不同的測(cè)試向量對(duì)鏈?zhǔn)浇Y(jié)構(gòu)ALU功耗的影響是比較大的。
從表2和表3,可以發(fā)現(xiàn)采用操作數(shù)隔離技術(shù)后,加法器獨(dú)立結(jié)構(gòu)ALU和鏈?zhǔn)浇Y(jié)構(gòu)ALU的功耗都有一定程度的下降,但是效果并不理想。
從表4中可以看出,這里采用操作數(shù)隔離技術(shù)對(duì)低功耗設(shè)計(jì)有幫助,但是效果不明顯。這是因?yàn)橐环矫鍭LU一直處于工作狀態(tài),另一方面ALU多數(shù)時(shí)間在執(zhí)行消耗功耗較多的算術(shù)運(yùn)算指令,再加上隔離單元本身也要消耗功耗,所以能節(jié)省下來的功耗是非常有限的。當(dāng)僅僅執(zhí)行邏輯運(yùn)算的時(shí)候,由于功耗較大的算術(shù)運(yùn)算單元被隔離,所以此時(shí)使用操作數(shù)隔離技術(shù)有比較好的效果。
表4 操作數(shù)隔離技術(shù)對(duì)ALU功耗的影響
低功耗設(shè)計(jì)是一項(xiàng)復(fù)雜的工程,需要從不同的設(shè)計(jì)層次進(jìn)行設(shè)計(jì)才能達(dá)到較好的效果。這里設(shè)計(jì)一個(gè)執(zhí)行10種運(yùn)算的8比特ALU,并分別用三種不同的結(jié)構(gòu)實(shí)現(xiàn)它。通過對(duì)這三種不同結(jié)構(gòu)ALU的功耗分析和結(jié)構(gòu)比較來研究ALU結(jié)構(gòu)對(duì)功耗的影響。仿真結(jié)果表明:復(fù)合結(jié)構(gòu)ALU面積和功耗都是最小的。與其它兩種ALU結(jié)構(gòu)相比,復(fù)合結(jié)構(gòu)ALU的功耗節(jié)省范圍是19.38%和33.87%。
[1]Swaroop Ghosh and Kaushik Roy.Exploring High - Speed Low-Power Hybrid Arithmetic Units at Scaled Supply and Adaptive Clock - Stretching[C].2008 Asia and South Pacific Design Automation Conference,2008:635.
[2]David A Patterson,John L Hennessy.Computer organization and design:The hardware/software interface[M].third edition,Elsevier Inc,2005:B -26.
[3]Beom Seon Ryu,Jung Sok Yi,et al.A design of low power 16- B ALU[C].Proceedings of the IEEE Region 10 Conference,IEEE TENCON,1999:868 -871.
[4]Patanjali Prakash,Saxena A K.Design of low power high speed ALU using feedback switching logical[C].2009 International Conference on Advances in Recent Technologiesin Communication and Computing, Kottayam,India,2009:899 -902.
[5]Rajesh Kannan Megalingam,Venkat Krishnan B,et al.Gating and serializing the data path of CPU for low power consumption[C].2009 International Conference on Parallel Processing Workshops,Vienna,Austria,2009:550 -557.
[6]Yu Zhou,Hui Guo.Application specific low power ALU design[C].2008 IEEE/IFIP International Conference on Embedded and Ubiquitous Computing,Shanghai,China,2008:214-220.
[7]Chetana Nugendra,Mary Jane Irwin,et al.Area - Time -Power Tradoffs in Parallel Adders[J].IEEE Transactions on circuit and systems- II,1996:689 -702.