摘要:隨著芯片集成度的提高,對(duì)一些功能復(fù)雜的系統(tǒng)芯片功耗的管理,已經(jīng)引起大家越來越多的重視,如何控制好SoC的功耗將成為芯片能否成功的重要因素。本文提出一種通過動(dòng)態(tài)管理時(shí)鐘的策略,達(dá)到降低整個(gè)SoC芯片功耗的目的;同時(shí),分析動(dòng)態(tài)管理時(shí)鐘方案中可能會(huì)出現(xiàn)的一些問題,并給出解決方案。
關(guān)鍵詞:系統(tǒng)芯片 毛刺 AMBA 總線 時(shí)滯
引 言
??隨著集成電路技術(shù)的飛速發(fā)展和對(duì)消費(fèi)類電子產(chǎn)品——特別是便攜式(移動(dòng))面向客戶的電子產(chǎn)品的需求,推動(dòng)了SoC(System on Chip)的飛速發(fā)展,也給人們提出了許多新的課題。對(duì)于電池驅(qū)動(dòng)的SoC芯片,已不能再只考慮它優(yōu)化空間的兩個(gè)方面——速度(performance)和面積(cost),而必須要注意它已經(jīng)表現(xiàn)出來的且變得越來越重要的第三個(gè)方面——功耗,這樣才能延長(zhǎng)電池的壽命和電子產(chǎn)品的運(yùn)行時(shí)間。
SoC中CMOS電路功耗有:一是靜態(tài)功耗,主要是由靜電流、漏電流等因素造成的;二是動(dòng)態(tài)功耗,主要是由電路中信號(hào)變換時(shí)造成的瞬態(tài)開路電流(crowbar current)和負(fù)載電流(load current)等因素造成的,它是SoC芯片中功耗的主要來源。因此,解決好SoC中的動(dòng)態(tài)功耗是降低整個(gè)SoC芯片功耗的關(guān)鍵。本文后面所提到的功耗就是指SoC芯片中的動(dòng)態(tài)功耗。
如何降低SoC中的功耗,從不同的層面分析會(huì)得出不同的解決方案。從芯片的系統(tǒng)級(jí)(architecture)角度考慮,有低功耗總線設(shè)計(jì)、低功耗存儲(chǔ)系統(tǒng)設(shè)計(jì)、低功耗時(shí)鐘網(wǎng)絡(luò)設(shè)計(jì)、開發(fā)系統(tǒng)的休息模式、時(shí)鐘門控等技術(shù);從芯片的行為級(jí)(RTL)角度考慮,有信號(hào)門控、預(yù)前計(jì)算、操作數(shù)分離、狀態(tài)機(jī)優(yōu)化、并行和流水結(jié)構(gòu)等技術(shù);從芯片的門級(jí)(gate)角度考慮,有緩沖插入、提取因子、單元縮放、管腳交換、相位配置等技術(shù)[4]。從越高的抽象層次去考慮功耗問題,芯片功耗優(yōu)化的幅度就越顯著。
本文所提出的基于動(dòng)態(tài)配置時(shí)鐘的SoC低功耗管理是從芯片的系統(tǒng)級(jí)角度考慮的。在最后的實(shí)驗(yàn)中,它非常明顯地降低了整個(gè)芯片的功耗。
1 動(dòng)態(tài)配置時(shí)鐘的SoC低功耗管理原理
基于微處理器應(yīng)用的SoC設(shè)計(jì),其復(fù)雜程度變化很大:在一些應(yīng)用中可能需要用到所有的硬件資源,但是在其它的一些應(yīng)用中可能只需要用到其中一部分硬件資源;在一些應(yīng)用中可能需要很高的工作頻率,而在其它的一些應(yīng)用中卻可以大大降低工作頻率。動(dòng)態(tài)管理SoC系統(tǒng)時(shí)鐘的思想就是:不僅動(dòng)態(tài)地管理SoC內(nèi)部模塊的時(shí)鐘源供給,還可以動(dòng)態(tài)地配置SoC系統(tǒng)的時(shí)鐘頻率。
動(dòng)態(tài)地管理SoC內(nèi)部模塊的時(shí)鐘源供給就是,根據(jù)不同的應(yīng)用,管理SoC內(nèi)部的硬件資源。簡(jiǎn)而言之,就是進(jìn)行內(nèi)部模塊的開和關(guān)的操作。關(guān)閉單個(gè)模塊,可以通過對(duì)每個(gè)模塊設(shè)置一個(gè)使能位,然后對(duì)這個(gè)使能位編程做到關(guān)閉或打開那個(gè)模塊。但這樣做不是最佳的,原因有二:其一,每個(gè)模塊的接口部分必須是始終打開的,否則,CPU核無法隨時(shí)對(duì)它的內(nèi)部寄存器進(jìn)行編程;其二,通過模塊使能位只是關(guān)閉了它的功能操作,而并沒有把它模塊內(nèi)的時(shí)鐘樹關(guān)閉掉,也就是說它里面的時(shí)鐘樹依然處于激活狀態(tài),而時(shí)鐘樹所造成的功耗占單個(gè)模塊功耗的很大一部分。其實(shí)大多數(shù)模塊都是同步系統(tǒng),系統(tǒng)的所有操作都是在時(shí)鐘信號(hào)的節(jié)拍下進(jìn)行的[5],關(guān)閉時(shí)鐘源能同時(shí)達(dá)到關(guān)閉模塊和降低功耗的目的。
動(dòng)態(tài)地配置SoC系統(tǒng)的時(shí)鐘頻率則是以不犧牲系統(tǒng)的性能為前提,動(dòng)態(tài)地管理系統(tǒng)的工作頻率來降低SoC的功耗。時(shí)鐘頻率是影響動(dòng)態(tài)功耗的重要因素:。它的工作頻率越高,功耗也就越大。但在很多時(shí)候,所有的模塊并不是工作在同一時(shí)鐘頻率,或者同一個(gè)模塊在不同的時(shí)段可以工作在不同的時(shí)鐘頻率。這些就是動(dòng)態(tài)地配置SoC系統(tǒng)的時(shí)鐘頻率的前提。
圖1是整個(gè)SoC中的時(shí)鐘網(wǎng)絡(luò)(時(shí)鐘樹)。圖中的功耗管理模塊(power management module)完成這種功能。
2 芯片的低功耗工作管理模式
為了更好地實(shí)現(xiàn)動(dòng)態(tài)配置時(shí)鐘的SoC低功耗管理策略,芯片在其工作中開發(fā)出了其低功耗管理機(jī)制中的四種工作模式:Slow、Normal、Idle和Sleep。下面結(jié)合圖2所示的工作模式流程圖來說明它的工作機(jī)制。
表1為四種工作模式的狀態(tài)。
(1)Slow模式
當(dāng)系統(tǒng)復(fù)位以后或當(dāng)系統(tǒng)關(guān)掉PLL不需要高速時(shí)鐘運(yùn)行時(shí),系統(tǒng)進(jìn)入到Slow模式。在Slow模式下,系統(tǒng)中的CPU核和所有模塊的時(shí)鐘源都來自晶振。如果這時(shí)系統(tǒng)認(rèn)為有必要關(guān)掉某些模塊,那么,就可以通過配置功耗管理模塊內(nèi)部的寄存器,把相應(yīng)模塊的時(shí)鐘源使能位關(guān)掉。
(2)Normal模式
如果在某些應(yīng)用中需要高速時(shí)鐘,那么就應(yīng)該切換到Normal模式。在Normal模式下,系統(tǒng)中的CPU核和所有模塊的時(shí)鐘源都來自PLL。當(dāng)然,在這種模式下也可以根據(jù)系統(tǒng)的應(yīng)用關(guān)掉某些模塊。如果系統(tǒng)需要調(diào)整時(shí)鐘的頻率,可以通過動(dòng)態(tài)配置PLL來實(shí)現(xiàn)。但是在動(dòng)態(tài)配置PLL過程中,要注意這樣一個(gè)問題:因?yàn)镻LL有一個(gè)時(shí)鐘鎖定的時(shí)間,在這段時(shí)間內(nèi),它輸出的時(shí)鐘波形是不規(guī)則的,此時(shí)不能使用它作為芯片的時(shí)鐘源。為了保證系統(tǒng)的正常運(yùn)行,可以暫時(shí)把系統(tǒng)的時(shí)鐘源切換到晶振狀態(tài),待PLL的時(shí)鐘輸出穩(wěn)定以后再把系統(tǒng)的時(shí)鐘源切換到PLL狀態(tài)。
(3)Idle模式
如果CPU核在當(dāng)前狀態(tài)下已經(jīng)處理完所有任務(wù),在很長(zhǎng)一段時(shí)間內(nèi)都將處于空閑狀態(tài),那么系統(tǒng)應(yīng)該進(jìn)入到Idle模式。在Idle模式下,只會(huì)關(guān)閉CPU核的時(shí)鐘源,而所有的模塊都保持原狀。但在這種模式下,不可動(dòng)態(tài)配置PLL,以得到不同的時(shí)鐘頻率;也不可以動(dòng)態(tài)地管理各模塊的時(shí)鐘源,因?yàn)檫@個(gè)時(shí)鐘Core已經(jīng)休眠了,它沒辦法對(duì)功耗管理模塊內(nèi)部的寄存器進(jìn)行配置。無論前一個(gè)狀態(tài)是Slow模式還是Normal模式,系統(tǒng)都可以進(jìn)入到Idle模式下;而當(dāng)系統(tǒng)退出Idle模式時(shí),它應(yīng)該退回到前一個(gè)工作模式。當(dāng)系統(tǒng)重新需要CPU核進(jìn)行事務(wù)處理時(shí),可以通過一個(gè)喚醒信號(hào)讓系統(tǒng)退回到Slow模式或Normal模式。
(4)Sleep模式
如果整個(gè)系統(tǒng)都已經(jīng)處理完所有的事務(wù),并且在很長(zhǎng)的一段時(shí)間內(nèi)都將處于空閑狀態(tài),那么系統(tǒng)應(yīng)該進(jìn)入到Sleep模式。在Sleep模式下,關(guān)閉CPU核和所有模塊的時(shí)鐘源。雖然可以從Slow模式或Normal模式切換到Sleep模式,但是當(dāng)它退出Sleep模式時(shí),系統(tǒng)只能回到Slow模式。因?yàn)闉榱诉M(jìn)一步降低整個(gè)芯片的功耗,在Sleep模式時(shí)會(huì)同時(shí)關(guān)閉PLL,所以在它退出時(shí)只能回到Slow模式,然后根據(jù)當(dāng)前的應(yīng)用決定有沒有再切換到Normal模式的必要。當(dāng)系統(tǒng)需要再次進(jìn)行事務(wù)處理時(shí),可以通過一個(gè)喚醒信號(hào)喚醒整個(gè)SoC芯片系統(tǒng)。
3 功耗管理模塊的實(shí)現(xiàn)
功耗管理模塊主要由一個(gè)狀態(tài)機(jī)、一些多路選擇器和一些門控時(shí)鐘電路組成。狀態(tài)機(jī)的責(zé)職就是完成各種模式之間的切換和送出PLL的控制信號(hào)。多路選擇器主要完成各種時(shí)鐘源之間的選擇,而門控時(shí)鐘電路則完成CPU核和各模塊時(shí)鐘源的打開和關(guān)閉功能。圖3是功耗管理模塊中時(shí)鐘源路線。
從圖3中可以清楚地看出,在功耗管理模塊中例示了兩個(gè)PLL:一個(gè)是主PLL(MPLL),它提供整個(gè)SoC中除USB模塊以外的所有模塊的時(shí)鐘源;另一個(gè)是次PLL(UPLL),它只對(duì)USB提供時(shí)鐘源。MUX完成晶振時(shí)鐘和PLL時(shí)鐘的選擇,被選中的時(shí)鐘(FCLK)同時(shí)送到CPU核、HCLK和PCLK,然后根據(jù)各個(gè)模塊的需要門控地送出時(shí)鐘源。這是基于AMBA總線結(jié)構(gòu)的SoC。根據(jù)AMBA總線的協(xié)議,CPU核、AHB上的模塊和APB上的模塊的時(shí)鐘頻率可以配置成倍比關(guān)系[6]。經(jīng)過HCLK分頻的時(shí)鐘源只提供給AHB上的模塊,而經(jīng)過PCLK分頻的時(shí)鐘源只提供給APB上的模塊。AHB_con 、APB_con、Core_con和USB_con一起管理SoC內(nèi)部模塊的時(shí)鐘源供給。
4 動(dòng)態(tài)時(shí)鐘管理中的問題及消除方法
動(dòng)態(tài)地配置整個(gè)系統(tǒng)的時(shí)鐘頻率,雖然可以很方便地控制好整個(gè)SoC芯片的功耗,但同時(shí)也帶來了一些負(fù)面影響。功耗管理單元中的多路選擇器和門控時(shí)鐘電路是最有可能產(chǎn)生毛刺的,而毛刺對(duì)同步數(shù)字系統(tǒng)是致命的。它會(huì)導(dǎo)致同步的失敗、數(shù)據(jù)的丟失、寄存器進(jìn)入亞穩(wěn)態(tài),更為嚴(yán)重的是,使整個(gè)同步系統(tǒng)的功能失敗。毛刺的產(chǎn)生是因?yàn)槟切┹斎胄盘?hào)的時(shí)序匹配出現(xiàn)了問題,沒有按照既定的順序出現(xiàn),或者說那些信號(hào)裝轉(zhuǎn)換的時(shí)機(jī)不合適。因此在RTL設(shè)計(jì)時(shí)要保證做到時(shí)序的匹配,以降低毛刺產(chǎn)生的可能性。
在功耗管理模塊中有三種情況需要用到多路選擇器:
a. 由Slow模式切換到Normal模式;
b. 在Normal模式下重新配置PLL;
c. 由Normal模式切換到Slow模式。
圖4是功耗管理模塊中的一個(gè)二選一MUX。它的控制信號(hào)是OscillatorOrMPLL,兩個(gè)選擇源是clk_MPLL和clk_Osci,輸出是out_ClockSource。當(dāng)OscillatorOrMPLL為“1”時(shí),MUX選中clk_Osci;當(dāng)OscillatorOrMPLL為“0”時(shí),MUX選中clk_MPLL。在MUX選擇其中任何一個(gè)時(shí)鐘信號(hào)之前,clk_MPLL或clk_Osci必須已經(jīng)穩(wěn)定下來了。強(qiáng)調(diào)一下,這里的穩(wěn)定不是指已經(jīng)輸送出完整的時(shí)鐘信號(hào),而是輸送出高電平或低電平。這樣當(dāng)選擇開關(guān)達(dá)到它們那一方時(shí),接受到的是沒有毛刺的且對(duì)整個(gè)SoC不會(huì)產(chǎn)生操作的時(shí)鐘信號(hào)。雖然在這時(shí)因?yàn)檫@種操作把SoC的頻率降了下來,但這是暫時(shí)的(大約2~3個(gè)晶振時(shí)鐘周期),因此對(duì)整個(gè)SoC性能的影響是微乎其微的。接下來被選中的信號(hào)(clk_MPLL或clk_Osci)才開始輸送出沒有毛刺的時(shí)鐘信號(hào),從而最終送出的時(shí)鐘信號(hào)是去除了毛刺的。
圖5是系統(tǒng)從Slow模式切換到Normal模式時(shí)的時(shí)序圖。通過配置功耗管理模塊的內(nèi)部寄存器打開PLL,即in_PLLStartOrStop信號(hào),由它觸發(fā)Slow2Normal_r信號(hào),表明當(dāng)前將要從Slow模式過渡到Normal模式。然后,由這個(gè)信號(hào)觸發(fā)Lock Time 計(jì)數(shù)器開始計(jì)數(shù)(計(jì)數(shù)值由PLL的IP提供商所給的公式中確定),接著先把晶振時(shí)鐘的使能信號(hào)關(guān)掉,再把多路選擇器打到MPLL那一方。最后,把PLL時(shí)鐘的使能信號(hào)打開,這時(shí)得到的就是經(jīng)過倍頻的PLL時(shí)鐘。
從時(shí)序圖可以清晰看出,在時(shí)鐘源切換的過程中,最終送出的時(shí)鐘(out_ClockSource)頻率會(huì)很明顯地降低下來(大約是晶振時(shí)鐘頻率的1/3或1/2);但是如果選擇的晶振時(shí)鐘頻率在10MHz以上,則不會(huì)對(duì)整個(gè)SoC芯片的性能產(chǎn)生影響。
至于門控時(shí)鐘電路,已經(jīng)有許多人在這方面作了很廣泛的研究,本文不再對(duì)此作過多的解釋[7]。
5 結(jié) 論
本文提出了一種SoC芯片的低功耗管理策略。其基本思想是,首先從全局考慮,在滿足性能的前提下,根據(jù)各種應(yīng)用環(huán)境動(dòng)態(tài)地配置SoC芯片的時(shí)鐘頻率。然后,從局部單獨(dú)考慮單個(gè)模塊,通過判斷它當(dāng)前的工作狀態(tài)決定是否打開其時(shí)鐘源。
該低功耗管理方案已經(jīng)應(yīng)用于我們?cè)O(shè)計(jì)的一款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è)計(jì)透視. 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)
- 動(dòng)態(tài)時(shí)鐘(6855)
相關(guān)推薦
NORDIC最新推出ARM內(nèi)核低功耗藍(lán)牙SOC芯片及ARM內(nèi)核ANT+SOC芯片
FSMs低功耗設(shè)計(jì)


Arm SoC的電源和時(shí)鐘管理詳解


FPGA原型驗(yàn)證系統(tǒng)的時(shí)鐘門控

PWR低功耗運(yùn)行模式介紹


基于MM32L0130的低功耗電子時(shí)鐘設(shè)計(jì)

使用Arduino nano的低功耗時(shí)鐘項(xiàng)目

RJM8L系列超低功耗MCU應(yīng)用


通過動(dòng)態(tài)切換降低功耗的參考設(shè)計(jì)

MSP430單片機(jī)時(shí)鐘系統(tǒng)和低功耗結(jié)構(gòu)課件ppt

門控時(shí)鐘實(shí)現(xiàn)低功耗的原理

BlueNRG-LP支持128個(gè)并發(fā)連接的藍(lán)牙低功耗SoC


MM32W無線MCU系列產(chǎn)品應(yīng)用筆記 —— 低功耗BLE藍(lán)牙應(yīng)用

STM8S低功耗電源管理

STM32 低功耗STOP模式,RTC喚醒

STM32低功耗模式下GPIO如何配置最節(jié)能?

低功耗模式下的看門狗使用

低功耗設(shè)計(jì)

低功耗設(shè)計(jì)

低功耗設(shè)計(jì)

華大MCU低功耗

SOC低功耗電路設(shè)計(jì)方法

什么是門控時(shí)鐘 門控時(shí)鐘降低功耗的原理


如何選擇低功耗藍(lán)牙SoC


Arm SoC芯片低功耗設(shè)計(jì)分享會(huì)在深圳成功舉辦

Xilinx Zynq SOC的動(dòng)態(tài)電源管理功能的展示

動(dòng)態(tài)時(shí)鐘配置下的SoC低功耗管理詳解


SoC的低功耗設(shè)計(jì)

SoC低功耗管理

低功耗MCU動(dòng)態(tài)時(shí)鐘分析與應(yīng)用


Kinetis低功耗模式喚醒后時(shí)鐘頻率減半的原因

低功耗時(shí)鐘門控算術(shù)邏輯單元在不同F(xiàn)PGA中的時(shí)鐘能量分析

時(shí)鐘芯片的低功耗設(shè)計(jì)研究


低功耗MCU動(dòng)態(tài)時(shí)鐘分析


應(yīng)用于片上系統(tǒng)中低功耗IP核設(shè)計(jì)的自適應(yīng)門控時(shí)鐘技術(shù)

基于門控時(shí)鐘的低功耗電路設(shè)計(jì)方案


基于門控時(shí)鐘的CMOS電路低功耗設(shè)計(jì)

時(shí)鐘和低功耗模式

低功耗模式下微控制器時(shí)鐘配置應(yīng)用

評(píng)論