【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可以在两个处理器核心之间共享,这两个核心在一个更大的集群中共同形成一个双核"复合体"。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

关于亿道电子

亿道电子技术有限公司(www.emdoor.cn)是国内资深的研发工具软件提供商,公司成立于2002年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。

二十多年来,先后与ARM、Altium、Ansys、QT、Green Hills、Minitab、EPLAN、QA Systems、OpenText、SureSoft、Visu-IT、PLS、Ashling、MSC Software、Autodesk、Source Insight、IncrediBuild、Lauterbach、Adobe、TestPlant等多家全球知名公司建立战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家中国本土客户,为客户提供从芯片级开发工具、EDA设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式GUI工具等等。亿道电子凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。

相关推荐
w微信1501350781215 小时前
小华一级 代理商 HC32F005C6PA-TSSOP20 HC32F005系列
c语言·arm开发·单片机·嵌入式硬件
憧憬一下16 小时前
Pinctrl子系统中Pincontroller和client驱动程序的编写
arm开发·嵌入式·c/c++·linux驱动开发
上海知从科技1 天前
知从科技受邀出席ARM日产技术日
arm开发·科技
极客小张2 天前
基于STM32的智能温室环境监测与控制系统设计(代码示例)
c语言·arm开发·stm32·单片机·嵌入式硬件·物联网·毕业设计
TeYiToKu3 天前
笔记整理—linux驱动开发部分(6)platform平台总线
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件
飞腾开发者3 天前
飞腾平台Arm ComputeLibrary编译安装指南
linux·服务器·arm开发·后端·性能优化
CodingCos3 天前
【ARM Linux 系统稳定性分析入门及渐进 1.1 -- Crash 工具功能概述】
linux·arm开发·crash tools·linux crash·crash 工具使用
@haihi5 天前
IIC和SPI的区别和相同之处
arm开发·stm32·mcu
@@庆5 天前
FreeRTOS 数据传输方法(环形buffer,队列的本质)队列实验—多设备玩游戏
arm开发·stm32·单片机·嵌入式硬件·freertos
LensonYuan7 天前
信创环境模拟:X86架构下部署搭建aarch64的ARM虚拟机
arm开发·架构·aarch64·虚拟开发环境