armv8架构与指令集.整理.初稿

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目 录

第1章 ARMV8简介 (3)

1.1基础认识 (3)

1.2相关专业名词解释 (3)

第2章 EXECUTION STATE (4)

2.1提供两种E XECUTION S TATE (4)

2.2决定E XECUTION S TATE的条件 (4)

第3章 EXCEPTION LEVEL (5)

3.1E XCEPTION L EVEL 与S ECURITY (5)

3.1.1 EL3使用AArch64、AArch32的对比 (5)

3.2EL X 和E XECUTION S TATE 组合 (7)

3.3路由控制 (7)

3.3.1 路由规则 (7)

3.3.2 IRQ/FIQ/SError路由流程图 (9)

第4章 ARMV8寄存器 (10)

4.1AA RCH32重要寄存器 (10)

4.1.1 A32状态下寄存器组织 (11)

4.1.1 T32状态下寄存器组织 (11)

4.2AA RCH64重要寄存器 (11)

4.364、32位寄存器的映射关系 (12)

第5章 异常模型 (13)

5.1异常类型描述 (13)

5.1.1 AArch32异常类型 (13)

5.1.2 AArch64异常类型 (13)

5.2异常处理逻辑 (14)

5.2.1 寄存器操作 (14)

5.2.2 路由控制 (15)

5.3流程图对比 (15)

5.3.1 IRQ 流程图 (16)

5.3.2 Data Abort 流程图 (19)

5.4源代码异常入口 (21)

5.4.1 C函数入口 (21)

5.4.2 上报流程图 (21)

5.4.3 异常进入压栈准备 (22)

5.4.4 栈布局 (22)

第6章 ARMV8指令集 (23)

6.1概况 (23)

6.1.1 指令基本格式 (23)

6.1.2 指令分类 (23)

6.2指令详解 (23)

6.2.1 跳转指令 (23)

6.2.2 异常产生、返回指令 (24)

6.2.3 系统寄存器指令 (24)

6.2.4 数据处理指令 (24)

6.2.5 load/store内存操作指令 (25)

6.3指令编码 (26)

6.4机器码分析 (26)

第7章 流水线 (27)

7.1简介 (27)

7.1.1 简单三级流水线 (27)

7.1.2 经典五级流水线 (27)

7.2流水线冲突 (28)

7.3指令并行 (28)

第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 (单指令多数据)

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的异常模型

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的条件

只有通过复位或者发生异常这两种方式才可以改变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

相关文档
最新文档