新闻  |   论坛  |   博客  |   在线研讨会
CPU性能测试基准(Dhrystone)学习
电子禅石 | 2023-08-22 13:21:53    阅读:16896   发布文章

简介

Dhrystone是测量处理器运算能力的最常见基准程序之一,常用于处理器的整型运算性能的测量。程序是用C语言编写的,因此C编译器的编译效率对测试结果也有很大影响。

Dhrystone是由Reinhold P. Weicker在1984年提出来的一个基准测试程序,其主要目的是测试处理器的整数运算和逻辑运算的性能。Dhrystone首先用Ada语言发布,后来Rick Richardson为Unix开发了用C语言编写的Version 1.1,这个版本也成功的推动了Dhrystone的广泛应用。
  Dhrystone标准的测试方法很简单,就是单位时间内跑了多少次Dhrystone程序,其指标单位为DMIPS/MHz。MIPS是Million Instructions Per Second的缩写,每秒处理的百万级的机器语言指令数。DMIPS中的D是Dhrystone的缩写,它表示了在Dhrystone标准的测试方法下的MIPS。
  关于DMIPS有一个不得不注意的点,因为历史原因我们把在VAX-11/780机器上的测试结果1757 Dhrystones/s定义为1 DMIPS,因此在其他平台测试到的每秒Dhrystones数应除以1757,才是真正的DMIPS数值,故DMIPS其实表示的是一个相对值。

源码获取

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

核心程序包下载后,在\classic_benchmarks\source_code\dhrystone2\下可找到源代码。详细文件目录如下:

\classic_benchmarks\source_code\dhrystone2
                                          \dhry.h          --关于兼容性的原型定义
                                          \dhry_1.c        --主程序入口
                                          \dhry_2.c        --算法子程序
                                          
如果是移植到ARM Cortex-M平台下裸系统运行,一般只需要简单修改dhry.h和dhry_1.c文件即可,Dhrystone本身并没有太多移植工作,其源码本是用作在PC上运行的,而在嵌入式系统里运行仅需要把一些文件I/O的相关代码删除即可,此外就是计时函数和打印函数的重实现。
MIPS: million instruction per second,表示每秒多少百万条指令,如 10MIPS ,
        表示每秒一千万条指令。
MIPS/MHz : 表示 CPU 在每 1MHz 的运行速度下可以执行多少个MIPS ,
        如 10MIPS/MHz,表示如果 CPU 运行在 1MHz 的频率下,每秒可执行一千万条指令,
        如果 CPU 运行在 5MHz 的频率下,每秒可执行五千万条指令。
DMIPS: Dhrystone MIPS,并非字面上每秒百万条指令的意思。
     它是一个测量CPU运行一个叫Dhrystone(整数运算)的测试程序时表现出来的
     相对性能高低的一个单位(很多场合人们也习惯用MIPS作为这个性能指标的单位)。
缺陷
  • 它的代码与具有代表性的实际程序代码并不相同。

  • Dhrystone代码量过小,在现代CPU中,它能够被放进指令缓存中,所以它并不能严格的测量取指性能。

  • 它易受编译器影响。

举例来说,在Dhrystone中有大量的字符串复制语句,用来测量字符串复制的性能。然而Dhrystone中字符串的长度不变,并且均开始于自然对齐的边界,这两点便与真实的程序不同。因此一个优化性能好的编译器能够在去掉循环的情形下通过一连串字的移动替代对字符串的复制,这将会块很多,可能会高达30%。所以我们在编译测试程序的时候,如果指定编译器的优化等级的话,我们会发现在不同的优化登记下,表现出来的性能指标会有差别,优化等级越高,性能指标越好

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
属于自己的技术积累分享,成为嵌入式系统研发高手。
推荐文章
最近访客