• 沒有找到結果。

第 4 章 記憶體功率分析與評估

4.3 應用程式功率量測

4.3.1 DRAMsim 功率量測方法

先前提到的 DRAMsim 可以模擬現存的記憶體硬體裝置,諸如 SDRAM、DDR、

DDR2、DDR3 SDRAM 等,它利用一配置檔案(Configure File)當作參數輸入來 指出模擬的記憶體裝置結構,如表格 4-4 所示。檔案內容提供了記憶體型態資訊,

包括 datarate、channel 數、rank 數、bank 數等,利用這些參數可以調配出預期的 記憶體裝置。另外要使用 DRAMsim 量測功率,還必須提供另一個功率的配置檔,

如表格 4-4 所示,配置檔包含記憶體芯片的工作電壓以及記憶體不同狀態時的電流 等。兩者搭配即可利用 DRAMsim 模擬出 DRAM 裝置並且取得需要的時間及功率 資訊。我們透過設定這兩個檔案,將目標裝置設定為一 50Mhz 的 2GB SDRAM 記

億體,並根據記憶體製造商 Micron[30]提供的電力規格當作功率設定的標準,利用 此規格當作我們的目標記憶體裝置並進行模擬。

表格 4-4 DRAMsim 之記憶體配置檔案

表格 4-5 DRAMsim 之功率資訊配置檔案

# DDR SDRAM Configuration and Data Sheet Parameters #

# corresponding to 512Mb 400 MHz x8 3-4-4 spd file # density 512 # Mb

#DQ 8 # per chip DQS 1 # per chip max_VDD 2.7 # V min_VDD 2.5 # V IDD0 155 # mA IDD2P 5 # mA IDD2F 55 # mA IDD3P 45 # mA IDD3N 60 # mA IDD4R 190 # mA IDD4W 195 # mA IDD5 11 # mA

type sdram datarate 50

channel_count 1 channel_width 4 PA_mapping_policy sdram_close_page_map row_buffer_policy open_page

rank_count 4 bank_count 8

DRAMsim 對於功率的模擬方法是根據記憶體裝置透過位址記錄被使用的情 況來計算,位址記錄的一個記憶體存取指令如”0x00000E98 READ 396093”,會被 記憶體微控制器(Microcontroller)分解成數個記憶體操作指令,如 Row Access Strobe、Column Access Strobe、Precharge 等,透過統計這些一連串實際針對記憶 體裝置進行操作的指令,並累計記憶體裝置在各種狀態的時間比例,乘上在該狀 態所須的功率,來估計所消耗的功率。記憶體裝置基本上分成四大狀態,如圖表 4-2,

分別為 Active standby、Active powerdown、Precharge standby、Precharge powerdown,

其中 standby 與 powerdown 的區別在於記憶體的 CKE(Clock enable signal)是否 為 active,若 CKE 為 low,記憶體裝置的輸入緩衝區是關掉的,此時並不接受存取 指令,裝置的狀態基本上是 powerdown 的。Active 與 Precharge 的差別則是取決於 snese amplifier 中是否有要被讀取的資料,如果有,則在 Active State,沒有的話則 在 Precharge State。如果裝置狀態在 Active,則可以進行讀寫動作,所以狀態 Active 中又分出四種狀態,分別為 Write、Read、Active 與 Termination,這四種狀態基本 上是一體的,在 Active Standby 時接收到記憶體操作指令,必先從 Active 開始,將 資料送出到 sense amplifier,才可以進行讀或寫,最後結束該次的存取則是 termination power。記憶體處在各種狀態上就會有相對應的功率值,在根據在各狀 態上的時間比例,綜合計算並加總出最後的總功率。

圖表 4-2 DRAMsim 中功率模擬之記憶體狀態

4.

圖表 4-5 函數 A 功率估量示意圖

透過上述範例描述的方法,我們可以得到目標應用程式所有函數的功率及能 耗,儘管可能是較複雜的呼叫路徑。得到所有函數功率資料,搭配程式效能評測 所得到的函數呼叫次數,可以進一步的估算出整個應用程式的平均功率,計算方 式如下:

ƒ E(Func(i)) =P(Func(i)) * T(Func(i)) * Number of function calls

ƒ E(Total)=∑E(Func(i))

ƒ P(Total) = E(Total) / T(Total)

其中 i 從 1 到 n,n 代表應用程式中的函數個數,E(Total)及 P(Total)則為整個應用 程式的能耗及功率。

利用 SoC Designer Simulator 中所提供的軟體評測工具,它提供了函數的呼叫 路徑圖,並且可以得到函數的起始點時間,如圖表 4-6 所示,搭配此資訊,我們 在模擬應用程式對記憶體系統操作指令的同時,標記出該函數的起始點,再利用 上述範例提出的方法,即可完成函數層級的功耗量測。

圖表 4-6 SoC Designer 軟體評測工具提供函數呼叫路徑功能

在量測各函數功率的過程中,我們發現在各個應用程式裡,擁有大部分相同 的函數,這些函數通常為 ARM 標準 C 語言函式庫裡的函數,包括了許多初始化 及 配 置 的 程 序 , 尤 其 同 一 類 型 的 應 用 程 式 如 susan.corner 、 susan.edge 、 susan.smoothing,同屬於圖像處理的應用程式,呼叫到許多相同的浮點數函數庫中 的例行程序(Routine Process),如_dcmpge、_dcmple 等,這些程序的行為固定,

對應的記憶體操作指令也大致相同,基於這樣的原因,我們將這些函數對記憶體 系統產生的功率建成一個函數功率資料庫(Functions Power Data Base),簡稱 FPDB,

供應我們建構應用程式的功率模型。共用函數功率資料庫有一些優點,我們可以 不必對每一個應用程式的每一個函數進行功率量測,甚至可以進行預測不同應用 程式或是同一應用程式但不同工作集(Working Set)的功率情形。

加入功率函數資料庫後,整個效能及功率模型建置流程如圖表 4-7。

另外,我們在架構中增加一個功率估算模組,搭配函數功率資料庫,隨著應 用程式模型的執行,即時的處理的平均功率以及能量消耗資訊並記錄下來,希望 可以提供程式執行時的功率變化情形。目前我們建置的函數功率資料庫可供 stringsearch、susan.corner、susan.edge、susan.smoothing 這些應用程式使用,在下 章節中將討論如何評估的這樣實作方法以及其準確度。

圖表 4-7 效能及功率模框架境示意圖

第5章 實驗及結果探討

上一章中說明了我們如何利用 DRAMsim 取得目標應用程式中各函數的功率 資訊,然後透過函數層級的功率資訊估測整個應用程式的功率,估計這樣的作法 或許會有一些誤差,需要設計一驗證方法評估其誤差率。5.1 節中說明實驗的平台、

步驟以及使用的測試程式,5.15.2 將分析與探討實驗的數據。

5.1 實驗平台及步驟

我們實驗的目標記憶體系統為一時脈為 50Mhz 的 SDRAM,搭配時脈同為 50Mhz 的 ARM7 系列處理器組成系統平台,詳細的記憶體架構參數如表格 5-1 所 示。

表格 5-1 目標記憶體系統之架構

DRAM Type sdram Bank count 8

Data rate 50Mhz Row count 8192

Channel count 1 Column count 2048

Channel width 4 Row buffer policy Open page

Rank count 4

表格 5-2 Mibench 測試程式與指令數 workloads IC

susan.corners 1.06M susna.edges 1.83M susan.smoothing 24.89M string serach 0.15M

表格 5-2 為本次實驗所使用的測試程式,由 Mibench 中選出 stringsearch 及 susan 系列程式,在 5.2 中會分別介紹及討論。

圖表 5-1 為實驗步驟流程圖,分別有左右兩種得到記憶體系統功率資訊的流 程:

1. 右邊的即為第四章中所提到的,利用 DRAMsim 訓練測試程式得到的函 數層級功率資訊(Step 1a.),建立成功率資料庫(Step 1b.),功率資料庫將提 供原本的應用程式模型參考,使應用程式模型中包含各種行為資訊,其 中當然包括時間與功率(Step 1c.),最後再放入整個模擬框架(Step 1d.),得 到整個應用程式的效能與功率資訊(Step 1e.)。

2. 左 邊 流 程 圖 即 為 將 欲 模 擬 的 目 標 應 用 程 式 放 入 ARM SoC Designer Simulator(Step 2a.),並利用其提供的評測工具得到完整的記憶體存取位址 記錄(Step 2b.),然後直接將整個記憶體存取記錄透過 DRAMsim 進行模擬 (Step 2c.),模擬完畢後即可取得該程式對記憶體系統所造成的功率能量消 耗資訊(Step 2d.)。

3. 最後我們將左邊流程所得到個功率資訊當作標準,與右邊流程的結果做 比較及驗證(Step 3a.),評估函數層級功率採集的正確性以及函數功率資料 庫的可行性。在 5.2 中將探討這部分的結果。

圖表 5-1 實驗與驗證流程圖

5.2 功率量測準確度探討

目前的函數功率資料庫能支援的應用程式包括 stringsearch、susan.corner、

susan.edge、susan.smoothing,透過上小節的實驗流程,得知實作方式的誤差。5.2.1 及 5.2.2 將分別介紹並討論這兩類測試程式的相關實驗結果。

5.2.1 Stringsearch

圖表 5-2 為應用程式 stringsearch 的結果,stringsearch 為一字串比對程式,輸 入為欲比對的字串,若與預設的字串集合相同,則會被辨識出並標記。我們分別 使用不同大小的工作集合(Working Set),也就是輸入不同數量的字串作測試。可 以看到誤差範圍介於 20mW 至 100mW 之間,圖表 5-3 為其誤差圖表,誤差範圍 約為 2% ~ 5%之間,可以發現針對不同的工作集合,功率的模擬及預測是可以被 接受的。圖表 5-4 中則為不同工作集合所產生的能量消耗,隨著工作集合變大,

記憶體能量消耗也呈比例上升。

Step 1a.

Step 1b.

Step 1c.

Step 1d.

Step 1e.

Step 2a.

Step 2b.

Step 2c.

Step 2d.

Step 3a.

圖表 5-2 應用程式 stringsearch 針對不同工作集合的功率

圖表 5-3 應用程式 stringsearch 針對不同工作集合的誤差

圖表 5-4 應用程式 stringsearch 針對不同工作集合之能量耗損

50 100 200 300 400 500 1000

DRAMsim 2367 2361 2369 2359 2385 2369 2369

Our simulation 2273 2313 2409 2276 2284 2269 2271

2150

Stringsearch --- Number of Input Strings

Power Comparison between DRAMsim and Our Simulatior

50 100 200 300 400 500 1000

Error 4% 2.06% -1.69% 3.62% 3.16% 4.21% 4.14%

-10%

Stringsearch --- Number of Input Strings

Error

50 100 200 300 400 500 1000

Energy Consumption 4.46E+0 8.92E+0 1.92E+1 2.74E+1 3.63E+1 4.61E+1 1.22E+1 0.00E+00

Energy Consumption (mW*Cycles)

Stringsearch --- Number of Input Strings

Energy Consumption

5.2.2 Susan 系列 stringsearch 及 susan 系列應用程式,誤差率皆在可接受的範圍,證明了功率函數資 料庫的可用性。

DRAMsim 1981 2315 2124 2270 2172 2242

Our Simulation 2032 2215 2113 2201 2165 2195

1800

Power Comparison between DRAMsim and Our Simulator

圖表 5-6 susan package 的功率模擬誤差

Error 2.57% 4.30% 0.52% 3.04% 0.33% 2.11%

0.00%

圖表 5-7 stringsearch 功率監測比較圖

DRAMsim Our Simulation

1 31 61 91 121 151 181 211 241 271 301

DRAMsim 0.0E+00 4.7E+08 9.3E+08 1.4E+09 1.8E+09 2.3E+09 2.8E+09 3.2E+09 3.7E+09 4.2E+09 4.6E+09 Our simulation 0.0E+00 4.4E+08 8.9E+08 1.3E+09 1.8E+09 2.2E+09 2.7E+09 3.1E+09 3.6E+09 4.0E+09 4.5E+09

0.0E+00

在 susan.corner 這個應用程式也可以看到類似的情形,DRAMsim 與我們的模 擬結果比較,在程式剛開始時的功率估量差異較大如圖表 5-10,大約在第 90 個採 樣點開始收斂,此時大約為程式執行前三分之ㄧ處(圈起處),圖表 5-11 中可以看 見能量消耗預估也在此處差異最大,圖表 5-12 為根據圖表 5-11 計算出的兩者誤 差,在程式執行前三分之ㄧ時誤差在-20%至 20%之間波動,隨著程式的執行,逐 漸收斂,最後約在-3%左右。經過探討以及相關研究指出,透過蒐集及取樣程式特 性而建構的模擬量測,發生的現象就如我們的模擬所示,剛開始只是部分採樣所 產生的效果,有可能會主宰當時的輸出資訊,待採樣點夠多或是足夠平均時,即 可反映真實情形。在我們的模擬環境中,每一個函數就是相當於採樣點,待模擬 完全部的函數,即可反映整個應用程式之功耗行為。

圖表 5-10 susan.corner 功率監測比較圖

圖表 5-11 susan.corner 累積能量消耗比較圖

第6章 結論及未來展望

在此論文中,我們改進一個系統行為層級模擬環境,使之得以快速評估應用 程式在不同系統結構上的效能以及記憶體系統功率資訊。模擬速度上,比起精確 的週期指令集模擬器 ARM SoC Designer,抽象化應用程式行為與硬體結構作系統 層級的模擬有速度上的優勢,平均約有 15 至 25 倍的提升;但是誤差也會隨著硬 體架構的複雜化提升,雙核心架構的誤差約達 8.16%,四核心則為 11.78%,雖有 些微提升,但仍在可作為參考的範圍之內,這是未來可以探討改進的空間。

另外在功率方面,我們提供函數層級的記憶體系統功率模型與能量相關資訊,

另外在功率方面,我們提供函數層級的記憶體系統功率模型與能量相關資訊,

相關文件