王 棟,蔡 葒
(中國(guó)電子科技集團(tuán)公司第58研究所,江蘇 無(wú)錫 214035)
隨著集成電路工藝技術(shù)迅速發(fā)展,單個(gè)芯片的規(guī)模已經(jīng)發(fā)展到幾十億個(gè)晶體管。隨著芯片規(guī)模的進(jìn)一步擴(kuò)大,功耗問(wèn)題正在變得日益突出,并成為制約未來(lái)集成電路發(fā)展的十分關(guān)鍵的因素之一。功耗估計(jì)及低功耗系統(tǒng)設(shè)計(jì)工作已經(jīng)在集成電路工藝制造、設(shè)計(jì)以及軟件系統(tǒng)設(shè)計(jì)等層次全面開展。在動(dòng)態(tài)和靜態(tài)功耗的建模及優(yōu)化方面都有大量的研究在進(jìn)行探索,但其速度還遠(yuǎn)遠(yuǎn)跟不上以指數(shù)形式增長(zhǎng)的功耗提高速度,特別是在靜態(tài)功耗的快速估計(jì)和優(yōu)化、面向片上系統(tǒng)的低功耗設(shè)計(jì)技術(shù)、面向特定應(yīng)用的低功耗系統(tǒng)設(shè)計(jì)等方面。本文從不同的角度對(duì)超大規(guī)模集成電路存在的低功耗問(wèn)題進(jìn)行分析,并提出一些解決措施。
集成電路的功耗一般分為動(dòng)態(tài)功耗和靜態(tài)功耗兩大部分。動(dòng)態(tài)功耗是在電路工作狀態(tài)發(fā)生變化時(shí)產(chǎn)生的,主要包括三個(gè)部分:由于邏輯跳變引起的電容功耗、由于通路延時(shí)引起的競(jìng)爭(zhēng)冒險(xiǎn)功耗、由于電路瞬間導(dǎo)通引起的短路功耗,動(dòng)態(tài)功耗曾經(jīng)是電路總功耗的主要部分[1]。
靜態(tài)功耗是電路處于非活動(dòng)狀態(tài)時(shí)電路的功耗。當(dāng)電路工藝進(jìn)入深亞微米或者更深的納米階段后,漏電流帶來(lái)的靜態(tài)功耗占很重要的部分,并且其增長(zhǎng)速度比動(dòng)態(tài)功耗快得多。漏電流主要包括三個(gè)部分:亞閾漏電流、柵極漏電流、源漏級(jí)反偏漏電流[2]。主要原因是柵氧化層厚度按比例減小導(dǎo)致柵氧化層內(nèi)的電場(chǎng)強(qiáng)度增大,產(chǎn)生較為明顯的柵氧隧穿泄漏電路,加上漏極與襯底之間的反偏PN結(jié)電流等,使得泄漏功耗成為總功耗的重要組成部分。一般來(lái)說(shuō),影響泄漏電流大小的因素包括閾值電壓、溝道的物理尺寸、溝道/表面的注入工藝、漏極/源極的結(jié)深度、柵氧化層的厚度和供電電壓等,到納米時(shí)代,泄漏功耗占總功耗50%左右[3]。
目前SoC 低功耗設(shè)計(jì)技術(shù)的研究主要集中在兩個(gè)方面[4-5]:低功耗電路設(shè)計(jì)和低功耗EDA 軟件研究。低功耗電路設(shè)計(jì)的研究和其本身的產(chǎn)品方向有著密切關(guān)系,擁有生產(chǎn)線的廠商主要集中在生產(chǎn)工藝方面(如LSI Logic TSMC等),EDA供應(yīng)商則主要集中在低功耗軟件研究方面(如Synopsys Mentor等),而一些大型處理器設(shè)計(jì)公司則比較關(guān)注SoC各個(gè)層次的設(shè)計(jì)技術(shù)和低功耗處理器模型的研究(如ARM、IBM和NEC等),低功耗EDA 軟件的研究主要集中在功耗建模、功耗分析和功耗優(yōu)化三個(gè)方面,國(guó)外各大學(xué)對(duì)低功耗技術(shù)的研究比較全面,但每個(gè)大學(xué)進(jìn)行的側(cè)重點(diǎn)不同,有的側(cè)重低功耗處理器的研究,有的側(cè)重進(jìn)行低功耗綜合技術(shù)的研究,另外一些則從事異步電路的研究。國(guó)內(nèi)對(duì)低功耗技術(shù)的研究還處于發(fā)展階段,雖然也有一些專門的低功耗研究機(jī)構(gòu)如中科院,但目前開展的一些工作主要集中在工藝研究和功耗建模方面,SoC軟件低功耗設(shè)計(jì)技術(shù)的研究較少,硬件低功耗設(shè)計(jì)技術(shù)也有待進(jìn)一步完善和提高。
低功耗設(shè)計(jì)技術(shù)貫穿算法/系統(tǒng)級(jí)到版圖/電路級(jí)的整個(gè)設(shè)計(jì)過(guò)程。在設(shè)計(jì)早期通過(guò)有效的分析、驗(yàn)證和優(yōu)化技術(shù)發(fā)現(xiàn)并解決問(wèn)題,使功耗等技術(shù)指標(biāo)滿足設(shè)計(jì)規(guī)范,然后進(jìn)入下一階段。
設(shè)計(jì)證明不同設(shè)計(jì)層次對(duì)功耗的改善程度是不同的,層次越高,改善的程度越大[4]。表1給出在各個(gè)不同硬件層次上可采用的低功耗設(shè)計(jì)技術(shù)以及這些低功耗設(shè)計(jì)技術(shù)對(duì)降低系統(tǒng)整體功耗的影響。
表1 不同層次低功耗設(shè)計(jì)技術(shù)及其效果
以我們?cè)O(shè)計(jì)的一款系統(tǒng)芯片為例,該系統(tǒng)芯片的架構(gòu)如圖1所示,其規(guī)模超過(guò)200萬(wàn)門,內(nèi)嵌一個(gè)32位微處理器、一些通用的接口模塊、128kB存儲(chǔ)器模塊、中斷模塊、功耗管理模塊以及用戶IP模塊。
圖1 系統(tǒng)芯片架構(gòu)
圖2 芯片的工作模式
(1)系統(tǒng)級(jí)(system level)基本思想是在部分模塊進(jìn)入空閑狀態(tài)后立即關(guān)閉(shut down),主要研究如何進(jìn)行系統(tǒng)劃分和狀態(tài)預(yù)測(cè)。
在具體設(shè)計(jì)中,對(duì)芯片工作狀態(tài)進(jìn)行合理的設(shè)計(jì),大致分為四種工作模式:Slow模式;Idle模式;Sleep模式和正常(Normal)工作模式。當(dāng)系統(tǒng)復(fù)位完成或系統(tǒng)只需要低頻下工作時(shí)(測(cè)試模式下),芯片可以在Slow模式;如果處理器結(jié)束所有工作,系統(tǒng)將進(jìn)入很長(zhǎng)的等待時(shí)間,此時(shí)芯片就會(huì)進(jìn)入Idle模式,該模式下,CPU被關(guān)閉,所有任務(wù)都處于掛起或停止?fàn)顟B(tài),但大多數(shù)的外設(shè)仍處于活動(dòng)狀態(tài),該狀態(tài)是外設(shè)工作、CPU不工作的低功耗模式。
Sleep模式下將關(guān)閉CPU核和所有模塊的時(shí)鐘源,僅給重要的內(nèi)部電路供電,所以功耗最低。雖然可以從Slow模式或Normal模式切換到Sleep模式,但是當(dāng)它退出Sleep模式時(shí),系統(tǒng)只能回到Slow模式。
Nomal模式下系統(tǒng)中所有模塊的時(shí)鐘源都來(lái)自于時(shí)鐘模塊,該模式下,CPU和所有的外設(shè)都處在上電狀態(tài),系統(tǒng)滿負(fù)荷運(yùn)行,功耗最大。當(dāng)然在這種模式下也可以根據(jù)系統(tǒng)的應(yīng)用要求關(guān)閉某些模塊。如果系統(tǒng)需要調(diào)整時(shí)鐘頻率,可以通過(guò)動(dòng)態(tài)配置時(shí)鐘電路來(lái)實(shí)現(xiàn)。
喚醒機(jī)制是為了幫助系統(tǒng)從Idle模式或Sleep模式中恢復(fù)出來(lái),建立完整、有效的喚醒機(jī)制是必須的。有三種方式可以讓系統(tǒng)從低功耗模式中喚醒。第一,通過(guò)內(nèi)部所有模塊的中斷信號(hào),可以讓系統(tǒng)回到進(jìn)入Idle之前的狀態(tài);第二,內(nèi)部Watchdog reset信號(hào)使系統(tǒng)回到Slow狀態(tài);第三,外部輸入中斷信號(hào)可以使系統(tǒng)恢復(fù)到低功耗之前的工作狀態(tài)。
在進(jìn)行程序開發(fā)時(shí),為配合硬件進(jìn)行低功耗設(shè)計(jì),要充分利用電源管理機(jī)制,在電路不同工作模式切換過(guò)程中強(qiáng)調(diào)應(yīng)用程序與其配合,減少系統(tǒng)的功耗。芯片上功耗管理模塊具有動(dòng)態(tài)控制整個(gè)芯片功耗的功能。仿真顯示各個(gè)模式下的功耗如表2所示。
表2 不同模式下的功耗情況
(2)算法級(jí)(Algorithm Level)通過(guò)選擇適當(dāng)?shù)乃惴ū硎鰷p少跳變率,基本思想還是集中在通過(guò)軟、硬件的合理劃分來(lái)降低電路功耗[5]。
圖3 可編程模塊的控制
SoC工作時(shí)對(duì)內(nèi)部IP模塊的要求也不一樣,在不同的時(shí)刻IP可以處在不同的工作狀態(tài),這樣可以根據(jù)實(shí)際工作需要對(duì)IP模塊進(jìn)行合理的管理,控制整個(gè)芯片的功耗。為此我們提出圖3 所示的一個(gè)時(shí)鐘動(dòng)態(tài)管理策略:每個(gè)外設(shè)時(shí)鐘都有一組使能信號(hào)進(jìn)行控制,當(dāng)某個(gè)IP模塊不工作時(shí),用戶可以通過(guò)軟件對(duì)可編程IP時(shí)鐘單元進(jìn)行編程,當(dāng)寫入“0”時(shí),該模塊輸入時(shí)鐘就會(huì)停止工作;當(dāng)寫入“1”時(shí),該模塊就會(huì)重新工作。
(3)寄存器傳輸級(jí)(Register Transfer Level)主要有門控時(shí)鐘(clocking gating)、有限狀態(tài)機(jī)編碼優(yōu)化、通路平衡、總線編碼優(yōu)化等方法。
門控時(shí)鐘可以在設(shè)計(jì)流程中實(shí)現(xiàn)自動(dòng)化,減少工作量。其中寄存器替換是Synopsys的Power Compiler主要方法,它是將設(shè)計(jì)中的寄存器替換成帶有門控時(shí)鐘“使能”端的寄存器。對(duì)下面的一段代碼(a)修改為代碼(b),利用EDA工具在設(shè)計(jì)的邏輯綜合階段加入門控時(shí)鐘綜合腳本,可以綜合出帶有門控時(shí)鐘的寄存器。
(a)
Module FFEN(ena,d,clk,q)
input ena, d, clk;
output q;
reg q;
always @(posedge clk )
begin
if(ena)
q <= d;
end
endmodule
(b)
Module G_FFEN(ena, d, clk,q)
input ena,d, clk;
output q;
reg q,g_clk;
always @(posedge g_clk)
begin
q<=d;
end
always @(clk or ena)
begin
if(!clk)
I_ena <= ena;
end
assign g_clk = I_ena &clk;
endmodule
利用綜合工具Design Compiler,將實(shí)現(xiàn)在電路插入門控時(shí)鐘,通過(guò)腳本靈活實(shí)現(xiàn):
/*設(shè)置門控時(shí)鐘設(shè)計(jì)常用的變量*/
Set power_preserve_rtl_hier_names true
Set hdlin_no_group_register true
/*設(shè)定門控時(shí)鐘類型及相關(guān)參數(shù)*/
Set_clock_gating_style –sequential_cell latch –setup 0.2 –hold 0.1 –control_point before –control_signal scan_enable –minimum_bitwidth 2 –max_fanout 6
/*讀入RTL代碼,插入門控時(shí)鐘*/
Analyze –fanout verilog –lib library_name –define SYNOPSIS
/*確定控制信號(hào)是否采用門控時(shí)鐘*/
Set_clock_gating_signals –design design_name
Elaborate design_name –gate_clock –update –lib liabrary_name
/*將所涉及到的控制點(diǎn)信號(hào)連接到一起*/
Hookup_testports -verbose
/*插入門控時(shí)鐘的報(bào)告*/
Report_clock_gating –gating_elements –gated –ungated –hier
/*插入門控時(shí)鐘后的時(shí)鐘定義與約束*/
Set CLK_PER 10
Set UNCERTAINTY 0.12
Set INSERTION_DELAY 0.2
Create_clock –period $ CLK_PER –name CLK[get_ports clk_power]
Create_clock –period $ CLK_PER –name POST_CG_CLK [get_pins –hierarchical “*clk_gate”/ENCLK]
Create_clock –period $ CLK_PER –name PRE_CG_CLK [get_pins –hierarchical “*clk_gate”/CLK]
Set_clock_latency $INSERTION_DELAY [get_clocks{CLK POST_CG_CLK}]
Source –e –v top_constraints.tcl
Propagate_constrains –gate_clock
Uniquify compile
采用SMIC 0.18μm CMOS工藝,目標(biāo)工作頻率100MHz。物理設(shè)計(jì)完成后最終的功耗分析結(jié)果見表3。分析結(jié)果表明,在不改變RTL代碼的情況下,有效使用EDA工具進(jìn)行門控時(shí)鐘的插入可以使得電路功耗明顯降低。
表3 由Power Compiler產(chǎn)生的功耗報(bào)告
本文分析深亞微米工藝下系統(tǒng)芯片功耗的組成,并以實(shí)際設(shè)計(jì)的芯片為例,分別從不同層次(系統(tǒng)級(jí)/算法、寄存器級(jí)以及邏輯門級(jí))采取低功耗優(yōu)化方法進(jìn)行設(shè)計(jì),給出實(shí)際設(shè)計(jì)結(jié)果,這些方法的綜合應(yīng)用可以顯著地降低芯片的功耗,同時(shí)也驗(yàn)證了功耗設(shè)計(jì)策略。
[1]Benini L,Bogliolo A,Micheli G,D. A survey of design techniques for system-level dynamic power management[J].IEEE Transactions on VLSI Systems, 2000,8(3):299-31.
[2]Xu,Y.,et al. Minimum leakage pattern generation using stack effect[C]. ASIC, 2003, Proceedings. 5th International Conference. 2003.
[3]Abdollahi, A.,F.Fallah, M.Pedram. Leakage current reduction in CMOS VLSI circuits by input vector control[J].VLSI Systems. IEEE Transactions,2004,12(2):140-154.
[4]Anand R, Niraj K J, Sujit D. High-level power analysis and optimization[M]. Boston, Kluwer Academic Publishers,2004.11-73.
[5]Lekatsas H, Henkel J,Wolf W. Arithmetic Coding for Low Power Embedded System Design[A]. Data Compression Conference (DCC’00),Snowbird, Utah,2000.430-439.