Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
  • Groups
    • Research Collaboration and Enablement
    • DesignStart
    • Education Hub
    • Innovation
    • Open Source Software and Platforms
  • Forums
    • AI and ML forum
    • Architectures and Processors forum
    • Arm Development Platforms forum
    • Arm Development Studio forum
    • Arm Virtual Hardware forum
    • Automotive forum
    • Compilers and Libraries forum
    • Graphics, Gaming, and VR forum
    • High Performance Computing (HPC) forum
    • Infrastructure Solutions forum
    • Internet of Things (IoT) forum
    • Keil forum
    • Morello Forum
    • Operating Systems forum
    • SoC Design and Simulation forum
    • 中文社区论区
  • Blogs
    • AI and ML blog
    • Announcements
    • Architectures and Processors blog
    • Automotive blog
    • Graphics, Gaming, and VR blog
    • High Performance Computing (HPC) blog
    • Infrastructure Solutions blog
    • Innovation blog
    • Internet of Things (IoT) blog
    • Operating Systems blog
    • Research Articles
    • SoC Design and Simulation blog
    • Smart Homes
    • Tools, Software and IDEs blog
    • Works on Arm blog
    • 中文社区博客
  • Support
    • Arm Support Services
    • Documentation
    • Downloads
    • Training
    • Arm Approved program
    • Arm Design Reviews
  • Community Help
  • More
  • Cancel
中文社区
中文社区
中文社区博客 Armv9-A 构架引入可伸缩矩阵扩展(SME)
  • Blogs
  • Forum
  • 视频和文件
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • Jump...
  • Cancel
  • New
中文社区 requires membership for participation - click to join
More blogs in 中文社区
  • ARM中国大学计划博客

  • Arm新闻

  • 中文mbed博客

  • 中文社区博客

  • 恩智浦汽车电子MCU讨论区博客

 

Tags
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Armv9-A 构架引入可伸缩矩阵扩展(SME)

Zenon Xiu (修志龙)
Zenon Xiu (修志龙)
February 9, 2022
Less than one minute read time.

原文:https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/scalable-matrix-extension-armv9-a-architecture

作者:Martin Weidmann July 14, 2021

翻译: 修志龙(Zenon Xiu)

Arm构架为从超级计算机到广泛的设备带来可伸缩的向量处理,使世界上大多数的计算负载都可以运行在arm构架上。 在Arm Vision Day上,arm公布了Armv9-A 构架,随后arm公开了一个Armv9-A构架扩展的早期技术细节,这个扩展就是可伸缩矩阵扩展(Scalable Matrix Extension, SME)。(译者:在翻译这篇文章时,SME已经正式release, 其完整spec可以在https://developer.arm.com/documentation/ddi0616/latest 下载)。SME是一序列增强CPU构架对矩阵运算支持的最新更新。

这次公开SME技术的目的是提供信息和赋能OS和工具开发者生态。SME为支持矩阵运算引入了一个新的编程模式和寄存器状态。

SME是在可伸缩向量扩展(Scalable Vector Extensions, SVE和SVE2)的基础上建立的,并增加了有效处理矩阵的能力,主要功能包括:

  • 矩阵tile的存储
  • 存取,插入,提取 tile向量,包括on-the-fly 转置
  • 计算SVE向量的外积(Outer product)
  • Streaming SVE 模式

Arm上的矩阵乘

矩阵乘是很多关键负载的重要部分,比如科学计算,计算机视觉,有些机器学习和增强现实场景。Arm构架已经持续演进,增加了提高这些运算的性能和效率的指令。

图片1

  • Armv8.4-A:支持了8-bit整型的点积运算指令(DOT指令)
  • Armv8.6-A: 支持在向量寄存器里做整型和浮点型的矩阵乘指令,和BFloat16数据类型
  • Armv9-A: 支持了SVE2,更宽的向量处理

SME是这个演化的下一步,可以明显提升CPU处理矩阵的吞吐量和效率。

SME和矩阵乘

一个简单实现矩阵乘的方式是如下图所示的三层嵌套循环,

图片2

 

for m in 0..M-1
     for n in 0..N-1
          C[m, n] = 0;
          for k in 0..K-1
                C[m, n] += A[m, k] * B[k, n]

 这种方式得到的乘运算和内存读的数量比率是1:2,也就是每两个元素读操作对应一个乘运算。为提高效率和吞吐量,我们需要提高这个比率。一个方法就是一次计算多个结果,比如:

在这个例子里面,通过一次计算4个结果可以提高乘运算和读操作的比率到1:1,也就是,得到4个乘结果需要四个读操作。

图片3

SME是基于外积计算引擎,进一步利用一次读操作产生多个结果的想法,

图片4

计算一次向量外积A[H] ⨷ B[W], 会产生一个HxW的矩阵, 并累加到一个矩阵tile - C[HxW].  通过迭代计算A矩阵的列和B矩阵的行的外积,并累加到C矩阵,可以得到一个完整的A[HxK] 和B[KxW]矩阵乘结果。

SME是可伸缩的构架设计,允许不同的向量宽度的实现。乘运算和读操作的比率取决于宽度的实现。比如,512-bit 向量的实现,如果向量中存放32-bit的元素,那么其乘操作与读操作的比率为256:2 。当4个向量输入可以计算出4个输出tile时,这个比率提升到256:1 。

SME和SVE2

图片5

SME增加了一新的操作模式 - Streaming SVE 模式。当在Streaming SVE 模式时,可以使用新的SME存储和指令, 同时也可以使用大部分的现有SVE2指令。当在非Streaming SVE模式时,其行为与SVE2完全一样。应用可以在其需要时切换操作模式。

 为SME操作设计单独的操作的模式使得硬件实现为Streaming和非Streaming模式设计不同向量长度,在一个应用中可以使用Streaming和非Streaming 模式。 比如一个实现可以为Streaming SVE模式设计一个更长的向量,硬件优化Streaming, 以吞吐量为中心的操作。

获取更多信息

完整的SME指令集和系统寄存器信息可以在我们的技术网页获取。做为Arm构架参考手册的SME补充文档,可以在https://developer.arm.com/documentation/ddi0616/latest 下载。 我们也计划公开SME支持的材料和例子,作为2022年Learn the Architecture 指南计划的一部分。

Anonymous
  • Jackzhu
    Offline Jackzhu 11 months ago

    显然ARM9上的AI应用会更加出色,赞

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • Jackzhu
    Offline Jackzhu 11 months ago in reply to Zenon Xiu (修志龙)

    矩阵的算法指令越来越灵活了

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • Zenon Xiu (修志龙)
    Offline Zenon Xiu (修志龙) 11 months ago

    图片1

    图片2

    图片3:

    图片4:

    图片5:

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
中文社区博客
  • Arm A-Profile构架2022扩展

    Zenon Xiu (修志龙)
    Zenon Xiu (修志龙)
    原文:Arm A-Profile Architecture Developments 2022 - Architectures and Processors blog - Arm Community blogs - Arm Community  作者:Martin Weidmann翻译:修志龙(Zenon Xiu) 与arm构架授权和生态伙伴一起,arm持续演进其构架,开发新功能以满足现有和新市场的要求…
    • October 17, 2022
  • 深入理解 Arm A-profile的non-maskable interrupt -NMI

    Zenon Xiu (修志龙)
    Zenon Xiu (修志龙)
    原文: https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/a-profile-non-maskable-interrupts  翻译: 修志龙 Zenon Xiu Arm A-profile构架一个长久以来的局限性是:缺乏对non-maskable interrupt (NMI…
    • August 24, 2022
  • Arm A-Profile 构架2021扩展

    Zenon Xiu (修志龙)
    Zenon Xiu (修志龙)
    原文: https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/arm-a-profile-architecture-developments-2021 Martin Weidmann September 8, 2021 翻译注释:Zenon Xiu Arm与arm构架授权公司及生态伙伴一起…
    • August 17, 2022