對我自己來說,低功耗設計的經驗雖然算不上非常豐富,但是至少在做過的項目中有些在低功耗方面要求極高,因此對低功耗設計的一般做法和主要手段還算有些了解。同時鑒于某些公司由于產品類型、技術、市場等諸多方面的限制讓很多同學完全無法接觸到低功耗設計,因此想借次機會和大家聊聊我的一些基本經驗和感受。
盡管如此,仍然需要承認,對于低功耗設計本人完全談不上有多精通,很多細節(jié)我也不見得理解地有多到位,因此希望有經驗的同學共同探討,不吝賜教。
今天我想先從基本概念說起,對基本概念已經比較清楚的同學可以跳過。
對低功耗設計的追求緣起于日漸膨脹的芯片功能,不斷增高的運行頻率和隨之而來的高功耗與高發(fā)熱等方面的因素漸漸對設備整體性能造成越來越嚴重的影響。CPU在高功耗和高發(fā)熱方面的問題人盡皆知,因此很多電腦都需要額外的散熱設備;移動設備上充電間隔越來越短,這固然因為電池技術遲遲沒有重大突破,但是芯片的高功耗也難辭其咎。因此在多年前,業(yè)界就對低功耗設計做了大量的理論和實踐的嘗試,積累了很多至今仍廣泛應用并行之有效的手段。
從原理上說,功耗即為功率,指的是單位時間內消耗的能量。在此我們不再詳述功耗的原理,直接引出在芯片設計上常用的低功耗設計思路:
芯片設計領域比較常見的低功耗設計方向,其中應用最多的就是優(yōu)化芯片架構,升級生產工藝、降低芯片工作電壓、采用不同速度的標準單元,分區(qū)域采用不同電壓的電源以及模塊關斷(多電壓域),而其中和后端設計有關的,基本上有以下幾種:升級生產工藝;降低芯片工作電壓;關斷部分時鐘(Clock Gating);采用不同速度的標準單元(Multi-Vth庫);多電壓域設計(Multi-Voltage)。在詳細解釋上述概念之前,我想先把芯片中主要的功耗構成簡單提一下。
關于靜態(tài)功耗和動態(tài)功耗的細節(jié)方面可以參考本專欄之前的文章:【數(shù)字后端基礎之:芯片的整體功耗是如何計算出來的?】在上述各種低功耗設計手法中,也是從降低這兩方面的功耗出發(fā)的。下面我們詳細解釋一下這幾種與后端息息相關的低功耗設計方法。
升級工藝
這是應用最廣泛,最行之有效的方法之一。它的原理在于,隨著晶體管的尺寸越來越小,leakage power在芯片整體功耗中所占的比重越來越大,而先進工藝的晶體管尺寸更小,泄漏電流也更小,從而能夠整體降低leakage power。因此我們經常能夠看到這樣的新聞:某某芯片從22nm升級到14nm,性能提升x%,功耗降低y%等。這其中的功耗降低固然可能包含架構方面的改善,但是工藝升級帶來的優(yōu)勢一定是非常明顯的。
TSMC公開資料中最近幾代工藝的PPA比較,其他foundary廠的工藝參數(shù)在變化趨勢上應該大致相同。正因如此,眾多手機用的SoC,包括但不限于蘋果A系列、高通驍龍系列、華為麒麟系列、三星Exynos系列等,每一代都迫不及待地爭搶最先進工藝上的實現(xiàn),就是因為先進工藝帶來地功耗和性能優(yōu)勢太過明顯,以至于誰都無法忽視。
降低芯片工作電壓
按照中學物理的計算公式,功率與電壓和電流的乘積正相關。在芯片上計算功耗雖然沒有這么簡單,但是從原理上降低芯片電壓仍然是降低功耗最直觀最有效的方法。也正因為如此,當前大多數(shù)芯片的工作電壓從最初的5V、3V一路下降,目前基本都在1V以下甚至0.5V以下。而隨之而來的困難在于,隨著電壓的下降,標準單元的速度也會隨之變慢,但是電子設備對處理速度亦即芯片頻率的要求卻越來越高。以移動設備為例,最初的芯片頻率不過幾十上百兆赫茲,而現(xiàn)今最快的手機SoC頻率峰值已經超過2GHz。這方面也是每一代芯片升級背后所需要解決的技術難題之一。
關斷時鐘(Clock Gating)
動態(tài)功耗主要是由信號的翻轉引起的,而在芯片中,翻轉最頻繁的信號就是時鐘(Clock)信號。我們知道,芯片中各種邏輯功能的傳輸,數(shù)據保存等電路是由下列timing path組成的。簡而言之,就是前面的FF1寄存器的數(shù)據通過一系列運算后,在時鐘信號clk的作用下,被后面的FF2寄存器捕捉,完成一次數(shù)據傳輸。但在實際中會有這樣的情況發(fā)生:FF1傳過來的數(shù)據和FF2當前保存的數(shù)據相同,也就是FF2的數(shù)據無需翻轉刷新仍能保證功能的正確性,而此時clk仍然翻轉一次刷新了FF2的數(shù)據。這種情況盡管在功能上沒有任何問題,但是在功耗方面卻是實實在在的浪費。因此,在電路設計階段以及邏輯綜合階段,設計者和EDA工具會根據芯片的功能和實際數(shù)據的變化情況,人為或者自動地插入一系列的clock gating cell,從而保證僅在數(shù)據發(fā)生變化的時候信號才會翻轉。
這是當前芯片行業(yè)最常用也是最容易使用的設計方法之一。所謂Vth,指的是邏輯門的閾值電壓。而閾值電壓和功耗與速度存在如下關系:閾值電壓越高,cell速度越慢,功耗越小;反之閾值電壓越低,cell速度越快,功耗越高。
在實際應用中,一般采用的策略為:對于性能要求高的模塊,或者頻率比較高的部分,采用Vth比較低的cell,讓setup更容易收斂;對于性能要求較低的模塊,或者頻率較低的部分,多采用Vth比較高的cell,讓功耗更低。通過這種方法,可以實現(xiàn)在同一塊芯片上,根據性能和功耗的不同要求而調整cell的使用,從而避免在不太重要的功能上浪費過多的功耗。在使用手機的時候,我們經常會遇到這種情況:當我們看到電池快要沒電而手頭有沒有充電設備的時候,我們會盡量關閉所有應用,不再聽歌不再看視頻,甚至連地圖的定位與導航功能都不再開啟,其根本目的就在于減少消耗電池的功能。在芯片設計中也引入了這種理念:一顆SoC中可能包含很多功能模塊如視頻處理(DSP),音頻處理(AUDIO),定位(GPS),游戲(GPU),存儲(Memory)等,但大多數(shù)功能并不會同時開啟,因此為了降低不用模塊在等待狀態(tài)下消耗的功耗,干脆就設計成在不用的時候把它們關閉。這就是Power Gating最初的想法。與此同時,對于性能要求較高的CPU,GPU等模塊,由于需求頻率較高,在設計上可能采用較高的電壓,而一些不太核心的模塊如AUDIO,GPS等,可以采用相對低的電壓來設計。
這樣一來,芯片的功耗最低時僅有一個CPU內核處于開啟狀態(tài),可以大幅度減少其他模塊在等待時的電量消耗,從而增加電池使用時間。
盡管它的思路很簡單,但是在實際設計中不管是不同電壓還是模塊關斷,都會帶來很多額外的問題,這些問題以及業(yè)界普遍應用的解決方案我們將在后面的文章中一一提及。





