(數字IC)低功耗設計入門(三)——系統與架構級低功耗設計

  前面講解了使用EDA工具(主要是power compiler)進行功耗分析的流程,這裏咱們將介紹在數字IC中進行低功耗設計的方法,同時也結合EDA工具(主要是Design Compiler)如何實現。咱們的講解的低功耗設計主要是自頂向下的設計,也就是說,咱們首先介紹在系統架構層面上如何進行低功耗設計(或者能夠從哪些方面進行低功耗設計);而後咱們在RTL層面和門級層面上介紹低功耗設計的方法,這兩個種方法主要是依靠RTL代碼和Design Compiler實現的,這是咱們前端設計人員進行低功耗設計與優化所須要知道的,咱們會着重介紹;最後咱們簡單介紹在物理設計層次上面下降功耗的方法。今天咱們記錄系統與架構級的低功耗設計。前端

 

1.系統與架構級低功耗設計算法

  系統與架構層次的低功耗設計,能夠節省70%以上的功耗。這個層次上的設計每每是由系統和架構設計人員進行的,這些人員每每是有着豐富經驗的設計人員。他們制定了低功耗設計方案,由下一級的設計人員(好比作前端設計、作Flow的人員)進行具體實現。下面就來介紹一下在系統架構方面,能夠從哪些方面進行低功耗設計,因爲我只是隻菜鳥,所以這些內容只是我在前人的經驗中進行總結學習的筆記,僅供參考。編程

  (1)多電壓設計技術(Multi-VDD)緩存

①多電壓設計技術介紹網絡

從前面的功耗方程中,咱們能夠知道,電壓與功耗有着密切的聯繫。所以功耗的下降能夠考慮使用低一點的電壓。多電壓設計技術有三種方式:架構

               

 

A:各電壓區域有固定的電壓,如上圖(a)所示 ;異步

B:各電壓區域具備固定的多個電壓,由軟件決定選擇哪個電壓,如上圖(b)所示;工具

C:自適應的方式,各電壓域具備可變的,由軟件決定選擇哪個電壓,如上圖(c)所示。性能

A是固定分配的電壓;而B和C爲動態電壓管理,涉及到軟硬件協同設計,這裏咱們放到後面進行介紹。這裏主要是從總體上進行介紹多電壓設計技術及其要求,而後給出A方式的一個例子以及一個多電壓低功耗設計的腳本示例。學習

 

②多電壓綜合庫及電壓模式控制單元

  不管是哪種低電壓設計方式,都須要綜合庫的支出。這低功耗設計的綜合庫中,須要包含同一個單元在不一樣電壓下的描述。此外綜合庫還要多電壓設計的特殊單元,這些單元主要是:

  ·電平轉換器(level shifter):把高(低)電壓區域的信號轉換到低(高)電壓區域。信號一般包括數據、時鐘、掃描鏈數據等。電平轉換器的示意圖以下所:

               

  ·電源隔離單元(power isolation cell):主要用於模塊的輸入、輸出。它能夠關掉電源時,將信號保持爲常數,從而避免單元的輸入懸空。電源隔離單元以下圖所示:

              

  ·保持寄存器(retention register):在不工做的狀況下,將寄存器的狀態保留下來。

  電源隔離單元和保持寄存器咱們將在後面的電源門控中進行詳細介紹,這裏先給出一個概念。

  爲了實現電壓的動態管理——不管是使用硬件仍是軟件進行動態管理,都須要在設中加入電壓模式控制單元。一個電壓模式控制單元的例子以下所示:

                 

該模塊的功能是:系統不工做時, 進入IDLE模式, 這時候能夠關掉不工做模塊的電源; 當系統工做時, 給工做模塊提供正常電壓。這個模塊能夠是軟件實現,也能夠是硬件實現。

 

③多電壓設計舉例

  對於多電壓設計(尤爲是A設計),關鍵是電壓分配。在劃分供電區域時, 要儘可能與設計的層次結構一致, 而且要考慮到設計複雜性。 下面例子(左圖)中(電壓分配採用固定分配方案), 存儲器、 處理器核 、 其餘邏輯用不一樣的工做電壓。

           

  右圖中的設計有3個工做頻率,分別爲300,250和400MHz。因爲單元的延遲與供電電壓成相反關係,即供電電壓越高,單元的延遲越小。所以爲了知足時序的要求,對於工做頻率高的模塊,使用供電電壓高的電源,以下降時序路徑中單元的延遲,從而下降整條時序路徑的延遲。上例中,工做頻率爲400MHz的模塊,時序要求最高,所以供電電壓最高,爲1.2V。工做頻率爲250 MHz的模塊,時序要求最低,所以供電電壓最低,爲0. 8V。經過對不一樣的模塊設置不一樣的供電電壓,可使整個設計既能知足時序的要求,又能夠下降其功耗。使用多電壓技術,版圖設計時,要產生多個電壓區域(Voltage Area),把供電不一樣的模塊,分配到不一樣的電壓區域。

在power compiler中,可使用"Top Down Compile"的方法進行多電壓的功耗設計,一個示例腳本以下所示:

        

        

          

          

 

  (2)軟/硬件協同設計

  前面介紹了多供電電壓設計,同時介紹了使用EDA工具實現的一個示例腳本。多供電電壓設計中涉及到電壓的動態管理,而動態管理可使用軟件實現,這就設計到了軟硬件協同設計的問題。在這裏,咱們主要介紹軟硬件協同設計中的軟硬件劃分以及電壓的動態管理技術。

①軟硬件劃分

  系統中的功耗都是硬件單元消耗的,可是軟件組織對硬件的功耗有着很大的影響。在設計過程當中,系統的功能能夠用硬件實現,也可使用使用軟件進行實現。低功耗軟件的設計須要注意:在知足系統應用的基礎上,速度應該儘量慢,電壓應該儘量低,儘量知足時間要求。系統設計者根據規範和自身經驗對系統性能進行推測(仿真建模),決定哪一部分使用硬件來實現,哪一部分使用軟件來實現,從而達到性能和功耗最佳平衡。這些是系統設計者須要考慮的,這裏不進行詳細敘述,只須要知道,軟硬件劃分能夠很大程度上下降功耗。

 

②動態電壓頻率調節DVFS技術

  DVFS技術:dynamic voltage dynamic frequency scaling,動態電壓頻率技術,是一種經過將不一樣電路模塊的工做電壓及工做頻率下降到剛好知足系統最低要求,來實時下降系統中不一樣電路模塊功耗的方法。

  電路模塊中的最大時鐘頻率和電壓緊密相關,若是一個電路可以估算出它必須作多少工做才能完成當前的任務,那麼理論上講就能夠將時鐘頻率調低到恰好能適時完成該任務的水平。下降時鐘頻率意味着能夠同時下降供電電壓。頻率和電壓同時下降,功耗就大大下降了。這個是DVFS的原理。

  DVFS技術這個種方法屬於電壓的動態管理,能夠經過軟件和硬件的方式實現。將DVFS合併到操做系統的調度程序和實時嵌入式任務管理服務當中,利用一個可編程的DC-DC開關電壓調節器、一個可編程的時鐘產生器和一個寬操做域的高性能處理器等資源進行實現。這種技術的使用須要系統使用者決定,這裏不進行詳述,只須要知道在系統層面能夠考慮使用這種方法進行下降功耗。

 

③低功耗軟件(操做系統)的動態功耗管理

  前面也說了,可使用軟件的方式進行自適應地選擇功耗。在系統軟件過程運行過程當中,能夠在操做系統中加入功耗管理機制,把沒有使用到的硬件單元關掉,這即是系統功耗的動態管理。加入功耗管理機制的操做系統的示意圖以下所示:

               

這種功耗的動態管理依賴於前面描述的電壓模式控制單元,只不過個單元是用軟件進行實現的(由於是操做系統進行動態功耗管理)。具體的功耗動態管理實現這裏就不詳細說明,這應該是屬於系統設計者和軟件設計人員考慮的。

 

  (3)系統時鐘分配

  系統時鐘的分頻也是系統層面下降功耗能夠考慮的方面。時鐘是系統中頻率最高的信號,其功耗功之高是無可置疑的。在系統設計層面,能夠考慮應用要求,將系統設置爲不一樣的工做模式,加入時鐘控制模塊,在不一樣的工做模式下選用不一樣頻率的時鐘,而且將一些不須要的模塊時鐘關閉。時鐘的分配可使用內部的狀態機實現,也可使用軟件實現。

  例如,能夠將系統分爲4種工做模式:normal 、 slow、idle、sleep。在不一樣的模式下,器分頻的時鐘以下所示:

             

 

  (4)算法與IP選擇

在系統設計層次上面,還能夠經過算法和IP這兩個方面下降功耗。

算法:

  算法級在算法級下降功耗是很是有價值的。 在設計算法時, 要分析該算法須要多少ALU操做, 須要多少次存儲器訪問, 要儘可能使那些耗能多的操做最小化。算法級低功耗設計跟具體設計有關。好比,對於大規模運算的應用(好比FFT),使用對數系統(logarithmic number system,lns)比使用線性系統更好。lns在下降平均位元活躍度(也就是下降0和1的變化程度)的同時使用加法和減法實現乘除法,使效率比線性系統更高。所以基於lsn算法來實現FFT能夠節省大量的功耗,可是加法器和乘法器的寬度會增長,使用FPGA實現時就會須要更大的LUT(查找表),並且這個查找表的大小是以指數增加的。

在一些行爲綜合工具中,可採用延時功耗乘積表示系統的優化目標,以下降完成特定計算所需的狀態轉換數,生成高效的計算結構。算法這一方面的低功耗設計讓算法工程去考慮吧,咱們來了解一下就能夠了。

IP:

如今的SoC設計依賴於IP的集成。在選擇IP時,除了考慮到性能要求,還須要考慮到功耗問題。例如,在選擇CPU時,能夠分析在完成相同的功能時,哪一種CPU功耗更大。

 

(5)其餘

  在系統層次上,除了能夠上面那些因素外,咱們還能夠考慮異步設計。在如今的系統設計中,一個系統可能使用多個時鐘,可是在每一個時鐘控制的區域內部都設計成一個同步的子系統。經過時鐘樹綜合、插入緩衝器減小時鐘的偏移。這種方法在時鐘網絡上添加了大量的緩衝器,時鐘網絡消耗的功耗也增長。在異步設計裏面,不須要全局時鐘,兩個模塊經過握手信號進行交互,這時候就能夠減小功耗。所以異步設計也是下降功耗的一種方法。

  在大可能是DSP中,須要用到FFT算法。FFT算法須要頻繁訪問存儲器,咱們能夠在存儲器和處理器之間添加緩存,在處理器須要以前,預先將相關數據從存儲器中取到緩存裏面。使用小範圍的緩存可以使計算能耗大量降低,提升的FFT的效能。所以在系統設計的時候,特別是系統架構設計的時候,能夠考慮基於緩存的系統體系結構進下降功耗

  系統層次上面的低功耗設計方法還有不少,好比說可測性設計上進行低功耗設計、存儲器(內存)的低功耗設計等,這些均可以在系統層次上面進考慮,這裏就不一一列出來了。

相關文章
相關標籤/搜索