博客
关于我
痞子衡嵌入式:微处理器CPU性能测试基准(Dhrystone)
阅读量:519 次
发布时间:2019-03-08

本文共 1739 字,大约阅读时间需要 5 分钟。

Dhrystone基准测试与嵌入式性能评估

大家好,我是痞子衡,今天我想和大家聊聊一个在嵌入式系统中很重要的性能测试标准——Dhrystone。

Dhrystone的历史与意义

Dhrystone是由Reinhold P. Weicker于1984年提出的一种嵌入式系统处理器性能测试标准。它经过数 decade的发展,成为了评估CPU性能的重要工具。相比之下,Dhrystone与其他嵌入式性能测试标准如Linpack、Whetstone等形成了经典的性能测试标准集。这些标准不仅帮助开发者了解处理器性能,还为硬件选择提供了重要依据。

Dhrystone与其他性能测试标准

Dhrystone和Whetstone名字很相似,但它们的设计目的却有所不同。Whetstone于1972年开发,旨在模仿60年代的程序算法,反映当时的数字计算方向。而Dhrystone的设计目标则更明确:它不包含浮点运算,而专注于整数运算和逻辑运算。这一点使得Dhrystone在嵌入式系统中更具特殊性。

Dhrystone的核心功能

Dhrystone的测试方法简单:衡量单位时间内运行的Dhrystone程序的数量,单位为Dhrystone/MHz(DMIPS)。MIPS是 Millennium Instructions Per Second(百万每秒机器语言指令数)的简称。Dhrystone是用C语言实现的,因此其测试结果更贴近实际应用场景。

值得注意的是:Dhrystone测试结果中的DMIPS是相对值。因为在VAX-11/780这些旧有机器上,1757 Dhrystones/s被定义为1 DMIPS,因此需要根据实际测试环境进行调整。

如何获取Dhrystone程序

Dhrystone的最新版本是2.1,主要用于PC平台上。由于该项目没有官方页面,获取源代码需要通过第三方渠道。Roy Longbottom的网站是一个不错的选择,他收集了大量嵌入式性能测试工具和结果,其中包括Dhrystone源码。下载后,可以在classic_benchmarks\source_code\dhrystone2目录下找到相关文件。

Dhrystone程序的编译与配置

Dhrystone程序的配置非常简单,唯一的主要工作是处理平台的寄存器支持(例如是否支持寄存器关键字REG)。主要的修改工作发生在编译和链接阶段,例如移除无关的文件操作代码,以及实现适配目标平台的计时函数和打印函数。

Dhrystone程序的运行与意义分析

让我们深入分析Dhrystone的主程序main函数。

void main (int argc, char *argv[]) {    // 定义和初始化关键变量    int Reg_Number, Run_Computing;    REG int Reg_Number;    REG int Run_Computing;    // 初始化计时函数    set_time(); // 初始化时间测量

程序循环设置每次运行次数并执行核心算法,最后通过get_time()获取执行时间。最终测试结果会显示每秒Dhrystone程序的运行数量和VAX MIPS等性能指标。

读取与解读测试结果

在优化完成后,运行Dhrystone程序并解读结果即可获取性能数据。例如,核心数据包括每秒Dhrystone计数和VAX MIPS等级。这些数据能够帮助开发者快速评估处理器的整数处理能力。

Dhrystone的应用价值

通过历史数据可以看出,Dhrystone跑分榜受到广泛关注。Roy Longbottom的网站提供了丰富的处理器性能对比数据,这为设备选择提供了重要参考依据。

Dhrystone的经典地位使其成为嵌入式开发的重要工具之一。它不仅帮助开发者评估CPU性能,还推动了硬件加速和嵌入式系统的发展。

未来开发中,如果你对微处理器性能测试有更多需求,不妨深入了解Dhrystone的内部机制。了解它的工作原理能帮助你更好地优化代码和系统性能。

如果你对嵌入式系统和性能测试感兴趣,可以关注我的技术博客,获取更多技术分享。欢迎在评论区留言,与我一起探讨相关话题!

转载地址:http://zokiz.baihongyu.com/

你可能感兴趣的文章
小米手机解锁BL一直显示未解决(终极方案)
查看>>
*.json: [“usingComponents“][“van-button“] 未找到
查看>>
Spring整合Mybatis遇到的错误一
查看>>
C/C++形参和实参分别是什么
查看>>
Linux关机命令(shutdown)
查看>>
Linux中的who命令
查看>>
VTK:PolyData之CellCenters
查看>>
VTK:PolyData之CellLocatorVisualization
查看>>
VTK:PolyData之DownsamplePointCloud
查看>>
VTK:PolyData之ExtractCellsUsingPoints
查看>>
VTK:PolyData之Outline
查看>>
VTK:PolyData之RemoveVertices
查看>>
VTK:Qt之SideBySideRenderWindowsQt
查看>>
VTK:RenderMan之PolyDataRIB
查看>>
VTK:Rendering之DiffuseSpheres
查看>>
VTK:Rendering之MotionBlur
查看>>
VTK:简单操作之FloatingPointExceptions
查看>>
VTK:Utilities之BrownianPoints
查看>>
VTK:Utilities之DenseArrayRange
查看>>
VTK:Utilities之FrameRate
查看>>