如何评估现代处理器的性能——以ARM Cortex-A53为例

news2025/1/11 11:01:39

如何评估现代处理器的性能——以ARM Cortex-A53为例

1 有哪些通用评价指标?

现代处理器内核的性能可以从以下几个方面进行评估:

时钟速度(Clock Speed):它是CPU内部时钟发生器的频率,以赫兹(Hz)为单位。时钟速度越高,每秒钟内执行的指令数就越多,因此性能也会更好。

指令级并行性(ILP):现代处理器采用了一些技术来提高指令级并行性,如超标量、超线程等。这些技术可以同时执行多条指令。

流水线(Pipeline):现代处理器还采用了流水线技术来提高性能。流水线将指令分成多个阶段,并且同时执行多个指令,从而使得处理器每个时钟周期可以完成更多的工作。

缓存(Cache):缓存是一种快速的存储设备,用于暂时存储处理器需要使用的数据和指令。现代处理器内置了多级缓存系统,从而可以大大降低访问内存的延迟,提高处理器的性能。

向量化(Vectorization):向量化是一种并行计算技术,可以同时处理一组数据。现代处理器内置了向量化指令集,如SSE、AVX等,可以在单个时钟周期内执行多个操作。

芯片工艺(Process Technology):芯片工艺是指用于制造处理器的制造工艺。随着芯片工艺的不断进步,处理器的晶体管数量和频率都有了大幅度提升。

2 为什么不再使用MIPS指标?

MIPS代表每秒钟可以执行的百万条指令数。具体来说,MIPS值等于 CPU执行的指令总数除以执行这些指令所花费的时间(单位为秒),再除以一百万。

在过去,MIPS评价处理器内核性能被广泛使用是因为它是衡量计算机性能的一种简单而直观的方式。然而,在现代计算机中,MIPS已经不再被广泛使用来评估处理器的性能,原因如下:

处理器架构复杂:现代处理器的架构非常复杂,包括多级缓存、预取和超标量执行等功能,这些都使得MIPS评价成为不够准确的性能指标。

指令集变化:随着处理器指令集的变化,MIPS评价可能会失去其原有的意义。例如,现代处理器引入了向量指令,可以实现并行计算,但这不会反映在MIPS评价中。

单纯指令计数难以反映性能提升: 现代处理器通常会使用更短的指令序列来完成相同的操作,从而提高性能,这些性能提升很难通过简单的指令计数进行比较。

不同应用场景需要不同指标: 不同的应用场景需要不同的性能指标,例如,数据库系统需要高并发、低延迟的I/O操作,而图像处理则需要高吞吐量的向量计算。在这些应用场景中,MIPS评价可能无法提供有用的信息。

因此,现代计算机中常用的处理器性能指标包括时钟频率、IPC(每时钟周期指令数)、功耗和浮点运算性能等。这些指标可以更准确地衡量处理器性能,并且可以根据不同的应用场景进行定制化的性能评估。

3 主推何种评价指标?

现代计算机中常用的处理器性能指标包括时钟频率、IPC(每时钟周期指令数)、功耗和浮点运算性能等。这些指标可以更准确地衡量处理器性能,并且可以根据不同的应用场景进行定制化的性能评估。

《计算机体系结构量化研究方法》的作者约翰• L.亨尼西(John L. Hennessy) 和大卫•A.帕特森(David A. Patterson)认为时钟周期时间、CPI(1/IPC,执行每条指令需要的时钟周期数)和指令数量这三个评价指标能够综合反映某个计算机系统的性能。
在这里插入图片描述

4 为什么选择这些指标?

究其原因,就是上一节那张图里的约束条件了。

emmm首先我们要意识到,仅仅关注指令数量和主频是不够的。可执行文件中的指令数是受到指令集体系结构和编译器技术制约的。对于同样的测试程序/负载,我们使用不同的编译器编译产生的指令数量可能不同。即使是同样的编译器和程序,在目标架构不同时,输出文件的指令数也可能有差异。

GCC的编译过程分为四个阶段:预处理、编译、汇编和链接。在预处理阶段,预处理器将源代码转换为一个更大的、包含了所有头文件和宏替换的单一文件。在编译阶段,编译器将这个单一文件翻译成汇编代码。在汇编阶段,汇编器将汇编代码转换成二进制目标文件。最后,在链接阶段,链接器将多个目标文件组合成一个可执行文件。

LLVM的编译过程分为三个主要阶段:前端、优化和后端。在前端阶段,源代码被翻译成一个中间表示(IR),这种表达方式非常接近于高级语言的语法。在优化阶段,LLVM将IR进行各种优化操作以提高程序性能。在后端阶段,IR会被翻译成目标平台的机器码。这种模块化的设计使得LLVM更易于扩展和定制,因为用户可以用自己的前端或后端替换默认实现。而且,LLVM还可以生成可重定向的对象文件,这些对象文件可以在链接时进行优化。

其次就是组成与指令集体系结构会影响CPI,比如总线宽度、主存速率,都会拖处理核的后腿。对于支持向量运算的处理核,即使每条指令需要的周期数比不支持向量指令的处理核多3倍,它也可能比后者更快地完成同一个运算任务。比如下图所示,armv7支持Dn/Qn寄存器,分别可以存64bits/128bits的数据,这样每次可以运算2/4个32位浮点数,自然就能更快地做完一批运算。
在这里插入图片描述

最后咱也不能迷信主频,和CPI一样,处理核周围的设备的速率也可能会制约处理核发挥真正的实力。即时处理核能跑4GHz,cache却总是miss(cache太小),或者总线总是处于忙碌状态(位宽不够),这样系统的吞吐量也是上不去的。
在这里插入图片描述

5 ARM Cortex-A53的性能

我找到有人对A53的IPC和FOP两个参数做了测试,结果贴在这里用作参考。

每周期指令数(IPC)

32bit浮点类型数乘/加运算任务,每周期可执行两个标量/SIMD 2(64bits)操作指令,每周期执行1个SIMD 4(128bits) 操作指令。
在这里插入图片描述

64bits浮点类型数乘/加运算任务,每周期可执行两个标量操作指令,每周期执行1个SIMD 2(128bits) 操作指令。
在这里插入图片描述

每周期浮点运算次数(FOP)

每周期可执行两次标量单/双精度浮点运算。
在这里插入图片描述
使用SIMD情况下,每周期可执行4次单精度浮点运算,8次乘积累加运算(FMA)。
在这里插入图片描述
使用SIMD情况下,每周期可执行2条双精度浮点运算,4次乘积累加运算(FMA)。
在这里插入图片描述

参考

  1. mips of cortex a53 - Architectures and Processors forum - Support
    forums - Arm Community

  2. Why does FPU performance differ in AArch64 and AArch32 with
    Cortex-A53? - Architectures and Processors forum - Support forums -
    Arm Community

  3. ホイール欲しい ハンドル欲しい » ARM Cortex-A53 の浮動小数点演算速度とコンパイル時間の比較 (flatlib.jp)

  4. opengl:cpufop [HYPERでんち] (flatlib.jp)

  5. 计算机体系结构:量化研究方法(第6版) (豆瓣) (douban.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/482517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA2022版教程下()

8.快捷键的使用 8.1 常用快捷键 见《 尚硅谷_宋红康_IntelliJ IDEA 常用快捷键一览表.md 》 8.2 查看快捷键 1、已知快捷键操作名,未知快捷键 2、已知快捷键,不知道对应的操作名 8.3 自定义快捷键 8.4 使用其它平台快捷键 苹果电脑或者是用惯Eclips…

改进YOLOv5: | 涨点神器 | 即插即用| ICLR 2022!Intel提出ODConv:即插即用的动态卷积

OMNI-DIMENSIONAL DYNAMIC CONVOLUTION ODConv实验核心代码ODConv代码yaml文件运行:论文链接: https://openreview.net/forum?id=DmpCfq6Mg39 本文介绍了一篇动态卷积的工作:ODConv,其通过并行策略采用多维注意力机制沿核空间的四个维度学习互补性注意力。作为一种“即插…

Java8流式操作——中间操作

文章目录 什么是中间操作?方法实践说明一、前提条件Person类Data类 二、操作filter:过滤distinct:去重(去除集合中重复的元素)sorted:排序①、sorted():无参构造②、sorted(Compartor compartor):有参构造 skip:跳过。从前往后数&…

【Python入门篇】Python开发环境的搭建——安装和配置PyCharm工具

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选择循环语句…

闲谈【Stable-Diffusion WEBUI】的插件:绘图过程动画输出

文章目录 (零)前言(一)过程动画输出(Steps Animation)(1.1)使用(1.2)成果 (零)前言 本篇主要提到WEBUI的过程动画输出插件&#xff0c…

Docker 持久化存储 Volumes

Docker 持久化存储 Volumes 简介如何选择 -v 和 --mount-v或--volume--mount 创建和管理卷启动带有卷的容器使用Docker Compose的卷使用卷启动服务使用只读卷备份、恢复或迁移数据卷备份卷 删除卷自动删除匿名卷删除所有未使用卷 简介 官方文档: https://docs.docker.com/stor…

Python JS逆向篇(四)

Python JS逆向篇(四) 找到参数加密位置跟进window.asrsea函数结果扣取的js代码扩展 逆向主题:某易云评论数据,请求时的加密参数。 (注:文章所涉及内容只做学习参考交流,不做除此之外的任何其它用…

正则表达式基础一

BRE(basic regular expression):匹配数据流中的文本字符 普通文本匹配 特殊字符 正则表达式存在一些特殊字符,如需当成普通文本来匹配,必须加上转义,即反斜杠\,如下所示 .*[]^${}?|() 指定出现位置的字符 ^ 指定行首…

Python两三行代码轻松批量添加~防韩还是很有必要的~

人生苦短,我用python 一直想做一个这种系列的但是因为七七八八的事情总是忘记, 今天正好有空,来开整一下~ 首先, 天冷防韩是什么梗? 【天冷防韩】 “天冷防韩”是“天冷防寒”的谐音, 不过“寒”指的…

编程工具集-我的JavaScript/TypeScript/NodeJS实用工具模块

JavaScript/TypeScript编程工具集 JavaScript/TypeScript/NodeJS实用工具模块 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 邮箱 :291148484163.com 本文地址:https…

【微服务 | 学成在线】项目易错重难点分析(媒资管理模块篇·上)

文章目录 模块整体认识架构问题分析nacos配置管理搭建nacos公用配置配置优先级网关搭建 分布式文件系统什么是分布式文件系统MinIO数据恢复测试SDK 上传图片http请求头中的content-typeRequestPart接口分析Service层的优化 上传视频断点续传技术java代码模拟分块与合并上传视频…

BFD场景作用及缺省配置

一、BFD缺省配置 表:BFD参数缺省值 二、BFD场景作用 表:BFD场景作用 三、BFD配置缺省参数汇总 1)配置BFD单跳检测 图:BFD单跳检测配置流程图 执行命令bfd,使能全局BFD功能并进入BFD视图。缺省情况下,全…

30天、2000公里、400亿,“长沙国际工程机械展”竖起世界展会新地标

文|智能相对论 作者|佘凯文 2021年4月的一天,一台重达120吨的日立建机超大型液压挖掘机在日本的某港口装载完成,或许绝大多人对120吨没有概念,给大家解释下,一吨等于2000斤,120吨就是240000斤。金箍棒知道吧&#xf…

RocketMQ学习1

1、RocketMQ快速入门 RocketMQ是阿里巴巴2016年MQ中间件,使用Java语言开发,在阿里内部,RocketMQ承接了例如“双11”等高并发场景的消息流转,能够处理万亿级别的消息。 1.1 准备工作 1.1.1 下载RocketMQ RocketMQ最新版本&#xff…

【垃圾回收器】基于Go实现引用计数法(ReferenceCount)

不想传火的,可以点击下面的链接! github:GCByGO 给我点赞嘛,球球了! What This? 现象 引用计数法是一种垃圾回收算法,用于跟踪对象被引用的次数。在该算法中,每个对象都会维护一个计数器&#xff0c…

PyTorch:深度学习框架的优雅演进与设计理念

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

【Linux】文件与路径

一、Linux相关软件 xftp:用来传文件 xshell:用来敲命令 二、Linux的文件结构 windows系统下设有盘符:如C盘、D盘等,Linux没有盘符的概念,只有一个根目录/,所有文件都在它下面。 在根目录下输入命令ls&am…

PHP 入门学习笔记

现在如果问什么行业最火,很多人第一反应肯定就是IT。的确,这些年随着互联网的不断发展,IT热门众所周知。那么就一起来说说,IT行业里,哪些技术更热门。 一、PHP技术: PHP 是一种创建动态交互性站点的强有力…

2. C 语言基础

2. C 语言基础 常考面试题 int main(int argc, char ** argv)函数中,参数argc和argv分别代表什么意思?⭐⭐⭐⭐ 第一个参数,int型的argc,为整型,用来统计程序运行时发送给main函数的命令行参数的个数。 第二个参数&am…

深度遍历模版与广度遍历模版

深度优先遍历 //void dfs(中间容器,数据) //{ // if(临界走到末尾) // { // 中间容器加到最终容器 // return; // } // for(做选择) // { // 改变中间容器 // dfs(中间容器,数据) // 撤回…