一、ARM体系结构
ARM 体系结构 的核心概念、硬件组成、指令集架构(ISA)、内存管理以及运行机制。下面我将结合图示内容,系统性地为你讲解 ARM 体系结构的各个方面。
🌐 一、ARM 概述
✅ ARM 是什么?
- ARM (Advanced RISC Machines)是一种基于 RISC(精简指令集计算机) 架构的处理器设计。
- 它不是一家公司生产的芯片,而是一套技术授权,由 ARM 公司设计并授权给其他厂商(如高通、苹果、华为等)使用。
- 广泛应用于手机、嵌入式设备、物联网、服务器等领域。
图中提到:
ARM: ARMI~ARM11, Cortex-A, Cortex-R, Cortex-M
这说明了 ARM 不同系列的演进:
- ARM1~ARM11:早期经典架构
- Cortex-A:应用处理器(如智能手机)
- Cortex-R:实时控制(汽车、工业)
- Cortex-M:微控制器(MCU)
🔧 二、计算机系统基本构成
图中展示了通用计算机系统的层次结构:
应用层 APP
操作系统 SYS
硬件系统
硬件系统包括:
- 运算器(ALU)
- 控制器
- 存储器(内存/外存)
- 输入设备
- 输出设备
这是典型的冯·诺依曼结构。
⚙️ 三、CPU 与 SoC 架构
1. CPU 核心组件
- CPU(Central Processing Unit):中央处理单元,负责执行指令。
- GPU(Graphics Processing Unit):图形处理单元,用于图像渲染。
- FPU(Float Processing Unit):浮点运算单元,处理小数计算。
- MPU/MCU :
- MPU(Micro Processing Unit):微型处理器,用于复杂任务。
- MCU(Micro Control Unit):微控制器,集成度高,常用于嵌入式系统。
- DSP(Digital Signal Processor):数字信号处理器,专为高速数学运算优化。
- SOC(System On Chip):系统级芯片,把 CPU、GPU、内存、外设等都集成在一个芯片上。
图中强调:SoC 就像一个"城市",各种功能模块(政府、警察局、研究所)都在同一块"土地"上协同工作。
💾 四、存储器类型
| 类型 | 特点 |
|---|---|
| RAM(Random Access Memory) | 随机访问存储器,可读写,速度快,断电丢失数据 |
| ROM(Read-only Memory) | 只读存储器,不可修改或只能部分修改,用于存放固件 |
图中指出:
- RAM:易失性、价格贵、速度快、可直接寻址
- ROM:非易失性、价格便宜、速度慢、一般不能直接寻址
🧠 五、ARM 内核与指令集
1. 指令集架构(ISA)
- CISC:复杂指令集(如 x86),一条指令完成多个操作。
- RISC:精简指令集(如 ARM),每条指令简单高效。
图中明确标注:ARM 属于 RISC 架构
2. ARM 指令集发展
- ARMv4 ~ ARMv9:不同版本的指令集架构。
- 当前主流:ARMv8-A(AArch64)和 ARMv9
- 支持 32位(AArch32)和 64位(AArch64)模式
图中标注:
kernal: x86 ARM MIPS RISC V表明现代系统支持多种架构。
🧩 六、寄存器与内存模型
1. 寄存器(Registers)
ARM 处理器有多个通用寄存器:
| 寄存器 | 功能 |
|---|---|
| R0-R15 | 通用寄存器 |
| R13 (sp) | 堆栈指针(Stack Pointer) |
| R14 (lr) | 链接寄存器(Link Register),保存返回地址 |
| R15 (pc) | 程序计数器(Program Counter),指向下一条指令 |
图中显示:
R0=100,R1=200,R2=300R13(sp)=0x1204,R15(pc)=0x1204
2. 状态寄存器
- CPSR (Current Program Status Register):当前程序状态寄存器
- 存储标志位(如 Z, N, C, V)和处理器模式(用户/内核)
- SPSR(Saved Program Status Register):备份状态寄存器,在异常时保存 CPSR
3. MMU(Memory Management Unit)
- 负责虚拟内存到物理内存的映射。
- 实现内存保护、分页机制。
- 图中显示:MMU 关闭 → 虚拟内存 = 物理内存
- 如:虚拟地址
0x1000映射到物理地址0x1200
- 如:虚拟地址
虚拟内存:逻辑地址空间
物理内存:实际硬件内存
🔄 七、流水线与执行流程
1. 三级流水线(Three-stage Pipeline)
ARM 使用经典的三级流水线:
预取(Fetch) → 译码(Decode) → 执行(Execute)
图中用方框表示:
[预取][译码][执行] ↓ ↓ ↓ [预取][译码][执行] ↓ ↓ ↓ [预取][译码][执行]
这种结构可以提高吞吐率,实现指令并行执行。
2. 多总线结构
- APB(Advanced Peripheral Bus):连接低速外设(如 GPIO、UART)
- AHB(Advanced High-performance Bus):连接高速外设(如内存、DMA)
图中展示:
kernal←→GPIO←→UART←→...通过 APB 总线通信
🖥️ 八、内存布局与启动过程
1. 内存布局(Memory Layout)
| 地址范围 | 区域 | 用途 |
|---|---|---|
0x0000 0000 |
代码段 | 存放程序代码 |
0xFFFF FFFF |
启动区(Boot) | Uboot 或 bootloader 开始执行位置 |
0x1200 |
物理内存 | 实际可用内存 |
Nor Flash |
固件存储 | 存放操作系统镜像 |
图中显示:
Uboot从0xFFFF FFFF开始加载,然后跳转到0x1200执行。
2. 函数调用与栈结构
示例代码:
int fun1(a, b) {
if (a > b)
return a;
}
栈结构(Stack Frame):
- 栈顶:最新压入的数据
- 栈底 :固定基地址(通常由
sp指向) - 函数调用时 :
- 保存
lr(返回地址) - 分配局部变量空间
- 执行函数体
- 返回前恢复
sp
- 保存
图中展示了
main()调用fun1()时的栈变化。
🧱 九、SoC 组件示意图
图中右侧展示了一个典型的 ARM SoC 结构:
+-------------------+
| kernal |
+-------------------+
| GPIO |
| PWM |
| UART |
| 磁盘控制器 |
+-------------------+
↓
SOC
↓
+-------------------+
| RAM |
| ROM |
+-------------------+
- 所有外设通过 APB/AHB 总线 连接到 CPU 和内存。
- 外设通过 GPIO、UART、PWM 等接口与外部世界交互。
🎯 十、总结:ARM 体系结构要点
| 模块 | 关键点 |
|---|---|
| 架构类型 | RISC,精简指令集 |
| 核心组件 | CPU、GPU、FPU、MMU、SOC |
| 存储器 | RAM(快但易失)、ROM(慢但持久) |
| 寄存器 | R0-R15、sp、lr、pc、CPSR、SPSR |
| 内存管理 | MMU 支持虚拟内存 |
| 流水线 | 三级流水线提升效率 |
| 总线 | AHB(高速)、APB(低速) |
| 启动流程 | Uboot → 加载内核 → 启动应用 |
| 应用场景 | 移动端、嵌入式、IoT、服务器 |
✅ 附加知识拓展
1. ARM Cortex 系列对比
| 类型 | 用途 | 示例 |
|---|---|---|
| Cortex-A | 应用处理器 | 手机、平板 |
| Cortex-R | 实时控制 | 汽车安全系统 |
| Cortex-M | 微控制器 | 传感器、家电 |
图中提到:
AMR 内核: Cortex-A7 V7,说明这是基于 ARMv7 的 Cortex-A7 架构。
2. 开发板信息
- 开发板 :
mx6ull-mini - SoC :
iMX6ULL - 内核 :
Cortex-A7
这是一款典型的嵌入式开发平台,适合学习 Linux 驱动开发、裸机编程等。
📚 结语
这张图全面覆盖了 ARM 体系结构的核心知识点,从底层硬件到高级软件运行机制都有体现。理解这些内容,有助于你深入掌握:
- 嵌入式系统开发
- 操作系统原理
- 驱动程序编写
- 嵌入式 Linux 系统调试