低功耗簡單知識
1、低功耗分類?
分為靜態功耗和動態功耗;
- 靜態功耗是指漏電流功耗,是電路狀態穩定時的功耗,其數量級很小;
- 動態功耗是指電容充放電功耗和短路功耗,是由電路的翻轉造成的;
2、低功耗技術
公式:Power = K*F*C*V^2,功率=系數*頻率*負載電容值*電壓平方
(1)控制工作頻率
- ① 門控時鍾,降低活動因子,降低時鍾網絡和D觸發器功耗;
- ② 可變頻率時鍾,設置合適頻率時鍾;
(2)減少電容負載
- ① 使用更小的邏輯門;
- ② 降低平均邏輯開關頻率,減少每個時鍾沿處的邏輯開關總數,減少連線網絡;
- ③ 數據隔離技術,使能才用,不使能不用;
- ④ 格雷碼編碼,減小翻轉次數;
- ⑤ 盡量避免使用這些上拉電阻和下拉電阻;
(3)降低工作電壓
- ① 多電壓、動態電壓頻率調節DVFS、不工作關閉部分電源;
- ② 並行結構或流水線設計;
- ③ 動態處理溫度補償;
3、下列屬於常用的低功耗設計方法是(ABCD)
A、時鍾門控
B、多電壓設計
C、降低電源電壓
D、動態電壓和頻率調節
4、下面降低功耗的方法中,屬於降低靜態功耗的有(ADE)(不一定對)
A:門級電路的功耗優化
B:多閾值電壓
C:門控時鍾電路
D:操作數分離
E:多個供電電壓
5、ASIC中低功耗的設計方法和思路(不適用於FPGA)
合理規划芯片的工作模式,通過功耗管理模塊控制芯片各模塊的Clock,Reset起到控制功耗的目的。
- 門控時鍾(Clockgateing):有效降低動態功耗
- 多電壓供電:通過控制模塊的電壓來降低功耗
- 多閾值電壓
6、CMOS的功耗組成是什么樣的?
功耗組成:動態功耗和靜態功耗組成;
(1)動態功耗:開關功耗和短路功耗;
- 開關功耗:電路在開關過程中對輸出節點的負載電容充放電所消耗的功耗。
- 短路功耗:電源到地的直流導通電流
(2)靜態功耗:主要是漏電流引起的功耗
低功耗設計
1. 功耗源
浪涌、靜態功耗和動態功耗是主要的三個功耗源。
浪涌電流指的是器件上電時產生的最大瞬時輸入電流,在應用中也稱為啟動電流,其與設備相關。例如基於SRAM的FPGA就有很突出的浪涌電流,因為上電時需要這些器件的配置過程,從外部存儲器下載數據配置編譯資源等。
靜態功耗又稱為待機電流產生的功耗。待機電流指的是關斷主電源或者系統進入待機模式下產生的電流。與浪涌電流類似,其與電子元件的電氣特性密切相關。靜態功耗也包括電路中由晶體管的漏電流所導致的功耗。
動態功耗或者開關功耗是門電路輸出切換時,由邏輯轉換所引起的功耗。
動態功耗在大規模IC設計中占主要地位,典型的應用中動態功耗占用了總功耗的80%。
2、抽象層次降低功耗
降低功耗應當在所有的設計層次上進行,即在系統級、邏輯級和物理級。層次越高對功耗降低就可能越有效。如圖所示2.1為在不同設計層次上降低功耗的各種設計技術。
圖2.1 層次級低功耗設計
圖2.2 功耗降低概率對比
2.1 系統級低功耗技術
在設計系統前,必須對系統及其性能以及功耗的目標作以考慮。
- 片上系統方法:針對納米級芯片,由於I/O與內部使用電壓不同,一般為3.3V,使得其占到總功耗的50%以上,如果系統中包含多塊芯片,芯片與芯片之間 的連接會消耗大量的功耗,因此從片上系統主要關注降低功耗,縮減面積以及降低成本。
- 軟硬件划分:在嵌入式系統中,有些功能適用於硬件實現,有些功能適用於軟件時間。比如通行算法具有高度的遞歸特性,非常適合硬件實現,可以減少大量功耗。因此,在設計前將系統划分為硬件和軟件部分反復優化得到最佳方案。
圖2.3 軟硬件划分流程
- 低功耗軟件:通過對軟件設計的優化,如語言設計上的優化,減少運行空間和時間復雜度。
- 處理器選擇:不同的處理器,對於功耗的改善不一樣,采用適合處理所有要求的數據位寬的處理器。
2.2 體系結構級降低功耗技術
高級門控時鍾:在同步數字系統中,時鍾分布貢獻了整個數字開關功率的絕大部分。在許多情況下可以通過門控時鍾將絕大部分不使用的電路關閉掉。
門控時鍾,以前講過組合門控時鍾,即圖2.4所示,由於其是在輸出不變時使觸發器的時鍾失效,因此他可以降低5%-10%的動態功效,而時序門控時鍾在不影響設計功能的情況下改變設計結構,其能夠減少連接到帶有門控時鍾的寄存器塊的設計部分的冗余切換。如圖2.5所示為時序門控時鍾。
圖2.4 組合門控時鍾
圖2.5 時序門控時鍾
不過時序門控時鍾電路最大的挑戰在於識別出流水線上“多余的”或者“不關心”的狀態,一旦這一工作完成,將會大大將降低功耗,約15%-25%,不過在多於16觸發器情況下使用更好。
- 動態電壓調節:在對頻率不敏感的應用階段中降低時鍾速率以及供電電壓可以在性能稍微降低下大幅降低功率。DVFS算法調節。
- 基於緩存的系統體系結構:對於大多數DSP應用,FFT算法要求頻繁訪問系統存儲器數據,這樣的存儲器效率不高,因此在系統存儲器與處理器之間增加緩存,可以大大提高FFT能效。
- 異步設計:時鍾消耗過大,有些 系統中會將時鍾移除,通過例如握手接口進行交互。
3. 寄存器傳輸級降低功耗(編寫設計規則)
在進行系統設計時,RTL完成時80%的功耗已經確定。后端流程不能解決所有功耗問題,因此需要系統性地直接從RTL中或從映射結果中尋找降低功耗的機會,微架構和RTL代碼風格對於動態與靜態功耗有極大的影響。
- 狀態機編碼與解碼:在各種狀態機編碼類型中,格雷碼是最適合降低功耗設計的。對於二進制編碼而言,在狀態轉換過程中可能有多個觸發器發生翻轉,這種狀態轉換過程比每次只有一位觸發器變換的格雷碼要消耗更多的能量。而且格雷碼編碼 也消除了狀態中組合等式存在毛刺的風險。如圖3.1所示,為分別用二進制與格雷碼進行設計編碼的狀態機。
圖3.1 低功耗設計中二進制編碼與格雷碼對比
除此之外,對大型狀態機進行分解,形成功能相同的兩個子FSM,之間 並沒有相互轉換關系,這樣由於在一個FSM激活時可以關閉另一個FSM,從而降低功耗。狀態機詳細設計 :狀態機設計.docx
- 二進制數表示法:在大多數應用中,用補碼表示二進制數往往比用有符號數更長使用,然而對於某些特殊應用,在切換過程中有符號數更具有優勢,如圖3.2為分別用補碼和有符號數表示0和-1。對於某些只使用積分器進行求和的應用,補碼表達法在0到-1的轉變發生時所有位發生變化 ,而有符號位只有兩個位發生,因此可以降低功耗。
圖3.2 補碼與有符號數
- 獨熱碼多路器:在RTL中有許多使用多路器的方法。“case”語句、“if”語句和狀態機一般都可以實現這種效果。表示多路器 (MUX)最常用的方法是使用二進制編碼,如圖5.17所示。
圖3.3 MUX選擇線路的二進制編碼
注意,如果MUX的每個輸入是多位總線,就會產生明顯 的開關過程 ,由此產生功耗 。如果對“case”條件進行編碼時按照圖3.4所示中的獨熱碼方式,輸出會更快更穩定,而且在初期就能將未選中的總線掩藏起來,因此實現 低功耗效果。
圖3.4 獨熱編碼case語句
- 除掉多余的轉換:在沒有設置默認狀態的情況下,總線數據常常會發生沒有意義的轉換。如果轉換后的數據未被真正采樣,那么它就是多余的,將這樣的轉換去掉顯著可以降低功耗。如圖3.5所示,系統讀入所有的輸入消耗了能量,但是輸出卻可能並沒有用到,因此這里面就有多余轉換的部分。
圖3.5 冗余轉換消耗了能量
如圖所示,如果load_out無效,則load_op也應該無效才不會有輸入卻沒有輸出,這樣才可以節省功耗。除此之外,只有SEL為0時,AB才有效 ,CD無效,這里又會浪費部分功耗。如圖3.6所示為壓縮后的電路圖。
圖3.6 使能ABCD,使其可以有效時輸出
除此之外,在點對多點式的數據總線切換過程中,也會發生冗余轉換的現象,如圖3.7所示
圖3.7 點對多式總線轉換
由於data_sel如果並不是全部有效的話,會導致部分數據data輸入消耗功耗,卻無用。如圖3.8為更改后的電路。
圖3.8 點對多式數據總線轉換
- 資源共享:對於涉及較多的算術運算設計,如果有同樣的操作在多處使用,必須避免相應的運算邏輯在多個位置重復出現。如圖3.9是沒有進行資源共享的例子。
圖3.9 未進行資源共享
使用重復的邏輯會增大面積,而且增加功耗。如圖3.10所示,通過 先 將其運算出來在進行復用可以 同樣實現上述功能且使用資源和面積更小。
圖3.10 邏輯復用后的代碼
- 行波計數器降低功耗:行波計數器的 缺點和限制在時鍾一欄已經講解,不過它用於降低功耗是十分有效的。下面仔細講講其面對的挑戰與可能解決的辦法和降低功耗效果。
如圖3.11所示,為行波計數器的電路結構和導致時鍾偏移的時序圖。
圖3.11 四級行波計數器中的相位延遲
由於越高級的輸出相位偏移累加越多,在時鍾進行過程中計數器可能會產生不正確的值,產生壞的影響。例如下圖3.12所示計數過程,數據由於 延遲 會從0111先變化為0110,0100,0000,最后才回變化為1000,而不是干凈的直接變化為1000。
圖3.12 計數器由於延遲變化
在許多的使用環境中,這種效應是在課接受 范圍內的,是因為行波是快速發生的。比如驅動發光二極管,但是在用於驅動多路選擇器或者索引指針時,就會有很大的問題。
通過對輸出數據進行時鍾低有效輸出,可以 避免行波計數器中毛刺的產生,如圖3.13所示。
圖3.13 避免毛刺產生的行波計數器
- 總線反轉:在當前數據和下一個數據之間的漢明距離大於N/2(N是總線寬度)時,就將下一個數據反向后傳輸,以減少總線上 出現的轉換后的位數量,這就是總線反轉編碼。針對減少大容量總線上的轉換次數很有效。如圖3.14所示。
圖3.14 總線反轉編碼
如圖3.15是反轉后與未反轉的數據轉換對比圖,可以看出反轉后的數據轉換次數減少不少。
圖3.15 反轉前后數據轉換次數對比
- 高活躍度網絡:處理這類設計的思路是將活躍度較高的網絡和活躍度較低的網絡區分開來,然后將他們置於邏輯雲中盡可能深的位置上。如圖3.16所示,邏輯雲為X1…..Xn和Y的函數,其中X1…..Xn的變化頻率較低,Y卻是高活躍網絡。因此更改邏輯雲,將低活躍與高活躍的X、Y分離,這樣得到的新邏輯 雲規模減少。
圖3.16 邏輯雲活躍度划分
- 啟用和禁用邏輯雲:在操作大規模邏輯雲(寬加法器、乘法器等)時,往往在需要的時候才將其打開。(加上使能信號進行控制)如圖3.17所示,只有觸發器B得到使能信號,邏輯雲一直打開,並不會停止,后圖中將使能信號控制邏輯雲啟動,從而降低邏輯雲不使用時功耗。
圖3.17 使能邏輯雲