iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0
自我挑戰組

System Software Introduction系列 第 27

System Software MISC – Benchmark​

  • 分享至 

  • xImage
  •  

System software developer需要比較CPU之間的效能,藉此了解system software在不同CPU上的效能,更進一步決定是否要更換hardware platform的CPU,我們今天會介紹在不同CPU之間比較效能的工具: Benchmark。

What is Benchmark

Definition

Benchmark是一種藉由量測程式運行時間以比較CPU效能的application software。

How does Benchmark Work

Benchmark包含了測試程式與計時功能兩大部分

  • 測試程式
    • 將一部分在系統上面運行的software行為模式 (例如: 整數運算、資料存取、條件分支(if, else)、無條件分支 (return, function call)執行的分布、頻率),撰寫到一支程式中,藉此模擬software使用CPU的行為
    • 測試程式是benchmark的核心,有公開的通用benchmark測試程式,也有developers會為特別的software行為模式
  • 計時功能
    • 紀錄程式執行的開始與結束時間,藉此算出測試程式的執行時間 (例如: 秒數、CPU clock數量)
  1. 將同樣的benchmark source用針對不同CPU的compiler toolchain build
  2. 放到使用不同CPU的hardware platform上執行
  3. 可以得到這種benchmark當中的software行為模式在哪一種CPU上面執行需要的時間較短,也代表這種行為模式下哪一種CPU效能比較好

例如: 有一個系統常需要運作遞迴函數,可以選用一種遞迴函數阿克曼函數作為benchmark,計算執行一次阿克曼函數需要多少CPU clock數量

What are the challenges of Benchmark

The Specifically Optimization for Benchmark

有些CPU製造商提供的system software會辨認benchmark程式,特意對其compilation進行特殊最佳化或在運作時提升CPU clock rate,特殊的optimization造成的benchmark結果會使benchmark誤判CPU有較佳的效能而誤導分析比較。

Benchmark Cannot Mimic Real Software Behavior

Benchmark雖然最初是模仿software的行為模式開發,但software長期的開發流程可能會和benchmark的行為有越來越大的差異,如果benchmark和software的行為模式差距過大,則benchmark的效能測試結果就無法代表software實際上的效能。

Benchmark Doesn’t Suffer the Overhead of System Software

Benchmark通常是單一程式單獨執行,鮮少和system software、其他application software互動。因為缺乏上述互動,benchmark通常難以包含system software造成的overhead。

The Introduction of Commonly Used Benchmark

Dhrystone

  • 一支1984年發明的古老benchmark程式,主要測試的目的是CPU的整數預算能力
  • 執行Dhrystone測試得出來的CPU效能分數稱為DMIPS (Dhrystone),1 DMIPS表示CPU在1秒內可以執行1757次- - - Dhrystones內的測試程式
    • 為了消除CPU clock rate的影響,將DMIPS除以CPU clock (MHz)可以得出DMIPS/MHz,這就是CPU的效能指標
  • Dhrystone source code編寫的年代較早,所以source code很容易被現代的compiler做靜態分析而做出對應的特殊optimization而影響執行時間,讓DMIPS/MHz的數值實際上多包含了compiler optimization能力的因素在內

CoreMark

  • 一支2009年由EEMBC(嵌入式系統微處理器效能基準評測協會)提供的benchmark,主要測試CPU在矩陣操作、CRC運算、list操作(pointer)、state machine(if else)等情況中的整數運算能力
  • CoreMark給出測試得到的分數稱為CoreMark,1 Coremark表示CPU在1秒內可以執行完1次CoreMark,除以CPU clock rate後的分數是Coremark/MHz
  • Coremark source code避免了compiler optimization造成的影響,可以較精準的量測CPU效能

上一篇
Build Environment Setup in Build System​
下一篇
System Software MISC – Static Link & Dynamic Link​
系列文
System Software Introduction30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言