了解Armv8.x和Armv9.x扩展

news2024/9/19 19:57:47

概述

Arm架构新增的功能以扩展的形式提供,这样Arm能够定期发布新功能,以响应合作伙伴的需求,而无需对主架构进行重大更改。

Arm 每年都会发布新的扩展。Cortex CPU 是该架构的 Arm 实现,其会根据发布时间使用相应的扩展。

本指南解释了 Arm 架构的扩展,并提供了阅读和使用指导。

在本指南的最后,您可以检查您的知识。您将学到以下内容:

  • 用于标识扩展的命名方案。
  • 不同扩展中可以使用哪些功能。
  • 如何确定Arm Cortex CPU 实现支持哪些扩展功能。

Armv8.x-A和Armv9.x-A是什么意思?

Arm 架构有不同的版本。这些不同的版本通常展示为 ArmvX,其中 X 是版本号。例如,Armv8‑A 表示 Arm A‑profile 架
构的第8个版本,Armv9‑A 表示 A‑profile 架构的第9个版本。像 Armv8‑A 这样的版本是该架构的主要版本。

但是,也有一些次版本添加到主版本中。这些次版本称为 .x 扩展。例如,Armv8.1‑A 表示 A‑profile 架构的第8个版本,通过 .1 进行扩展。

为什么需要.x扩展?

主版本的Arm架构开发可能需要很多年。例如,Armv7‑A 于 2007 年发布,Armv8‑A 于六年后的 2013 年发布。由于需要在两个主版本之间添加新功能,因此架构添加了次版本(.x 扩展)。

自 Armv8‑A 发布以来,在主版本之间添加架构的过程已经正式化。现在每年都会发布 .x 扩展,从基本 Armv8.0‑A 开始,2015 年添加了 Armv8.1‑A 扩展,然后于 2016 年添加了 Armv8.2‑A 扩展。每个 .x 扩展都建立在上一个扩展的基础上。例如,Armv8.2‑A包含Armv8.1‑A的所有功能,并添加了新功能,Armv9‑A 同理。

扩展命名

扩展功能的命名格式为 FEAT_<name>,例如:

  • FEAT_SHA256:Armv8.2-A添加支持SHA256操作的扩展(其实Armv8.0-A就添加了,只是Armv8.2-A将SHA算法拆成了SHA-256,SHA-512以及SHA-3)
  • FEAT_BRBE:Armv9.2-A添加支持分支记录缓冲区的扩展

您可以在 Arm 开发者网站上找到完整的功能列表。

Arm 架构文档经常使用这些标识符。例如,以下是 AMCFGR 寄存器的说明:

该寄存器仅在实现 FEAT_AMUv1 时才存在。否则,对 AMCFGR 的直接访问是未定义的。

Arm 架构参考手册提供了在 Armv8.x-A 和 Armv9.x-A 架构中哪些功能是可选或强制的信息。

处理器实现

每个 .x 扩展都包含一系列功能,其中一些是必需的,一些是可选的。如果处理器实现了该扩展号的所有强制功能以及所有旧版本扩展的强制功能,则该处理器实现了 .x 扩展。

例如,Armv8.2-A的处理器必须实现以下架构版本和扩展中的所有强制功能:

  • Armv8.0‑A:基本规范和首个版本
  • Armv8.1-A:之前的扩展
  • Armv8.2‑A :新的扩展

同样,Armv9.1-A的处理器必须实现如下功能:

  • Armv9.0‑A:基本规范和首个版本
  • Armv9.1-A:新的扩展

Armv8.x-A 处理器可以实现下一个版本的任何扩展。但是,它无法再实现更高版本中的扩展。

例如,Armv8.1-A的处理器功能:

  • 必须实现Armv8.0-A和Armv8.1-A中的所有强制功能
  • 允许实现Armv8.2-A中的某些功能
  • 不允许实现Armv8.3-A及之后版本的功能

Armv8.x 和 Armv9.x 扩展以及特性

这一部分总结了每个 Armv8.xA 和 Armv9.xA 扩展中添加的新功能。我们不提供完整的功能列表,但我们包含了最重要的功能。请注意,某些功能仅限于 AArch64 状态,而其他功能则在 AArch32 和 AArch64 状态下均可用。

Armv8.1-A

  • 原子内存访问指令(AArch64)
  • 受限的保序区域(AArch64)
  • 增加虚拟机标识符大小和虚拟主机扩展(AArch64)
  • 不允许特权访问(AArch32和AArch64)

Armv8.2-A

  • 支持52位地址宽度(AArch64)
  • PE可以共享TLB页表项(AArch32和AArch64)
  • FP16数据处理指令(AArch32和AArch64)
  • 统计分析(AArch64)
  • 可靠性、可用性和可维护性(RAS)强制支持(AArch32和AArch64)

Armv8.3-A

  • 指针身份认证(AArch64)
  • 虚拟化嵌套(AArch64)
  • SIMD支持复数(AArch32和AArch64)
  • 增强支持JavaSript数据类型(AArch32和AArch64)
  • 对内存一致性模型的更改(AArch64)
  • ID 机制支持更大的系统可见缓存(AArch32和AArch64)

Armv8.4-A

  • 安全虚拟化(AArch64)
  • 虚拟化嵌套增强 (AArch64)
  • 支持小型转换表(AArch64)
  • 放宽对⻬限制(AArch32和AArch64)
  • 内存分区和监控MPAM (AArch32和AArch64)
  • 额外的加密算法支持(AArch32和AArch64)
  • 通用计数器伸缩(AArch32和AArch64)
  • SHA算法指令加速

Armv8.5-A和Armv9.0-A

  • 内存标记(AArch64)
  • 分支目标标识(AArch64)
  • 随机数生成指令(AArch64)
  • 缓存清零到Point of Deep Persistence(AArch64)

Armv8.6-A和Armv9.1-A

  • 通用矩阵乘法 (GEMM) 指令(AArch64)
  • 虚拟化的细粒度陷入(AArch64)
  • 高精度通用计时器
  • 数据聚合提示(AArch64)

Armv8.7-A和Armv9.2-A

  • 增强支持PCIe热插拔(AArch64)
  • 存储和加载指令原子操作64字节(AArch64)
  • WFI和WFE指令增加超时(AArch64)
  • 分支记录预测(仅限Armv9.2-A)

Armv8.8-A和Armv9.3-A

  • 不可屏蔽中断(AArch64)
  • 优化memcpy和memset操作指令(AArch64)
  • PAC增强提示条件分支(AArch64)

我的处理器实现了哪些扩展

Arm架构有一些特性寄存器,用于报告处理器支持的功能。对于 .x 扩展中增加的功能,这些寄存器中的字段都会指明处理器是否支持。

例如,ID_AA64MMFR2_EL1.AT告诉你是否支持Armv8.4-A中对宽松对齐的要求。没有字段指明处理器是否是Armv8.1-A,但软件可以读取所有8.1-A中强制功能字段,如果它们全部存在,则处理器符合Armv8.1-A。

Armv8.xA 和 SBSA

服务器基础系统架构 (SBSA) 规定了服务器的硬件要求。 SBSA 确保操作系统、虚拟机管理程序和固件正确运行。对于服务器来说,一定程度的标准化很重要,SBSA 定义了架构必须实施的扩展。

下表总结了与Armv8.x扩展相关的SBSA需求。
与Armv8.x相关的SBSA需求

检查你的知识

  1. Armv8.3 的主版本和.x 扩展是什么?

    主版本8,扩展3

  2. Armv8.4‑A 中添加了安全虚拟化。 Armv8.1‑A 处理器是否可以实现它?

    不能。Armv8.1 处理器必须实现 Armv8.1 的强制功能,并且可以实现 Armv8.2‑A 的功能。但不允许实现 Armv8.3、
    Armv8.4 或更高版本的功能,除非做出特殊让步。

  3. 只有可选功能才有字段来报告其存在?

    不是。强制和可选功能均有字段指明。

  4. Cortex‑A55 实现了 Arm 架构的哪个主版本和扩展?

    Armv8.2-A。

  5. SBSA 的哪些等级需要支持 16 位 VMID?

    Level3及以上。

相关信息

要了解有关本指南中相关的更多信息,请参阅:

  • 安全指南

    • Introduction to security
    • TrustZone for AArch64
    • Providing protection for complex software
  • Armv8-A虚拟化

  • Arm架构和参考手册

  • Arm社区(提出开发问题,并查找Arm专家发表的文章和博客)

  • Armv8-x.A 和 SBSA

    • Server Base System Architecture (SBSA)

下一步

每年 Arm 都会发布对其主要架构的扩展,提供新功能来支持合作伙伴的需求。在本指南中,我们解释了 Armv8.x 架构的扩展,描述了如何使用这些扩展,并概述了一些扩展支持的功能。

阅读本指南后,您应该了解扩展的表达方式、哪些功能在哪些扩展中可用,以及如何确定 Arm Cortex CPU 支持哪些功能。

要继续了解 Armv8‑A 和 Armv9‑A 架构,请参阅series of guides。

欢迎关注“安全有理”微信公众号。

安全有理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/987674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

扫描mapper包

文章目录 第一种-配置在resource目录下第二种- 直接配置java代码目录&#xff0c;在Maven中配置相关路径 第一种-配置在resource目录下 第二种- 直接配置java代码目录&#xff0c;在Maven中配置相关路径 不配置不会把mapper的xml文件编译到target文件中 <build><res…

vs2022不能加载winform界面

今天遇到vs2022加载winform界面错误&#xff0c; The service ‘Microsoft.VisualStudio.Shell.Design.Serialization.DesignerDocDataService’ must be installed for this feature to work。 当前vs版本&#xff1a; Microsoft Visual Studio Enterprise 2022 (64 位) - Cur…

虚拟化和容器

文章目录 1 介绍1.1 简介1.2 虚拟化工作原理1.3 两大核心组件&#xff1a;QEMU、KVMQEMUKVM 1.4 发展历史1.5 虚拟化类型1.6 云计算与虚拟化1.7 HypervisorHypervisor分为两大类 1.8 虚拟化 VS 容器 2 虚拟化应用dockerdocker 与虚拟机的区别 K8Swine 参考 1 介绍 1.1 简介 虚…

【MySQL】初见数据库

目录 什么是MySQL 为什么要使用数据库 数据库基础 数据库的本质 存储引擎 常用操作 登录mysql 创建数据库 使用数据库 查看数据库 创建数据库表 查看表 向表中插入数据 查询表中数据 什么是MySQL &#x1f352;在我们服务器安装完 MySQL 服务之后&#xff0c;经…

C++核心编程--类篇

C核心编程 1.内存分区模型 C程序在执行时&#xff0c;将内存大方向分为4个区域 意义&#xff1a;不同区域存放数据&#xff0c;赋予不同的生命周期&#xff0c;更能灵活编程 代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理的全局区&#xff1a;存放…

通讯录怎么导入新手机?3个推荐小妙招

最近刚换了新手机&#xff0c;旧手机里的联系人太多了&#xff0c;不想在新手机上一个个重新添加。有没有什么快速简单的方法能够将通讯录导入新手机&#xff1f; 大家在更换新手机之后都是怎么导入通讯录的呢&#xff1f;换手机最重要的就是把数据进行完整转移&#xff0c;那么…

Dwg转换成PDF怎么转?来学习下这个转换小妙招

dwg转PDF格式的好处在于两种格式的兼容性和安全性不同。PDF格式本身可以包含文字、图形、图像、表格等各种信息&#xff0c;而DWG格式只包含图纸的几何图形。PDF格式是封闭的&#xff0c;有统一的标准&#xff0c;可以在任何CAD不兼容的软件里打开。而DWG格式是CAD专用的电子文…

若依cloud 修改包名等

一、项目的项目名。 先改pom 然后在重命名文件 1、 修改主pom.xml <artifactId>ruoyi-api</artifactId> 缓存 <artifactId>zxf-api</artifactId> <groupId>com.ruoyi</groupId> <groupId>com.zhixiaofeng</groupId> 2、…

微信,支付宝高级服务商是什么?支付接口怎么申请?

一般来说支付公司的服务商也就是所谓的顶级服务商或者高级服务商&#xff0c; 有些收单外包服务机构的服务商级别也很高&#xff0c;只要服务商发展的商户业务优质且量大&#xff0c;尤其是线下业务&#xff0c;都会逐步提高服务商级别。 商户申请第三方支付接口&#xff0c;支…

同步FIFO的verilog实现(2)——高位扩展法

一、前言 在之前的文章中&#xff0c;我们介绍了同步FIFO的verilog的一种实现方法&#xff1a;计数法。其核心在于&#xff1a;在同步FIFO中&#xff0c;我们可以很容易的使用计数来判断FIFO中还剩下多少可读的数据&#xff0c;从而可以判断空、满。 关于计数法实现同步FIFO的详…

Nginx-高性能Web服务器

前言&#xff1a; 平时总听hex说Nginx服务器,也经常找他解决项目上的nginx配置&#xff0c;但自己一直不懂&#xff0c;不懂就学。 听他说&#xff1a;nginx最重要是 location url 配置&#xff08; 正则&#xff09;、反向代理与负载均衡&#xff0c;平时项目用这些比较多。 …

豪华卧室怎么装?快来看看吧

一阵轻松的叹息&#xff0c;由柔软的质地、新鲜的空气和扎实的设计带来。只需稍微借鉴这些豪华卧室的创意&#xff0c;这一切都可以成为你的。 用华丽的四柱床提升 四柱床的柱子为床框增添了另一种维度&#xff0c;同时保持通风。长长的线条提高了房间的高度&#xff0c;吸引…

KT142C-sop16语音芯片ic内置320Kbyte_USB更新内置空间详细说明

KT142C内置的是320K的空间&#xff0c;但是实际的大小&#xff0c;在电脑里面显示&#xff0c;应该是315Kbyte。 打开我的电脑&#xff0c;芯片连接PC之后&#xff0c;自动多出来了一个U盘&#xff0c;如下图所示&#xff1a; 这里的空间只有315KB &#xff0c;因为文件系统占…

Vue2项目练手——通用后台管理项目第八节

Vue2项目练手——通用后台管理项目 菜单权限功能tab.jsLogin.vueCommonAside.vuerouter/index.js 权限管理问题解决router/tab.jsCommonHeader.vuemain.js 菜单权限功能 不同的账号登录&#xff0c;会有不同的菜单权限通过url输入地址来显示页面对于菜单的数据在不同页面之间的…

C# 通过自定义控件实现炫酷的时间显示

先看效果 话不多说,直接上代码 基础的自定义控件 LED_Num public partial class LED_Num : UserControl{#region 属性/// <summary>/// 绘图区域/// </summary>Rectangle DrawArea = Rectangle.

Linux系统——MySQL安装与卸载(CentOS7 超详细演示)

Linux系统 安装与卸载 MySQL—— 超详细演示! MySQL8.0.26-Linux版安装1. 准备一台Linux服务器2. 下载Linux版MySQL安装包3. 上传MySQL安装包4. 创建目录,并解压5. 安装mysql的安装包6. 启动MySQL服务7. 查询自动生成的root用户密码8. 修改root用户密码9. 创建用户10. 并给root…

安卓手机怎么录屏?看这里,小白也能学会

“安卓手机可以录屏吗&#xff1f;最近需要用到录屏功能&#xff0c;在手机里面找了很久&#xff0c;也没有找到&#xff0c;听别人说安卓手机是有录屏的&#xff0c;有人知道怎么打开吗&#xff1f;” 在日常生活中&#xff0c;我们常常需要录制手机屏幕上的操作步骤&#xf…

QQ通讯录在哪里?3个步骤教你查找

QQ是一个综合性通讯平台&#xff0c;简单实用&#xff0c;并且具有许多令人喜爱的特点和优势。它给大家提供了丰富的功能和便利的交流方式&#xff0c;丰富了人们的日常生活。作为一款人们常用的聊天软件&#xff0c;其qq通讯录在哪里呢&#xff1f;本文将以苹果手机为例&#…

产品路线图如何制定?斯坦福大学产品管理课程为你支招

产品路线图是一个动态文档&#xff0c;它传达了与产品策略有关的项目清单及其优先次序。一个合格的产品路线图依赖哪些输入&#xff1f;又需要清晰地输出哪些信息&#xff1f; 本篇文章将与你分享&#xff0c;我在斯坦福大学「产品管理加速课程」中习得的产品路线图制定方法。…

抖音无需API开发连接Stable Diffusion,实现自动根据评论区的指令生成图像并返回

抖音用户使用场景&#xff1a; 随着AI绘图的热度不断升高&#xff0c;许多抖音达人通过录制视频介绍不同的AI工具&#xff0c;包括产品背景、使用方法以及价格等&#xff0c;以吸引更多的用户。其中&#xff0c;Stable Diffusion这款产品受到了许多博主达人的青睐。在介绍这款产…