什么是dmips

yizhihongxing

什么是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测试包括如下几个步骤:

  1. 对于每个运算功能,测量它在指定硬件上的周期数。例如,如果要测量整数加法的性能,在测量周期数时,我们禁用所有内存访问和分支预测等技术,使得代码只涉及执行整数加法。测量完成后,我们将得到执行此操作所需的周期数。此外,我们还要测量循环性能,包括循环体的迭代次数,以及循环体内部的操作。
  2. 当我们得到了上述结果时,我们就可以计算出每个操作所需的时间。例如,我们可以按照CPU时钟频率将CPU周期转换为时间,假设我们在2GHz处理器上进行测试,则每个CPU周期的时间为0.5ns。
  3. 让Dhrystone进行大量的测试,以得出一条特定的性能基准线。对于每个CPU,我们均对其进行300次测试,最后得出一个平均值,作为该CPU的基准性能。
  4. 计算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技术站

(0)
上一篇 2023年3月29日
下一篇 2023年3月29日

相关文章

  • springboot yml配置文件值注入方式

    Spring Boot YAML配置文件值注入方式攻略 在Spring Boot中,我们可以使用YAML(YAML Ain’t Markup Language)配置文件来管理应用程序的配置。YAML是一种人类可读的数据序列化格式,它使用缩进和特定的符号来表示数据结构。下面是关于如何在Spring Boot中使用YAML配置文件进行值注入的完整攻略。 1. 创…

    other 2023年8月6日
    00
  • linux下使用github

    Linux下使用GitHub的完整攻略 GitHub是一个非常流行的代码托管平台,许多开发者都在上面分享自己的代码。在Linux系统中,可以使用命令行工具来使用GitHub。本攻略将详细介绍如何在Linux系统中使用GitHub。 1. 安装Git 在使用GitHub之前,需要先安装Git。可以使用以下命令在Linux系统中安装Git: sudo apt-g…

    other 2023年5月7日
    00
  • 解析Spring中的静态代理和动态代理

    解析Spring中的静态代理和动态代理 Spring框架是一个开源的Java企业应用程序开发框架。静态代理和动态代理都是Spring框架中非常重要的概念,它们在Spring中的应用非常广泛。理解和掌握这两种代理模式,并掌握Spring框架中如何应用静态代理和动态代理是非常必要的。 静态代理 静态代理是指在程序运行前便已经编译好代理类的代理模式。代理类和委托类…

    other 2023年6月27日
    00
  • shell编程入门之变量,字符串,数组,函数使用方法总结

    Shell编程入门之变量,字符串,数组,函数使用方法总结 变量 在Shell中,变量不需要事先声明,当一个变量被赋值后,它就已经存在了。 变量的定义 variable="value" 变量的使用 使用变量只需要在变量名前加$符号 echo $variable 变量的重新定义 重新定义一个已经定义的变量只需要再次赋值即可,之前的值将会被覆盖…

    other 2023年6月20日
    00
  • 解析Java虚拟机中类的初始化及加载器的父委托机制

    解析Java虚拟机中类的初始化及加载器的父委托机制 1. 类的加载过程 类的加载过程包含:加载、连接和初始化三个步骤。 加载过程:通过获取字节流,将.class文件放入内存,并产生一个代表该类的Class对象。 连接过程:分为验证、准备、解析三个阶段,其中解析阶段可能会涉及到类或接口的初始化。 初始化过程:为类的静态变量赋予正确的初始值,进行类构造器()方法…

    other 2023年6月20日
    00
  • ios8.3完美越狱后删除apple watch详细图文教程

    iOS 8.3完美越狱后删除Apple Watch的详细图文教程 在进行iOS 8.3完美越狱之后,如果你想要删除已经连接的Apple Watch设备,你可以按照以下详细图文教程进行操作。 步骤一:进入Cydia软件管理器并找到MobileSubstrate 首先,我们需要进入已经安装好Cydia的设备上,并找到MobileSubstrate。MobileS…

    other 2023年6月27日
    00
  • C语言中各种操作符的详细介绍(纯干货!)

    C语言中各种操作符的详细介绍 在C语言中,操作符是用来完成各种运算和操作的符号。C语言中的操作符包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符等等。下面将详细讲解C语言中各种操作符的使用方法及示例说明。 1. 算术运算符 在C语言中,常用的算术运算符包括+、-、、/、%。其中,+、-、和/分别代表加、减、乘、除运算,%代表求余运算。…

    other 2023年6月27日
    00
  • Android 获取判断是否有悬浮窗权限的方法

    Android 获取判断是否有悬浮窗权限的方法 在Android开发中,判断是否有悬浮窗权限是一个常见的需求。下面是一种获取并判断悬浮窗权限的方法: 首先,在AndroidManifest.xml文件中添加悬浮窗权限声明: <uses-permission android:name=\"android.permission.SYSTEM_AL…

    other 2023年9月7日
    00
合作推广
合作推广
分享本页
返回顶部