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