Dhrystone
分析报告
whetstone
有很多局限和不足,
为了弥补这种不足,
也为了适应形势的发展,
Reinhold
.
p.Weicker
在
1984
年仿造
whetstone
的形式,设计了
Dhrystone
一个关
于系统编程的台成基准程序。
不同的应用使用语言的不同特性。
适合用不同的语言实现。
高级语言是联系
算法和计算机结构的桥粱。
Dhrystone
主要测试的就是计算机结构对在系统编程
中经常用到的语言特性的支持能力。
Weicker
对
16
个关于不同编程语言使用特性的统计数据进行了分析。
这些数
据有静态的也有动态的。
但从性能观点来看,
程序的动态测量比静态测量更有趣
一些,也更难收集和花费更大的开消。因此动态的数据较少。涉及到的语言有
Fortran
,
PL
/
I
,
XPL
,
SAL
,
ALOOL68
,
Pasca1
,
C
,
Ada
。数据关于系统编程
的居多,
也有数值计算和商业用的程序。
作者对这些程序进行了比较和分析,
对
关于系统编程的数据给予了较多的重视。仿造
whetstone
的方式,设计了几个测
试不同语言现象的模块,程序最初是用
Ada
写的,但它设计的方式使它可以建
立几个不同语言的版本如
Pascal
版本和
C
版本。
但是如果要用不具备某些能力
(
如
指针,
记录型数据结构
)
的语言
(
如
Fortran)
实现。
whetstone
是非常困难而无意义,
因为如果试图用
Fortran
语言的特性如
index
来模拟指针类型,那将把基准程序
变成了一个不同的程序了。
Dhtrystone
基准程序主要由主程序和
3
个函数、
8
个
过程组成。
另外,
还有用来计时的
3
个函数和一个空过程。
各函数和过程分别用
来测试字符串、记录及整数运算
其参数和主要测试内容见表
1
。
程序经过精心设计和反复测试使得其三种语句:
控制语句、
赋值语句、
函数
过程调用语句达到一定的分布,
同时又使数据类型、
语句类型及教据分布达到均
衡。
程序没有过程的静态嵌套。
这一点使之缺乏代表性。
函数和过程有长有短.
多
数较简单。
也有几个较为复杂的如
proc-1
,
每个函数或过程的执行次数都相当少,
除
func-1
和
proc-7
均为
3
次外,其余均为
1
次。程序中的循环执行次数也都较
步。
多为
1
~
2
次。
这些都和系统编程的特性是一致的。
程序中有很多部分并不
执行,每次循环运行程序主体时执行的是同样部分。
执行上述程序需要的时间在根大程度上取决于是否有
cache
及其使用,
且不
管在程序运行时代码、
数据或两者都是否在
cache
中。
过程
proc-8
中的数组存取
的分布将导致至少有一
cache
不命中的情况。
最常用的潞量执行时间的方法是把基准程序包括在一个循环中,
执行比如说
50000
次,而且想要更精确的话,减去一个空循环的执行
10000
次的时间不过上
述方法过于依赖
cache
的影响了。因为
Dhrystone
基准程序根小,如果
cache
的
容量高于一定的最小值的话,代码和相当程度的数据将会一直在
cache
中。一个
更精确的程序应试图去平衡这种影响,
通过复制代码和数据,
迫使数据流根据一
定的统计数据在系统的整个地址空间上运行。因
Dhrystone
担简单,没有做包括
这种机制的尝试。
Dhrystone
程序易于移植,它为关于结构或编译程序的讨论提供了一个较好
的基准程序。用
Dhrystone
得到的结果作为一种衡量标准可较准确地反映一个特
定的硬件/编译程序结合对系统程序应用产生的影响。
但是在使用此程序来比较
不同处理机或不同系统时,
必须仔细检查各个细节方面:
如语言影响,
编译程序
影响,测量方法和
cache
的影响等。用任何一种单个的数值作为评价处理机结构
或编译程序的唯一标准都有其内在的局限性,但如果使用的好的话,
Dhiystone