(三)系統與架構級低功耗設計

前面講解了使用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的效能。因此在系統設計的時候,特別是系統架構設計的時候,可以考慮基于緩存的系統體系結構進降低功耗。

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253921.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253921.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253921.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python---統計列表中數字出現的次數

1 import collections 2 3 a [1,2,3,1,2,3,4,1,2,5,4,6,7,7,8,9,6,2,23,4,2,1,5,6,7,8,2] 4 b collections.Counter(a) 5 for c in b: print c,b[c] 轉載于:https://www.cnblogs.com/lxs1314/p/7236321.html

MFC入門(一)——MFC是一個編程框架

MFC (Microsoft Foundation Class Library)中的各種類結合起來構成了一個應用程序框架,它的目的就是讓程序員在此基礎上來建立Windows下的應用程序,這是一種相對SDK來說更為簡單的方法。因為總體上,MFC框架定義了應用程序的輪廓,并…

2.數據結構筆記學習--線性表基本操作

線性表的結構定義: 順序表的結構定義: typedef struct {int data[maxSize]; //存放順序表元素的數組,一般用 int A[maxSize];int length; //存放順序表的長度,一般用 int n; }SeqList; 單鏈表結點定義: typedef struct L…

(四)RTL級低功耗設計

前面介紹了系統級的低功耗設計,換句話說就是在系統級降低功耗可以考慮的方面。系統級的低功耗設計,主要是由系統級設計、具有豐富經驗的人員實現,雖然還輪不到我們設計,我們了解一下還是比較好的。我們前端設計人員的重點不在系統…

Unity3D 游戲前端開發技能樹(思維導圖)

如果做游戲也是一種游戲,那么這個游戲的自由度實在是太高了.(導圖源文件鏈接:http://pan.baidu.com/s/1eSHpH5o 密碼:qzl5) 最近要用思維導圖軟件Xmind把自己的思路好好捋一捋,算是溫故知新吧. 轉載于:https://www.cnblogs.com/qiaogaojian/p/6098962.ht…

js forEach

forEach()函數從頭到尾把數組遍歷一遍。有三個參數各自是:數組元素。元素的索引,數組本身(假設是一個參數就是數組元素,也就是數組的值。var data[1,2,3,4,5,6]; var sum0; data.forEach(function(v){//當…

SQL Server 死鎖的告警監控

原文:SQL Server 死鎖的告警監控今天這篇文章總結一下如何監控SQL Server的死鎖,其實以前寫過MS SQL 監控錯誤日志的告警信息,這篇文章著重介紹如何監控數據庫的死鎖,當然這篇文章不分析死鎖產生的原因、以及如何解決死鎖。死鎖(D…

關于web性能一些特性匯總

關于web性能一些特性匯總 DOMContentLoaded & load load事件是window對象上的事件。指的是網頁資源已經加載完畢(包括但不限于DOM、圖片、音頻、腳本、插件資源以及CSS)。 DOMContentLoaded事件是document對象上的事件。指的是DOM已經加載完畢。IE中…

(五)門級電路低功耗設計優化

(1)門級電路的功耗優化綜述 門級電路的功耗優化(Gate Level Power Optimization,簡稱GLPO)是從已經映射的門級網表開始,對設計進行功耗的優化以滿足功耗的約束,同時設計保持其性能,即滿足設計規則和時序的要…

SQL三大范式

第一范式(1NF) (必須有主鍵,列不可分) 數據庫表中的任何字段都是單一屬性的,不可再分 create table aa(id int,NameAge varchar(100)) insert aa values(1,無限-女 ) 沒有達到第一范式 create table aa(id int,name varcahr(10),age char(2)) insert aa …

Spring3向Spring4升級過程中quartz修改

為什么80%的碼農都做不了架構師?>>> 問題 nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.scheduling.quartz.CronTriggerBean] for bean with name ... 原因 org.spri…

Socket編程知識必學/SELECT 編程

Select在Socket編程中還是比較重要的,可是對于初學Socket的人來說都不太愛用Select寫程序,他們只是習慣寫諸如 connect、accept、recv或recvfrom這樣的阻塞程序(所謂阻塞方式block,顧名思義,就是進程或是線程執行到這些…

EasyUI--messager

1.    alert 方法 <script type"text/javascript">$( function(){$.messager.alert("調用messager","文本內容") ;});</script> 這里還可以通過icon添加相應的圖標及info加入回調函數 <script type"text/javascript&quo…

ROS與navigation教程——基本導航調整指南

說明&#xff1a; 介紹如何調整機器人上的ROS導航包 步驟&#xff1a; (1) 機器人導航需要那些準備? 在調整新機器人上的導航包時遇到的大部分問題都在本地規劃器調諧參數之外的區域。機器人的里程計&#xff0c;定位&#xff0c;傳感器以及有效運行導航的其他先決條件常常…

小程序跨行跨列多列復雜表格實現

今天來實現個跨行跨列多列表格。 如圖&#xff0c;這是個列數不確定&#xff0c;有的單元格還要跨行跨列的復雜表格。 這里暫時最多支持4列&#xff0c;列數再多就放不下了。 實現原理 實現原理比較簡單&#xff0c;通過多個嵌套的循環將數據取出。 上面的例子中&#xff0c;最…

Redis學習第八課:Redis高級實用特性(一)

Redis高級實用特性 注&#xff1a;我學習的環境是vmware7.1 ubantu10.10 redis 3.0.2 1、安全性 設置客戶端連接后進行任何其他指定前需要的密碼。因為redis速度相當快&#xff0c;一個外部用戶可以在一秒鐘進行很多次的密碼嘗試&#xff0c;這就需要設定非常強大的密碼來防止…

分布式緩存的面試題9

1、面試題 如何保證緩存與數據庫的雙寫一致性&#xff1f; 2、面試官心里分析 你只要用緩存&#xff0c;就可能會涉及到緩存與數據庫雙存儲雙寫&#xff0c;你只要是雙寫&#xff0c;就一定會有數據一致性的問題&#xff0c;那么你如何解決一致性問題&#xff1f; 3、面試題剖析…

ROS與navigation教程——概述

navigation是ROS的二維導航功能包&#xff0c;簡單來說&#xff0c;就是根據輸入的里程計等傳感器的信息流和機器人的全局位置&#xff0c;通過導航算法&#xff0c;計算得出安全可靠的機器人速度控制指令。 代碼庫&#xff1a;https://github.com/ros-planning/navigation 代…

Linux下c開發 之 線程通信與pthread_cond_wait()的使用

pthread_cond_wait() /************pthread_cond_wait()的使用方法**********/pthread_mutex_lock(&qlock); pthread_cond_wait(&qready, &qlock);pthread_mutex_unlock(&qlock);/*****************************************************/The mutex passed …

ROS與navigation教程——ACML參數配置

<launch> <!--//后為wiki官網的參數說明 &#xff08;&#xff09;中為粗讀算法參數說明及理解 面臨的問題常用地圖有2種&#xff1a;1.基于特征&#xff0c;僅指明在指定位置&#xff08;地圖中包含的對象的位置&#xff09;的環境的形狀。特征表示使得調節對象的位置…