目录

  • 1 Overview
  • 2 What does Armv8.x-A mean?
  • 3 Why do we need the .x extensions?
  • 4 Processor implementation of Armv8.x-A
  • 5 Feature implementation between Armv8.x versions
  • 6 Armv8.x extensions and features
    • Armv8.1-A
    • Armv8.2-A
    • Armv8.3-A
    • Armv8.4-A
    • Armv8.5-A and Armv9.0-A
    • Armv8.6-A and Armv9.1-A
    • Armv8.7-A and Armv9.2-A
    • Armv8.8-A and Armv9.3-A
  • 7 Which .x extension does my processor implement?
  • 8 Armv8.x-A and the SBSA

1 Overview

对 Arm 架构的添加以版本增量的形式提供,称为扩展。 扩展允许根据合作伙伴的需求定期发布新功能,而无需对主要架构进行重大更改. ARM每年都会发布一个新的扩展。 与此一致,我们的 Cortex CPU(我们的架构实现)根据它们的发布时间使用最新的扩展。
本文解释了 Arm 架构的扩展,并提供了有关如何阅读和使用它们的指导。

2 What does Armv8.x-A mean?

Arm架构有不同的版本。 这些不同的版本通常显示为 ArmvX,其中 X 是版本号。 例如,Armv8-A 表示 Arm A-profile 架构的v8 版。 Armv8-A 等版本是该架构的主要版本。

但是,也有一些次要版本添加到主要版本中。 这些次要版本称为 .x 扩展。 例如,Armv8.1-A 表示 A-profile 架构的v8版本,.1 扩展。

3 Why do we need the .x extensions?

Arm 架构的主要版本的开发可能需要很多年。 例如,Armv7-A 于 2007 年发布,Armv8-A 紧随其后的 6 年后,即 2013 年。由于架构需要在主要版本之间演进以添加新功能,因此添加了次要版本,即 .x 扩展名。

自 Armv8-A 发布以来,在主要版本之间添加架构的过程已经正式化。 现在每年都会发布 .x 扩展名。 从基本规范 Armv8.0-A 开始,2015 年添加了 Armv8.1-A 扩展,2016 年添加了 Armv8.2-A 扩展,依此类推。 每个 .x 扩展都建立在最后一个的基础上,因此 Armv8.2-A 包含 Armv8.1-A 的所有功能,并添加了新功能。

每个 .x 扩展名都相对较小。 基本规范和原始版本的 Arm 架构参考手册 (Arm ARM) 大约有 6,000 页长。 相比之下,Armv8.3-A 规范只有 48 页长。

4 Processor implementation of Armv8.x-A

每个 .x 扩展都包含一组功能,一些是强制性的,一些是可选的。 如果处理器实现了该扩展号码的所有强制性功能,以及来自所有先前扩展的功能,则它实现了 .x 扩展。

例如,要描述为实现 Armv8.2-A,处理器必须实现以下所有强制性功能:

  • Armv8.0-A - the base specification and original release.
  • Armv8.1-A - the previous extension.
  • Armv8.2-A - the new extension.

注意:某项功能最初可能是可选的,但后来成为强制性的。 例如,Dot Product 指令在从 Armv8.0-A 到 Armv8.3-A 的所有扩展中都是可选的,但在 Armv8.4-A 中成为强制性的。

5 Feature implementation between Armv8.x versions

Armv8.x-A 处理器可以实现下一个 .x 扩展中的任何功能。 但是,在此之后,它无法实现来自任何 .x 扩展名的功能。

例如,描述为实现 Armv8.1-A 的处理器:

  • 必须实现 Armv8.0-A 和 Armv8.1-A 的所有强制性功能。
  • 允许实现来自 Armv8.2-A 的一些功能。
  • 不允许实现来自 Armv8.3-A、Armv8.4-A 等的功能。

6 Armv8.x extensions and features

在这里,我们总结了在每个 Armv8.x-A 扩展中添加的新功能。 我们不提供完整列表,但包含最重要的功能。 注意某些功能仅限于 AArch64 状态.

注意:AArch32 是 32 位执行状态,在 Armv8-A 之前的所有版本的 Arm 架构中都支持。 AArch64 是 64 位执行状态,仅在 Armv8-A 架构中受支持。

Armv8.1-A
  • Atomic memory access instructions (AArch64)
  • Limited Order regions (AArch64)
  • Increased Virtual Machine Identifier (VMID) size, and Virtualization Host Extensions (AArch64) –VHE
  • Privileged Access Never (PAN) (AArch32 and AArch64)
Armv8.2-A
  • Support for 52-bit addresses (AArch64) –LPA
  • The ability for PEs to share Translation Lookaside Buffer (TLB) entries (AArch32 and AArch64)
  • FP16 data processing instructions (AArch32 and AArch64)
  • Statistical profiling (AArch64)
  • Reliability Availability Serviceabilty (RAS) support becomes mandatory (AArch32 and AArch64)
Armv8.3-A
  • Pointer authentication (AArch64) –PAC
  • Nested virtualization (AArch64) – 虚拟化嵌套
  • Advanced Single Instruction Multiple Data (SIMD) complex number support (AArch32 and AArch64)
  • Improved JavaScript data type conversion support (AArch32 and AArch64)
  • A change to the memory consistency model (AArch64)
  • ID mechanism support for larger system-visible caches (AArch32 and AArch64)
Armv8.4-A
  • Secure virtualization (AArch64) –S-EL2
  • Nested virtualization enhancements (AArch64)
  • Small translation table support (AArch64)
  • Relaxed alignment restrictions (AArch32 and AArch64)
  • Memory Partitioning and Monitoring (MPAM) (AArch32 and AArch64)
  • Additional crypto support (AArch32 and AArch64)
  • Generic counter scaling (AArch32 and AArch64)
  • Instructions to accelerate SHA512 and SHA3 (AArch64 only)
Armv8.5-A and Armv9.0-A
  • Memory Tagging (AArch64) –MTE
  • Branch Target Identification (AArch64)
  • Random Number Generator instructions (AArch64)
  • Cache Clean to Point of Deep Persistence (AArch64)
Armv8.6-A and Armv9.1-A
  • General Matrix Multiply (GEMM) instructions (AArch64)
  • Fine grained traps for virtualization (AArch64)
  • High precision Generic Timer
  • Data Gathering Hint (AArch64)
Armv8.7-A and Armv9.2-A
  • Enhanced support for PCIe hot plug (AArch64)
  • Atomic 64-byte load and stores to accelerators (AArch64)
  • Wait For Instruction (WFI) and Wait For Event (WFE) with timeout (AArch64)
  • Branch-Record recording (Armv9.2 only)
Armv8.8-A and Armv9.3-A
  • Non-maskable interrupts (AArch64)
  • Instructions to optimize memcpy() and memset() style operations (AArch64)
  • Enhancements to PAC (AArch64)
  • Hinted conditional branches

7 Which .x extension does my processor implement?

Arm 架构包括一组功能寄存器(ID寄存器),用于报告处理器支持的功能。 对于由 .x 扩展名添加的每个新功能,即使是可选功能,这些功能寄存器中的字段会报告它是否受支持。

例如,ID_AA64MMFR2_EL1.AT 告诉您是否支持 Armv8.4-A 中的relaxed alignment要求。

下面总结了一些Core对应的架构扩展

8 Armv8.x-A and the SBSA

服务器基础系统架构 (SBSA : Server Base System Architecture) 提供了服务器的硬件要求。 SBSA 确保操作系统、管理程序和固件正确运行。 对于标准化程度很重要的服务器,SBSA 包括必须实施架构扩展的规则。

下表总结了与 Armv8.x-A 扩展相关的 SBSA 要求:

16-Understanding the Armv8.x extensions相关推荐

  1. 【Arm架构】什么是Arm?

    1 Arm architecture Arm 架构是世界上最流行的处理器架构之一.每年有数十亿台基于 Arm 的设备出货. A-Profile (Applications) R-Profile (Re ...

  2. 汇编-ARMv8架构指令集

    1. ARMv8寄存器体系 1.1 概述 ARMv8架构继承了ARMv7与之前处理器技术的基础,除了对现有的16/32bit的Thumb2指令支持外,也向前兼容了现有的A32(ARM 32bit)指令 ...

  3. SAP WMS Posts

    This page contains SAP Related posts. The main topics will be from SAP EWM, SAP WM, SAP LE and SAP i ...

  4. 用两张图告诉你,为什么你的App会卡顿?

    有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? 知道Android究竟是如何在屏幕上显示我们期望的画面的? 对Android的视图架构有整体把握. 学会 ...

  5. kubernetes 1.7.2 安装 记录过程

    系统信息 cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) 环境信息 IP地址 主机名称 10.10.6.11 master 1 ...

  6. 专题目录20211013-ongoing

    密码学基础系列 密码学基础(1)-前言 密码学基础(2)-基础知识介绍 密码学基础(3)-数字摘要hash的介绍 密码学基础(4)-aes和分组密码的介绍 密码学基础(5)-RSA的介绍 密码学基础( ...

  7. .NET 5 程序高级调试-WinDbg

    上周和大家分享了.NET 5开源工作流框架elsa,程序跑起来后,想看一下后台线程的执行情况.抓了个进程Dump后,使用WinDbg调试,加载SOS调试器扩展,结果无法正常使用了: 0:000> ...

  8. EditPlust 批量添加自定义工具

    先将插件文件***.js文件放到指定目录,比如editplus的安装下新文件夹tools. (下载地址见文末) 将下列代码内容另存为tool_u.ini 文件(不能改名), 放到EditPlus 的i ...

  9. Tomcat启动过程源码解读

    根据Tomcat源码来看一下Tomcat启动过程都做了什么 部分代码为主要流程代码,删去了try-catch以及一些校验逻辑,方便理解主流程 先来一张启动过程时序图,了解一下启动顺序 Tomcat启动 ...

最新文章

  1. git 修改仓库的描述_git简介、基本命令和仓库操作
  2. Nginx 性能调优实战
  3. 设计模式系列8--策略模式
  4. 我自学python的路-Python 学习路线(非常适合小白的入门级教程)
  5. Apollo之灰度发布
  6. jmeter 线程执行顺序_Jmeter-线程组执行顺序控制
  7. 9Linux服务器编程之:mkdir()函数和rmdir()函数
  8. docker mysql镜像连接不上_还在手动安装应用?试一下Docker
  9. 遵循五大设计理念 打造出色设计师
  10. python去重复功能_python包中的statmodels,如何处理完全重复的功能?
  11. 用倍增方式查询本表数据再插入到本表,用作测试数据
  12. destoon复制新模块的方法
  13. hp-ux 查看系统负载_linux性能分析之平均负载
  14. delphi mysql 连接_Delphi 使用之连接数据库
  15. ChinaMode评选:2010最受瞩目的45个初创公司/产品
  16. Arduino六足机器人
  17. Vault: 基础教程之密码引擎及动态密码生成
  18. 软件项目规模估算的3种方法---Loc估算法、FP估算法、PERT估算法
  19. 微信公众号的申请以及测试号的申请
  20. Zepto中文API

热门文章

  1. pccs色卡_NCS色彩体系与PCCS色彩体系如何关联使用
  2. python兼容性怎么样_Python与exe的兼容性
  3. 五一假期将至,机房维护工作要做好
  4. python通过ip获取mac地址_通过IP或socket获取对方的MAC地址
  5. python battleship_codecademy_python_Battleship!
  6. 成功解决TypeError: read_excel() got an unexpected keyword argument ‘parse_cols or ‘sheetname‘
  7. Python之selenium:selenium库的简介、安装、使用方法之详细攻略
  8. AI公开课:19.04.10颜水成—360副总裁《人工智能:观察与实践》课堂笔记以及个人感悟—191017再次更新
  9. 成功解决cv2.error: C:\projects\opencv-python\opencv\modules\imgproc\src\resize.cpp:4044: error: (-215) s
  10. MAT之ELM:ELM基于近红外光谱的汽油测试集辛烷值含量预测结果对比