【ARMv8/ARMv9 硬件加速系列 1 -- SVE | NEON | SIMD | VFP | MVE | MPE 基础介绍】

在这里插入图片描述

文章目录

    • ARM 扩展功能介绍
      • VFP (Vector Floating Point)
      • SIMD (Single Instruction, Multiple Data)
      • NEON
      • SVE (Scalable Vector Extension)
      • SME (Scalable Matrix Extension)
      • CME (Compute Matrix Engine)
      • MVE (M-profile Vector Extension)
      • MPE (Media Processing Engine)
      • 总结

ARM 扩展功能介绍

在ARM架构中,随着各个版本的进化,引入了多种技术和扩展来增强处理能力,特别是针对浮点运算、向量计算和矩阵运算。以下是ARMv8和ARMv9中与这些相关的一些关键技术和扩展的概述:

VFP (Vector Floating Point)

VFP矢量浮点处理单元,用于提升浮点运算性能,它支持单精度和双精度浮点数的运算。之所以被称为“矢量”浮点,是因为不仅对处理浮点数的支持,而且还支持将浮点数作为SIMD运算的矢量处理。

在这种情况下“向量”是将多个数据项打包到一个更大的数据容器中(例如,连续存储在单个寄存器中的多个独立值)。这是Armv8之前Arm体系结构浮点扩展的名称。
在这里插入图片描述

在Armv7体系结构中,不推荐使用VFP扩展来处理矢量中的浮点数,因为此功能已被“高级SIMD”扩展所取代。有不同版本的VFP(VFPv1、VFPv2、VFPv3、VFPv4)引入了对新功能和数据类型的支持。VFPv2是Armv5和Armv6架构的扩展,VFPv3和VFPv4是Armv7架构的扩展。

  • 例子:在需要进行大量浮点运算的图形处理或科学计算应用中,VFP可以提供加速。

SIMD (Single Instruction, Multiple Data)

SIMD技术允许一条指令同时对多个数据进行操作。在ARMv8中,这是通过NEON实现的,NEON提供了丰富的指令对浮点和整数数据进行并行处理。

一些现代软件,尤其是多媒体编解码软件和图形加速软件,有大量的少于机器字长的数据参与运算。例如,在音频应用中16位以内数据是频繁的,在图形与视频领域8位以内数据是频繁的。

当在32位微处理器上执行这些操作时,相当一部分计算单元没有被利用,但是依然消耗着计算资源。为了更好的利用这部分闲置的资源,SIMD技术使用一个单指令来并行地在同样类型和大小的多个数据元素上执行相同的操作。通过这种方法,硬件可以在同样时间消耗内用并行的4个8位数值加法运算来替代通常的两个32位数值加法运算

Figure1.1 展示了 UADD8 R0,R1, R2 指令操作。这个操作展示了以向量形式存储在通用寄存器R1R2中的48位数值的并行加法运算。最终结果也以向量形式存储到寄存器R0

在这里插入图片描述

Figure1.1

NEON

ARMv7 架构引入了高级 SIMD 扩展作为 ARMv7-A 和 ARMv7-R 配置文件的可选扩展。NEON通过定义存储在 64 位双字长的寄存器D 和128 位四字长的寄存器Q中的向量操作指令组来扩展 SIMD 概念。

用在ARM处理器上的高级SIMD扩展的实现称为NEON,这是架构规范之外使用的通用术语。NEON技术在当前所有ARM Cortex-A系列处理器上得到了实现。

NEON 指令作为 ARM 或 Thumb 指令流的一部分执行。相比使用额外的加速器,这简化了软件的开发,调试和集成。传统的ARM或Thumb指令管理所有程序流程和同步。NEON指令涉及以下管理:

  • 内存访问
  • NEON与通用寄存器之间的数据复制
  • 数据类型转换
  • 数据处理

Figure1.2 展示了VADD.I16 Q0, Q1, Q2 指令如何并行地执行存储在Q1,Q2中的8通道16位数值的加法运算,最终结果存储到了Q0

在这里插入图片描述

Figure1.2

SVE (Scalable Vector Extension)

SVE是ARMv8-A架构的一个扩展,它是针对高性能计算(HPC)和机器学习等领域开发的一套全新的矢量指令集,它是下一代SIMD指令集实现,而不是NEON指令集的简单扩展SVE指令集中有很多概念与NEON指令集类似,例如矢量、通道、数据元素等。SVE指令集也提出了一个全新的概念:可变矢量长度编程模型(VectorLength Agnostic,VLA)。

传统的SIMD指令集采用固定大小的向量寄存器,例如NEON指令集采用固定的128位长度的矢量寄存器。而支持VLA编程模型的SVE指令集则支持可变长度的矢量寄存器。这样允许芯片设计者根据负载和成本来选择一个合适的矢量长度。SVE指令集的矢量寄存器的长度最小支持128位,最大可以支持2048位,以128位为增量。SVE设计确保同一个应用程序可以在支持不同矢量长度的SVE指令机器上运行,而不需要重新编译代码,这是VLA编程模型的精髓。

SME (Scalable Matrix Extension)

在这里插入图片描述
ARMv9 引入了 SME (Scalable Matrix Extension),SME 是基于 SVE2 定义的,旨在加速AI和机器学习应用,特别是对于大型生成式AI模型。SME通过增强矩阵操作,提供了更高的灵活性和效率,以应对日益复杂的AI需求。它建立在SVE2的基础上,新增了对矩阵tile的高效存取、向量插入提取以及矩阵转置等功能。SME还引入了Streaming SVE模式,支持高吞吐量的数据流处理,并通过ZA存储优化了硬件资源的使用。这些特性共同确保了Arm架构在AI领域的持续竞争力和创新能力。在这里插入图片描述

CME (Compute Matrix Engine)

计算矩阵引擎是执行可扩展矩阵扩展(SME)操作逻辑的名称。CME的设计使得在多个处理元件(PE)上执行的指令可以共享功能,其中“PE”是我们通常称之为集群内核心的架构术语。在这里插入图片描述

MVE (M-profile Vector Extension)

  • 简介:MVE是针对ARM Cortex-M系列处理器的向量处理扩展,旨在提高能效和处理效率,特别适用于微控制器和嵌入式系统。它提供对各种SIMD操作的支持。类似于NEON作为A级高级SIMD扩展的产品名称,“Helium”是用于M-配置文件矢量扩展的产品名。

MVE有两种变体,MVE-IMVE-FMVE-I仅支持整数矢量,MVE-F支持浮点数矢量。在处理器核心中包含MVE-F还要求处理器支持MVE-I和浮点扩展。

MPE (Media Processing Engine)

媒体处理引擎 (MPE) 是用于多个 Armv7A 处理器上的高级 SIMD 逻辑的名称:Cortex-A5、Cortex-A7 和 Cortex-A9。它也经常/通常称为“NEON MPE”或“NEON 媒体处理引擎”,它是实现 ASE/NEON 支持的处理器部分的另一个名称。
在这里插入图片描述

Structure of the MPE

总结

从VFP到SVE、SME等,ARM架构通过引入一系列技术和扩展持续在浮点运算、向量处理和矩阵计算等方面提升性能。这些技术使得ARM处理器能够广泛应用于从低功耗的嵌入式设备到高性能计算场景。随着ARMv9的推出,对AI、机器学习等领域的支持将进一步加强,标志着处理能力和效率的又一次重大提升。

推荐阅读
https://blog.csdn.net/AngelLover2017/article/details/124309644
https://aijishu.com/a/1060000000466399
https://baijiahao.baidu.com/s?id=1798716186152062162&wfr=spider&for=pc
https://blog.csdn.net/weixin_42135087/article/details/125269850

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

App推广效果分析,Xinstall助力精准优化

App推广效果分析:Xinstall助力精准优化 在App推广的激烈竞争中,如何确保每一次推广活动都能带来最佳效果,是每个运营者都关心的问题。Xinstall作为一款专业的App推广工具,不仅提供了全方位的推广支持,还能通过精准的数…

Maven 快速入门

Maven 简介 Maven是apache旗下的一个开源项目&#xff0c;是一款用于管理和构建java项目的工具。 依赖管理 方便快捷的管理项目的依赖资源(jar包),避免版本冲突 配置 依赖: 指当前项目运行所需要的(jar包) 在pom.xml 中编写<dependencies> 标签 在<dependencies…

选择制造业生产管理系统指南

在当今日益激烈的市场竞争中&#xff0c;制造业企业要想保持领先地位&#xff0c;就必须拥有一套高效、智能的生产管理系统。选择一套合适的制造业生产管理系统&#xff0c;不仅能帮助企业优化生产流程、提高生产效率&#xff0c;还能降低生产成本、提升产品质量。 一、发现制…

2024/06/13--代码随想录算法3/17|01背包问题 二维、01背包问题 一维、416. 分割等和子集

01背包问题 二维 卡码网链接 动态规划5步曲 确定dp数组&#xff08;dp table&#xff09;以及下标的含义&#xff1a;dp[i][j] &#xff1a;从下标为[0,i-1]个物品中任取&#xff0c;放进容量为j的背包&#xff0c;价值总和最大为多少。确定递推公式&#xff0c; 有两个方向可…

简单操作,智能自动化:Windows键鼠模拟软件

一个 Windows 自动化工具&#xff0c;可模拟键盘和鼠标&#xff0c;自动执行任何流程和动作&#xff0c;只需录制动作并运行即可&#xff0c;无需编写脚本&#xff0c;只需按录制&#xff0c;然后播放即可&#xff0c;大小仅 35 KB&#xff0c;且免费无广告。 界面介绍 **打开…

pyside6在QLabel上显示图像文件

猫咪的图片&#xff1a;370*280像素 基本的代码&#xff1a; from PySide6.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout from PySide6.QtGui import QPixmap, Qtapp QApplication([])widget QWidget() layout QVBoxLayout(widget)label QLabel() label.…

【高校科研前沿】北京大学赵鹏军教授团队在Nature Communications发文:揭示城市人群移动的空间方向性

文章简介 论文名称&#xff1a;Unravelling the spatial directionality of urban mobility 第一作者及单位&#xff1a;赵鹏军&#xff08;教授|第一作者|北京大学&#xff09;&王浩&#xff08;博士生|共同一作|北京大学&#xff09;; 通讯作者及单位&#xff1a;赵鹏军…

计算机网络 —— 运输层(TCP三次握手)

计算机网络 —— 运输层&#xff08;TCP三次握手&#xff09; 三次握手第一次握手第二次握手第三次握手两次握手行不行&#xff1f; 我们今天来学习TCP的三次握手&#xff1a; 三次握手 TCP三次握手是TCP协议中建立连接的过程&#xff0c;旨在确保双方准备好进行可靠的通信。…

JavaScript之函数

函数 使用 声明语法&#xff1a; function 函数名() {函数体 }命名规范&#xff1a; 小驼峰命名法前缀用动词 前缀词&#xff1a; 调用 函数名()函数传参 为了提高函数的灵活性 声明语法&#xff1a; function 函数名(参数列表) {函数体 }调用 函数名(参数)在函数声…

登录/注册- 滑动拼图验证码(IOS/Swift)

本章介绍如何使用ios开发出滑动拼图验证码&#xff0c;分别OC代码和swift代码调用 1.导入项目model文件OC代码&#xff08;下载完整Demo&#xff09; 2.放入你需要显示的图片 一&#xff1a;OC调用 #import "ViewController.h" #import "CodeView.h"…

强大高效,推荐这两款分析文章和抠图的AI工具

ChatDOC ChatDOC是一款基于ChatGPT的AI阅读辅助工具&#xff0c;旨在通过与用户指定的文档进行对话来处理用户的专属数据。它能够帮助用户快速提取文档中的信息&#xff0c;支持多种文件格式&#xff0c;并提供准确的答案。此外&#xff0c;ChatDOC还具备智能格式化、自动摘要生…

使用QT制作QQ登录界面

mywidget.cpp #include "mywidget.h"Mywidget::Mywidget(QWidget *parent): QWidget(parent) {/********制作一个QQ登录界面*********************/this->resize(535,415);//设置登录窗口大小this->setFixedSize(535,415);//固定窗口大小this->setWindowTi…

交换机简介

一、 集线器的替代品—交换机 使用集线器的缺点&#xff0c;因此就设计出了交换机来代替集线器&#xff0c;交换机常见端口数量一般有4、8、16、24、32等数量。 华为交换机&#xff1a;S5720-HI系列 仅从实物图上来看&#xff0c;交换机和集线器非常的像&#xff0c;但是它们的…

【python】通行网格地图四叉树化 (leeccode 427)

【python】通行网格地图四叉树化 受到Leecode 427题的启发&#xff0c;427. 建立四叉树 想将由0和1组成的网格地图绘制为四叉树地图&#xff0c;0表示可通行网格&#xff0c;1表示不可通行网格。 import matplotlib.pyplot as plt import matplotlib.patches as patches …

【ARM Cache 与 MMU/MPU 系列文章 1.2 -- Data Cache 和 Unified Cache 的区别是什么?】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 Data Cache and Unified Cache数据缓存 (Data Cache)统一缓存 (Unified Cache)数据缓存与统一缓存的比较小结 Data Cache and Unified Cache 在 ARM架构中&#xff0c;缓存&#xff08…

第3章 Unity 3D着色器系统

3.1 从一个外观着色器程序谈起 新建名为basic_diffuse.shader的文件&#xff0c;被一个名为basic_diffuse.mat的材质文件所引用&#xff0c;而basic_diffuse.mat文件则被场景中名为Sphere的game object的MeshRenderer组件所使用。 basic_diffuse.shader代码文件的内容如下所示…

15.RedHat认证-Ansible自动化运维(上)

15.RedHat认证-Ansible自动化运维(上) RHCE8-RH294 Ansible自动化&#xff08;Ansible版本是2.8.2&#xff09; Ansible介绍 1.Ansible是什么&#xff1f; Ansible是一个简单的强大的无代理的自动化运维工具&#xff08;Ansible是自动化运维工具&#xff09;Ansible特点 简…

Java——LinkedList

1、链表 1.1 链表的概念及结构 链表在逻辑层面上是连续的&#xff0c;在物理层面上不一定是连续的 链表结构可分为&#xff0c;单向或双向、带头或不带头、循环或非循环&#xff0c;组合共计8种 重点&#xff1a;无头单向非循环链表、无头双向链表 1.2 模拟实现无头单向非…

ArcGIS JSAPI 高级教程 - ArcGIS Maps SDK for JavaScript - 探测效果(地图探测、地图窥探)

ArcGIS JSAPI 高级教程 - ArcGIS Maps SDK for JavaScript - 探测效果&#xff08;地图探测、地图窥探&#xff09; 实现原理 ArcGIS Maps SDK for JavaScript 从 4.29 开始增加 RenderNode 类&#xff0c;可以添加数据以及操作 FBO&#xff08;ManagedFBO&#xff09;&#xf…

影响数字本振信噪比的因素

2048 点 -66 4096 点-72 8192 点-77 16384 点-84