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