ARMv8官方手册学习笔记(一):简介

ARMv8官方手册学习笔记(一):简介
最新回答
风月本无界

2022-09-21 04:05:18

ARMv8官方手册学习笔记(一):简介

一、Architecture Reference Manual手册概述

Architecture Reference Manual手册详细描述了ARM架构的定义,这些定义包括了一些抽象的行为,这些行为被称为processing element(简称PE)。任何符合ARM架构的实现都必须严格遵循PE的定义。同时,该手册还定义了使用PE的软件行为规则,以确保软件能够在ARM架构上正确、高效地运行。

二、ARM架构手册的主要内容

ARM架构手册涵盖了多个关键方面,包括但不限于:

  • Debug功能:提供了调试ARM架构处理器的方法和工具。
  • Trace功能:可以跟踪软件的行为,帮助开发者定位问题。
  • RISC架构特点

    大量、统一的寄存器,简化了指令集的设计。

    Load/store体系结构,指令通过寄存器进行操作,不能直接作用于内存,提高了指令的执行效率。

    简单的寻址模式,所有load/store操作都通过寄存器内容和指令字段进行,降低了指令的复杂性。

  • 内存管理功能:包括caches和地址翻译,支持高效的内存访问和虚拟内存管理。
  • ARMv8-A架构描述:详细描述了ARMv8-A架构的关键特性,如大小、性能、能耗等方面的优化,以及向后兼容性和自由度。
  • 支持64位和32位:ARMv8-A架构同时支持64位和32位的执行状态,满足了不同应用场景的需求。
  • 支持SIMD和浮点指令:提供了强大的数据处理能力,适用于高性能计算和图形处理等领域。

三、Architecture profiles(架构概要)

ARM体系结构自发布以来已经发生了重大变化,迄今为止已发布了8个主要版本(用版本号1到8表示),但前三个版本已废弃。其中,AArch64和AArch32分别描述了64位和32位执行状态:

  • AArch64:64位执行状态,地址保存在64位寄存器中,基本指令集中的指令使用64位寄存器进行处理。支持A64指令集。
  • AArch32:32位执行状态,地址保存在32位寄存器中,基本指令集中的指令使用32位寄存器进行处理。支持T32和A32指令集。

此外,ARM还定义了三种不同的应用场景:

  • A(Application profile):应用,支持Virtual Memory System Architecture (VMSA)和Memory Management Unit (MMU),支持A64、A32和T32指令。
  • R(Real-time profile):实时性,支持Protected Memory System Architecture (PMSA),适用于对实时性要求较高的应用场景。
  • M(Microcontroller profile):微处理器,适用于嵌入式系统和微控制器。

四、ARMv8架构概念

ARMv8架构引入了多个重要的概念,包括:

  • AArch64和AArch32:分别代表了64位和32位的执行状态,如图所示(插入AArch64和AArch32的图片):

  • ARM中断控制器:支持GICv3(version 3 of the ARM Generic Interrupt Controller architecture),提供了高效的中断管理和处理机制。
  • ARMv8 Debug:支持Self-hosted debug和External debug两种模式,分别提供了用户debugger接口和外部调试器接口。

五、支持的数据类型

ARMv8架构支持多种数据类型,包括但不限于整数、浮点数、向量等,如图所示(插入支持数据类型的图片):

六、ARM内存管理

ARMv8架构的内存管理功能非常强大,包括:

  • 访问非对齐的内存或产生异常,提高了内存访问的安全性。
  • 可限制应用程序访问指定内存区域,实现了内存访问的权限控制。
  • 虚拟地址(VA)转换为物理地址(PA),支持虚拟内存管理。
  • 支持大端和小端模式,满足了不同硬件平台的需求。
  • 控制对内存的访问顺序,提高了内存访问的效率。
  • 控制缓存和地址转换结构,优化了内存访问的性能。
  • 同步多个PE对共享内存的访问,保证了内存访问的一致性。

七、ARM扩展特性

ARMv8架构还不断推出扩展特性,以支持更多的应用场景和性能需求。例如:

  • ARMv8.1扩展特性:包括ARMv8.1-Atomics、ARMv8.1-SIMD、ARMv8.1-LOR等,提供了原子操作、高级SIMD指令和有限顺序区域等功能。
  • ARMv8.2扩展特性:包括ARMv8.2-A64ISA、ARMv8.2-FP16、ARMv8.2-DotProd等,对A64指令集进行了改进,支持半精度浮点数据处理和SIMD点积等功能。
  • ARMv8.3扩展特性:包括ARMv8.3-CompNum、ARMv8.3-JSConv、ARMv8.3-RCPC等,提供了SIMD复数支持、Javascript转换指令和更弱的释放一致性等功能。

综上所述,ARMv8架构是一个功能强大、灵活多变的处理器架构,广泛应用于各种嵌入式系统、移动设备、高性能计算等领域。通过深入学习ARMv8官方手册,我们可以更好地理解和应用这一架构,为开发高效、可靠的软件系统提供有力支持。