armv8/armv9的简介-学习这一篇就够了
armv8/armv9的简介-学习这一篇就够了
ARM架构是当今最主流的处理器架构之一,每年有数十亿基于ARM的设备产生。从智能手机到服务器,ARM架构的身影无处不在。本文将带你深入了解ARM架构的基础知识、版本演进以及主要特性,帮助你全面掌握这一重要技术。
第一部分 简介
1、Overview
Arm架构为处理器或核心的设计提供了基础,通常我们可以将处理器或核心称为处理元素(PE)。Arm架构用于一系列技术,集成到系统级芯片(SoC)设备中,例如智能手机、微型计算机、嵌入式设备,甚至服务器。该架构为软件开发人员公开了通用指令集和工作流程,也称为程序员模型。这有助于确保架构不同实现之间的互操作性,以便软件可以在不同的Arm设备上运行。
2、About the Arm architecture
Arm架构是当今比较主流的一类处理器架构,每年有着数十亿级的基于ARM的设备产生。ARM架构又分为3类:A、R、M
这三类允许Arm架构根据不同用例的需求进行定制,同时仍然共享一些基本功能。注:Arm Cortex是用于Arm处理器IP产品的品牌名称。Arm的合作伙伴提供使用Arm架构的其他处理器品牌。
3、架构(architecture)到底是什么意思呢
当我们使用术语架构时,我们指的是功能规范。在Arm架构的情况下,我们指的是处理器的功能规范。架构指定处理器的行为方式,例如它有什么指令以及指令做什么。
您可以将架构视为硬件和软件之间的规则。该架构描述了软件可以依赖硬件提供哪些功能。一些功能是可选的,我们将在稍后的微架构部分讨论。
架构可能会规定:
4、Architecture and micro-architecture
架构(Architecture)不会告诉您处理器是如何构建和工作的。处理器的构建和设计被称为微架构。微架构(micro-architecture)告诉你处理器是如何工作的。
微架构(Micro-architecture)包含:
- Pipeline length and layout.
- Number and sizes of caches.
- Cycle counts for individual instructions.
- Which optional features are implemented
例如,Cortex-A53和Cortex-A72都是Armv8-A架构的实现。这意味着它们具有相同的架构,但它们具有非常不同的微架构,如下图所示:
5、Arm architecture的版本
Arm架构是最著名的Arm规范,但它并不是唯一的规范。Arm对构成现代片上系统(SoC)的许多组件具有类似的规范。下图提供了一些示例:
- Generic Interrupt Controller
- System Memory Management Unit (SMMU or IOMMU)
- Generic Timer
- Server Base System Architecture and Trusted Base System Architecture
- Advanced Microcontroller Bus Architecture(AMBA)
6、Arm documentation的定义
- Arm Architecture Reference Manual (Arm ARMs) - 架构类的文档,一般就看这个
- Arm Cortex processor has a Technical Reference Manual (TRM) - arm core的文档,基本不用看
- Arm Cortex processor also has a Configuration or Integration Manual (CIM) - 可能是给ASIC看的
例如你要学习 Cortex-A75 processor,可以去查看以下文档:
7、ARM timeline
(注:以下的time都是自己整理,不一定都正确)
第二部分 armv7/armv8/armv9 架构部分的特性总结
1、Armv9-A architecture
Armv9-A架构建立在Armv8-A架构的基础上并向前兼容。Armv9-A架构构成了Arm基础系统架构的基础——该规范概述了一种标准,可确保硬件和固件在系统级的广泛应用中具有兼容性。
Armv9-A架构引入了一些主要的新特性:
- SVE2: extending the benefit of scalable vectors to many more use cases
- Realm Management Extension (RME): extending Confidential Compute on Arm platforms to all developers. Read more about Confidential Compute and Arm architecture security features
- BRBE: providing profiling information, such as Auto FDO
- Embedded Trace Extension (ETE) and Trace Buffer Extension (TRBE): enhanced trace capabilities for Armv9
- TME: hardware transactional memory support for the Arm architecture
2、Armv8-A architecture
Armv8-A架构引入了使用64位和32位执行状态的能力,分别称为AArch64和AArch32。AArch64执行状态支持A64指令集。它在64位寄存器中保存地址,并允许基本指令集中的指令使用64位寄存器进行处理。AArch32执行状态是一个32位执行状态,它保留了与Armv7-A架构的向前兼容性,增强了该配置文件,使其可以支持AArch64状态中包含的某些功能。它支持T32和A32指令集。
Armv8-A架构允许不同级别的AArch64和AArch32支持,例如:
- AArch64 only designs
- AArch64 designs that also support AArch32 operating systems and virtual machines
- AArch64 support with AArch32 at (unprivileged) application level only
3、Armv7-A architecture
Armv7-A架构引入了架构配置文件的概念,这个概念在Armv8-A和Armv9-A中得到延续。Armv7-A架构:
- 以多种模式实现传统的Arm架构
- 支持基于内存管理单元(MMU)的虚拟内存系统架构(VMSA)
- 支持Arm(A32)和Thumb(T32)指令集
该架构还支持多种扩展: - Security Extensions
- Multiprocessing Extensions
- Large Physical Address Extension
- Virtualization Extensions
- Generic Timer Extension
- Performance Monitors Extension
所有这些扩展都是可选的,它们提供的大部分功能都包含在Armv8-A架构中。
4、Armv9-A特性总结
Arm Application-profile (A-profile)架构面向高性能市场,例如PC、移动、游戏和企业。A-profile架构的最新版本是Armv9-A和Armv8-A。Armv9-A和Armv8-A的特性对比请看下表:
Feature | Architecture versions | Description |
---|---|---|
AArch64 | Armv8.0-A | Armv9.0-A |
AArch32 | Armv8.0-A | Armv9.0-A (EL0 only) |
Virtualization | Armv8.0-A | Armv9.0-A |
TrustZone | Armv8.0-A | Armv9.0-A |
Realm Management Extension (RME) | Armv9.0-A | Realm Management Extension (RME)建立在TrustZone之上,具有以下功能:(1) 两个额外的安全状态 (2) 两个额外的物理地址空间 (3) 在安全状态之间动态移动资源的能力这些功能支持Arm机密计算架构(Arm CCA)和动态TrustZone。 |
Hardware-accelerated cryptography | Armv8.0-A | Armv9.0-A |
Neon | Armv8.0-A | Armv9.0-A |
Virtualization Host Extension (VHE) | Armv8.1-A | Armv9.0-A |
Privilege Access Never (PAN) | Armv8.1-A | Armv9.0-A |
Statistical Profiling Extension (SPE) | Armv8.2-A | Armv9.0-A |
Scalable Vector Extensions (SVE) | Armv8.2-A | SVE为具有可变矢量长度的SIMD提供支持。SVE支持向量长度不可知的编码风格,其中代码不需要重新编写或重新编译,因为它动态地适应实现的向量长度。SVE架构允许实现向量长度高达2048位,其中向量长度必须是128位的倍数。SVE还支持为固定向量长度编写的代码。 |
Pointer authentication | Armv8.3-A | Armv9.0-A |
Nested Virtualization | Armv8.3-A | Armv9.0-A |
Memory Tagging Extension (MTE) | Armv8.5-A | Armv9.0-A |
Branch Target Identification (BTI) | Armv8.5-A | Armv9.0-A |
GEneral Matrix Multiply (GEMM) | Armv8.6-A | Armv9.0-A |
BFloat16 | Armv8.6-A | Armv9.0-A |
High precision timers | Armv8.6-A | Armv9.0-A |
64-byte load and stores | Armv8.7-A | Armv9.0-A |
Scalable Vector Extension v2 (SVE2) | Armv9.0-A | SVE2是Armv8-A SVE的超集,具有扩展的功能。SVE2指令集增加了全面的定点算术支持。 |
Transactional Memory Extension (TME) | Armv9.0-A | 事务内存扩展为Arm架构带来了硬件事务内存(HTM)支持。事务内存用于解决编写高并发、多线程程序的困难,通过减少由于锁争用导致的序列化,粗粒度、线程级并行的数量可以随着CPU的数量更好地扩展。 |
Branch Record Buffer Extensions (BRBE) | Armv9.2-A | — |
第三部分 arm core的介绍和总结
TODO
第四部分 ARM 指令集介绍
1、怎样去学习ARM?
- ➀ 学习指令集
- ➁ 学习架构
- ➂ 学习arm core
- ➃ 学习arm IP
- ➄ 学习SOC手册
- ➅ 学习规范,包括FF-A规范
- ➆➇➈ 根据自己的需求,学习相关软件或OS
2、armv8汇编学习-书籍推荐
学个鸡腿学,其实不用看这样的书。点击此处看这个链接就可以了
ARM Assembly Language, 2nd Edition
ARM 64-Bit Assembly Language