<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設計應用 > 榨汁計策:榨出每一分電能

          榨汁計策:榨出每一分電能

          ——
          作者:Robert Cravotta 時間:2005-09-09 來源:EDN電子設計技術 收藏
          榨汁計策:榨出每一分電能
          系統(tǒng)的功率效率取決于軟、硬件設計決策與應用系統(tǒng)工作性能的匹配程度。
            要點
            ●   總功耗包括靜態(tài)功耗與動態(tài)功耗兩個部分。
            ●   硬件體系結構內的電源管理功能決定軟件降低功耗的方法。
            ●   你的軟件設計決策會對總功耗以及產品體積和成本產生重大影響。

            低功耗機制并不只是針對電池供電設備的設計約束條件,它也是許多高性能有線系統(tǒng)的一個主要考慮因素。在嵌入式設計中使用的處理器的功耗可能只占系統(tǒng)總功耗預算的較小一部分,但你對系統(tǒng)和軟件體系結構的抉擇可能會對總的處理性能、功率消耗和電磁干擾(EMI)性能產生重大影響。對電池供電的系統(tǒng)而言,較低的總功耗可能意味著你的設計得益于更長的電池壽命,亦即能使你選用較小的電池來減少系統(tǒng)的體積、重量和成本。
            對有線系統(tǒng)來說,較低的功耗可以減少系統(tǒng)對風扇和空調裝置的要求,因為系統(tǒng)自身產生的熱量較少。用這種方法降低冷卻要求,還可以使系統(tǒng)工作時噪聲較低,因為你可以使用體積較小的電源和較少的或噪聲較低的風扇來排除機架或機箱內的熱量。有線系統(tǒng)峰值功耗較低,能提高受熱點極限制約的元件密度,以增強系統(tǒng)的通道處理能力。如果你將設計功耗降低,你就能減小系統(tǒng)的總體尺寸與總成本。
            為使系統(tǒng)的功耗最佳,你必須使硬件的功耗特性和軟件體系結構抉擇與預期的系統(tǒng)工作性能相匹配。不管你的系統(tǒng)是連續(xù)工作的還是以事件響應方式工作的,都將迫使你設法使系統(tǒng)功率效率最大。連續(xù)工作方式的特點是處理時間長,空閑時間短,而事件響應工作方式的特點是處理時間短暫,空閑時間長。
             的總功耗包括兩個部分:靜態(tài)功耗和動態(tài)功耗。包括晶體管漏電流在內的靜態(tài)功耗,甚至在不工作時也會發(fā)生,并與任何開關活動無關。漏電流在所有 晶體管中都存在,它來源于反向偏置源極或漏極電流、漏極至源極弱反相電流以及隧道電流。采用好的工藝技術和設計單元庫可以有效地降低這些電流的強度。這些漏電流分量的總和便形成從電源通過晶體管流向接地的非理想電流,即使這些晶體管處于邏輯關斷狀態(tài)也不可避免(附文“處理漏電流問題”)。對于空閑時間長的事件響應式工作狀態(tài),靜態(tài)功耗要占系統(tǒng)總體功耗的很大一部分。
            動態(tài)功耗出現(xiàn)在和信號的邏輯狀態(tài)發(fā)生轉換時,功耗的大小與系統(tǒng)電壓、時鐘頻率以及開關活動相關。對連續(xù)工作的系統(tǒng)而言,動態(tài)功耗一般決定系統(tǒng)功率效率。你可以用以下公式粗略地估算系統(tǒng)的動態(tài)功耗:P=CFV2,式中 C 為動態(tài)電容,F(xiàn) 是開關頻率,V 是電源電壓。系統(tǒng)的動態(tài)電容取決加工工藝和設計單元庫,基本上是固定不變的。功率和電壓是二次方的關系,所以電源電壓的高低對功耗的影響最大。但是,最小可用電源電壓與電路的最高開關頻率相關,在相同的加工工藝下,較高的時鐘頻率就需要更高的相對電源電壓。
            功耗估算
            選用專為提高功率效率而設計的部件是降低功耗的良好開端。常用來比較處理器功率效率的基準是毫瓦/兆赫(mW/MHz)。使用這個基準時有個問題,就是它不能告訴你在每個時鐘周期內處理器完成多少工作。較低的毫瓦/兆赫值未必能表明一個處理器可能需要將時鐘頻率加倍,并消耗更多的功率才能完成與另一個處理器相同的工作。
            另一個替代功率效率基準的是毫瓦/百萬指令/秒。你使用這一基準時仍要小心謹慎,因為你可能不清楚基準得分是由哪些指令序列獲得的。例如,只執(zhí)行 NOP(空操作)指令時功耗可能最低,但這對實際應用毫無意義。執(zhí)行完全來自緩存或本機內存的算法所得到的基準得分可以表示一種較好的指令混合,而完全在本機內存以外工作則既是不可行的,也不適合于你的系統(tǒng)設計。
            在比較處理器的體系結構時,處理器制造商提供的處理器功耗典型值和最大值只有有限的參考價值,因為功耗可能會因執(zhí)行的指令、操作的數(shù)據、脫片工作數(shù)量以及動態(tài)功率管理功能的不同而相差很大。一個更有用的比較功耗的基準是毫瓦/任務;但這種量度很難實現(xiàn),特別是很難用完全一致的方式去比較兩種處理器體系結構。
            有些處理器廠家提供一些電子表格和分析工具,以幫助你根據自己的系統(tǒng)的特性和所采用的電源管理功能來進行更為有用的功耗估算。這些電子表格和分析工具盡管現(xiàn)在還比較簡陋,但可以讓你用人工的方法表征系統(tǒng)的特性、你將要使用的指令混合、脫片工作的類型和數(shù)量,以及使用器件內置電源管理功能的影響。電源管理功能包括:關斷不工作模塊的電源,限制時鐘信號向不工作模塊傳送,動態(tài)調整時鐘頻率,以及調整作為時鐘頻率函數(shù)的電源電壓。
            低功耗特性
            許多處理器都設有睡眠模式、待機模式或低功耗模式,用以關掉特定的模塊(如外設、處理器芯核以及時鐘發(fā)生器的晶振)的電源。有選擇地關斷這些模塊的電源,可使你將這些模塊的功耗(包括靜態(tài)功耗)降低到零,因為不關掉電源,它們做的是無用功。為了保存系統(tǒng)狀態(tài)數(shù)據,并避免重新起動,低功耗模式通常要保留對存儲器結構的供電。當一個模塊恢復供電時,在電源電壓和時鐘信號穩(wěn)定之前存在一個時間延遲。由于這一原因,在以下兩種情況下以這種方法關斷模塊電源是不切實際的:模塊的空閑時間小于穩(wěn)定時間,或模塊對事件的響應時間比穩(wěn)定時間更快。關斷模塊電源是一種強制性技術,無論 在BIOS、操作系統(tǒng)或應用級,它都要依靠軟件來根據通用或定制的運行狀態(tài)模型來作出決定。
            在一個器件的總功耗中,其時鐘樹的功耗可能占到一半,因為一般情況下,時鐘信號的頻率是任何其它信號的兩倍,而且它必須在器件內的任何地方傳送。有些系統(tǒng)經過分區(qū),將獨立的時鐘信號域供不同的模塊和元件使用,這樣的系統(tǒng)就不需要整體系統(tǒng)都以最高速度工作,因而可降低功耗。使用較低的時鐘頻率,不僅能減少功耗,而且還可以降低對高時鐘所需的邊沿快速率的要求,從而減小系統(tǒng)的EMI(電磁干擾)。
            時鐘門控是一種動態(tài)電源管理技術,它是與軟件無關,并對軟件是透明的;它可以防止時鐘信號傳輸?shù)较到y(tǒng)中當前不工作的模塊,從而減少動態(tài)功耗和 EMI。時鐘門控技術并不關斷某一功能塊的電源,因此它不會降低靜態(tài)功耗,但卻不受很長起動延遲時間的影響,而且它是按一個個時鐘周期起作用的。
            在有設計良好的分級時鐘分配機制情況下,時鐘門控技術能以精確的粒度等級,阻止時鐘傳送到不工作的部件,如總線、高速緩存、功能加速器和外設。時鐘門控實際能達到的粒度等級是有限的,因為它依靠控制邏輯來決定何時和是否沿某一時鐘分配分支路傳輸時鐘信號。因此,時鐘門控邏輯自身的功耗應該小于它減少的功耗。異步電路,亦即無時鐘電路,是另一種使低功耗和高性能保持平衡的專用方法,類似于同步系統(tǒng)中理想時鐘門控技術(附文“異步電路”)。

          DIY機械鍵盤相關社區(qū):機械鍵盤DIY




          關鍵詞: CMOS 電路

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();