隨著工藝節點的不斷發展(現在普遍是28nm,22nm,16nm,14nm,甚至有的都在做7nm),芯片的性能需求越來越高,規模也越來越大,數字IC設計工程師對芯片的功耗也越來越關心了,特別是移動端的消費類電子產品,對芯片的功耗要求特別高,一旦功耗太大,整個產品可能就是一個暖手寶,甚至整個芯片的性能會大大地打折扣,無法滿足實際應用需求。那么,今天小編就帶領大家一起來回顧下功耗的定義及其組成部分,并總結降低功耗的若干種常用方案。
芯片功耗分為動態功耗和靜態功耗兩大部分。
圖1 動態功耗示意圖
動態功耗是電路在工作時(翻轉時)所消耗的能量。對于CMOS電路來說,它又分為開關功耗和短路功耗。開關功耗為電路翻轉時對負載電容充電的功耗,短路功耗為輸入翻轉時,PMOS和NMOS同時打開的瞬間電流形成的功耗。用公式描述可寫為:
???????Pdyn = (CL * Vdd2 * Ptran * F) + (ttran * Vdd * Ipeak * F)
其中,CL為電路總負載電容;Vdd為工作電壓;Ptran為工作電路所占比例;F為工作時鐘頻率;ttran為PMOS,NMOS同時導通時間;Ipeak為短路電流。
公式中第一部分為開關功耗,第二部分為短路功耗。一般來說,只要gate的slew足夠小,也就是ttran足夠快,短路功耗一般可以忽略。
?從公式中可以看到降低動態功耗的思路,可以從Vdd、F、CL和降低gate翻轉次數等方面來設計降低功耗的方案。
再來說說靜態功耗。靜態功耗是電路在沒有翻轉時,晶體管中漏電流造成的功耗。根據重要性可以分為以下四個部分:
1.亞域值漏電流Isub: 從Drain經過弱反形層流向Source的電流
2. 柵電流Igate:由于隧道效應和熱載流子效應,由Gate經薄柵氧流向Sub的電流
3. 由Gate引起的Drain電流IGIDL:由于Drain端的強電場引起的由Drain流向Sub的電流
4.結反偏電流Irev:反偏結耗盡區少子漂移和電子空穴對產生形成的由Drain、Source到Sub的電流。
?圖2 ?leakage電流示意圖
那么,在數字IC設計中,我們常見的降低功耗的方法有哪些呢?小編特地做了一個小歸納,方法如下:
1.clock gating 門控時鐘技術。眾所周知,在數字IC設計中,時鐘信號的翻轉率是比較高的,因此它的功耗約占整個芯片功耗的20-30%。傳統的設計方法是時鐘信號一直是存活著的(常開),門控時鐘技術就是根據設計,將暫時不用的模塊的時鐘信號通過一個控制信號gating住,降低這個模塊的時鐘信號翻轉率,從而降低芯片功耗的一種技術。clock gating的加法也有很多,有在rtl級就例化進來的gating(往往是比較root的gating),也有綜合階段工具自動加進來的。從數字前端設計的角度,clock gating是想越靠近root端越好(因為一個gating可以控制更多的寄存器或者時鐘單元),一旦將某個gating關掉,能夠節省較多的功耗。因此,在數字后端實現過程中,經常會碰到到gating使能端E pin的setup比較難meet,主要原因是這類gating比較靠近root導致的。關于如何fix clock gating使能端的setup會在后續更新文章中做詳細的分析。
2.power gating。在數字IC后端設計中,經常采用這個策略降低功耗。在后端實現過程中,加入MTCMOS來控制標準單元的開關。
3.Multi vt cells 。這個就是在數字IC后端設計實現過程中,將某些不是critical path的地方盡量用HVT或者RVT,降低leakage。當然這個需要與performance,area做一個tradeoff。因為用HVT或者RVT,由于timing不好meet,工具優化的比較困難,可能反而會導致面積越優化越大。
4.DVFS技術。DVFS(Dynamic Voltage and Frequency Scaling)動態電壓頻率調節本質上是一種低功耗技術,目的是根據的芯片當時的實際功耗需要設定工作電壓和時鐘頻率,這樣可以保證提供的功率既滿足要求又不會過剩,從而可以降低功耗。比如數字芯片中,CPU模塊(比如8核cpu),在需要跑分的時候,將給cpu供電的電壓通過軟件調節到更高的電壓(overdrive),獲得一個更高的頻率。在實際某個應用場景下,可能cpu只需要一個較低的頻率時,可以將電壓調節成一個較低的電壓(underdrive)來實現。
一味的降頻降壓當然是不能降低功耗的,因為低頻下運行可能使系統處理任務的時長增加,從而整體上可能反而增加了功耗。所以DVFS的核心是動態調整的策略,其目的是根據當時的系統負載實時調整,從而提供滿足當時性能要求的最低功率,也就達到了最低功耗。制定調整策略前,先找出系統中的耗電大戶即CPU GPU這些模塊。需要統計出這些模塊的負載情況,基本的策略當然是工作負載增加則升頻升壓,工作負載降低則降頻降壓。
5.Well bias。這個方法可以動態調整偏置電壓,從而實現降低功耗的目的。
好了,今天的碼字就到這里了,原創不容易,喜歡的可以幫忙轉發,小編在此先謝過!