当前位置: 首页 > news >正文

【ARM】FPU,VFP,ASE,NEON,SVE...是什么意思?

1、 文档目标

对执行浮点和SIMD操作的逻辑的各种名称的缩写词进行简要解释。

2、 问题场景

Arm处理器内核中有用于执行浮点和SIMD操作的逻辑,有各种名称。它们通常是一系列的缩写形式,因此本文旨在对每一个缩写词进行简要解释。

3、软硬件环境

1、软件版本:不涉及

2、电脑环境:不涉及

4、相关缩写

FPU (Floating-Point Unit) 浮点单元

浮点单元是处理器核心中的一个模块,用于使用 浮点数 执行算术运算。并非所有处理器都需要这个模块,因此一些处理器可以选择进行配置。

如果配置在内核中将定义FPU的工作方式及其支持的指令。

如果配置 FPU,则通常仍然可以执行浮点运算,只是速度较慢,因为这些运算将需要使用软件子程序来执行。不同的浮点单位支持不同大小的浮点数,因此对于某些处理器来说,无论它们只支持单精度值或是双精度值,这都是可配置的选项。

VFP (Vector Floating Point) 矢量浮点

之所以被称为“矢量”浮点,是因为不仅对处理浮点数的支持,而且还支持将浮点数作为SIMD运算的矢量处理。在这种情况下“向量”是将多个数据项打包到一个更大的数据容器中(例如,连续存储在单个寄存器中的多个独立值)。这是Armv8之前Arm体系结构浮点扩展的名称。

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

ASE (Advanced SIMD Extension) 高级SIMD扩展

这是对Armv7体系结构的扩展,使用整数或浮点数的矢量来支持额外的SIMD操作。与VFP扩展类似,高级SIMD扩展也有几个版本(高级SIMDv1、半精度高级SIMD和高级SIMDv2),它们添加了额外的功能并支持更多的数据类型。

虽然体系结构扩展是“高级SIMD扩展”,但用于此功能的产品名称是NEON。这两个名字指的是同一件事。

对于Armv8A体系结构,矢量SIMD操作的处理包含在默认体系结构中,因此高级SIMD不再被视为扩展。它仍然被称为NEON,预计将出现在所有标准v8-A处理器内核中,尽管从架构上讲,内核可能不包括它。

NEON

“NEON”是Armv7和Armv8 Cortex-A和Cortex-R处理器的高级SIMD功能所使用的产品名称。

不同处理器上的NEON(/ASE)支持可以采取不同的形式。基本功能相同,即允许对整数或浮点数执行SIMD操作。所用矢量的大小、矢量的数量和支持的浮点数的类型都可能因所实现的内容而异。

MPE (Media Processing Engine) 媒体处理引擎

用于Armv7A处理器Cortex-A5、Cortex-A7和Cortex-A9上的高级SIMD逻辑的名称。它通常被称为“NEON媒体处理引擎”,它是处理器中实现ASE/NEON支持的部分的另一个名称。

SVE (Scalable Vector Extension) 可伸缩矢量扩展

SVE是Armv8-A体系结构的扩展,此扩展仅在AArch64模式中受支持,它添加了额外的寄存器以支持更大的矢量、额外的指令和其他功能。包括SVE要求处理器核心也包括对NEON的支持。

以前对SIMD操作的支持使用的向量对数据项具有固定大小——例如,Armv7-a Advanced SIMD使用十六个128位数据项或三十二个64位数据项。

SVE的优点是它有32个矢量寄存器,大小可达2048位,但所用矢量的大小可以通过软件控制。这就是为什么它是“可伸缩”矢量扩展——矢量的大小可以在运行时缩放到不同的大小,而不是由处理器的实现决定的。

以前版本的SIMD支持(例如NEON)要求处理的数据与处理器实现的向量的大小相对应。SVE允许在操作过程中更改矢量数据的大小,而无需重写或重新编译代码,从而更容易编写可以使用SIMD操作处理数据的软件。

SVE2是SVE的更新版本,主要区别在于支持附加指令。这是为了让它能够在更广泛的应用中加速更多的算法。

SME (Scalable Matrix Extension) 可伸缩矩阵扩展

SME是Armv9-A体系结构的扩展,该体系结构建立在可扩展向量扩展(SVE和SVE2)的基础上,以增加对矩阵处理的支持。这包括许多新指令以及处理器的新操作模式——矩阵运算。

CME (Compute Matrix Engine) 计算矩阵引擎

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

MVE ( M-profile Vector Extension) M-型矢量扩展

专门用于Armv8-M体系结构,它提供对各种SIMD操作的支持。类似于NEON作为A级高级SIMD扩展的产品名称,“Helium”是用于M-配置文件矢量扩展的产品名。

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

VPU (Vector Processing Unit) 矢量处理单元

对于Arm-v9A架构的处理器核心,VPU是处理器内部的单元,可以包含高级SIMD、浮点运算(单精度或双精度)、SVE和SVE2以及密码扩展的逻辑。VPU可以在两个处理器核心之间共享,这两个核心在一个更大的集群中共同形成一个双核“复合体”。

http://www.dtcms.com/a/304776.html

相关文章:

  • Synopsys:消息管理
  • 2025年1中科院1区顶刊SCI-投影迭代优化算法Projection Iterative Methods-附完整Matlab免费代码
  • Vivado常用IP
  • GaussDB 数据库架构师修炼(十) 性能诊断常用视图
  • Rust基础-part8-模式匹配、常见集合
  • 嵌入式开发问题:warning: #177-D: variable “key“ was declared but never referenced
  • 2025年Solar应急响应公益月赛-7月笔记ing
  • Generative AI in Game Development
  • Class24AlexNet
  • STM32——HAL库
  • HBase、MongoDB 和 Redis 的区别详解
  • 图片查重从设计到实现(7) :使用 Milvus 实现高效图片查重功能
  • Redis内存使用耗尽情况分析
  • 达梦数据库DM用户管理-三权分立与四权分立,用户创建与维护,用户与模式的关系,用户相关权限
  • Spring Boot 简单接口角色授权检查实现
  • Rust 实战二 | 开发简易版命令行工具 grep
  • uv工具使用记录(Linux系统)
  • 【C++算法】75.优先级队列_数据流中的第 K 大元素
  • React 中获取当前路由信息
  • Android权限机制详解:保障用户隐私与应用安全
  • pytorch格式转华为昇腾的om格式
  • 移动语义和右值引用有什么关系?
  • Prometheus-1--什么是Prometheus?
  • Leetcode——475. 供暖器
  • Python - property
  • 学习笔记-中华心法问答系统的性能提升
  • pnpm 入门与实践指南
  • 字节序详解
  • webpack 原理及使用
  • 纸板制造胶工艺学习1