博客專欄

EEPW首頁 > 博客 > CPU性能測試基準(zhǔn)(Dhrystone)學(xué)習(xí)

CPU性能測試基準(zhǔn)(Dhrystone)學(xué)習(xí)

發(fā)布人:電子禪石 時(shí)間:2023-08-22 來源:工程師 發(fā)布文章
簡介

Dhrystone是測量處理器運(yùn)算能力的最常見基準(zhǔn)程序之一,常用于處理器的整型運(yùn)算性能的測量。程序是用C語言編寫的,因此C編譯器的編譯效率對測試結(jié)果也有很大影響。

Dhrystone是由Reinhold P. Weicker在1984年提出來的一個(gè)基準(zhǔn)測試程序,其主要目的是測試處理器的整數(shù)運(yùn)算和邏輯運(yùn)算的性能。Dhrystone首先用Ada語言發(fā)布,后來Rick Richardson為Unix開發(fā)了用C語言編寫的Version 1.1,這個(gè)版本也成功的推動(dòng)了Dhrystone的廣泛應(yīng)用。
  Dhrystone標(biāo)準(zhǔn)的測試方法很簡單,就是單位時(shí)間內(nèi)跑了多少次Dhrystone程序,其指標(biāo)單位為DMIPS/MHz。MIPS是Million Instructions Per Second的縮寫,每秒處理的百萬級的機(jī)器語言指令數(shù)。DMIPS中的D是Dhrystone的縮寫,它表示了在Dhrystone標(biāo)準(zhǔn)的測試方法下的MIPS。
  關(guān)于DMIPS有一個(gè)不得不注意的點(diǎn),因?yàn)闅v史原因我們把在VAX-11/780機(jī)器上的測試結(jié)果1757 Dhrystones/s定義為1 DMIPS,因此在其他平臺(tái)測試到的每秒Dhrystones數(shù)應(yīng)除以1757,才是真正的DMIPS數(shù)值,故DMIPS其實(shí)表示的是一個(gè)相對值。

源碼獲取

核心程序下載 http://www.roylongbottom.org.uk/classic_benchmarks.tar.gz 

核心程序包下載后,在\classic_benchmarks\source_code\dhrystone2\下可找到源代碼。詳細(xì)文件目錄如下:

\classic_benchmarks\source_code\dhrystone2
                                          \dhry.h          --關(guān)于兼容性的原型定義
                                          \dhry_1.c        --主程序入口
                                          \dhry_2.c        --算法子程序
                                          
如果是移植到ARM Cortex-M平臺(tái)下裸系統(tǒng)運(yùn)行,一般只需要簡單修改dhry.h和dhry_1.c文件即可,Dhrystone本身并沒有太多移植工作,其源碼本是用作在PC上運(yùn)行的,而在嵌入式系統(tǒng)里運(yùn)行僅需要把一些文件I/O的相關(guān)代碼刪除即可,此外就是計(jì)時(shí)函數(shù)和打印函數(shù)的重實(shí)現(xiàn)。
MIPS: million instruction per second,表示每秒多少百萬條指令,如 10MIPS ,
        表示每秒一千萬條指令。
MIPS/MHz : 表示 CPU 在每 1MHz 的運(yùn)行速度下可以執(zhí)行多少個(gè)MIPS ,
        如 10MIPS/MHz,表示如果 CPU 運(yùn)行在 1MHz 的頻率下,每秒可執(zhí)行一千萬條指令,
        如果 CPU 運(yùn)行在 5MHz 的頻率下,每秒可執(zhí)行五千萬條指令。
DMIPS: Dhrystone MIPS,并非字面上每秒百萬條指令的意思。
     它是一個(gè)測量CPU運(yùn)行一個(gè)叫Dhrystone(整數(shù)運(yùn)算)的測試程序時(shí)表現(xiàn)出來的
     相對性能高低的一個(gè)單位(很多場合人們也習(xí)慣用MIPS作為這個(gè)性能指標(biāo)的單位)。
缺陷
  • 它的代碼與具有代表性的實(shí)際程序代碼并不相同。

  • Dhrystone代碼量過小,在現(xiàn)代CPU中,它能夠被放進(jìn)指令緩存中,所以它并不能嚴(yán)格的測量取指性能。

  • 它易受編譯器影響。

舉例來說,在Dhrystone中有大量的字符串復(fù)制語句,用來測量字符串復(fù)制的性能。然而Dhrystone中字符串的長度不變,并且均開始于自然對齊的邊界,這兩點(diǎn)便與真實(shí)的程序不同。因此一個(gè)優(yōu)化性能好的編譯器能夠在去掉循環(huán)的情形下通過一連串字的移動(dòng)替代對字符串的復(fù)制,這將會(huì)塊很多,可能會(huì)高達(dá)30%。所以我們在編譯測試程序的時(shí)候,如果指定編譯器的優(yōu)化等級的話,我們會(huì)發(fā)現(xiàn)在不同的優(yōu)化登記下,表現(xiàn)出來的性能指標(biāo)會(huì)有差別,優(yōu)化等級越高,性能指標(biāo)越好

*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。



關(guān)鍵詞: Dhrystone

技術(shù)專區(qū)

關(guān)閉