SoC 設計中的時鐘低功耗技術(shù)
1 概述
SoC 芯片設計的復雜度日益增加,其內(nèi)部時鐘設計越來越復雜,一個SoC 芯片內(nèi)部通常存在若干個時鐘域,由時鐘網(wǎng)絡引起的系統(tǒng)動態(tài)功耗成為近年來的研究熱點。時鐘網(wǎng)絡引起的系統(tǒng)動態(tài)功耗分為2 個方面:(1)由于時鐘網(wǎng)絡的作用是為芯片內(nèi)部所有時序單元提供時鐘信號,因此時鐘頻率的快慢決定了時序單元和與之相連的邏輯單元的動態(tài)功耗,關(guān)斷時鐘將消除電路的動態(tài)功耗。(2)時鐘網(wǎng)絡自身的特點將導致巨大動態(tài)功耗的產(chǎn)生:1)時鐘網(wǎng)絡是芯片內(nèi)規(guī)模最大的互連線網(wǎng)絡,其負載巨大,負載來自因為互連線電容和平衡時鐘樹的偏差而插入的大量延時單元;2)時鐘網(wǎng)絡是芯片內(nèi)翻轉(zhuǎn)率最高的互連線網(wǎng)絡,翻轉(zhuǎn)率的高低直接決定了互連線動態(tài)功耗和互連線驅(qū)動的標準單元的動態(tài)功耗。
針對由時鐘網(wǎng)絡引起的2 種系統(tǒng)動態(tài)功耗,本文研究并實現(xiàn)3 種時鐘低功耗技術(shù)。
2 動態(tài)時鐘管理
一顆SoC 芯片的工作狀態(tài)變化很大,一些應用需要用到芯片內(nèi)部的所有模塊,而另一些應用只要用到部分模塊;在某些應用中,芯片需要全速運行,而在其他應用中,則可以運行在很低的工作頻率[1]。綜合以上2 點,動態(tài)管理芯片的時鐘可以分為2 個方面:動態(tài)地開關(guān)芯片內(nèi)部模塊的時鐘,動態(tài)地配置芯片內(nèi)部模塊的時鐘頻率。
本文以音視頻解碼SoC 芯片——rsthu1 為例,介紹在系統(tǒng)級設計時采用的動態(tài)時鐘管理技術(shù)。
為了實現(xiàn)rsthu1 的動態(tài)時鐘管理,在芯片系統(tǒng)級設計時定義了4 種工作模式,見表1,其中,實心圓表示開啟此模塊;空心圓表示關(guān)閉此模塊。
當芯片工作在正常模式時,采用高速時鐘HCLK 供給Risc0, Risc1, Decoder, BE(Bit Engine)這4 個系統(tǒng)內(nèi)的主要模塊,此時系統(tǒng)全速運行,進行音視頻解碼。當芯片工作在低速模式時,采用低速時鐘VCLK 供給上述4 個模塊,此時系統(tǒng)可以運行簡單的應用程序,保證了系統(tǒng)的持續(xù)工作,且降低了時鐘頻率,即降低了系統(tǒng)的動態(tài)功耗。當芯片工作在閑置模式時,只保留操作系統(tǒng)的運行,采用低速時鐘VCLK 供給Risc0,關(guān)斷其余模塊的時鐘供給,消除了除Risc0 以外其余模塊產(chǎn)生的動態(tài)功耗。當芯片工作在睡眠模式時,關(guān)斷所有模塊的時鐘供給,消除系統(tǒng)不工作時產(chǎn)生的動態(tài)功耗。
采用Synopsys 公司的功耗分析工具Prime Power,在RTL級基于4 種工作模式的仿真波形進行功耗分析,結(jié)果見表2。
可以看出,在系統(tǒng)級設計時采用動態(tài)時鐘管理技術(shù)后,正常、低速、閑置、睡眠4 個工作模式下,系統(tǒng)動態(tài)功耗逐級遞減,功耗優(yōu)化效果明顯。
3 門控時鐘
RTL 代碼中經(jīng)常會出現(xiàn)以下語句:
@posedge (CLK)
begin
if (EN == 1)
Data_out = Data_in;
end
如果直接對上述代碼進行邏輯綜合將生成如圖1 所示的電路結(jié)構(gòu)??刂萍拇嫫鳡顟B(tài)更新的控制信號被置于寄存器的輸入端之前,通過控制是否接收新數(shù)據(jù)來控制寄存器狀態(tài)是否更新。在該結(jié)構(gòu)的電路中,寄存器狀態(tài)不更新時的寄存器時鐘端仍然在不停翻轉(zhuǎn),會浪費系統(tǒng)動態(tài)功耗。
采用圖2 的結(jié)構(gòu),將控制信號置于寄存器的時鐘端之前,通過控制寄存器是否翻轉(zhuǎn)來控制寄存器狀態(tài)是否更新。與圖1 的電路結(jié)構(gòu)相比,圖2 的電路結(jié)構(gòu)在寄存器狀態(tài)不進行更新時,時鐘信號將不翻轉(zhuǎn),消除了由此帶來的系統(tǒng)動態(tài)功耗的浪費。由于多個MUX 被替換為一個門控時鐘單元,因此進一步降低了功耗。
門控時鐘單元可以通過Synopsys 公司的功耗優(yōu)化工具Power Compiler 在邏輯綜合時插入,其優(yōu)點在于[3]:(1)不需要對RTL 級代碼進行修改,Power Compiler 將自動檢測出RTL 代碼中可以插入門控時鐘的語句;(2)門控時鐘單元將在邏輯綜合時自動插入門級網(wǎng)單中。
采用Power Compiler 對rsthu1 進行門控時鐘綜合,并采用Prime Power 進行功耗分析,結(jié)果如表3 所示??梢钥闯?,在邏輯綜合時采用門控時鐘技術(shù),總功耗下降了34.52%,功耗優(yōu)化效果明顯。
4 低功耗時鐘樹綜合
觀察時鐘樹的生長過程,可以發(fā)現(xiàn)時鐘樹的生長分為橫向擴張和縱向延伸,如圖3 所示,其中,Arrow1 和Arrow3為縱向延伸;Arrow2 為橫向擴張。
普通的時鐘樹綜合以降低時鐘偏差為目標,加大縱向延伸,減小橫向擴張,將投入較多buffer,更細粒度地調(diào)整每條時鐘路徑的延時,從而得到較小時鐘偏差。上述方式以增大時鐘樹規(guī)模為代價,它綜合得到的時鐘樹如圖4(a)所示。
出于功耗的考慮,希望能減小時鐘樹的規(guī)模。通過減小時鐘樹縱向延伸,加大橫向擴張可以有效減小時鐘樹的規(guī)模,如圖4(b)所示。但由于buffer 數(shù)量的減少,較之縱深結(jié)構(gòu)的時鐘樹,扁平結(jié)構(gòu)的時鐘樹將粗粒度地調(diào)整每條時鐘路徑的延時,得到的時鐘偏差較大??梢?,以降低時鐘樹規(guī)模為目標,進行低功耗時鐘樹綜合是以增加一定的時鐘偏差為代價的。
后端工具在進行時鐘樹綜合時,能通過綜合參數(shù)對時鐘樹結(jié)構(gòu)進行約束,見表4。
對rsthu1 的快速時鐘HCLK 進行時鐘樹綜合時,采用以降低時鐘樹規(guī)模為目標的低功耗時鐘樹綜合,結(jié)果如表5 所示。分別加大最大扇出,減小路徑總延時和每一級緩沖器數(shù)量上限。加大最大扇出后,時鐘樹規(guī)模減小了20.21%,而時鐘偏差只增加了0.023 ns,因此,由減小時鐘樹規(guī)模而帶來的偏差結(jié)果的變差是可以接受的。
5 結(jié)束語
目前已有很多時鐘低功耗技術(shù),在SoC 芯片的設計中可以進一步降低由時鐘網(wǎng)絡引起的功耗。在以后的研究工作中,需要進行更廣泛而深入的探索。
評論