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