嵌入式系統(tǒng)中外圍器件的能耗估算方法
能耗估算的方法
如圖1所示,典型的嵌入式系統(tǒng)由計算機、存儲器、外圍器件和功率驅(qū)動器組成。本文介紹了用于外圍器件的通用的精確到每個周期的能耗和性能模型。目前的系統(tǒng)中有兩種通常所使用的外圍操作類型:1. 在CPU中采用特定的I/O指令來激活外圍器件;2. 采用被影射的存儲器I/O,此時,一部分地址空間被分配到I/O驅(qū)動器,處理器通過讀取和寫入這些地址和與器件通訊。圖2所示為采用不同通訊方案的外圍器件的抽象行為。
外圍器件有兩種方式將信號返回到CPU:輪詢和中斷。
1. 輪詢方式
外圍器件將數(shù)據(jù)寫入狀態(tài)寄存器并且處理器會周期地檢查狀態(tài)寄存器。輪詢的優(yōu)點是易于實現(xiàn)并且處理器始終處于控制狀態(tài),其缺點是輪詢會導致CPU時間開銷大且能耗增加。作為存儲器讀和狀態(tài)檢查循環(huán)中的一個環(huán)節(jié),輪詢是在一個精確到每個周期的仿真器內(nèi)實現(xiàn)的,輪詢要進行到所需的外圍器件狀態(tài)被滿足時才會結(jié)束。在這個過程當中CPU一直處于工作狀態(tài)。
2. 中斷方式
當外圍器件要占用處理器周期時,外圍器件產(chǎn)生I/O中斷,其優(yōu)點在于僅僅當需要的時候,才會占用處理器。相應(yīng)地需要特殊的硬件來創(chuàng)建和檢測中斷。此外,對每一個中斷,處理器都要存儲其狀態(tài),這是在具有一個中斷程序和一個在仿真器內(nèi),延遲被精確到每個周期的仿真器上實現(xiàn)的。在被中斷之前,處量器將會處于空閑狀態(tài)或運行其它的任務(wù)。
中斷的一個常用案例是直接存儲器存取(DMA)。如果處理器正好是內(nèi)存與外圍器件之間的傳媒,DMA就非常有幫助,在這樣的情況下,DMA可使內(nèi)存與外圍器件直接通信,DMA控制器是通信的主控單元,且通訊在處理器外部完成,當傳輸完成后處理器再次處于空閑狀態(tài)。
我們實現(xiàn)了一個通用存儲器映射外圍器件能耗模型,因為目前系統(tǒng)實現(xiàn)中存儲器映射I/O的應(yīng)用非常普遍。此外,還實現(xiàn)了處理器與外圍器件間的輪詢、基于中斷的通訊和DMA通信。處圍器件的能耗與性能模型被輸入到ARMulator ,它是一種商用ARM處理器的性能仿真器。向ARMulator增加新的模塊的時候,設(shè)計工程師必需為每一個系統(tǒng)元件創(chuàng)建簡單的精確到每個周期的功能和性能模型,然后,應(yīng)用軟件可由所提供的編譯器交叉編譯,并且編譯后的軟件被載入仿真器,從而取得性能統(tǒng)計信息,要加入每個元件的精確到每個周期的模型,能耗模型是以元件制造商所提供的數(shù)據(jù)表為根據(jù)創(chuàng)建的。我們引用了Simunic et. al. 提出的能耗模型。
仿真器結(jié)構(gòu)如圖1所示。在每個周期中,ARMulator向外部模塊發(fā)送有關(guān)處理器狀態(tài)、數(shù)據(jù)和地址總線值的信息。處理器周期可分為兩組:1. 當處理器正在運行的工作周期;2. 當處理器正在等待內(nèi)存和外圍器件訪問的空閑周期。利用由ARMulator提供的有關(guān)處理器狀態(tài)、地址和數(shù)據(jù)總線的信息,每個模塊確定其狀態(tài)和在該狀態(tài)下的能耗。每一個總線的開關(guān)行為以每個周期為單位來計算??偩€上的能耗以總線電容和開關(guān)行為來計算。兩種功率器件都由功效表來計算能耗。如等式1所示,每一個周期的總能耗是各個元件能耗值的總和。
能耗和性能Profiler工具用于獲取特殊硬件單元及總系統(tǒng)的每個軟件程序段的能耗的分布情況。在每個周期中, Profiler工具決定當前執(zhí)行程序并將這一周期與前一周期間的能耗添加到該程序段的能耗中。Profiler工具周期頻率在代碼執(zhí)行前由用戶確定。最后,Profiler以百分數(shù)形式報告能耗分布情況。
評論