大話芯片功耗

2019-9-18 10:21:00
  • 隨著芯片上晶體管數(shù)量的不斷增加,上層應(yīng)用程序復(fù)雜度的提升,現(xiàn)今的半導(dǎo)體行業(yè)對(duì)芯片功耗的關(guān)注比以往任何時(shí)候都要多,尤其是在手機(jī)等移動(dòng)端設(shè)備,如果產(chǎn)品動(dòng)不動(dòng)就沒(méi)電了,那是一件十分令人頭痛的事情。

另一方面,電池材料相關(guān)技術(shù)發(fā)展十分緩慢,導(dǎo)致目前的電池容量在相同密度下還是和電池體積呈正相關(guān)性,因此在做芯片設(shè)計(jì)的時(shí)候從頂層到底層都會(huì)采用低功耗(Low Power)技術(shù)??赡苡行┩瑢W(xué)會(huì)問(wèn),那有些正常工作情況下直接和電源相連接的設(shè)備是不是不需要考慮功耗?

這個(gè)問(wèn)題包含幾個(gè)方面的考慮因素。首先地球上的石化能源是有限的,功耗高就意味著在相同的時(shí)間內(nèi)需要消耗更多能源,其次對(duì)于高性能計(jì)算芯片來(lái)說(shuō),當(dāng)功耗超過(guò)一定閾值(~150W),就需要使用昂貴的液態(tài)冷卻或其他熱量散發(fā)裝置,所以出于節(jié)約能源,環(huán)境保護(hù)和幫助客戶(hù)節(jié)約電費(fèi)的角度來(lái)說(shuō)低功耗設(shè)計(jì)依舊是必須考慮的因素。那么接下來(lái)我們就來(lái)簡(jiǎn)單了解一下芯片中功耗的主要來(lái)源以及相應(yīng)的減少功耗的常用技術(shù)。值得注意的一點(diǎn)是盡管IC的前后端設(shè)計(jì)者通常會(huì)采用各種方法來(lái)減少功耗,但是應(yīng)用層和架構(gòu)層的設(shè)計(jì)才是最至關(guān)重要的,上層的應(yīng)用和架構(gòu)沒(méi)有設(shè)計(jì)好,即使后端有再多的低功耗輔助技術(shù)也不能從根本上解決問(wèn)題。就好比做一種美食,如果食材本身不新鮮,那無(wú)論多好的炊具也無(wú)法改善食物的口感。

1.功耗的主要來(lái)源

1.1 動(dòng)態(tài)功耗(Dynamic Power)

動(dòng)態(tài)功耗主要包含:

● 門(mén)電路開(kāi)關(guān)過(guò)程中負(fù)載電容(Load capacitance)的充放電功(Switching Power)

● 來(lái)自于pMOS和nMOS都部分開(kāi)啟時(shí)的短路電流(Short-circuit Power)

以下圖的CMOS反相器(Inverter)為例,當(dāng)輸入Vin從1變?yōu)?的過(guò)程中,nMOS關(guān)閉,pMOS開(kāi)啟并給負(fù)載電容CL充電,當(dāng)輸入Vin從0變?yōu)?的過(guò)程中,pMOS關(guān)閉,nMOS開(kāi)啟并使負(fù)載電容放電,電容充放電的過(guò)程中消耗的能量構(gòu)成了Switching Power.

在充放電的過(guò)程中存在一小段窗口pMOS和nMOS都是處在部分開(kāi)啟的狀態(tài),因此會(huì)有電流直接從VDD流到GND,構(gòu)成Short-circuitPower。

通過(guò)對(duì)上面的充放電行為進(jìn)行物理分析,結(jié)合歐姆定律和電容充放電和能量相關(guān)公式,我們可以得到充放電功耗:

其中α是翻轉(zhuǎn)系數(shù)(Switching Activity Factor),C是負(fù)載電容,VDD是工作電壓,f是工作頻率,這個(gè)幾個(gè)參數(shù)對(duì)后面我們討論降低功耗有著至關(guān)重要的意義。

1.2 靜態(tài)功耗(Static Power)

靜態(tài)功耗主要包含:

● 晶體管關(guān)閉狀態(tài)的漏電功耗(Subthreshold Leakage)

● PN結(jié)反向偏置電流功耗(Reverse-Biased Junction Leakage)

● 柵極漏電流功耗(Gate Leakage)

其中Subthreshold Leakage占主導(dǎo)地位。在通用微處理器架構(gòu)里,時(shí)鐘網(wǎng)絡(luò)(Clock Tree)和片上存儲(chǔ)器通常會(huì)占用大部分的功耗。

2.低功耗技術(shù)

2.1 Clock Gating

Clock Gating即把不用的功能模塊的時(shí)鐘信號(hào)關(guān)閉,通過(guò)減少前面講到過(guò)的Switching Activity Factor來(lái)降低功耗。具體實(shí)現(xiàn)方法如下:

通過(guò)與門(mén)和Latch(毛刺消除)組成的Clock Gating Cell,Register的Clock端口的時(shí)鐘隨使能信號(hào)開(kāi)關(guān),當(dāng)時(shí)鐘關(guān)閉時(shí),由該Register所驅(qū)動(dòng)的下游組合邏輯也相應(yīng)降低了功耗。Clock Gating實(shí)現(xiàn)的重點(diǎn)在于找到合適的使能信號(hào),目前的芯片設(shè)計(jì)Flow中只要符合以下三個(gè)條件后端的工具鏈就會(huì)自動(dòng)生成ICG(Intergated Clock Gating) cell:

● Register Bank的使能信號(hào)不可以(簡(jiǎn)化)為常量0或1;

● 對(duì)于不包含Latch的Clock Gating,使能信號(hào)必須來(lái)自于與被Gate的Register時(shí)鐘同步的Register;

● Register bank滿足用戶(hù)所指定的最小位寬要求;

關(guān)于Switching Activity Factor,還有一點(diǎn)值得一提的是電路中的Glitch,因?yàn)閷?shí)際的Silicon中會(huì)有組合邏輯延遲(Propgation Delay),因此對(duì)于一個(gè)門(mén)電路來(lái)說(shuō),由于輸入信號(hào)的到達(dá)時(shí)間會(huì)存在差異,所以實(shí)際的跳變會(huì)變得更加嚴(yán)重,從而增加Switching Activity Factor。因此有條件的話可以在做功耗分析時(shí)加入Glitch Power的預(yù)估。

2.2 電壓域(Voltage DomAIn)和動(dòng)態(tài)電壓頻率調(diào)節(jié)(Dynamic Voltage and_Frequency Scaling)2.2.1 Voltage Domain

在上面的公式中,工作電壓VDD與動(dòng)態(tài)功耗是平方的關(guān)系,所以電壓的調(diào)整對(duì)功耗的影響也十分顯著,但是根據(jù)alpha-power law,在其余條件不變的情況下,電壓的降低會(huì)導(dǎo)致延遲的增加,即電路的性能降低。通常來(lái)說(shuō),整個(gè)芯片會(huì)根據(jù)具體的性能需求被分成幾個(gè)不同的Voltage Domain,這種方案帶來(lái)的挑戰(zhàn)就是如何處理跨電壓域(Voltage Domain Crossings)的信號(hào),常用的解決方案是采用Level Shifter實(shí)現(xiàn):

上圖A來(lái)自于VDDL Domain,P1,P2,N1,N2均工作在VDDH,其中N1和N2分別接到A和~A,反相器也工作在VDDL,當(dāng)A=0時(shí),N1關(guān),N2開(kāi),Y接地輸出0,P1開(kāi),X接VDDH,保證P2關(guān)閉;當(dāng)A=1時(shí),N1開(kāi),N2關(guān),X接地,P2開(kāi),Y接VDDH,P1關(guān)。從而達(dá)到A到Y(jié)不同電壓域之間的邏輯轉(zhuǎn)換。

2.2.2 DVFS

對(duì)于很多系統(tǒng)來(lái)說(shuō),處理不同數(shù)據(jù)和任務(wù)對(duì)于性能的需求是不一樣的,比如我現(xiàn)在正在碼文章的時(shí)候所消耗的計(jì)算資源和我看電影的時(shí)候所需要的計(jì)算資源是不一樣的。利用這個(gè)特點(diǎn),我們可以根據(jù)計(jì)算任務(wù)負(fù)荷來(lái)動(dòng)態(tài)調(diào)整電壓和頻率至能滿足需求的最低程度,這就是DVFS。

DVFS的具體實(shí)現(xiàn)方法多種多樣,例如Linux里的OnDemand功耗策略,有興趣的同學(xué)可以參考相關(guān)文獻(xiàn)。

關(guān)于頻率角度的低功耗,在設(shè)計(jì)中常采用多時(shí)鐘域的方法,例如處理器的Bus通常比核心頻率要低。由于存在多個(gè)時(shí)鐘域,我們?cè)O(shè)計(jì)中需要考慮跨時(shí)鐘域信號(hào)的同步問(wèn)題,后續(xù)我們會(huì)有相關(guān)文章詳細(xì)介紹,通常來(lái)說(shuō),工作頻率為整數(shù)倍關(guān)系的時(shí)鐘域之間被認(rèn)為是同步的,處理相對(duì)比較簡(jiǎn)單。

DVFS實(shí)現(xiàn)存在比較大的一個(gè)缺點(diǎn)就是切換過(guò)程中的時(shí)間overhead較大(us級(jí)別)。

2.3 Power Gating

Power Gating是減少靜態(tài)電流非常有效的方法,下圖中當(dāng)Power Gated Block正常工作時(shí),Sleep信號(hào)為0,工作電壓VDDV通過(guò)開(kāi)啟的PMOS接到VDD,當(dāng)系統(tǒng)進(jìn)入低功耗模式,Sleep信號(hào)變?yōu)?,VDDV被斷開(kāi),整個(gè)Power Gated Block關(guān)電,這里需要注意此時(shí)該Block的輸出端值為X,因此如果Output被下游Always On模塊使用,為了保證不影響下有邏輯的正常工作,通常會(huì)在InteRFace上加入Isolation Cell,這一過(guò)程目前主要由后端的tool自動(dòng)加入。

Power Gating帶來(lái)的一個(gè)問(wèn)題是系統(tǒng)狀態(tài)的恢復(fù),一般來(lái)說(shuō)被Power Gated Block中的Register值在喚醒時(shí)要么處于Reset狀態(tài),要么已經(jīng)被保存以便恢復(fù),在設(shè)計(jì)中通常將重要的訊息保存到State Retention Register或者M(jìn)emory里的方案。

Power Gating通常針對(duì)整個(gè)Block(Coarse-grainedpower gating)而非單獨(dú)的邏輯門(mén),因?yàn)锳rea和Performance的Overhead都比較大。

3. 低功耗架構(gòu)

早期工藝下的芯片架構(gòu)設(shè)計(jì)通常考慮如何最大化每一顆晶體管的性能,但如今隨著工藝進(jìn)入到7nm以下,芯片架構(gòu)設(shè)計(jì)越來(lái)越關(guān)注性能功耗比。

3.1 并行化(Parallelism)和流水線(Pipelining)

并行化和流水線都能在維持相同性能的情況下降低功耗,下圖中(a)是原始的設(shè)計(jì)電路。(b)采用了并行化做法,額外增加一組A和B邏輯,輸出端每個(gè)時(shí)鐘周期分別從兩組邏輯取得結(jié)果,因此每個(gè)輸入端是需要保證每?jī)蓚€(gè)周期提供一個(gè)有效結(jié)果,即頻率變?yōu)樵瓉?lái)的一半。(c)采用流水線做法,假設(shè)A和B被切分成delay相近的兩級(jí),那么邏輯的整體頻率可以提升至2f,這樣以數(shù)據(jù)吞吐量衡量的性能也就近似為兩倍,在維持性能不變的情況下,我們完全可以降低工作電壓。

3.2 總線編碼(Bus Encoding)

通過(guò)給總線上的數(shù)據(jù)編碼通常有助于減少總線上的功耗,常見(jiàn)的方式有

● 反向編碼(Bus Invert Coding)

例如總線上需要傳輸0000->1110轉(zhuǎn)換的數(shù)據(jù),這里總線上會(huì)有3個(gè)bit跳變,但如果我們對(duì)第二個(gè)數(shù)據(jù)做取反操作,那么總線上就只有1個(gè)bit跳變,這樣4個(gè)bit的總線最多只可能同時(shí)有兩個(gè)bit跳變,具體實(shí)現(xiàn)還需要設(shè)計(jì)反向條件的算法。

● 異或編碼(Transition Signaling)

這種方法僅針對(duì)特定的轉(zhuǎn)換率很高的總線,發(fā)送端輸出編碼后bit值為前一個(gè)時(shí)鐘傳輸bit值和當(dāng)前時(shí)鐘傳輸bit值的異或,接收端解碼值為前一個(gè)時(shí)鐘接受到的bit值和當(dāng)前時(shí)鐘接收到的bit值得異或,舉個(gè)簡(jiǎn)單的例子,如果我們要傳輸?shù)臄?shù)據(jù)為10100110(跳變5次),那么實(shí)際總線上傳輸?shù)臄?shù)據(jù)為11000100(跳變3次)。

3.3 其他

在設(shè)計(jì)架構(gòu)的時(shí)候,考慮到Memory的功耗密度(Power Density)通常低于Logic的功耗密度,并且Memory的Leakage控制比較規(guī)范化,如果同時(shí)有增加Logic或者M(jìn)emory兩種方案,通常增加Memory是對(duì)降低功耗比較有利的方案。

另外新型的異構(gòu)計(jì)算架構(gòu)(Heterogeneous Computing)在性能和功耗方面比單純通用型處理器架構(gòu)更加優(yōu)秀,正所謂“專(zhuān)業(yè)的人做專(zhuān)業(yè)的事”,同樣的AI算法在CPU上跑,不但性能不好,而且時(shí)間久功耗也大,因此在可預(yù)見(jiàn)的未來(lái),異構(gòu)計(jì)算將會(huì)成為趨勢(shì)。