什么是DMIPS?
DMIPS(Dhrystone Millions of Instructions Per Second,德瑞斯通每秒执行百万条指令数)是一种基准测试方法,用于评估计算机处理器的性能。DMIPS是以1970年代流行的Dhrystone测试为基础,并采用了更现代化的测试策略。
Dhrystone测试
Dhrystone是一种通用性能测试标准,由Reinhold P. Weicker在1984年开发。它的特点是代码短小精悍,运行时间短,占用内存小。
Dhrystone测试包含以下代码段:
#define LOOPS 100000
struct record {
struct record *next;
int value[4];
};
static struct record pool[5000], *freelist;
static int ensure_val = 0xDEADBEEF;
int main()
{
register int i, t;
struct record *p, *tmp;
freelist = pool;
for (i = 0; i < 4999; ++i)
pool[i].next = &pool[i + 1];
pool[4999].next = 0;
p = freelist;
freelist = freelist->next;
p->next = 0;
p->value[0] = p->value[1] = p->value[2] = p->value[3] = ensure_val;
for (t = 0; t < LOOPS; ++t) {
tmp = freelist;
freelist = freelist->next;
tmp->next = p->next;
p->next = tmp;
p = tmp;
p->value[0] = t;
p->value[1] = t^0xFFFF;
p->value[2] = t^0xAAAA;
p->value[3] = t^0x5555;
}
return 0;
}
这段代码包含了一个简单的链表,以及一些四个整数的值。测试会不断从链表中取出数据,将其作为参数传入一个子程序中,对后面的数值进行位运算,修改并返回其中一个整数。测试方法就是计算一个特定时间内可以执行多少次这段代码。
DMIPS测试
DMIPS测试的目的是通过对Dhrystone测试所用计算机的反应时间进行归一化,得到不同计算机的性能比较。DMIPS测试所使用的计算机配置与Dhrystone测试稍有不同。DMIPS测试包括如下几个步骤:
- 对于每个运算功能,测量它在指定硬件上的周期数。例如,如果要测量整数加法的性能,在测量周期数时,我们禁用所有内存访问和分支预测等技术,使得代码只涉及执行整数加法。测量完成后,我们将得到执行此操作所需的周期数。此外,我们还要测量循环性能,包括循环体的迭代次数,以及循环体内部的操作。
- 当我们得到了上述结果时,我们就可以计算出每个操作所需的时间。例如,我们可以按照CPU时钟频率将CPU周期转换为时间,假设我们在2GHz处理器上进行测试,则每个CPU周期的时间为0.5ns。
- 让Dhrystone进行大量的测试,以得出一条特定的性能基准线。对于每个CPU,我们均对其进行300次测试,最后得出一个平均值,作为该CPU的基准性能。
- 计算DMIPS评价值,与基准CPU性能进行比较。
DMIPS评价值方法如下:假设CPU A的总指令数为N,总测试时间为T,该CPU的DMIPS评价值为D,则D = N / (T x 1M),其中1M表示百万。
DMIPS测试并不是精确的性能测试,仅能用于参考不同机器之间处理器性能的相对差异。对于个别应用,不同处理器之间的DMIPS值将不具有可比性。
总结
DMIPS是一种用于衡量计算机处理器性能的相对标准。它是以Dhrystone测试为基础,并采用了更现代化的测试策略。DMIPS测试通过对硬件进行各种操作的基准测试,得出一个计算机处理器的性能评价标准,从而帮助消费者进行更有针对性的选购计算机处理器。但是需要注意的是,DMIPS测试只能用于参考不同机器之间的处理器性能相对差异,不同机器之间的DMIPS值并不能作为个别应用的精确性能测试标准。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:什么是dmips - Python技术站