淺談芯片低功耗的設計實現(上)
掃描二維碼
隨時隨地手機看文章
眾所周知,隨著芯片越來越大,功能越來越豐富,以及移動市場的切實需求,低功耗的芯片設計,越來越受到推崇。這里,結合多年的低功耗設計經驗,把一些理念和方法,分享給各位。
通過一些理論書籍,大家都知道功耗的來源主要分為兩種,一種是動態(tài),一種是靜態(tài)。
先來看一下,動態(tài)功耗的計算公式為,
dynamic power = switching power + internal power
switching power 計算公式為:
由此可知,動態(tài)功耗和頻率、關斷時的負載電容以及電壓的平方成正比,換言之,可以通過,改變頻率、負載電容以及電壓來改變動態(tài)功耗。
internal power 計算公式為
這里的tsc指的是NMOS/PMOS internal短路的時間。Ipeak指的是整個短路電流和導通電流的總和。
在實際的std-cell library里,工具使用了一個簡化的查找表方式來處理internal-power,示例如下
P = func(input_transition, input_pin_condition, output_capacitance)
漏電功耗(leakage power)的計算模型
對應的漏電電流計算公式是:
這里的Vth, CoxW/L都是工藝相關,不可以調整,Vgs就是VDD,Vt指的是閾值電壓。可以看到,閾值電壓越高漏電功耗就越低,但是由于工藝復雜的增加,閾值電壓越高的器件,對應的翻轉速度就會變慢,導致影響性能
基于以上的理論,可以推導出下表:
下邊就一起來看一下,目前的設計領域里邊流行的那些降低功耗的技術手段吧。
-
clock gating
這個是一個在綜合器里非常常用,也很通用的手段,一些細節(jié)的討論可以參見以下鏈接文章Clock Gating之淺見
總而言之,clock gating不但可以優(yōu)化動態(tài)功耗,同時還可以優(yōu)化面積(具有漏電功耗提高的可能),這里也有一些別的數據作為參考
… reports an area reduction of 20%and a power savings of34% to 43%depending on the operating mode
綜合工具在自動插入clock gating的時候,把原有的data上的通用邏輯加以整合,掛到了clock 的EN控制端,這樣就可以大幅度的節(jié)省面積,尤其是在多位寬的總線。反言之,在非常窄的總線上,clock-gating在面積和功耗上不一定會有效果,譬如小于三位的總線。
-
工藝演進
隨著晶體管的尺寸越來越小,三極管導通所需要的電壓也就越來越小了,從上邊的表哥里邊可以看到,降低電壓,可以有效改變動態(tài)功耗的處境。
從40/28nm的0.99v到現在7nm的0.7v,通過改變工藝都可以有效降低動態(tài)功耗。相反,對于相同尺寸的die,工藝的提高預示著可以放置更多的管子。
芯片的功耗隨著工藝的提高,呈現出整體放大的趨勢,尤其是漏電功耗,如下圖
先進工藝的性能和速度大幅度提高,追擊先進工藝是大勢所趨,但是相應的,現代芯片的功耗挑戰(zhàn),會比以往來得更猛烈。
-
power gating (可關斷電源)
電壓降低了,動態(tài)功耗確實可以變小,但是Vdd和Vth的差值會變得更小,Vth (閾值電壓:MOS導通時所需要的的電壓)更不可能一直毫無代價降低,所以,在實際的實現中,使用Switchable Power domain的方式,來整體關斷某個或者某個區(qū)域、層級的器件,從而來降低整體靜態(tài)功耗。這個實現電源控制的器件,就叫做power gating。
原理很簡單,就是在當前的std-cell的PG rail上面加一個開關,通過外界信號來控制,從而達到可以std-cell電源的目的
仔細想一下,這種結構可以所在std-cell的內部,也可以做在power rail上,前者通常被叫做fine gating,后者會被稱作coarse gating。第一種的設計效果更好,甚至可以具體到某一個std-cell的電源開關控制,但是std-cell面積會變大。第二種,顯而易見,如果使用在rail上,精細度會變差,但是,面積會很有優(yōu)勢,具體的實現方法也會簡化。具體的比較如下表:
結合實際,在正常的使用中,并非所有的std-cell都需要單獨控制,大部分都是一個功能模塊的整體調配,所以現在很多設計里邊都會使用coarse gating而非fine gating的實現方法(如果真的使用fine gating,不知道后端實現工程師會不會咬人)
模塊關斷的方法可以大幅度降低leakage,但是也會帶來一些新的挑戰(zhàn),主要是后端實現的時候:isolation,power switch 以及PG route都會有很大的變化。
除此之外,前端的low power仿真也需要格外注意,如果某些scenario沒有考慮好,核心模塊在不期望的時候被關斷,那么會引起系統(tǒng)性問題的。具體加下表:
-
動態(tài)電壓和頻率調節(jié)(Dynamic Voltage and Frequency Scaling)和自適應電壓調節(jié)Adaptive Voltage Scaling (AVS)
在當下,為了節(jié)省功耗,各位工程師也是拼了。在后端實現的不斷調整和改變的同時,前端的TX們也沒有閑著。DVFS就是一個基于設計,功能原理的有效降低功耗的一個典型方案。
在芯片的實際使用中,真實的使用場景會比較復雜,就拿手機而言,譬如
-
用戶待機的時候,只需要網絡連接可能就足夠了
-
聽歌的時候可能是不需要屏幕的支持
-
用戶在拍照的時候網絡的功能需求也不是很強烈
-
當你玩游戲的時候,CPU可能就要調度所有的硬件來支持游戲的流程運行,
通過不同的場景,芯片基于用戶需求來適當的調度各個功能的使用和性能調節(jié)

這個示例是一個UART的構造框圖,基于這樣的一個邏輯架構,規(guī)劃出不同的使用場景,從而可以展現出不同場景下面所需要的電壓和頻率。

最后可以定義出一個類似上邊的一個表格,在系統(tǒng)判斷出不同的使用場景后,就會配置出不同的電壓和頻率值,從而達到不同場景下的功耗優(yōu)化的可能,這也就是常說的DVFS,類似于一種對于預定義場景的一種查找表的操作。
AVS是在DVFS上邊更為先進的一種調整方式,框圖如下:

和DVFS的簡單查找表不同,這里會在系統(tǒng)里邊集成一個PM(Performance Monitor),對于系統(tǒng)的運行進行實時監(jiān)控,通過判斷,動態(tài)的調整電壓和頻率,這里可以引入一些自學習的功能,從而根據不同用戶的使用習慣,來提供更為細致的自定制服務。可以設想,愈發(fā)細致的個性化服務,加之自學習的預判功能,都可以進一步的提高電源功耗的優(yōu)化。





