没有合适的资源?快使用搜索试试~ 我知道了~
首页ARMv8架构与指令集.学习笔记
ARMv8架构与指令集.学习笔记
5星 · 超过95%的资源 需积分: 49 171 下载量 45 浏览量
更新于2023-03-16
评论 12
收藏 2.05MB PDF 举报
全面深入介绍ARMv8架构与指令集相关内容,包括 ARM /thumb指令,ARMv8的架构层级与32/64位异常模型跟路由选择等。
资源详情
资源评论
资源推荐
目 录
第 1 章 ARMV8 简介 ............................................. 3
1.1 基础认识 ................................................. 3
1.2 相关专业名词解释 ......................................... 3
第 2 章 EXECUTION STATE ....................................... 4
2.1 提供两种EXECUTION STATE ..................................... 4
2.2 决定EXECUTION STATE的条件 ................................... 4
第 3 章 EXCEPTION LEVEL ....................................... 5
3.1 EXCEPTION LEVEL 与SECURITY .................................... 5
3.1.1 EL3 使用AArch64、AArch32 的对比 .............................. 5
3.2 ELX 和 EXECUTION STATE 组合 .................................. 6
3.3 路由控制 ................................................. 7
3.3.1 路由规则 .................................................... 7
3.3.2 IRQ/FIQ/SError路由流程图 .................................... 8
第 4 章 ARMV8 寄存器 ........................................... 9
4.1 AARCH32 重要寄存器 ........................................ 9
4.1.1 A32 状态下寄存器组织 ....................................... 10
4.1.1 T32 状态下寄存器组织 ....................................... 10
4.2 AARCH64 重要寄存器 ....................................... 11
4.3 64、32 位寄存器的映射关系 ................................ 11
第 5 章 异常模型 ............................................. 12
5.1 异常类型描述 ............................................ 12
5.1.1 AArch32 异常类型 ........................................... 12
5.1.2 AArch64 异常类型 ........................................... 12
5.2 异常处理逻辑 ............................................ 13
5.2.1 寄存器操作 ................................................. 13
5.2.2 路由控制 ................................................... 14
5.3 流程图对比 .............................................. 14
5.3.1 IRQ 流程图 ................................................. 15
5.3.2 Data Abort 流程图 .......................................... 18
5.4 源代码异常入口 ......................................... 20
5.4.1 C函数入口 .................................................. 20
5.4.2 上报流程图 ................................................. 20
5.4.3 异常进入压栈准备 ........................................... 21
5.4.4 栈布局 ..................................................... 21
第 6 章 ARMV8 指令集 .......................................... 22
6.1 概况 .................................................... 22
6.1.1 指令基本格式 ............................................... 22
6.1.2 指令分类 ................................................... 22
6.2 A64 指令集 ............................................... 22
6.2.1 指令助记符 ................................................. 23
6.2.2 指令条件码 ................................................. 23
6.2.3 跳转指令 ................................................... 24
6.2.4 异常产生和返回指令 ......................................... 24
6.2.5 系统寄存器指令 ............................................. 24
6.2.6 数据处理指令 ............................................... 25
6.2.7 Load/Store指令 ............................. 错误!未定义书签。
6.2.8 屏障指令 ................................................... 31
6.3 A32 & T32 指令集 ......................................... 32
6.3.1 跳转指令 ................................................... 32
6.3.2 异常产生、返回指令 ......................................... 32
6.3.3 系统寄存器指令 ............................................. 32
6.3.4 系统寄存器指令 ............................................. 32
6.3.5 数据处理指令 ............................................... 33
6.3.6 Load/Store指令 ............................................. 33
6.3.7 IT(if then)指令 ............................................ 34
6.3.8 协处理器指令 ............................................... 35
6.4 指令编码 ................................................ 35
6.4.1 A32 编码 ................................................... 35
6.4.2 T32-16bit编码 .............................................. 35
6.4.3 T32-32bit编码 .............................................. 36
6.4.4 A64 编码 ................................................... 36
6.4 汇编代码分析 ............................................ 36
第 7 章 流水线 ............................................... 37
7.1 简介 .................................................... 37
7.1.1 简单三级流水线 ............................................. 37
7.1.2 经典五级流水线 ............................................. 37
7.2 流水线冲突 .............................................. 38
7.3 指令并行 ................................................ 38
ARMv8 架构与指令集
-
3
-
第 1 章 ARMv8 简介
1.1 基础认识
ARMv8 的架构继承以往 ARMv7 与之前处理器技术的基础,除了现有的 16/32bit 的 Thumb2 指令支持
外,也向前兼容现有的 A32(ARM 32bit)指令集,基于 64bit 的 AArch64架构,除了新增 A64(ARM 64bit)
指令集外,也扩充了现有的 A32(ARM 32bit)和 T32(Thumb2 32bit)指令集,另外还新增加了
CRYPTO(加密)模块支持。
1.2 相关专业名词解释
AArch32
描述 32bit Execution State
AArch64
描述 64bit Execution State
A32、T32
AArch32 ISA (Instruction Architecture)
A64
AArch64 ISA (Instruction Architecture)
Interprocessing
描述 AArch32 和 AArch64 两种执行状态之间的切换
SIMD
Single-Instruction, Multiple-Data (单指令多数据)
(参考文档:ARMv8-A Architecture reference manual-DDI0487A_g_armv8_arm.pdf)
ARMv8 架构与指令集
-
4
-
第 2 章 Execution State
2.1 提供两种 Execution State
• ARMv8 提供 AArch32 state 和 AArch64 state 两种 Execution State,下面是两种 Execution
State 对比.
Execution State Note
AArch32
提供 13 个 32bit 通用寄存器 R0-R12,一个 32bit PC 指针 (R15)、堆栈指针 SP (R13)、链接
寄存器 LR (R14)
提供一个 32bit 异常链接寄存器 ELR, 用于 Hyp mode 下的异常返回
提供 32 个 64bit SIMD 向量和标量 floating-point 支持
提供两个指令集 A32(32bit)、T32(16/32bit)
兼容 ARMv7 的异常模型
协处理器只支持 CP10\CP11\CP14\CP15
AArch64
提供 31 个 64bit 通用寄存器 X0-X30(W0-W30),其中 X30 是程序链接寄存器 LR
提供一个 64bit PC 指针、堆栈指针 SPx 、异常链接寄存器 ELRx
提供 32 个 128bit SIMD 向量和标量 floating-point 支持
定义 ARMv8 异常等级 ELx(x<4),x 越大等级越高,权限越大
定义一组 PE state 寄存器 PSTATE(NZCV/DAIF/CurrentEL/SPSel 等),用于保存 PE 当前的
状态信息
没有协处理器概念
2.2 决定 Execution State 的条件
SPSR_EL1.M[4] 决定 EL0 的执行状态,为 0 =>64bit ,否则=>32bit
HCR_EL2.RW 决定 EL1 的执行状态,为 1 =>64bit ,否则=>32bit
SCR_EL3.RW 确定 EL2 or EL1 的执行状态,为 1 =>64bit ,否则=>32bit
AArch32 和 AArch64 之间的切换只能通过发生异常或者系统 Reset 来实现.(A32 -> T32 之间是通过 BX 指令切换的)
ARMv8 架构与指令集
-
5
-
第 3 章 Exception Level
• ARMv8 定义 EL0-EL3 共 4 个 Exception Level 来控制 PE 的行为.
ELx(x<4),x 越大等级越高,执行特权越高
执行在 EL0 称为非特权执行
EL2 没有 Secure state,只有 Non-secure state
EL3 只有 Secure state,实现 EL0/EL1 的 Secure 和 Non-secure 之间的切换
EL0 & EL1 必须要实现,EL2/EL3 则是可选实现
3.1 Exception Level 与 Security
Exception Level
EL0
Application
EL1
Linux kernel- OS
EL2
Hypervisor (可以理解为上面跑多个虚拟 OS)
EL3
Secure Monitor(ARM Trusted Firmware)
Security
Non-secure
EL0/EL1/EL2, 只能访问 Non-secure memory
Secure
EL0/EL1/EL3, 可以访问 Non-secure memory & Secure memory,可起到物理屏障安全隔离作用
3.1.1 EL3 使用 AArch64、AArch32 的对比
Note
Common
User mode 只执行在 Non- Secure EL0 or Secure ELO
SCR_EL3.NS 决定的是 low level EL 的 secure/non-secure 状态,不是绝对自身的
EL2 只有 Non-secure state
EL0 既有 Non-secure state 也有 Secure state
EL3
AArch64
若 EL1 使用 AArch32,那么 Non- Secure {SYS/FIQ/IRQ/SVC/ABORT/UND} 模式执行在 Non-secure EL1,
Secure {SYS/FIQ/IRQ/SVC/ABORT/UND}模式执行在 Secure EL1
若 SCR_EL3.NS == 0,则切换到 Secure EL0/EL1 状态,否则切换到 Non-secure ELO/EL1 状态
Secure state 只有 Secure EL0/EL1/EL3
EL3
AArch32
User mode 只执行在 Non- Secure EL0 or Secure ELO
若 EL1 使用 AArch32,那么 Non- Secure {SYS/FIQ/IRQ/SVC/ABORT/UND} 模式执行在 Non-secure EL1,
Secure {SYS/FIQ/IRQ/SVC/ABORT/UND}模式执行在 EL3
Secure state 只有 Secure EL0/EL3,没有 Secure EL1,要注意和上面的情况不同
• 当 EL3 使用 AArch64 时,有如下结构组合:
剩余37页未读,继续阅读
你必须十分努力,才能看起来毫不费力
- 粉丝: 697
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- stc12c5a60s2 例程
- Android通过全局变量传递数据
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论6