什么是dmips

什么是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日

相关文章

  • js中int和string的转换

    JS中int和string的转换 在JavaScript中,我们经常需要将数字类型和字符串类型进行相互转换。本文将提供一个完整攻略,介绍JS中int和string的转换,并提供两个示例说明。 将字符串转换为整数 在JavaScript中,可以使用parseInt函数将字符串转换为整数。可以按照以下步骤实现: // 将字符串转换为整数 let str = &q…

    other 2023年5月8日
    00
  • 重学Go语言之变量与常量的声明与使用详解

    重学Go语言之变量与常量的声明与使用详解 本攻略将详细讲解Go语言中变量和常量的声明与使用。在学习过程中,我们将涵盖变量和常量的声明、赋值、作用域以及类型推断等方面的内容。 变量的声明与使用 在Go语言中,变量的声明使用关键字var,后跟变量名和类型。以下是一个示例: var age int 在上述示例中,我们声明了一个名为age的整数类型变量。我们可以通过…

    other 2023年8月8日
    00
  • Windows Server 2019和Windows Server, Version 1909的区别是什么

    Windows Server 2019和Windows Server, Version 1909是微软公司发布的两个Windows Server产品,它们之间存在一些区别和特性。本文将详细讲解它们之间的区别和如何选择。 区别 产品版本 Windows Server 2019是微软公司发布的最新版本,它是Windows Server产品系列的第九个主要版本。而…

    other 2023年6月27日
    00
  • Win11中砍掉任务栏文件拖放、右键菜单功能

    Win11中砍掉任务栏文件拖放、右键菜单功能的步骤如下: 1.打开注册表编辑器:在开始菜单中搜索“regedit”,并以管理员身份运行注册表编辑器。 2.导航到相应的注册表键:在注册表编辑器中,导航到以下键值:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advan…

    other 2023年6月27日
    00
  • Azure Internet 负载均衡器建立

    Azure Internet 负载均衡器建立的完整攻略 Azure Internet 负载均衡器是一种基于云的负载均衡解决方案,可以将流量分配到多个虚拟机实例或虚拟机规模集中。本文将为您提供 Azure Internet 负载均衡器建立的完整攻略,包括以下内容: 创建 Azure 负载均衡器 创建后端池 创建负载均衡规则 示例说明 1. 创建 Azure 负…

    other 2023年5月5日
    00
  • iso文件的意思以及ISO文件打开方法

    ISO文件是一种光盘映像文件,它包含了光盘的完整内容,包括文件系统、文件和目录结构等。ISO文件通常用于光盘的备份、复制和分发。在打开ISO文件之前,你需要了解ISO文件的打开方法。 以下是打开ISO文件的两种常见方法的示例说明: 方法一:使用虚拟光驱软件 下载并安装虚拟光驱软件,例如Daemon Tools、Virtual CloneDrive等。 双击运…

    other 2023年8月6日
    00
  • python反转单链表算法题

    使用python实现反转单链表,可以分为迭代和递归两种方法。 迭代解法 迭代解法需要用到三个指针,分别是pre、cur和tmp。pre指向已翻转的链表,cur指向待翻转的链表,tmp用于保存cur的下一个节点。具体步骤如下: 定义pre为None,并将cur指向head节点。 遍历链表,当cur不为None时执行以下操作: 将tmp指向cur的下一个节点。 …

    other 2023年6月27日
    00
  • Linux查看系统版本的方法汇总

    Linux查看系统版本的方法汇总 在Linux系统中,有多种方法可以查看系统的版本信息。下面是一些常用的方法: 1. 使用lsb_release命令 lsb_release命令可以用来查看Linux发行版的版本信息。在终端中输入以下命令: lsb_release -a 示例输出: Distributor ID: Ubuntu Description: Ubu…

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