CPU性能测试及Coremark简介

2023-11-06

        衡量处理器的一个重要指标是功耗,另外一个重要指标便是性能。在处理器领域的 Benchmarks 非常众多,有某些个人开发的程序,也有某些标准组织,或者商业公司开发的Benchmarks, 本文在此不加以一一枚举。 在嵌入式处理器领域最为知名和常见的 Benchmarks 为Dhrystone 和 CoreMark。

        CoreMark是一个综合基准,用于测量嵌入式系统中使用的中央处理器(CPU)的性能。它是在2009由eembc的shay gal-on开发的,旨在成为一个行业标准,取代过时的dehrystone基准。代码用C编写,包含以下算法:列表处理(增删改查和排序)、矩阵操作(公共矩阵操作)、状态机(确定输入流是否包含有效数字)和CRC。[5]用户可以自由的下载Coremark,并移植到自己的平台上运行,随后就可以看到分数。

测试项目及文件函数解读

1、链接列表

(1)概要

core_list_join.c

 

函数:

 

core_bench_list

Benchmark function

cmp_complex

比较列表单元格中的数据项。

cmp_idx

比较列表单元格中的idx项目,并重新生成数据。

core_list_init

用数据初始化列表。

core_list_insert

将一个项目插入列表

core_list_remove

从列表中删除一个项目。

core_list_undo_remove

撤销删除操作。

core_list_find

在列表中找到一个项目

core_list_reverse

反转一个列表

core_list_mergesort

在不递归的情况下对列表进行排序。

 

(2)描述

 

        此Benchmark所做的项目 1.将一个项目插入列表2.从列表中删除一个项目。3.撤销删除操作。4.在列表中找到一个项目5.反转一个列表6.在不递归的情况下对列表进行排序。

        虽然增加了间接访问数据的级别,但这种结构是现实的,可用于许多用于中小型列表的嵌入式应用程序。

        列表本身将在将被传递给初始化函数的一块内存上初始化。尽管通常链表使用malloc作为新节点,但嵌入式应用程序有时会直接控制小数据结构(如数组和列表)的内存以避免系统调用的开销,因此这种方法是现实的。

        链表将被初始化,以使得列表指针的四分之一指向存储器中的顺序区域,并且列表指针的三分之一以非顺序方式分布。这样做是为了模拟一个链接列表,其中添加/删除操作会暂时中断整齐的顺序,然后一系列可能来自连续内存位置的添加。

对于基准本身:

        将执行多个查找操作。这些查找操作可能会导致整个列表被遍历。每次查找的结果将成为输出链的一部分。列表将使用基于data16值的合并排序进行排序,然后根据列表的一部分导出data16项目的CRC。CRC将成为产品链的一部分。

        列表将使用基于idx值的合并排序再次排序。这种排序将保证列表在离开函数之前返回到主状态,这样函数的多次迭代将具有相同的结果。列表部分的data16的CRC将再次被计算并成为输出链的一部分。

        每个单元中的实际数据16将根据单个16b输入进行伪随机编码,这些输入在编译时无法确定。此外,用于CRC的列表部分也将传递给该函数,并根据在运行时无法确定的输入来确定。

        使用链接列表的基准。链接列表是许多应用程序中使用的常见数据结构。就我们的目的而言,这将锻炼处理器的内存单元。特别是使用列表指针来查找和更改数据。

        其中没有使用Malloc,因为有些平台不支持这个库。

        相反,被传入的内存块用于创建一个列表,并且该基准会小心不要添加更多项目,然后可以通过内存块调整。移植层将确保我们有一个有效的内存块。

        所有操作均已完成,无需使用任何额外内存。

 

 

 

2、矩阵操纵基准

(1)概要

core_matrix.c

函数:

core_bench_matrix

Benchmark function

matrix_test

执行矩阵操纵。

matrix_sum

计算一个依赖于矩阵中元素值的函数。

matrix_mul_const

用一个常数乘以一个矩阵。

matrix_add_const

为矩阵的所有元素添加一个常量值。

matrix_mul_vect

用一个矢量乘一个矩阵。

matrix_mul_matrix

矩阵乘矩阵。

matrix_mul_matrix_bitextract

矩阵乘矩阵,并从结果中提取一些位。

(2)描述

        Matrixmanipulation benchmark,这个非常简单的算法构成了许多更复杂算法的基础。紧密的内部循环是许多优化(编译器以及基于硬件)的重点,因此与嵌入式处理相关。

        它所做的测试包含1.用一个常数乘以一个矩阵。2.为矩阵的所有元素添加一个常量值。3.用一个矢量乘一个矩阵。4.用矩阵乘以一个矩阵。5.将矩阵乘以矩阵。6.并从结果中提取一些bits

        总可用数据空间将被分为3部分

        NxN矩阵A 用较小的值初始化(上部3/4位全部为零)。

        NxN矩阵B 初始化为中等值(上半部分全部为零)。

        NxN矩阵C 用于结果。

        A和B的实际值必须根据编译时不可用的输入来派生。

1、状态机基准

(1)概要

core_state.c

 

函数:

 

core_bench_state

Benchmark function

core_init_state

初始化状态机的输入数据。

core_state_transition

实际的状态机。

(2)描述

        许多嵌入式产品都使用这种简单的状态机。对于更复杂的状态机,有时会使用状态转换表实现,而直接编码的交易速度易于维护。由于在CoreMark中使用状态机的主要目的是为了锻炼switch/if的运转情况,我们使用的是小型moore机器。特别是,这台机器测试字符串输入的类型,试图确定输入是数字还是别的东西。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CPU性能测试及Coremark简介 的相关文章

  • C++学习笔记黑马程序员(有一些自己的思考)

    学习目标 掌握 C 入门知识 C 核心编程 掌握 STL 洛谷算法训练题 学习内容 C 入门知识 一 基本介绍 C 不同于C语言 这是一门面向对象的高级程序设计语言 二 面向对象与面向过程 什么是面向对象 对象又是什么 对象是对客观事物的抽
  • Flink_04_Watermark(个人总结)

    声明 1 本文为我的个人复习总结 并非那种从零基础开始普及知识 内容详细全面 言辞官方的文章 2 由于是个人总结 所以用最精简的话语来写文章 3 若有错误不当之处 请指出 时间语义 EventTime 在1 12版本中被设置成了默认 是事件
  • 求平方根问题 (C++ 实现)

    下面是用二分法和牛顿迭代法求一个正数的平方根 二分法 这里的题目稍微宽了一点点 包含了整数和小数的情况 这里二分法就不用多说了 如果中间值的平方与目标值在误差范围内 则返回 否则根据大小情况改变左 右区间的端点 include
  • 每日一题:选数

    选数 题目 Daimayuan Online Judge 原本我的思路是 大致题意就是从n个数中选取若干数 使得它们的和mod n等于0 任意选取 无关顺序 是可以跳着选的 也就是对于每一个数 有两种选择 选与不选 于是我想用01背包 但是
  • linux屏保默认图片,分享

    Ubuntu 4 10 Warty Warthog Ubuntu 5 04 Hoary Hedgehog Ubuntu 5 10 Breezy Badger Ubuntu 6 06 Dapper Drake Ubuntu 6 10 Edgy
  • 多个chatgpt模型

    GPT4All 简介 GPT4AllNomic AI Team 从 Alpaca 获得灵感 使用 GPT 3 5 Turbo OpenAI API 收集了大约 800 000 个提示 响应对 创建了 430 000 个助手式提示和生成训练对
  • SQL中in和not in遇到NULL值的查询情况

    首先 大家可以先试着做这道练习题 题目 给定一个表 T id 是树节点的编号 pid 是它父节点的 id 树中每个节点属于以下三种类型之一 叶子 如果这个节点没有任何孩子节点 根 如果这个节点是整棵树的根 即没有父节点 内部节点 如果这个节
  • 最简单的引入Vue看板娘教程

    最简单的引入Vue看板娘教程 一 项目引入 这里使用的是来自Evgo老哥的 vue live2d 使用简单 直接引入就好 具体的可以看老哥的文档 二 简单实现 在你的项目引入 npm install vue live2d 接着在想要引入看板
  • Unity3D关于iTween知识详解和接口总结

    目录 1 简介 2 物体移动方法 3 物体的颜色变化 4 摄像机淡入淡出 5 音频方法 6 Look类方法 7 旋转方法 8 物体大小缩放 9 晃动效果方法 10 值方法 11 外部工具方法 12 iTweenPath 1 简介 iTwee
  • Windows NT Session 概念的原理与应用浅析 [1] 遍历并获取信息

    转载自 http www cnblogs com flier archive 2004 07 19 25709 html 我在上一篇文章 DACL NULL or not NULL 中曾简要地介绍了 Windows 系统中 Session
  • SonarLint 默认扫描规则

    请看原文 原文链接 https blog csdn net jiaomubai article details 116596868 在平时写代码的时候 为了代码规范和减少 bug 的数量 使用 SonarLint 插件进行代码检查无疑是一个
  • tesseract-ocr

    转自 http www cnblogs com zcsor archive 2011 02 21 1959555 html 关于tesseract ocr3的训练和使用 众所周知 这是一个出色的字符识别软件 这个开源项目可以在http co
  • SpringBoot企业微信公众号开发案例一

    Java Spring Boot企业微信点餐系统 2 3 数据库设计 2 3 数据库设计 数据库表设计 3 1 开发环境搭建 3 1 开发环境搭建 virtualBox安装 ifconfig sequel pro连接数据库 虚拟机安装Mav
  • 【Linux系统安装RocketMQ并整合到SpringBoot项目】

    Linux系统安装RocketMQ并整合到SpringBoot项目 一 基本概念 1 1 NameServer 1 2 Broker 1 3 Message 1 3 Topic 1 4 Tag 1 5 Queue 1 6 MessageId
  • SpringBoot-AOP记录日志+脱敏

    目录 1 引入依赖 2 配置文件 3 注解类 4 切面类 5 需要脱敏的实体类 6 查看日志打印 1 引入依赖 脱敏工具包 implementation com github houbb sensitive core 0 0 9 imple
  • 虚拟机实现拖拽、复制、粘贴功能

    一 设置CD DVD驱动为自动检测 二 重新安装VMware Tools 在重启虚拟机的过程中 重新安装VMware Tools 会变亮 切记是重启过程中会变亮 虚拟机开启后又会变暗 下载完成后 双击进入CD虚拟驱动 将拷贝至桌面 依次执行
  • 青岛科技大学计算机专硕拟录取分数,又一批拟录取名单来了!最低分数...

    原标题 又一批拟录取名单来了 最低分数 最近 考研复试的动静闹得有点大 但是 这也没办法啊 按照往年的3月份就可以结束的事情 今年愣是拖到了五月底 各位20考研学生的心里苦啊 虽然所考研复试和咱们21考研的小伙伴 目前来看关系不大 但是 大
  • 关于el-table鼠标悬浮变色

    deep el table body el table row hover row td background color 颜色
  • HwServiceManager篇-Android10.0 HwBinder通信原理(五)

    Android取经之路 的源码都基于Android Q 10 0 进行分析 Android取经之路 系列文章 系统启动篇 Android系统架构Android是怎么启动的Android 10 0系统启动之init进程Android10 0系

随机推荐

  • 关于在使用tensorflow2.0版本时,出现RuntimeError:tf.placeholder() is not compatible with eager execution.的问题

    关于在使用tensorflow2 0版本时 出现RuntimeError tf placeholder is not compatible with eager execution 的问题 今天在运行程序 部分代码 import tenso
  • 可调时钟频率——IP核PLL/MMCM仿真及上板实验(Vivado)

    一 说明 实现平台 vivado2018 3 实验设备 领航者V2 ZYNQ7020 示波器一台 二 原理 在大多数实验项目中 所需要的时钟频率不尽相同 因此需要根据需求产生特定的时钟频率 PLL Phase Locked loop 锁相环
  • 关于css全局作用域(:global)和局部作用域(:local)

    local title color red 上面这种写法相当于 title color red global title color green
  • 一文读懂LSTM及手写LSTM结构

    torch nn LSTM 是PyTorch中用于创建长短时记忆网络 Long Short Term Memory 的类 LSTM是一种用于处理序列数据的循环神经网络 Recurrent Neural Network RNN 变体 官方给出
  • mysql基础1——发展起源、数据类型、基础安装

    文章目录 一 基本了解 1 1 DBMS数据库管理系统 1 2 主流关系型数据库 1 3 数据表概念 1 4 关系型数据库的组成 1 5 数据类型 1 5 1 数值型 1 5 1 1 整数型 1 5 1 2 小数型 1 5 2 字符串型 1
  • 2023年MySQL实战核心技术第三篇

    目录 六 事务隔离 隔离级别 事务隔离原理 MVCC等原理的讲解 6 1 解释 6 2 隔离性与隔离级别 6 2 1 SQL 标准的事务隔离级别 6 2 2 事务隔离级别解释 6 2 3 例子 6 2 3 1 若隔离级别是 读未提交 6 2
  • 微信射击小游戏实现/Phaser引擎

    最近在家闲着无事利用Phaser引擎是开发了一款弓箭射击小游戏 废话少说先看效果 在线体验 1 游戏的主要逻辑实现 GameState js export default class GameState extends Phaser Sta
  • Win7 Tortoise SVN安装异常--please install the universal crt first.You can .. windows-update(Kb2999226)

    一 问题 安装TortoiseSVN时报错 please install the universal crt first You can install it via windows update Kb2999226 or you can
  • 微信短链跳转到小程序指定页面调试

    首先说下背景 后端给了短链地址 但是无法跳转到指定页面 总是在小程序首页 指定的页面我们是h5页面 排查步骤如下 1 通过快速URL Scheme 编译 上部普通编译 下拉找到此选项 2 按照小程序的要求的URL Scheme输入 另外后端
  • 数据字典设置为枚举的用法

    原先我们的应用中 将一个实体的状态声明为Integer int 类型 然后在对其赋值的时候是使用一个类或接口在其中定义相应的值 在代码其他地方引用对状态进行赋值 例如 package com sunlight warehouse util
  • 爬虫基础--requests基础操作

    目录 一 requests是什么 二 使用步骤 1 环境安装 2 编码流程 3 模拟浏览器的侧重点 请求头模拟 请求参数模拟 三 两个请求 1 get请求 使用requests发起get请求 2 post请求 post请求的主要参数 使用r
  • 写作工具助手

    写作猫 www xiezuocat com 5118 www 5118 com 15201 www 15201 com 小发猫 www xiaofamao com 火龙果写作 www mypitaya com 智媒AI www zhimei
  • 计算机基础知识(基础入门小白专属)十

    作者 小刘在这里 每天分享云计算网络运维课堂笔记 疫情之下 你我素未谋面 但你一定要平平安安 一 起努力 共赴美好人生 夕阳下 是最美的 绽放 愿所有的美好 再疫情结束后如约而至 目录 关于cpu 和主板 cpu 是什么 cpu 主要作用
  • Spring Boot项目如何实现微信和支付宝支付

    本文将为大家详细介绍如何在Spring Boot项目中实现微信和支付宝的支付功能 我们将首先对微信和支付宝的支付流程进行简要介绍 然后逐步引导大家完成支付功能的具体实现 文章内容如下 支付流程简介 项目环境配置 支付宝支付实现 微信支付实现
  • 可转债

    一家上市公司想发行可转债必须满足 连续三年盈利且平均ROE大于10 公司资产负债率小于70 公司累计待还债券余额小于公司净资产40 有这3条标准做保障 债券和股票不一样 前者收益是明确的 到期就能拿到100元票面值 约定利息 所以 你买入的
  • OC门与线与逻辑

    转 OC门与线与逻辑 OC门 又称集电极开路 漏极开路 与非门门电路 Open Collector Open Drain 为什么引入OC门 实际使用中 有时需要两个或两个以上与非门的输出端连接在同一条导线上 将这些与非门上的数据 状态电平
  • 1051 复数乘法

    复数可以写成 A Bi 的常规形式 其中 A 是实部 B 是虚部 i 是虚数单位 满足 i2 1 也可以写成极坐标下的指数形式 R e Pi 其中 R 是复数模 P 是辐角 i 是虚数单位 其等价于三角形式 R cos P isin P 现
  • 如何在虚拟机中安装ikuai软路由系统

    首先访问ikuai官网下载固件固件下载 爱快 iKuai 商业场景网络解决方案提供商 ikuai8 com 根据需求下载 然后创建一个虚拟机 点击下一步 选择更下载的ISO映像文件 点击下一步 点击下一步 设置一下名称和储存位置 点击下一步
  • 学习记录:C语言源文件在编译时产生multiple definition of xxx; xxx: first defined here 相关报错的解决方法

    问题描述 在ubunt18 04 gcc 7 5 0 上可以正常编译的程序在树莓派 gcc 10 2 0 上编译报错 报错如图 问题原因 在头文件内定义全局变量 在多个源文件中引用且未声明 解决方法一 在树莓派上安装7 5 0版本的gcc
  • CPU性能测试及Coremark简介

    衡量处理器的一个重要指标是功耗 另外一个重要指标便是性能 在处理器领域的 Benchmarks 非常众多 有某些个人开发的程序 也有某些标准组织 或者商业公司开发的Benchmarks 本文在此不加以一一枚举 在嵌入式处理器领域最为知名和常