ARM 体系架构基础学习笔记

一、指令集架构:CISC 与 RISC

计算机中央处理单元(CPU)内核依据指令集设计理念,主要分为复杂指令集计算机(CISC)与精简指令集计算机(RISC)两大类。

CISC(Complex Instruction Set Computer)以 x86 架构为代表,其指令集丰富,一条指令可完成较为复杂的操作。这种设计带来的直接代价是芯片面积大、制造成本高、逻辑结构复杂、功耗较高,因而在便携式设备中的应用受到限制。

RISC(Reduced Instruction Set Computer)则以 ARM 架构为典型代表。该架构精简了指令集,每条指令仅执行一个基本操作,从而实现了芯片面积小、制造成本低、功耗低、体积小的优势,特别适合于便携式嵌入式设备。当前主流的移动终端、物联网设备普遍采用基于 RISC 理念的 ARM 架构处理器。

二、ARM 处理器核心寄存器

ARM 架构提供了一组核心寄存器,用于支持程序执行和状态管理。以 Cortex-A7 架构(如 i.MX6ULL 处理器)为例,其寄存器体系包括:

  • R0 - R12:通用寄存器,用于存放操作数与中间计算结果。其中 R0 至 R3 通常用于函数参数传递,R0 同时用于返回值的传递。

  • PC 寄存器(R15):程序计数器(Program Counter),本质是一个指针,始终指向当前正在执行指令的下一条指令地址。在 ARM 的三级流水线结构中,PC 的取值与执行阶段存在固定的偏移量。

  • LR 寄存器(R14) :链接寄存器(Link Register),用于保存子程序调用时的返回地址。当执行函数调用时,硬件自动将返回地址存入 LR,函数返回时通过 mov pc, lrbx lr 指令恢复执行流。

  • SP 寄存器(R13):栈指针寄存器(Stack Pointer),用于管理栈区内存。在函数调用过程中,栈用于保存局部变量、函数参数以及返回地址等上下文信息。

  • CPSR 寄存器:当前程序状态寄存器(Current Program Status Register),保存当前处理器运行状态,包括条件标志位(N、Z、C、V)、中断禁止位、当前处理器模式位等。

  • SPSR 寄存器:保存的程序状态寄存器(Saved Program Status Register),当异常发生时,用于备份 CPSR 的值,以便异常返回时恢复处理器状态。

三、三级流水线结构与执行效率

ARM 处理器采用三级流水线结构:取指、译码、执行三个阶段并行进行。PC 指针始终指向取指地址,而执行单元正在处理此前已译码的指令。这一设计有效提高了指令吞吐率,但也要求开发人员在涉及 PC 相对寻址或指令自修改时,需特别注意流水线引入的偏移量问题。

四、Cache 架构与内存管理

为提高 CPU 访问数据的效率,ARM 处理器集成了高速缓存(Cache):

  • icache(指令缓存):用于缓存指令,减少指令取指对主存的访问频率。

  • dcache(数据缓存):用于缓存数据,提高数据读写速度。

在系统启动早期(如 Bootloader 阶段),通常需要关闭 MMU(内存管理单元)和 dcache,以避免地址映射和数据一致性问题,但可以开启 icache 以加快指令取指速度。

MMU(Memory Management Unit)负责虚拟地址到物理地址的映射,使操作系统能够为多个进程提供独立的地址空间,从而提高内存利用率与安全性。在开启 MMU 后,CPU 访问的地址均为虚拟地址,由 MMU 转换为物理地址后访问实际存储器。

五、总线架构与通信方式

ARM 处理器与外设的通信基于总线体系结构,常见总线包括:

  • AHB(Advanced High-performance Bus):先进高速总线,用于连接通信速率要求较高的外设,如 USB 控制器、网卡、RAM 控制器等。

  • APB(Advanced Peripheral Bus):先进外设总线,用于连接通信速率较低的外设,如 GPIO、UART、I2C 控制器等。

这种双总线设计实现了高速设备与低速设备的分离,优化了系统带宽利用率。相比于单总线结构,双总线允许多个外设并行访问,提升了整体系统性能。

六、ARM 处理器工作模式与异常处理

ARMv7 架构(如 Cortex-A7)定义了七种处理器工作模式:

  1. User 模式:非特权模式,应用程序运行于此模式,对系统资源访问受限。

  2. FIQ 模式:快速中断模式,用于处理高优先级中断。

  3. IRQ 模式:普通中断模式,用于处理常规中断。

  4. Supervisor 模式:管理模式,系统复位或执行软中断指令(SVC)时进入,操作系统内核通常运行在此模式。

  5. Abort 模式:中止模式,当发生数据或指令访问异常时进入。

  6. Undef 模式:未定义模式,当执行未定义指令时进入。

  7. System 模式:系统模式,与 User 模式共享寄存器集,但拥有特权级别,常用于操作系统任务切换。

当异常发生时,ARM 处理器执行以下硬件操作:

  • 将 CPSR 复制到相应异常模式的 SPSR 中;

  • 设置 CPSR 的相关位:切换处理器状态、进入 ARM 态、切换到相应的异常模式;

  • 根据需要设置中断禁止位;

  • 将返回地址保存到该异常模式的 LR 寄存器;

  • 将 PC 设置为异常向量表中对应的向量地址。

异常返回时,异常处理程序需执行:

  • 从 SPSR_<mode> 恢复 CPSR;

  • 从 LR_<mode> 恢复 PC。

这些操作必须在 ARM 态下完成。

七、异常向量表与程序执行

异常向量表是一段固定地址的存储区域,其中存放跳转到各异常服务程序的指令。当异常发生时,处理器强制 PC 指向向量表中对应的入口地址,从而转入相应服务程序。

在程序执行过程中,函数的调用与返回依赖于 PC、LR 和栈机制。函数调用时,当前 PC 值(实际为返回地址)存入 LR,子程序执行完毕后通过 LR 返回;若发生嵌套调用,则需将 LR 压栈保存,防止被内层调用覆盖。

八、存储层次与地址空间

嵌入式系统中常见多种存储器类型:

  • ROM / Flash:非易失性存储器,掉电数据不丢失,用于存储启动代码和固件。

  • RAM:易失性存储器,用于运行时数据和栈空间。

  • Nor Flash:可字节寻址,支持 XIP(就地执行),地址总线和数据总线分离。

  • NAND Flash:以块为单位读写,无法按字节寻址,适合大容量数据存储。

不同处理器在启动阶段会映射不同的存储器地址空间,如 S3C2440 内部 4KB SRAM 用于从 NAND Flash 启动时的初始代码搬运。现代处理器(如 i.MX6ULL)通过 Boot ROM 完成早期初始化,并将 DDR 初始化为主内存。

九、移位操作类型

ARM 指令集中涉及多种移位操作,其行为与数据类型相关:

  • 算术右移(ASR):针对有符号数,右移时最高位补符号位,保持数值的符号不变。

  • 逻辑右移(LSR):针对无符号数,右移时最高位补 0。

  • 循环右移(ROR):移出的最低位循环补到最高位,形成循环移位。

正确选择移位类型对于保持数值精度与符号正确性至关重要。

相关推荐
somi731 分钟前
ARM-06-时钟系统配置
arm开发·单片机·嵌入式硬件·时钟配置
小陈phd34 分钟前
系统架构师学习笔记(二)——计算机体系结构之指令系统
笔记·学习·系统架构
吃杠碰小鸡1 小时前
前端 IndexedDB 完全指南
学习
喝拿铁写前端1 小时前
一套面向 Web、H5、小程序与 Flutter 的多端一致性技术方案
前端·架构
问道飞鱼1 小时前
【大模型学习】LangGraph 深度解析:定义、功能、原理与实践
数据库·学习·大模型·工作流
烤麻辣烫2 小时前
I/O流 基础流
java·开发语言·学习·intellij-idea
SY.ZHOU2 小时前
移动端架构体系(一):组件化
android·ios·架构·系统架构
云边散步2 小时前
godot2D游戏教程系列二(22)
笔记·学习·游戏
陈酒尽余欢2 小时前
告别 Vibe Coding:用 SDD 让 AI 编程提效 50%,三工具实战对比
后端·架构
jincheng_2 小时前
软件设计师上午题|9模块极速背诵版
学习