SOC不同層如何進行低功耗設計?芯片功耗由哪些組成?
低功耗是現在的設計追求之一,通過產品之間的比較可以知道,同等能力的產品,如果具備低功耗特點,價格往往更高。為增進大家對功耗的認識,本文將基于兩點介紹功耗:1.SOC不同層次低功耗設計,2.芯片功耗組成。
一、SOC不同層次的低功耗設計
功耗同樣是所有的電器設備都有的一個指標,指的是在單位時間中所消耗的能源的數量,單位為W。電路中指整機或設備所需的電源功率。不過復印機和電燈不同,是不會始終在工作的,在不工作時則處于待機狀態,同樣也會消耗一定的能量(除非切斷電源才會不消耗能量)。因此復印機的功耗一般會有兩個,一個是工作時的功耗,另一個則是待機時的功耗。
在SOC中,影響系統功耗的參數調整主要是從系統級到物理級來進行。下面將針對各種不同層次中較為有效的設計方法進行闡述與探討。
主要方法有三:
1. 軟硬件劃分
軟硬件劃分是從系統功能的抽象描述著手,把系統功能分解為硬件和軟件來實現。通過比較采用硬件方式和軟件方式實現系統功能的功耗,得出一個比較合理的低功耗實現方案。由于軟硬件的劃分處于設計的起始階段,所以能為降低功耗帶來更大的可能。
2. 功耗管理
功耗管理的核心思想是設計并區分不同的工作模式。其管理方式可分為動態功耗管理和靜態功耗管理2種。動態功耗管理的思想就是有選擇地將不被調用的模塊掛起,從而降低功耗。靜態功耗管理是對待機工作模式的功耗進行管理,它所要監測的是整個系統的工作狀態,而不是只針對某個模塊。如果系統在一段時間內一直處于空閑狀態,則靜態功耗管理就會把整個芯片掛起,系統進入睡眠狀態,以減少功耗。
3. 軟件代碼優化
軟件代碼的功耗優化主要包括:①在確定算法時,對所需算法的復雜性、并發性進行分析,盡可能利用算法的規整性和可重用性,減少所需的運算操作和運算資源。②把算法轉換為可執行代碼時,盡可能針對特定的硬件體系結構進行優化。例如,由于訪問寄存器比訪問內存需要更少功耗,所以,可以通過合理有效地利用寄存器來減少對內存的訪問。③在操作系統中充分利用硬件提供的節電模式。隨著動態電壓縮放技術的出現,操作系統可以通過合理地設置工作狀態來減少功耗。
二、芯片功耗的組成
1. core power
功耗的組成包含RAM、ROM、時鐘樹(clock tree)和核心邏輯電路(Core logic)等四部分,下面依次來分析。
1)RAM
RAM功耗的計算是項復雜的任務,幸運的是,memory compiler可以為我們進行此項工作。關鍵點在存取每個端口的速率,這可以通過考慮存取pattern類型得到,或者通過仿真得到。建議在設計初期即生成不同參數(寬度,深度,速度,port數)的RAM/ROM的功耗數據,以利于設計探索。
2)時鐘樹
時鐘樹的功耗占到整個芯片功耗的40%~60%,因為它的高活動率(100%)和正負邊沿均消耗電力。
其中,電容包含寄存器的電容,驅動單元的電容和連線電容三部分。
3)核心邏輯電路
定義核心邏輯電路功耗為除時鐘樹外的組合與時序單元消耗的電力。由兩部分組成:
leakage current
capaciTIve loads
4)宏單元(macro cell)
多數芯片包含PLL等模擬macro,可以從庫提供商的數據手冊找到其功耗參數。設計者可以通過切分系統模式關閉不需工作的模塊,以減小功耗。
2. IO power
IO功耗包含IO單元、外部負載、外部終端等。因為需要驅動板級的連線,IO的電容會是內部單元的數百倍量級,因此消耗較多的電力。有時候,IO的功耗可以占到整體功耗的很大比例,系統架構可能因之改變,如:重新定義系統的劃分,以減少芯片-芯片的連接;選擇不同的IO接口協議,以減少能量消耗。IO功耗通常由系統架構,接口帶寬與協議要求決定。一旦庫選定,設計者可以優化的空間很小,但是核心的功耗是設計者可以減小的,在后面的篇幅中,我們將以核心功耗的估算與優化作為主題。
