摘要:隨著芯片集成度的提高,對一些功能復(fù)雜的系統(tǒng)芯片功耗的管理,已經(jīng)引起大家越來越多的重視,如何控制好SoC的功耗將成為芯片能否成功的重要因素。本文提出一種通過動態(tài)管理時鐘的策略,達(dá)到降低整個SoC芯片功耗的目的;同時,分析動態(tài)管理時鐘方案中可能會出現(xiàn)的一些問題,并給出解決方案。
關(guān)鍵詞:系統(tǒng)芯片 毛刺 AMBA 總線 時滯
引 言
??隨著集成電路技術(shù)的飛速發(fā)展和對消費類電子產(chǎn)品——特別是便攜式(移動)面向客戶的電子產(chǎn)品的需求,推動了SoC(System on Chip)的飛速發(fā)展,也給人們提出了許多新的課題。對于電池驅(qū)動的SoC芯片,已不能再只考慮它優(yōu)化空間的兩個方面——速度(performance)和面積(cost),而必須要注意它已經(jīng)表現(xiàn)出來的且變得越來越重要的第三個方面——功耗,這樣才能延長電池的壽命和電子產(chǎn)品的運行時間。
SoC中CMOS電路功耗有:一是靜態(tài)功耗,主要是由靜電流、漏電流等因素造成的;二是動態(tài)功耗,主要是由電路中信號變換時造成的瞬態(tài)開路電流(crowbar current)和負(fù)載電流(load current)等因素造成的,它是SoC芯片中功耗的主要來源。因此,解決好SoC中的動態(tài)功耗是降低整個SoC芯片功耗的關(guān)鍵。本文后面所提到的功耗就是指SoC芯片中的動態(tài)功耗。
如何降低SoC中的功耗,從不同的層面分析會得出不同的解決方案。從芯片的系統(tǒng)級(architecture)角度考慮,有低功耗總線設(shè)計、低功耗存儲系統(tǒng)設(shè)計、低功耗時鐘網(wǎng)絡(luò)設(shè)計、開發(fā)系統(tǒng)的休息模式、時鐘門控等技術(shù);從芯片的行為級(RTL)角度考慮,有信號門控、預(yù)前計算、操作數(shù)分離、狀態(tài)機優(yōu)化、并行和流水結(jié)構(gòu)等技術(shù);從芯片的門級(gate)角度考慮,有緩沖插入、提取因子、單元縮放、管腳交換、相位配置等技術(shù)[4]。從越高的抽象層次去考慮功耗問題,芯片功耗優(yōu)化的幅度就越顯著。
本文所提出的基于動態(tài)配置時鐘的SoC低功耗管理是從芯片的系統(tǒng)級角度考慮的。在最后的實驗中,它非常明顯地降低了整個芯片的功耗。
1 動態(tài)配置時鐘的SoC低功耗管理原理
基于微處理器應(yīng)用的SoC設(shè)計,其復(fù)雜程度變化很大:在一些應(yīng)用中可能需要用到所有的硬件資源,但是在其它的一些應(yīng)用中可能只需要用到其中一部分硬件資源;在一些應(yīng)用中可能需要很高的工作頻率,而在其它的一些應(yīng)用中卻可以大大降低工作頻率。動態(tài)管理SoC系統(tǒng)時鐘的思想就是:不僅動態(tài)地管理SoC內(nèi)部模塊的時鐘源供給,還可以動態(tài)地配置SoC系統(tǒng)的時鐘頻率。
動態(tài)地管理SoC內(nèi)部模塊的時鐘源供給就是,根據(jù)不同的應(yīng)用,管理SoC內(nèi)部的硬件資源。簡而言之,就是進(jìn)行內(nèi)部模塊的開和關(guān)的操作。關(guān)閉單個模塊,可以通過對每個模塊設(shè)置一個使能位,然后對這個使能位編程做到關(guān)閉或打開那個模塊。但這樣做不是最佳的,原因有二:其一,每個模塊的接口部分必須是始終打開的,否則,CPU核無法隨時對它的內(nèi)部寄存器進(jìn)行編程;其二,通過模塊使能位只是關(guān)閉了它的功能操作,而并沒有把它模塊內(nèi)的時鐘樹關(guān)閉掉,也就是說它里面的時鐘樹依然處于激活狀態(tài),而時鐘樹所造成的功耗占單個模塊功耗的很大一部分。其實大多數(shù)模塊都是同步系統(tǒng),系統(tǒng)的所有操作都是在時鐘信號的節(jié)拍下進(jìn)行的[5],關(guān)閉時鐘源能同時達(dá)到關(guān)閉模塊和降低功耗的目的。
動態(tài)地配置SoC系統(tǒng)的時鐘頻率則是以不犧牲系統(tǒng)的性能為前提,動態(tài)地管理系統(tǒng)的工作頻率來降低SoC的功耗。時鐘頻率是影響動態(tài)功耗的重要因素:。它的工作頻率越高,功耗也就越大。但在很多時候,所有的模塊并不是工作在同一時鐘頻率,或者同一個模塊在不同的時段可以工作在不同的時鐘頻率。這些就是動態(tài)地配置SoC系統(tǒng)的時鐘頻率的前提。
圖1是整個SoC中的時鐘網(wǎng)絡(luò)(時鐘樹)。圖中的功耗管理模塊(power management module)完成這種功能。
2 芯片的低功耗工作管理模式
為了更好地實現(xiàn)動態(tài)配置時鐘的SoC低功耗管理策略,芯片在其工作中開發(fā)出了其低功耗管理機制中的四種工作模式:Slow、Normal、Idle和Sleep。下面結(jié)合圖2所示的工作模式流程圖來說明它的工作機制。

表1為四種工作模式的狀態(tài)。

(1)Slow模式
當(dāng)系統(tǒng)復(fù)位以后或當(dāng)系統(tǒng)關(guān)掉PLL不需要高速時鐘運行時,系統(tǒng)進(jìn)入到Slow模式。在Slow模式下,系統(tǒng)中的CPU核和所有模塊的時鐘源都來自晶振。如果這時系統(tǒng)認(rèn)為有必要關(guān)掉某些模塊,那么,就可以通過配置功耗管理模塊內(nèi)部的寄存器,把相應(yīng)模塊的時鐘源使能位關(guān)掉。
(2)Normal模式
如果在某些應(yīng)用中需要高速時鐘,那么就應(yīng)該切換到Normal模式。在Normal模式下,系統(tǒng)中的CPU核和所有模塊的時鐘源都來自PLL。當(dāng)然,在這種模式下也可以根據(jù)系統(tǒng)的應(yīng)用關(guān)掉某些模塊。如果系統(tǒng)需要調(diào)整時鐘的頻率,可以通過動態(tài)配置PLL來實現(xiàn)。但是在動態(tài)配置PLL過程中,要注意這樣一個問題:因為PLL有一個時鐘鎖定的時間,在這段時間內(nèi),它輸出的時鐘波形是不規(guī)則的,此時不能使用它作為芯片的時鐘源。為了保證系統(tǒng)的正常運行,可以暫時把系統(tǒng)的時鐘源切換到晶振狀態(tài),待PLL的時鐘輸出穩(wěn)定以后再把系統(tǒng)的時鐘源切換到PLL狀態(tài)。
(3)Idle模式
如果CPU核在當(dāng)前狀態(tài)下已經(jīng)處理完所有任務(wù),在很長一段時間內(nèi)都將處于空閑狀態(tài),那么系統(tǒng)應(yīng)該進(jìn)入到Idle模式。在Idle模式下,只會關(guān)閉CPU核的時鐘源,而所有的模塊都保持原狀。但在這種模式下,不可動態(tài)配置PLL,以得到不同的時鐘頻率;也不可以動態(tài)地管理各模塊的時鐘源,因為這個時鐘Core已經(jīng)休眠了,它沒辦法對功耗管理模塊內(nèi)部的寄存器進(jìn)行配置。無論前一個狀態(tài)是Slow模式還是Normal模式,系統(tǒng)都可以進(jìn)入到Idle模式下;而當(dāng)系統(tǒng)退出Idle模式時,它應(yīng)該退回到前一個工作模式。當(dāng)系統(tǒng)重新需要CPU核進(jìn)行事務(wù)處理時,可以通過一個喚醒信號讓系統(tǒng)退回到Slow模式或Normal模式。
(4)Sleep模式
如果整個系統(tǒng)都已經(jīng)處理完所有的事務(wù),并且在很長的一段時間內(nèi)都將處于空閑狀態(tài),那么系統(tǒng)應(yīng)該進(jìn)入到Sleep模式。在Sleep模式下,關(guān)閉CPU核和所有模塊的時鐘源。雖然可以從Slow模式或Normal模式切換到Sleep模式,但是當(dāng)它退出Sleep模式時,系統(tǒng)只能回到Slow模式。因為為了進(jìn)一步降低整個芯片的功耗,在Sleep模式時會同時關(guān)閉PLL,所以在它退出時只能回到Slow模式,然后根據(jù)當(dāng)前的應(yīng)用決定有沒有再切換到Normal模式的必要。當(dāng)系統(tǒng)需要再次進(jìn)行事務(wù)處理時,可以通過一個喚醒信號喚醒整個SoC芯片系統(tǒng)。
3 功耗管理模塊的實現(xiàn)
功耗管理模塊主要由一個狀態(tài)機、一些多路選擇器和一些門控時鐘電路組成。狀態(tài)機的責(zé)職就是完成各種模式之間的切換和送出PLL的控制信號。多路選擇器主要完成各種時鐘源之間的選擇,而門控時鐘電路則完成CPU核和各模塊時鐘源的打開和關(guān)閉功能。圖3是功耗管理模塊中時鐘源路線。
從圖3中可以清楚地看出,在功耗管理模塊中例示了兩個PLL:一個是主PLL(MPLL),它提供整個SoC中除USB模塊以外的所有模塊的時鐘源;另一個是次PLL(UPLL),它只對USB提供時鐘源。MUX完成晶振時鐘和PLL時鐘的選擇,被選中的時鐘(FCLK)同時送到CPU核、HCLK和PCLK,然后根據(jù)各個模塊的需要門控地送出時鐘源。這是基于AMBA總線結(jié)構(gòu)的SoC。根據(jù)AMBA總線的協(xié)議,CPU核、AHB上的模塊和APB上的模塊的時鐘頻率可以配置成倍比關(guān)系[6]。經(jīng)過HCLK分頻的時鐘源只提供給AHB上的模塊,而經(jīng)過PCLK分頻的時鐘源只提供給APB上的模塊。AHB_con 、APB_con、Core_con和USB_con一起管理SoC內(nèi)部模塊的時鐘源供給。
4 動態(tài)時鐘管理中的問題及消除方法
動態(tài)地配置整個系統(tǒng)的時鐘頻率,雖然可以很方便地控制好整個SoC芯片的功耗,但同時也帶來了一些負(fù)面影響。功耗管理單元中的多路選擇器和門控時鐘電路是最有可能產(chǎn)生毛刺的,而毛刺對同步數(shù)字系統(tǒng)是致命的。它會導(dǎo)致同步的失敗、數(shù)據(jù)的丟失、寄存器進(jìn)入亞穩(wěn)態(tài),更為嚴(yán)重的是,使整個同步系統(tǒng)的功能失敗。毛刺的產(chǎn)生是因為那些輸入信號的時序匹配出現(xiàn)了問題,沒有按照既定的順序出現(xiàn),或者說那些信號裝轉(zhuǎn)換的時機不合適。因此在RTL設(shè)計時要保證做到時序的匹配,以降低毛刺產(chǎn)生的可能性。
在功耗管理模塊中有三種情況需要用到多路選擇器:
a. 由Slow模式切換到Normal模式;
b. 在Normal模式下重新配置PLL;
c. 由Normal模式切換到Slow模式。
圖4是功耗管理模塊中的一個二選一MUX。它的控制信號是OscillatorOrMPLL,兩個選擇源是clk_MPLL和clk_Osci,輸出是out_ClockSource。當(dāng)OscillatorOrMPLL為“1”時,MUX選中clk_Osci;當(dāng)OscillatorOrMPLL為“0”時,MUX選中clk_MPLL。在MUX選擇其中任何一個時鐘信號之前,clk_MPLL或clk_Osci必須已經(jīng)穩(wěn)定下來了。強調(diào)一下,這里的穩(wěn)定不是指已經(jīng)輸送出完整的時鐘信號,而是輸送出高電平或低電平。這樣當(dāng)選擇開關(guān)達(dá)到它們那一方時,接受到的是沒有毛刺的且對整個SoC不會產(chǎn)生操作的時鐘信號。雖然在這時因為這種操作把SoC的頻率降了下來,但這是暫時的(大約2~3個晶振時鐘周期),因此對整個SoC性能的影響是微乎其微的。接下來被選中的信號(clk_MPLL或clk_Osci)才開始輸送出沒有毛刺的時鐘信號,從而最終送出的時鐘信號是去除了毛刺的。

圖5是系統(tǒng)從Slow模式切換到Normal模式時的時序圖。通過配置功耗管理模塊的內(nèi)部寄存器打開PLL,即in_PLLStartOrStop信號,由它觸發(fā)Slow2Normal_r信號,表明當(dāng)前將要從Slow模式過渡到Normal模式。然后,由這個信號觸發(fā)Lock Time 計數(shù)器開始計數(shù)(計數(shù)值由PLL的IP提供商所給的公式中確定),接著先把晶振時鐘的使能信號關(guān)掉,再把多路選擇器打到MPLL那一方。最后,把PLL時鐘的使能信號打開,這時得到的就是經(jīng)過倍頻的PLL時鐘。

從時序圖可以清晰看出,在時鐘源切換的過程中,最終送出的時鐘(out_ClockSource)頻率會很明顯地降低下來(大約是晶振時鐘頻率的1/3或1/2);但是如果選擇的晶振時鐘頻率在10MHz以上,則不會對整個SoC芯片的性能產(chǎn)生影響。
至于門控時鐘電路,已經(jīng)有許多人在這方面作了很廣泛的研究,本文不再對此作過多的解釋[7]。
5 結(jié) 論
本文提出了一種SoC芯片的低功耗管理策略。其基本思想是,首先從全局考慮,在滿足性能的前提下,根據(jù)各種應(yīng)用環(huán)境動態(tài)地配置SoC芯片的時鐘頻率。然后,從局部單獨考慮單個模塊,通過判斷它當(dāng)前的工作狀態(tài)決定是否打開其時鐘源。
該低功耗管理方案已經(jīng)應(yīng)用于我們設(shè)計的一款SoC芯片——Garfield。經(jīng)過表2所列Power Compiler的功耗分析,可以清晰地看出:在Slow模式下的功耗僅為Normal模式下功耗的17%左右,而在Sleep模式下的功耗更低。
參考文獻(xiàn)
1 Bill Moyer. Low-Power Design for Embedded Processors
2 Jerry Frenkil, Sequence Design Inc. Santa Clara, CA A multi-level approach to low-power IC design. IEEE Spectrum (Volume 35, Number 2, February 1998)
3 Secareanu Radu M. David Albonesi and Friedman Eby G. A Dynamic Reconfigurable Clock Generator. Motorola, Inc, Semiconductor Products Sector, Digital DNA Laborites, Tempe, AZ 85284 University of Rochester, Department of Electrical and Computer Engineering, Rochester, NY 14627-0231
4 Nassiri Hamid R. Low power design. Synopsys SUNG
5 Rabaey Jan M. A Design Perspective——數(shù)字集成電路設(shè)計透視. 1999
6 Caldari M, Conti M, Crippa P, et al. Dynamic Power Management in an AMBA-Based Battery-Powered System. Departimento di Elettronica e Automatia, University of Ancona Via Brecce Bianche, I-60131 Ancona, ITALY
7 Sujit Dey, Anand Raghunathan, Jha Niraj K, et al. Controller-based power management for control-flow intensive designs. 1999
8 MIPS Technologies Inc. Darren Jones. How to Successfully Use Gated Clocking in an ASIC Design
9 AMBA Specification 2.0 . ARM corporation
- 功耗管理(7150)
- 動態(tài)時鐘(6855)
相關(guān)推薦
NORDIC最新推出ARM內(nèi)核低功耗藍(lán)牙SOC芯片及ARM內(nèi)核ANT+SOC芯片
FSMs低功耗設(shè)計
72
Arm SoC的電源和時鐘管理詳解
690
FPGA原型驗證系統(tǒng)的時鐘門控
465PWR低功耗運行模式介紹
253
基于MM32L0130的低功耗電子時鐘設(shè)計
780RJM8L系列超低功耗MCU應(yīng)用
327
通過動態(tài)切換降低功耗的參考設(shè)計
0MSP430單片機時鐘系統(tǒng)和低功耗結(jié)構(gòu)課件ppt
0門控時鐘實現(xiàn)低功耗的原理
1307BlueNRG-LP支持128個并發(fā)連接的藍(lán)牙低功耗SoC
1852
MM32W無線MCU系列產(chǎn)品應(yīng)用筆記 —— 低功耗BLE藍(lán)牙應(yīng)用
0STM8S低功耗電源管理
6STM32 低功耗STOP模式,RTC喚醒
42STM32低功耗模式下GPIO如何配置最節(jié)能?
9低功耗模式下的看門狗使用
9低功耗設(shè)計
14低功耗設(shè)計
18低功耗設(shè)計
13華大MCU低功耗
3SOC低功耗電路設(shè)計方法
1什么是門控時鐘 門控時鐘降低功耗的原理
11329
如何選擇低功耗藍(lán)牙SoC
4168
Arm SoC芯片低功耗設(shè)計分享會在深圳成功舉辦
1270Xilinx Zynq SOC的動態(tài)電源管理功能的展示
3973動態(tài)時鐘配置下的SoC低功耗管理詳解
2566
SoC的低功耗設(shè)計
1SoC低功耗管理
1低功耗MCU動態(tài)時鐘分析與應(yīng)用
295
Kinetis低功耗模式喚醒后時鐘頻率減半的原因
8時鐘芯片的低功耗設(shè)計研究
2043
低功耗MCU動態(tài)時鐘分析
1919
應(yīng)用于片上系統(tǒng)中低功耗IP核設(shè)計的自適應(yīng)門控時鐘技術(shù)
36基于門控時鐘的低功耗電路設(shè)計方案
3055
基于門控時鐘的CMOS電路低功耗設(shè)計
22時鐘和低功耗模式
12低功耗模式下微控制器時鐘配置應(yīng)用
18
電子發(fā)燒友App




評論