新聞中心

EEPW首頁 > 電源與新能源 > 設(shè)計應(yīng)用 > 動態(tài)時鐘配置下的SoC低功耗管理

動態(tài)時鐘配置下的SoC低功耗管理

作者: 時間:2004-12-06 來源:網(wǎng)絡(luò) 收藏

摘要:隨著芯片集成度的提高,對一些功能復(fù)雜的系統(tǒng)芯片,已經(jīng)引起大家越來越多的重視,如何控制好將成為芯片能否成功的重要因素。本文提出一種通過的策略,達到降低整個芯片的目的;同時,分析方案中可能會出現(xiàn)的一些問題,并給出解決方案。

關(guān)鍵詞:系統(tǒng)芯片 毛刺 AMBA 總線 時滯

引 言

??隨著集成電路技術(shù)的飛速發(fā)展和對消費類電子產(chǎn)品――特別是便攜式(移動)面向客戶的電子產(chǎn)品的需求,推動了(System on Chip)的飛速發(fā)展,也給人們提出了許多新的課題[1]。對于電池驅(qū)動的SoC芯片,已不能再只考慮它優(yōu)化空間的兩個方面――速度(performance)和面積(cost),而必須要注意它已經(jīng)表現(xiàn)出來的且變得越來越重要的第三個方面――功耗[1],這樣才能延長電池的壽命和電子產(chǎn)品的運行時間。

圖1

  SoC中CMOS電路功耗有:一是靜態(tài)功耗,主要是由靜電流、漏電流等因素造成的;二是功耗,主要是由電路中信號變換時造成的瞬態(tài)開路電流(crowbar current)和負載電流(load current)等因素造成的[2],它是SoC芯片中功耗的主要來源[3]。因此,解決好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)部的硬件資源。簡而言之,就是進行內(nèi)部模塊的開和關(guān)的操作。關(guān)閉單個模塊,可以通過對每個模塊設(shè)置一個使能位,然后對這個使能位編程做到關(guān)閉或打開那個模塊。但這樣做不是最佳的,原因有二:其一,每個模塊的接口部分必須是始終打開的,否則,CPU核無法隨時對它的內(nèi)部寄存器進行編程;其二,通過模塊使能位只是關(guān)閉了它的功能操作,而并沒有把它模塊內(nèi)的時鐘樹關(guān)閉掉,也就是說它里面的時鐘樹依然處于激活狀態(tài),而時鐘樹所造成的功耗占單個模塊功耗的很大一部分。其實大多數(shù)模塊都是同步系統(tǒng),系統(tǒng)的所有操作都是在時鐘信號的節(jié)拍下進行的[5],關(guān)閉時鐘源能同時達到關(guān)閉模塊和降低功耗的目的。

  動態(tài)地配置SoC系統(tǒng)的時鐘頻率則是以不犧牲系統(tǒng)的性能為前提,動態(tài)地管理系統(tǒng)的工作頻率來降低SoC的功耗。時鐘頻率是影響動態(tài)功耗的重要因素:[3]。它的工作頻率越高,功耗也就越大。但在很多時候,所有的模塊并不是工作在同一時鐘頻率,或者同一個模塊在不同的時段可以工作在不同的時鐘頻率。這些就是動態(tài)地配置SoC系統(tǒng)的時鐘頻率的前提。

  圖1是整個SoC中的時鐘網(wǎng)絡(luò)(時鐘樹)。圖中的功耗管理模塊(power management module)完成這種功能。

圖3

2 芯片的低功耗工作管理模式

  為了更好地實現(xiàn)動態(tài)配置時鐘的SoC低功耗管理策略,芯片在其工作中開發(fā)出了其低功耗管理機制中的四種工作模式:Slow、Normal、Idle和Sleep。下面結(jié)合圖2所示的工作模式流程圖來說明它的工作機制。

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

表1

模 式SlowNormalIdleSleep
狀態(tài)由晶振提供CPU核和各模塊的時鐘源由PLL提供CPU核和各模塊的時鐘源關(guān)閉CPU核的時鐘源關(guān)閉CPU核和所有模塊的時鐘源
CPU核狀態(tài)關(guān)關(guān)
模塊狀態(tài)不確定不確定不確定關(guān)

(1)Slow模式

  當(dāng)系統(tǒng)復(fù)位以后或當(dāng)系統(tǒng)關(guān)掉PLL不需要高速時鐘運行時,系統(tǒng)進入到Slow模式。在Slow模式下,系統(tǒng)中的CPU核和所有模塊的時鐘源都來自晶振。如果這時系統(tǒng)認為有必要關(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)該進入到Idle模式。在Idle模式下,只會關(guān)閉CPU核的時鐘源,而所有的模塊都保持原狀。但在這種模式下,不可動態(tài)配置PLL,以得到不同的時鐘頻率;也不可以動態(tài)地管理各模塊的時鐘源,因為這個時鐘Core已經(jīng)休眠了,它沒辦法對功耗管理模塊內(nèi)部的寄存器進行配置。無論前一個狀態(tài)是Slow模式還是Normal模式,系統(tǒng)都可以進入到Idle模式下;而當(dāng)系統(tǒng)退出Idle模式時,它應(yīng)該退回到前一個工作模式。當(dāng)系統(tǒng)重新需要CPU核進行事務(wù)處理時,可以通過一個喚醒信號讓系統(tǒng)退回到Slow模式或Normal模式。

(4)Sleep模式

  如果整個系統(tǒng)都已經(jīng)處理完所有的事務(wù),并且在很長的一段時間內(nèi)都將處于空閑狀態(tài),那么系統(tǒng)應(yīng)該進入到Sleep模式。在Sleep模式下,關(guān)閉CPU核和所有模塊的時鐘源。雖然可以從Slow模式或Normal模式切換到Sleep模式,但是當(dāng)它退出Sleep模式時,系統(tǒng)只能回到Slow模式。因為為了進一步降低整個芯片的功耗,在Sleep模式時會同時關(guān)閉PLL,所以在它退出時只能回到Slow模式,然后根據(jù)當(dāng)前的應(yīng)用決定有沒有再切換到Normal模式的必要。當(dāng)系統(tǒng)需要再次進行事務(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芯片的功耗,但同時也帶來了一些負面影響。功耗管理單元中的多路選擇器和門控時鐘電路是最有可能產(chǎn)生毛刺的,而毛刺對同步數(shù)字系統(tǒng)是致命的。它會導(dǎo)致同步的失敗、數(shù)據(jù)的丟失、寄存器進入亞穩(wěn)態(tài),更為嚴重的是,使整個同步系統(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)達到它們那一方時,接受到的是沒有毛刺的且對整個SoC不會產(chǎn)生操作的時鐘信號。雖然在這時因為這種操作把SoC的頻率降了下來,但這是暫時的(大約2~3個晶振時鐘周期),因此對整個SoC性能的影響是微乎其微的。接下來被選中的信號(clk_MPLL或clk_Osci)才開始輸送出沒有毛刺的時鐘信號,從而最終送出的時鐘信號是去除了毛刺的。

圖5

  圖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模式下的功耗更低。

表2 功耗分析結(jié)果

 SlowNormalIdleSleep
功率/mW68.910405.45360.0780.00142
工作頻率/MHz1060100



關(guān)鍵詞: 功耗 管理 SoC 配置 時鐘 動態(tài)

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉