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

在这里插入图片描述

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

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
armv8和armv9是英国ARM公司推出的两个处理器架构,用于移动设备、嵌入式设备和服务器等领域。在这两个架构中,异常中断和GIC (Generic Interrupt Controller) 是非常重要的主题。 异常中断是指当系统发生某种事件时,处理器暂停当前任务,转而处理优先级较高的任务。异常中断包括两种类型:同步异常和中断异常。同步异常是由指令执行时产生的,如除零异常、非法指令异常等。中断异常是由外部事件触发的,如定时器中断、外设中断等。 在armv8和armv9架构中,异常的处理是通过异常向量表实现的。异常向量表是一个固定大小的表格,其中包含不同类型异常的处理函数的地址。当发生异常时,处理器会根据异常类型在异常向量表中查找相应的处理函数,并跳转到该函数执行异常处理。 GIC是一个用于处理中断的控制器,它负责管理和分发中断信号给相应的处理器核心。在多核处理器中,GIC可以实现中断的负载均衡和处理器间的中断共享。GIC具有多个中断输入通道,每个通道对应一个中断引脚。当外部设备发生中断时,通过相应的中断引脚将中断信号发送给GIC,然后GIC将中断信号分发给对应的处理器核心。 armv8和armv9架构中的GIC支持多种中断处理模式,包括中断屏蔽、中断优先级配置和中断传递方式等。GIC还可以实现中断的共享和抢占,以提高中断的处理效率和可靠性。 总而言之,armv8和armv9架构中的异常中断和GIC是处理器架构中非常重要的专题。通过学习异常中断的处理和GIC的功能,可以更好地理解和掌握armv8和armv9架构的中断处理机制,提高系统的可靠性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主公CodingCos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值