1. 前言
ARMv8的架构继承以往ARMv7与之前处理器技术的基础;
除了支持现有的16/32bit的Thumb2指令外,也向前兼容现有的A32(ARM 32bit)指令集。
基于64bit的AArch64架构,除了新增A64(ARM 64bit)指令集外,也扩充了现有的A32(ARM 32bit)和T32(Thumb2 32bit)指令集,另外还新增加了CRYPTO(加密)模块支持。
2. 相关术语
Items |
Notes |
PE |
Processing element,处理器单元可以理解成一个cpu core |
Execution state |
运行状态,包括AArch32和AArch64两种运行状态 |
AArch32 |
描述32bit Execution State,地址存在32bit寄存器;指令集使用32位寄存器;支持A32和T32指令集 |
AArch64 |
描述64bit Execution State,地址存在64bit寄存器;指令集使用64位寄存器;支持A64指令集 |
A32、T32 |
AArch32 ISA (Instruction Architecture) |
A64 |
AArch64 ISA (Instruction Architecture) |
Interprocessing |
AArch32和AArch64两种执行状态之间的切换 |
SIMD |
Single-Instruction, Multiple-Data (单指令多数据) |
translation table walks |
指页表的查找过程 |
Volatile |
标有Volatile的字段编译器认为是多线程代码, 从而不会执行优化; 这保证内存中字段的值总是最新的。比如连续两次读一个变量,不加volatile则编译器会优化,只会读一次,加上volatile,则编译器不会优化,会读两次,对寄存器的访问一般会加此关键字 |
3. 主要内容
主要内容 |
说明 |
Execution state |
包括AArch32与AArch64 |
Instruction sets |
包括AArch32下A32和T32指令集 与 AArch64下的A64指令集 |
state |
包括当前的Exception level和Secure state,这决定了PE的行为 |
异常模型 |
异常的类型、路由及处理 |
Interprocessing |
AArch64与AArch32的切换规则 |
存储模型 |
描述内存访问的规则和内存管理 |
编程模型 |
通过访问系统寄存器来控制PE和存储系统的大部分特性,并提供状态信息 |
SIMD和浮点指令 |
提供了高性能 |
Security模型 |
提供了两种安全状态,支持安全特性的应用开发 |
虚拟化模型 |
支持non-security的虚拟化操作 |
Debug |
提供了软件访问debug的一些特性 |
表 ARMV8描述的主要内容
4. 内容编排
章节 |
说明 |
A |
简介和体系结构概述 |
B C D |
AArch64应用级体系结构 A64指令集 AArch64系统级体系结构 |
E F G |
AArch32应用级体系结构 AArch32指令集 AArch32系统级体系结构 |
H |
外部debug |
I |
Armv8体系结构的内存映射组件 |
J |
体系结构伪代码 |
表 本数据手册的内容编排
5. 参考文档
[1] ARMv8-A Architecture reference manual-DDI0487A_g_armv8_arm.pdf