ARM架构的基本知识

ARM两种授权

  • 体系结构授权, 一种硬件规范, 用来约定指令集, 芯片内部体系结构(内存管理, 高速缓存管理), 只约定每一条指令的格式, 行为规范, 参数, 客户根据这个规范自行设计与之兼容的处理器
  • 处理IP授权, ARM公司根据某个版本的体系结构设计处理器, 再把处理器设计方案授权给客户

ARM体系结构又根据不同的应用场景分为3种系列

  • A系列: 面向性能密集型系统的应用处理器内核
  • R系列: 面向实时应用的高性能内核
  • M系列: 面向各类嵌入式应用的微控制内核

ARMv8体系结构中的基本概念

ARM处理器实现的是精简指令集体系结构。在ARMv8体系结构中有如下一些基本概念和定义。

  • 处理机(Processing Element,PE):在ARM公司的官方技术手册中提到的一个概念,把处理器处理事务的过程抽象为处理机。
  • 执行状态(execution state):处理器运行时的环境,包括寄存器的位宽、支持的指令集、异常模型、内存管理以及编程模型等。ARMv8体系结构定义了两个执行状态。
    • AArch64:64位的执行状态。
      • 提供31个64位的通用寄存器。提供64位的程序计数(Program Counter,PC)指针寄存器、栈指针(Stack Pointer,SP)寄存器以及异常链接寄存器(Exception Link Register,ELR)。
      • 提供A64指令集。定义ARMv8异常模型,支持4个异常等级,即EL0~EL3。
      • 提供64位的内存模型。定义一组处理器状态(PSTATE)用来保存PE的状态。
    • AArch32:32位的执行状态。
      • 提供13个32位的通用寄存器,再加上PC指针寄存器、SP寄存器、链接寄存器(Link Register,LR)。
      • 支持两套指令集,分别是A32和T32(Thumb指令集)指令集。
      • 支持ARMv7-A异常模型,基于PE模式并映射到ARMv8的异常模型中。
      • 提供32位的虚拟内存访问机制。
      • 定义一组PSTATE用来保存PE的状态。
  • ARMv8指令集:ARMv8体系结构根据不同的执行状态提供不同指令集的支持。A64指令集:运行在AArch64状态下,提供64位指令集支持。A32指令集:运行在AArch32状态下,提供32位指令集支持。T32指令集:运行在AArch32状态下,提供16位和32位指令集支持。
  • 系统寄存器命名:在AArch64状态下,很多系统寄存器会根据不同的异常等级提供不同的变种寄存器。系统寄存器的使用方法如下。
text 复制代码
<register_name>_Elx  //最后一个字母 x 可以表示0、1、2、3

如SP_EL0表示在EL0下的SP寄存器,SP_EL1表示在EL1下的SP寄存器。

ARMv8处理器执行状态

ARMv8处理器支持两种执行状态------AArch64状态和AArch32状态

AArch64状态是ARMv8新增的64位执行状态,而AArch32是为了兼容ARMv7体系结构的32位执行状态

AArch42执行状态

支持16个32位的通用寄存器

ARMv8体系架构下AArch64执行状态

异常等级

确定了处理器当前运行特权级别

  • EL0:用户特权,用于运行普通用户程序。
  • EL1:系统特权,通常用于操作系统内核。如果系统使能了虚拟化扩展,运行虚拟机操作系统内核。
  • EL2:运行虚拟化扩展的虚拟机监控器(hypervisor)。
  • EL3:运行安全世界中的安全监控器(secure monitor)

ARMv8体系结构允许切换应用程序的运行模式。如在一个运行64位操作系统的ARMv8处理器中,我们可以同时运行A64指令集的应用程序和A32指令集的应用程序,但是在一个运行32位操作系统的ARMv8处理器中就不能运行A64指令集的应用程序了。

当需要运行A32指令集的应用程序时,需要通过一条管理员调用(Supervisor Call,SVC)指令切换到EL1,操作系统会做任务的切换并且返回AArch32的EL0,从而为这个应用程序准备好AArch32状态的运行环境。

通用寄存器

支持31个64位的, 分别是X0 ~ X30

可以使用W来表示低32位的数据, W0表示X0寄存器的低32位数据, W1表示X1寄存器的低32位数据

特殊寄存器
系统寄存器

ARMv8体系结构支持如下7类系统寄存器:

  • 通用系统控制寄存器;
  • 调试寄存器;
  • 性能监控寄存器;
  • 活动监控寄存器;
  • 统计扩展寄存器;
  • RAS寄存器;
  • 通用定时器寄存器。

系统寄存器支持不同的异常等级的访问,通常系统寄存器会使用"Reg_ELn"的方式来表示。

  • Reg_EL1:处理器处于EL1、EL2以及EL3时可以访问该寄存器。
  • Reg_EL2:处理器处于EL2和EL3时可以访问该寄存器。
  • 大部分系统寄存器不支持处理器处于EL0时访问,但也有一些例外,如CTR_EL0。

数据类型

支持的数据宽度

字节(8bit), 半字(16bit), 字(32bit), 双字(64bit),四字(128bit)

相关推荐
阿图灵20 小时前
Agentic AI 架构入门(九):Agent 通信协议全景——ACP/A2A/AG-UI/MCP
人工智能·ui·架构·ai agent·智能体·mcp·agentic ai
这个DBA有点耶21 小时前
3000万个应用共享一套数据库:多租户“逻辑表”架构是如何做到的?
数据库·架构·dba
消失的旧时光-194321 小时前
第一篇:Ktor Client 到底是什么?从 Retrofit 迁移理解 Ktor 网络请求架构
网络·架构·retrofit·ktor·dsl
zlinear数据采集卡21 小时前
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析
arm开发·stm32·嵌入式硬件·算法·fpga开发·架构
香菜TTT1 天前
主从架构锁丢失问题-----RedLock
架构
Rain的Java大神之路1 天前
MQ重复消费问题怎么解决
java·经验分享·后端·面试·架构·rabbitmq·rocketmq
这个DBA有点耶1 天前
DBA进阶之路:从“修数据库”到“管架构债”
数据库·架构·dba
珠***格1 天前
通信链路全打通:西格电力四可装置的 4G/5G + 加密认证技术详解
大数据·数据库·分布式·5g·架构·能源
艾德克斯1 天前
从OCP APAC Summit 2026看AI数据中心供电架构演进与测试挑战
人工智能·ai·架构·数据中心·开闭原则·供电测试
AI产品测评官1 天前
从技术选型视角:AI招聘寻源类Agent的技术架构与落地实测分析
人工智能·架构·求职招聘