【华为云技术分享】ARM体系结构基础(3)
上一期中我们介绍了ARMv8-A架构里操作系统常用的寄存器的基本使用情况,这一期中我们将介绍ARMv8-A架构中的执行状态。
一、ARMv8-A的执行模式
ARMv8-A有两种执行模式,一种是AArch64执行模式,另一种是AArch32执行模式。执行状态定义处理单元(Processing Element, PE)的执行环境,包括以下内容:
-
支持的寄存器宽度
-
支持的指令集
-
异常模型
-
虚拟存储系统(Virtual Memory System Architecture, VMSA)架构
-
程序员模型
AArch64为64位执行状态。对应上述内容,此执行状态:
-
提供31个64位通用寄存器,其中X30用作过程链接寄存器(ProcedureLink Register)。
-
提供64位程序计数器(PC)、堆栈指针(SP)和异常链接寄存器(ELRs)。
-
提供32个128位寄存器以支持SIMD矢量和标量浮点运算。
-
提供单一指令集A64。
-
定义ARMv8异常模型,该模型最多有四个异常级别EL0-EL3,它们提供执行权限层次结构。
-
支持64位虚拟寻址。
-
定义一系列与PSTATE相关的寄存器。A64指令集包括能直接操作各种PSTATE寄存器的指令。
-
使用后缀命名每个系统寄存器,该后缀指示可以访问寄存器的最低异常级别。
AArch32为32位执行状态。对应上述内容,此执行状态:
-
提供13个32位通用寄存器和一个32位PC、一个32位SP寄存器和一个32位链接寄存器(Link Register,LR)。链接寄存器用作异常链接寄存器和过程链接寄存器。其中一些寄存器有多个备份寄存器,用于不同的处理器工作模式。我们在上一期提到过,同一个功能的寄存器在不同的处理器运行模式下可能对应不同的物理寄存器,这些寄存器被称为备份寄存器。
-
为从Hyp(hypervisor)模式返回的异常提供一个异常链接寄存器。
-
提供32个64位寄存器,用于对高级SIMD矢量和标量浮点计算的支持。
-
提供两个指令集,A32和T32。
-
支持基于处理器工作模式的ARMv7-A异常模型,并将其映射到基于异常级别的ARMv8异常模型。
-
使用32位虚拟地址。
-
使用单个当前程序状态寄存器(CPSR)保存处理器状态。
-
在AArch64和AArch32执行状态之间进行转换称为内部处理(interprocessing)。
二、结语
本期我们介绍了ARMv8-A的执行状态。下一期我们将介绍ARMv8-A的异常级别和安全状态。
参考文献
[1] ARM® Architecture Reference ManualARMv8, for ARMv8-A architecture profile
相关文章
- 蚂蚁技术开源两大看点:专攻“卡脖子”,扎根“基础软件”
- 视频直播基础技术总结1
- 2022年 AI 技术成熟度曲线:合成数据、因果AI、决策智能、复合型AI、生成式AI、基础模型
- 技术栈系列基础篇7-linux常见命令
- 强烈推荐 | 卷积神经网络综述:从基础技术到研究前景
- 《嵌入式技术基础与实践》视频课程系列上线啦!
- 荔枝音质高保真的降噪技术实践与研究
- (二)《数字电子技术基础》——数制
- KVM虚拟化技术基础框架
- Word VBA技术:强制用户在指定文件夹中保存文档
- 双技术结合MQTT和Redis联动:新的应用模式(mqttredis)
- 常见的WiFi攻击技术及检测方法总结
- 探究缓存技术:为何企业越来越青睐Redis?(缓存redis好处)
- 解析Linux操作系统实训课后答案,打造技术高手(linux操作系统与实训课后答案)
- 服务器安装MSSQL:构建技术基础之路(服务器安装mssql)
- Linux进程间通信技术比较(linux进程通信比较)
- 自制Linux系统—突破技术极限!(自制linux系统)
- 构建以LK为基础的Oracle数据库技术(lk oracle)
- Oracle 基础技术值得你一探究竟(0oracle_base)
- MySQL强大的三列主键技术(mysql三列主键)
- 技术分享MySQL高效稳定的三重实时备份方案(mysql三个实时备份)
- Redis秒秒极速主键生成技术(主键生成redis)
- 原生Redis技术性能评测(原生redis评测)
- Oracle中声明游标技术的实践(oracle中声明游标)
- PHP+SQL注入攻击的技术实现以及预防办法