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
    • Tools, Software and IDEs blog
    • 中文社区博客
  • Support
    • Arm Support Services
    • Documentation
    • Downloads
    • Training
    • Arm Approved program
    • Arm Design Reviews
  • Community Help
  • More
  • Cancel
中文社区
中文社区
中文社区博客 Arm A-Profile构架发展: Armv8.6-A
  • 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

Arm A-Profile构架发展: Armv8.6-A

Zenon Xiu (修志龙)
Zenon Xiu (修志龙)
January 29, 2021
Less than one minute read time.

本文翻译自

https://community.arm.com/developer/ip-products/processors/b/processors-ip-blog/posts/arm-architecture-developments-armv8-6-a

原作者:Nigel Stephens   2019年9月25日

译者: Zenon Xiu

Arm 构架持续进化中以满足我们生态伙伴的需求。这篇博文介绍了Armv8.6-A引进的一些新功能的概况。

这些增强构架功能提供了更高效的处理和更好地使能新领域应用,比如神经网络和机器学习。通用矩阵乘(GEMM)和BFloat16为这些领域提供了显著的提升。我们还会介绍增强的指针鉴权(Pointer authentication)安全功能。完整的指令集和系统寄存器信息会在我们的技术网站提供。完整包含Armv8.6-A和之前构架的Armv8-A 构架参考手册(ArmARM)将在下一年(2020)公布。 XML将会很快发布,我们会提供相应链接。((译者:这篇翻译发布时,XML文档已经发布,链接为  https://developer.arm.com/architectures/cpu-architecture/a-profile/exploration-tools ,ArmARM也已经包含了armv8.6-A扩展,https://developer.arm.com/products/architecture/cpu-architecture/a-profile)

 之前A-profile构架更新的细节可以在这里找到:Armv8.1-A, Armv8.2-A, Armv8.3-A,  Armv8.4-A, and Armv8.5-A.

向量和浮点数相关增强

通用矩阵乘(GEMM)

矩阵乘是神经网络的Convolution Layer的关键部分。 Weights放在一个矩阵,activations 放在另一个矩阵。

图1 weights和activation的矩阵乘, Arm Compute Library Layout

为了做矩阵乘,一个简单的算法通常使用3个嵌套循环,每次计算一个输出。

总共的数据取需要:2*M*N*K

Armv8.6-A在SVE和NEON里引进了新的矩阵乘指令。这通过减少内存访问的次数优化这个过程。这是通过一次计算多个元素来实现的,比如

图2 一次计算2x2个元素

这里我们每次从A和B取两个操作数(2xfetches)但是每次计算4个结果(一次loop 4次计算;4倍减少循环次数)。总的来说,相较于每次计算一个元素,数据取的数量减半。

区域越大好处越多,比如 4x4的数组,每个循环深度需要8个操作数,但是进行16个乘。

图3 计算4x4 块的结果

NEON和SVE里加入BF16和有符号/无符号 8-bit整型矩阵乘指令。SVE额外加入了对单精度和双精度矩阵乘的支持。

BFloat16

BFloat16(BF16)是最近特别针对神经网络高性能处理引进的浮点数格式。Armv8.6-A增加了利用BF16浮点数格式加速特定运算的指令。

更多有关arm BF16支持的信息可以在这个神经网络的帖子找到。

 

虚拟化和系统管理相关的增强

虚拟化:细化的trap

从Armv7-A开始引入虚拟化以来,arm持续改进虚拟化的支持。一个虚拟化关键的支持是trap虚拟机执行的一些操作。目的是为了虚拟化这些操作或是让hypervisor充当Guest OS的哨兵。

Armv8.6-A改进了第二个使用场景的支持(让hypervisor当着Guest OS的哨兵), 通过细化的trap控制,包括各个系统寄存器,来实现。

WFE traps

Wait-for-Event (WFE)指令让在等待一个事件,比如等一个锁释放,的CPU进入低功耗状态,当WFE在一个虚拟机中执行时,hypervisor通常trap这个WFE指令,让CPU运行其他的workload.

 通常wait-for-event的事件会比较快到来,意味着推迟trap WFE可能有利于性能。Arm的研究表明引进延迟可以提高一个未超载系统的吞吐量。为了支持这个功能,Armv8.6-A引进了可配置的trap延迟时间的可选功能。

通用定时器Generic Timer:高精度时间

从Armv7-A开始,arm提供了标准的定时器框架,Generic Timer构架。Armv8.6-A引进了一序列Generic Timer的改进。

Generic Timer提供了一个CNTFREQ_EL0寄存器,用来报告system count的频率,但是给予系统设计选择其频率值的自由。这可能造成在不同频率系统上软件迁移workload的挑战。Armv8.6-A将这个频率标准化为1GHz, 这提供了一致的时间基础。 1GHz也远比Armv8.6-A之前构架的指导频率(译者:1-50MHz)高,因此可以提供更高的精度。

另外,增加了自同步(self-synchronizing)的物理和虚拟system count寄存器,这可以简化代码序列,比如,为了保证在一个内存操作之后的读当前count值的代码。

安全

在Armv8.3-A和Armv8.5-A中,我们引进了指针鉴权(Pointer Authentication, PAC)和 Branch Target Indicators (BTI)的支持。它们一起可以帮助抵抗如ROP和JOP攻击((Return- and Jump-Oriented Programming))技术,明显减少系统中可用的gadget数目。

Armv8.6-A在此基础上改进了指针鉴权(Pointer Authentication)的支持。

在Armv8.3-A中,当鉴权失败时,返回一个无效地址。在很多情况下,这个地址在鉴权指令(AUT*)之后很快会被使用,或做跳转或数据访问。使用这样的指针会导致一个异常。

在有限的情况下,AUT*指令返回的地址不会马上使用,Armv8.6-A引入了2个功能来处理这些情况。

EnhancedPAC2

EnhancedPAC2改变了增加PAC到指针的方式。在Armv8.3-A 中, PAC替换部分指针高bits。而在EnhancedPAC2中,PAC是与指针的高bits进行XOR操作。

FPAC

当一个攻击者可以获取AUT*指令返回的地址时,他们可能采用重复猜测的方式得到这个地址的正确的PAC。

为了对付这种攻击,在Armv8.6-A中加入了一个新扩展(FPAC )。 如果有FPAC功能,当PAC不正确时,AUT*指令会导致异常,从而阻止攻击者重复尝试猜测一个地址的正确PAC。

 

其他功能

Armv8.6-A也包含一些小功能:

  • 数据gathering hint, 用来表示写merging可能对性能优化没有好处
  • 额外的PMU events
  • 增加Activity Monitor Units (AMU)的虚拟化支持

 

总结

这篇博文简要介绍了Armv8-A构架中Armv8.6-A 引进的最新功能。这些功能提供了未来CPU在机器学习神经网络,虚拟化这些领域的增强,和改进处理效能的矩阵乘和改进的安全功能。下一步是和我们包括Linaro在内的生态伙伴一起使能开源软件,保证当包含这些功能的硬件可用时,软件已经准备好了。

获取更多细节,请访问我们的开发者网站。

Anonymous
  • Eric Yan
    Offline Eric Yan over 1 year ago

    关于通用定时器固定运行在1GHz频率有些疑问:

    这是否意味着它不能切换到更低的频率?

    或者1GHz仅仅代表基频,系统计数器仍然可以切换到较低的频率,如50MHz, 100MHz等?

    • 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