芯片設(shè)計中的功耗估計與優(yōu)化技術(shù)
1 引言:功耗在芯片設(shè)計中的地位
本文引用地址:http://cafeforensic.com/article/201609/303352.htm長期以來,設(shè)計者面臨的最大挑戰(zhàn)是時序收斂,而功耗處于一個次要的地位。近年來,下面的因素使功耗日益得到設(shè)計者的關(guān)注:
1)移動應(yīng)用的興起,使功耗的重要性逐漸顯現(xiàn)。大的功耗意味著更短的電池壽命。
2)芯片集成度的提高,使供電系統(tǒng)設(shè)計成為挑戰(zhàn)。
隨著工藝的進步,芯片內(nèi)的電路密度成倍提高,并且運行在以前數(shù)倍的頻率之上,而片上連線則越來越細,片上供電網(wǎng)絡(luò)必須將更多的電力以更少的連線資源送至每個單元,如果不能做到這一點,芯片的穩(wěn)定性和預(yù)定工作頻率都將成為問題。IR壓降和供電網(wǎng)絡(luò)消耗的大量布線資源成為困擾后端設(shè)計者的重要問題,現(xiàn)在這種壓力正在一步步傳導到前端設(shè)計者的身上,要求在設(shè)計階段減少需要的電力。
3)功耗對成本的影響日益顯著
功耗決定了芯片的發(fā)熱量,封裝結(jié)構(gòu)需要及時把芯片產(chǎn)生的熱量傳遞走,否則溫度上升,造成電路不能穩(wěn)定工作。因此,發(fā)熱量大的芯片需要選擇散熱良好的封裝形式,或者額外的冷卻系統(tǒng),如風扇等,這意味著成本的增加。
基于以上原因,功耗成為產(chǎn)品的重要指標與約束。下面的因素在設(shè)計之初,就應(yīng)當列入設(shè)計者的考慮范圍:
1)功耗目標的確定
a) 產(chǎn)品的應(yīng)用領(lǐng)域中功耗指標的商業(yè)價值;
b) 封裝,制程的成本影響;
c) 實現(xiàn)的可行度,復雜度,由此帶來的設(shè)計風險和時程影響的評估;
d) 參考值的選?。焊鶕?jù)同類產(chǎn)品,經(jīng)驗值,工具分析確定,并隨著設(shè)計的深入不斷修正。
2)優(yōu)化方案(策略)的設(shè)定
在進一步分析之前,我們先看一下功耗的組成。
2 功耗的組成
2.1 core power
功耗的組成包含RAM、ROM、時鐘樹(clock tree)和核心邏輯電路(Core logic)等四部分,下面依次來分析。
1)RAM
RAM功耗的計算是項復雜的任務(wù),幸運的是,memory compiler可以為我們進行此項工作。關(guān)鍵點在存取每個端口的速率,這可以通過考慮存取pattern類型得到,或者通過仿真得到。建議在設(shè)計初期即生成不同參數(shù)(寬度,深度,速度,port數(shù))的RAM/ROM的功耗數(shù)據(jù),以利于設(shè)計探索。
2)時鐘樹
時鐘樹的功耗占到整個芯片功耗的40%~60%,因為它的高活動率(100%)和正負邊沿均消耗電力。
其中,電容包含寄存器的電容,驅(qū)動單元的電容和連線電容三部分。
3)核心邏輯電路
定義核心邏輯電路功耗為除時鐘樹外的組合與時序單元消耗的電力。由兩部分組成:
leakage current
capacitive loads
4)宏單元(macro cell)
多數(shù)芯片包含PLL等模擬macro,可以從庫提供商的數(shù)據(jù)手冊找到其功耗參數(shù)。設(shè)計者可以通過切分系統(tǒng)模式關(guān)閉不需工作的模塊,以減小功耗。
2.2 IO power
IO功耗包含IO單元、外部負載、外部終端等。因為需要驅(qū)動板級的連線,IO的電容會是內(nèi)部單元的數(shù)百倍量級,因此消耗較多的電力。有時候,IO的功耗可以占到整體功耗的很大比例,系統(tǒng)架構(gòu)可能因之改變,如:重新定義系統(tǒng)的劃分,以減少芯片-芯片的連接;選擇不同的IO接口協(xié)議,以減少能量消耗。IO 功耗通常由系統(tǒng)架構(gòu),接口帶寬與協(xié)議要求決定。一旦庫選定,設(shè)計者可以優(yōu)化的空間很小,但是核心的功耗是設(shè)計者可以減小的,在后面的篇幅中,我們將以核心功耗的估算與優(yōu)化作為主題。
3 功耗估算
功耗估算的價值是盡可能早地以定量方式看到優(yōu)化結(jié)果,以助于設(shè)計者的初期架構(gòu)探索。在每個階段, 如產(chǎn)品規(guī)劃、架構(gòu)制訂、代碼書寫、綜合、PR等,設(shè)計者都面臨若干選擇,能馬上看到選擇的結(jié)果,而不是到設(shè)計流程的末尾,可以有效減少開發(fā)時間。
3.1估算的方法
功耗的估算可以在設(shè)計流程的各個階段進行,對應(yīng)設(shè)計表征的不同形式。
software level ->behavior level -> RT -> gate -> circuit
越早的階段,抽象層次越高,其精確度越差,但可以更早給設(shè)計者反饋,同時得到估算結(jié)果消耗的時間越少。
1. 軟件級
首先,定義系統(tǒng)將執(zhí)行的典型程序。典型的程序通常會有上百萬的機器周期,進行一次完整的RTL級的仿真可能需要數(shù)月時間,這是不可接受的。解決的方法是在更高層次建立基本組成單元的功耗模型。
比較實用的方法是根據(jù)特定的硬件平臺,統(tǒng)計出每條指令對應(yīng)的功耗數(shù)據(jù),進行指令級的仿真。
2. 行為級
在進行分析前,我們首先應(yīng)了解電路的功率消耗原理,實際電路的電力消耗如圖1所示。
圖1
Prms = 1/2 * f * Vdd^2 * sigma(Ci * Ai)
--- f : clock frequency
--- Vdd : voltage
--- Ci is capacitance load of node,
--- Ai is the average switching activity of their node
在行為級設(shè)計表征中,物理電路單元尚未建立,難點是得到電容與活動率的值。存在兩種思路:
1) 理論估計:
根據(jù)電路復雜度得到C,復雜度由算術(shù),邏輯操作的數(shù)量,狀態(tài)的數(shù)目與轉(zhuǎn)換率衡量。
complex = f (arith ope, boolean ope, state, transition)
可以根據(jù)信息理論估算活動率。
2) 實驗估計:
由快速綜合得到寄存器傳輸級的原型,進而估計電容與活動率。
3. 寄存器傳輸級
第一步是在庫中為高層的設(shè)計組件建立功耗信息算式,得到方式是在不同環(huán)境變量組合下通過仿真,統(tǒng)計功耗數(shù)據(jù),繪制成曲線形式。然后,通過靜態(tài)分析電路結(jié)構(gòu)或動態(tài)仿真,收集電路動作幾率數(shù)據(jù),代入上述算式,得到各個組件的功耗值。最后,把所有組件的功耗值求和,得到總功耗。
4. 門級
與寄存器傳輸級的區(qū)別在于,基本單元是工藝庫中的標準單元,功耗方程通過電路仿真得到,所以更精確。
5. 晶體管與版圖層
所有的連線的電容、單元的負載,驅(qū)動都已得到,根據(jù)晶體管和連線模型的電壓、電流方程,可以算出精確的功耗數(shù)據(jù)。
評論