Arm为何采用Helium技术而不用Neon_第1页
Arm为何采用Helium技术而不用Neon_第2页
Arm为何采用Helium技术而不用Neon_第3页
Arm为何采用Helium技术而不用Neon_第4页
Arm为何采用Helium技术而不用Neon_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

首先,我们需要了解Helium、Neon是什么?Helium是针对ArmCortex-M处理器系列的一种架构延伸,特别是为小型低功耗嵌入式系统提供高效的信号处理效能。它针对区域与电力进行优化,为M系列架构带来了类似于针对Cortex-A的SIMD指令的能力,这使其成为应对音讯装置、感測器中杻设备、关键字识别、语音命令控制等运算挑战的理想选择。Neon是Arm架构中的一种SIMD(单指令多数据)技术,主要用于加速多媒体和信号处理等密集型计算任务,它特别适合处理大量数据并行的场景,如图像处理、视频编码解码等。Arm为何采用Helium技术,而不用Neon?经过Arm研究团队多年的不懈努力,Arm于2019年推出了适用于Armv8M架构的ArmCortex-M矢量扩展技术(MVE)——ArmHelium技术。

起初,当我们面临CortexM处理器的数字信号处理(DSP)性能亟待提升的需求时,我们首先想到的是采用现有的Neon™技术。然而,面对典型的CortexM应用的面积限制条件下又需要支持多个性能的需求,意味着我们仍需从头开始。作为一种较轻的惰性气体,以氦气(Helium)作为研究项目的名称似乎再合适不过了。

该研究项目主要针对中端处理器,旨在实现数据路径宽度增加两倍的情况下将性能提高四倍,而这正与氦气的原子量(4)和原子序数(2)不谋而合。最终,在许多数字信号处理(DSP)和机器学习(ML)内核上,我们成功地实现了提升四倍的目标。毋庸置疑,“Helium”已经深入人心,成为Cortex-M处理器系列MVE的品牌名。要想打造具备良好DSP性能的处理器,主要关键在于可为其提供足够的数据处理带宽。在CortexA处理器上,128位Neon负载可以轻松地从数据缓存中直接提取。但是,CortexM处理器通常没有缓存,而是使用低延迟静态随机存取存储器(SRAM)作为主内存。对于许多系统来说,无法将SRAM路径(通常只有32位)拓宽到128位,因此导致面临内存操作停滞长达四个周期的可能性。同样,乘加(MAC)指令中使用的乘法器需要很大的面积,在小型CortexM处理器上使用四个32位乘法器是不切实际的。就面积限制层面而言,最小的Cortex-M处理器与能够乱序执行指令且功能强大的CortexA处理器的大小可能相差几个数量级。

因此,在创建M系列架构时,我们必须认真考虑充分利用每一个gate。为了充分利用现有硬件,我们需要确保高成本资源(如通往内存的连接和乘法器)在每个周期都保持同时繁忙的状态。在高性能处理器(如CortexM7)上,可以通过矢量MAC双发射来达成这一目标。此外,还有一个重要的目标,即在一系列不同的产品上提高DSP性能,而不仅局限于高端产品上。想要解决以上这些问题,需要借鉴参考几十年前的矢量链理念中的一些技术。

上图显示了在四个时钟周期内交替执行的矢量负载(VLDR)和矢量MAC(VMLA)指令序列。这需要128位宽的内存带宽和四个MAC块,并且它们有一半时间处于空闲状态。可以看到,每条128位宽的指令被分成大小相等的四个片段,MVE架构称之为“节拍”(标为A至D)。无论元素大小如何,这些节拍始终是32位计算值,因此一个节拍可以包含一个32位MAC,或四个8位MAC。由于负载和MAC硬件是分开的,这些节拍的执行可以重叠,如下图所示。即使VLDR加载的值被随后的VMLA使用,指令仍可以重叠。这是因为VMLA的节拍A只依赖于上一个周期发生的VLDR的节拍A,因此节拍A和B与节拍C和D便会自然重叠。在这个例子中,我们可以获得与128位数据带宽处理器相同的性能,但硬件数量只有后者的一半。“节拍式”执行的概念可以高效地实施多个性能点。例如,下图显示了只有32位数据带宽的处理器如何处理相同的指令。这一点充满吸引力,因为它能使单发射标量处理器的性能翻倍(在八个周期内对八个32位值加载和执行MAC),但却没有双发射标量指令那样的面积和功耗需求。MVE支持扩展到每周期四拍的实现方式,此时节拍式执行将简化为更传统的SIMD方法。这有助于在高性能处理器上保持可控的实现复杂度。节拍式执行听起来很不错,但也会给架构的其他部分带来一些值得关注的挑战。1、由于多条部分执行的指令可以同时运行,因此中断和故障处理可能会变得相当复杂。例如,如果上图中VLDR的节拍D出现故障,通常情况下,实施必须回滚VMLA的节拍A在上一周期对寄存器文件的写入。我们的理念是让每个gate都物尽其用,而在回滚的情况下缓冲旧数据值与这一理念相悖。为了避免这种情况,处理器会针对异常情况存储一个特殊的ECI值,用于指示已经执行了后续指令的哪些节拍。在异常返回时,处理器便以此来确定要跳过哪些节拍。能够快速跳出指令而无需回滚或等待指令完成,基于此保持Cortex-M具备的快速和确定性中断处理能力。2、如果指令会跨越节拍边界,我们又会遇到时间跨越问题。这种交叉行为通常出现在拓宽/缩窄运算中。Neon架构中的VMLAL指令就是一个典型的例子,它可以将32位值矢量乘加到64位累加器中。遗憾的是,为了保持乘法器输出的完整范围,通常需要进行这类拓宽运算。MVE使用通用的“R”寄存器文件来处理累加器,从而解决了这一问题。此外,这样还减少了对矢量寄存器的寄存压力,使MVE只需使用Neon架构中一半的矢量寄存器就能获得良好的性能。在矢量架构中,通常不会像MVE一样广泛使用通用的寄存器文件,因为寄存器文件往往与矢量单元相距甚远。在乱序执行指令的高性能处理器上尤为如此,因为物理距离过大会限制性能。不过,正因如此,我们恰恰能够将典型CortexM处理器的较小规模特性转化为我们的优势。3、为确保重叠执行达到良好的平衡且无停滞,每条指令都应严格描述128位的工作,不能多也不能少。由此也会带来一些挑战。凭借研究员们辛勤不懈的努力,以及充分参考架构书籍中所涉的所有内容,MVE成功地将一些非常苛刻的功耗、面积和中断延迟限制转化为优势。RA8系列MCU利用Helium的性能RA8系列是瑞萨电子推出的全新超高性能产品业界首款基于Arm®Cortex®-M85处理器的MCU,能够提供卓越的6.39CoreMark/MHz,可满足工业自动化、家电、智能家居、消费电子、楼宇/家庭自动化、医疗等广

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论