低功耗設計方法學 (1)
1.1 概述
在過去的二三十年中,複雜的IC晶元設計已經經歷了數次變革。在上世紀80年代,IC設計領域引入了基於語言的設計方式,並引入EDA工具對其綜合加快設計速度。在上世紀90年代,引入了可重用設計方法學,各個IP公司的大量湧現,也使這種設計方法學大行其道,甚至流行至今,對加快設計速度非常有幫助,大大縮短了晶元上市時間。在過去的一些年裡,功耗逐漸引起人們的重視,在複雜SoC設計中,設計者會多方面考慮以減少晶元的功耗。
在這些變革中,每一次半導體工藝的升級都起了至關重要的作用。比如說晶元密度以指數級的速度增長驅動了基於編程語言的設計方式出現以及人們對綜合工具的研究;而這種方式的出現也幫助摩爾定律保持了十年左右的時間。但是到了百萬門級晶元的時代,設計者發現,即使有這種編程語言的幫助,在一個新的項目中,如果完全重新編寫RTL對項目進度影響非常大。基於這樣的挑戰,IP設計以及可重用設計方法學被越來越多的設計者接受。當前在很多SoC設計中,都大量的使用了各種IP,充分利用了由於工藝變革帶來的集成度。在深亞微米工藝中,從130nm開始,引入了一系列新的問題。在一個很小的die上,我們可以實現數千萬門的設計,這樣做的結果就是導致了設計的功耗問題,而由於功耗的上升,會帶來一系列的問題,比如如何封裝、如何散熱等。另外,隨著工藝發展到90nm以下,漏電流顯著增加,甚至到了65nm,由漏電流導致的靜態功耗甚至接近於晶元工作時的動態功耗。這些改變都對晶元如何設計產生了重大影響。在最高性能的晶元中,功耗密度的增長甚至導致即使工藝升級晶元的時鐘都不可能再增加。在這樣的背景下,設計者開始考慮設計多核處理器晶元以代替單核超高速的處理器。在由電池驅動的設備中,比如手機等移動設備中,雖然現在已廣泛流行,整個行業快速增長,但是深亞微米工藝下由於漏電流導致的靜態功耗已經成為當前的主要挑戰。為了解決電池蓄電量的問題,設計者們在整個產品的設計過程中,從軟體到硬體架構到硬體實現,每一步都採用各種積極的方法,以便能降低整個晶元的功耗,比如power-gating或者multi-threshold 庫等等。
對於所有的應用,複雜SoC總的功耗消耗是一個非常大的挑戰。為了解決這個挑戰,設計者們所採用的設計方式正在從單供電電壓向多供電電壓的架構轉變,也就是在一個設計中可以有多個供電電壓,根據晶元中不同模塊的不同需求,選擇不同的電壓去驅動他們。在一些情況下,設計者們甚至採用更加靈活的方式,在晶元實際運行過程中,根據其不同的負載情況以及所需的性能需求,來動態的改變供電電壓。----------------------------------------------------------------------------------------------本書講述了多種技術,這些技術都是設計者們在實際的項目中所採用的以降低複雜SoC的功耗1.2
今天很多處理器的功耗達到了100-150瓦,每平方厘米的功耗密度達到了50-75瓦,在die上的功耗熱點甚至達到了這個數字的幾倍。
功耗密度不僅給封裝和散熱帶來了挑戰,並且對晶元可靠性造成了影響。隨著晶元溫度的上升,晶元平均出故障時間間隔會呈指數級降低。另外,隨著晶元溫度上升,timing也會變得更差,漏電流變得更高。歷史上,最高性能的晶元會隨著每一個工藝節點上升。但由於這些問題是由於功耗密度導致的,ITRS曾預言這些晶元的功耗可能會在2008年到達一個峰值,198瓦,在那以後,最高性能的晶元功耗會到達一個常數值。對於伺服器群組來說,微處理的總功耗產生了非常嚴重的問題。對於這些伺服器群組,供電成本和冷卻成本甚至接近計算機本身的成本。對於電池供電的手持設備,功耗雖然不大,但由此導致的問題卻更加嚴重。根據ITRS的統計,對於這些設備,電池的使用時間的峰值是在2004年,從那時起,隨著手持設備功能越來越強大,電池使用時間越來越短。幾乎對於所有的應用,降低SoC的功耗本質上來說有助於繼續增加其性能和功能以利於其業務增長。直到最近,power已經與cost,area以及timing共同成為晶元設計過程中首要考慮的問題。今天,對於大多數SoC設計,Power budget是最重要的項目設計目標之一。如果power budget沒有達到要求,對於一個項目來說是非常致命的,意味著晶元封裝可能需要從廉價的塑料封裝提到到價格高昂的陶瓷封裝,或者有可能由於功耗密度導致晶元的穩定性變差,或者導致電池的使用時間達到要求。
這些問題甚至在新工藝節點變得更加糟糕,下面是ITRS的統計結果:很多設計團隊都在想方設法降低功耗以便能達到需求。
1.3動態功耗
對於一個SoC設計來說其總的功耗包含兩個部分:動態功耗以及靜態功耗。動態功耗是指當晶元處於活動態也就是說晶元中信號值發生變化的時候所消耗的功耗。靜態功耗是指晶元仍然保持供電但不處於活動態也就是晶元中信號值沒有發生變化的時候所消耗的功耗。在CMOS設備中,靜態功耗是由於漏電流導致的。
動態功耗主要是在門電路中對輸出電容充放電所需的功耗。
每一次信號值發生變化時,其所需電能可由如下公式計算得出:
其中CL是上圖中負載電容,Vdd為供電電壓。因此我們按照如下公式計算動態功耗:
其中f是指信號變化的頻率,Ptrans是指輸出變化的概率,fclock是指系統的時鐘頻率。如果我們定義:
,那麼可用下面的公式計算動態功耗:
根據這個公式,通常我們在架構設計,RTL coding以及電路實現的過程中會採取一些方式去降低設計的動態功耗。這些方式包括降低電路的供電電壓,即公式中的Vdd,或者降低系統時鐘;當然為了降低動態功耗,也會採取措施去減少其處於活動狀態的時間。
從上面的公式我們可以注意到,動態功耗是與供電電壓的平方成正比的,因此降低供電電壓可以非常有效的降低系統的動態功耗,但是任何事都有其兩面性,降低供電電壓同樣會影響到其運行速度,因此在考慮這一方法的時候需要注意其副作用。SoC設計者可以在下面幾個方面有效利用這一方法。1. 對於不需要跑特別快的模塊,比如一些外設,相較於那些對於速度要求較高的設備來說,我們可以使用較低的供電電壓。這種方法我們稱之為multi-voltage。2. 對於處理器來說,我們可能會提供幾種供電電壓,對於需求高性能的task,我們可以提供高供電電壓以及驅動速度更快的時鐘頻率。對於不需求性能的task,我們可以提供低供電電壓以及以一個慢速時鐘驅動。這個方法我們稱之為voltage scaling.3. 還有一種方式是clock gating,這種方式被廣泛的應用在SoC設計中。
----------------------------------------------------------------------------------------------
更多精彩內容,請掃描 本欄目頭像二維碼,關注公共號【移知】
首頁-ic設計-數字驗證-數字後端-系統架構-移知網更多課程視頻:RTL,CPF以及UPF 低功耗設計和編碼技巧及策略
課程收穫
1.掌握RTL coding時的低功耗策略
2.掌握CPF定義的低功耗策略
3.掌握1801定義的低功耗策略
推薦閱讀:
※進入世界前50的中國Fabless | 半導體行業觀察
※《模擬IC設計進階》付費課程正式上線
※從中興被禁說起--電子技術專欄很有用
※數字IC後端實現之時鐘樹綜合