加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

ARM技术杂谈:何谓FPU、VFP、ASE、NEON、MPE、SVE、SME以及MVE

2022/06/30
2.2万
阅读需 9 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

FPU(Floating-Point Unit)

浮点运算单元是处理器内部用于执行浮点数计算的逻辑部件。因为并不是所有的处理器都需要具备该功能,所以一些处理器实现的时候可以配置为包含或不包含该部件。

如果处理器包含了该运算部件那么表现形式就取决于ARM架构的定义, 要么是作为处理器架构里面定义好的一部分,要么是作为处理器基础架构之外的扩展。浮点运算部件除了满足IEEE754标准,另外也会定义相关的FPU工作方式以及相对应的指令集。即便处理器里面并没有包含FPU单元,也仍然可以使用软件的方式来执行相关的浮点计算,但是使用软件完成这些运算跟使用硬件FPU相比会慢许多。

不同的浮点运算单元支持不同大小的浮点数据类型,所以对于一些处理器来说可以配置为仅支持单精度浮点数或者是单、双精度浮点数均支持。

VFP(Vector Floating Point)

“VFP”表示的是向量浮点运算单元,并且也是在ARMv8架构之前已经出现了的浮点运算扩展单元的名称。ARM架构默认并不支持向量浮点运算运算,因此相关的定义与实现都是通过架构的VFP扩展提供的。

之所以称为“向量”浮点是因为在ARMv6及以前这个扩展不只是用于增加浮点数计算处理,同时也用于类似向量的SIMD浮点数计算处理。在本文中,“向量”用于表示对打包成单个大数据集的一项乘法运算(例如把多个独立的数值合并存储到一个寄存器内相乘)。

在ARMv7架构中,这种使用VFP来处理向量浮点数据的方式不建议采用,相关的功能可以使用“先进SIMD扩展”来替代。

VFP有多个不同的版本 (VFPv1, VFPv2, VFPv3, VFPv4)用来支持不同的特性与数据类型。VFPv2用于ARMv5和ARMv6架构扩展,VFPv3与VFPv4用于ARMv7架构扩展使用。

ASE(Advanced SIMD Extension)

“ASE”是“先进SIMD扩展”的英文首字母缩写。它是ARMv7架构上用于提供额外SIMD运算的扩展,既可以使用整数(即INT整型),也可以使用浮点数。

同VFP扩展相似,先进SIMD扩展也有多个版本(Advanced SIMDv1、半精度Advanced SIMD以及Advanced SIMDv2)用来支持不同的特性与数据类型。

尽管架构上的扩展是“先进SIMD扩展”,但实际用于描述这个特性的产品名为“NEON”。这两个名称代表的是相同的部件。

对于ARMv8A架构中,在默认的架构上包含了对向量SIMD运算的处理所以先进SIMD扩展也不再认为是一种扩展。它仍然作为NEON并且呈现在所有标准的ARMv8-A处理器核心中,因此在某些架构的核心上可能不包括它。.

NEON

如上面简短的提及,“NEON”是用于ARMv7和ARMv8 Cortex-A与Cortex-R处理器的先进SIMD功能的产品名称。

需要注意的是NEON(或ASE)的支持在不同处理器上可能有不同的形式呈现,但基本的功能都是一样的,也就是说,它允许在整数或者浮点数据执行SIMD运算。 所使用的向量大小、向量的数量、所支持的浮点数类型等都取决于其具体的实现。

有关于NEON指令的更多信息可以从这里获得。

MPE

MPE(Media Processing Engine)是一些ARMv7A处理器当中先进SIMD部件使用的名称:Cortex-A5、Cortex-A7以及Cortex-A9。它通常也被称作“NEON MPE”或者“NEON多媒体处理引擎”,它也是处理器实现ASE/NEON支持后的别称。

SVE

SVE(Scalable Vector Extension)如前面所提到的,ARMv8-A架构已经包含了“先进SIMD”支持,用于提供SIMD向量处理能力。SVE是ARMv8-A架构的一种扩展,它表示的是可变向量扩展。

这个扩展只在AArch64模式下支持使用,它提供了额外的寄存器来支持更大向量、额外的指令以及其它的特性。如果要包含SVE则需要处理器核心对NEON提供支持。

之前支持SIMD运算使用的是固定大小的数据项,比如ARMv7-A先进SIMD使用16个128位的数据项或者32个64位的数据项。而SVE的好处是它拥有的32个向量寄存器可以并成一个2048位的大小,而且向量的大小是可以通过软件来控制的。这也就是为何它叫做“可变”向量扩展—向量的大小可以在运行中调整为不同大小,且这个特性并不随处理器实现而改变。

之前版本的SIMD支持(比如NEON)需要将数据提前处理成处理器实现的向量运算所对应的大小(这类数据通常也称作“已调节”数据)。SVE允许向量数据的大小在运算过程中被改变,无需重写或重新编译代码,使得它更加容易实现那些处理SIMD运算的软件开发。

SVE2是SVE更新后的版本,主要区别在于附加了更多的指令支持。这样就使得它可以在更宽的应用范围加速更多的算法。

有关于SVE指令的更多信息可以从这里获得,类似的SVE2指令的更多信息可以从这里获得。

SME

SME(Scalable Matrix Extension)是ARMv9-A架构提供的建立在可变向量扩展(SVE和SVE2)上增加了对矩阵处理支持。它包含了一定数量的新指令,相当于处理器的新模式—这个模式用于执行矩阵运算,并且这也使得它在处理矩阵运算以及常规的SVE SIMD运算时更容易使用不同的向量大小。

有关SME指令的更多信息可以从这里获得。

MVE

MVE(M-profile Vector Extension)是ARMv8-M架构专用的,它提供了大量对SIMD运算的支持。跟NEON作为A-系列先进SIMD扩展的产品名字一样,“Helium”则是M-profile Vector Extension的产品名称。

MVE可以分为2大类,MVE-I和MVE-F。MVE-I仅对整型向量提供支持,MVE-F则对浮点数据向量提供支持。要包含MVE-F那么处理器核心就需要支持MVE-I以及浮点扩展。

有关MVE指令的更多信息可以从这里获得。

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
STM32H743VIT6 1 STMicroelectronics High-performance and DSP with DP-FPU, Arm Cortex-M7 MCU with 2MBytes of Flash memory, 1MB RAM, 480 MHz CPU, Art Accelerator, L1 cache, external memory interface, large set of peripherals

ECAD模型

下载ECAD模型
$20.56 查看
STM32F429IIT6 1 STMicroelectronics High-performance advanced line, Arm Cortex-M4 core with DSP and FPU, 2 Mbytes of Flash memory, 180 MHz CPU, ART Accelerator, Chrom-ART Accelerator, FMC with SDRAM, TFT

ECAD模型

下载ECAD模型
$49.1 查看
ATXMEGA128D4-AUR 1 Microchip Technology Inc IC MCU 8BIT 128KB FLASH 44TQFP
$6.49 查看
Arm

Arm

ARM公司是一家知识产权(IP)供应商,主要为国际上其他的电子公司提供高性能RISC处理器、外设和系统芯片技术授权。目前,ARM公司的处理器内核已经成为便携通讯、手持计算设备、多媒体数字消费品等方案的RISC标准。公司1990年11月由Acorn、Apple和VLSI合并而成。

ARM公司是一家知识产权(IP)供应商,主要为国际上其他的电子公司提供高性能RISC处理器、外设和系统芯片技术授权。目前,ARM公司的处理器内核已经成为便携通讯、手持计算设备、多媒体数字消费品等方案的RISC标准。公司1990年11月由Acorn、Apple和VLSI合并而成。收起

查看更多

相关推荐

电子产业图谱