ARM体系结构
简介
ARM微处理器内部结构
- 知识产权核(IP CORE)——完成指令的取指、译码和执行
- 寄存器
- MMU(Memory Management Unit;内存管理单元)
- 异常管理系统
- 指令
- cache系统
- 接口控制器
特点
体积小、功耗低、成本低、高性能
支持Thumb(16位)/ARM(32/64位)双指令集,兼容8位和16位器件
具有大量寄存器,因而指令执行速度快
绝大多数操作都在寄存器中进行,通过Load/Store的体系架构在内存和寄存器之间传递数据
寻址方式简单
采用固定长度的指令格式
应用
- 无线通讯:手机
- 蓝牙技术
- 网络:ADSL(Asymmetric Digital Subscriber Line;非对称数字用户线路)技术
- 电子产品:数字音频、数字机顶盒、游戏机
- 信息家电:数码相机、打印机、车载娱乐
模型
运行模式
- 用户模式(User,usr)
- 快速中断模式(FIQ,fiq)
- 外部中断模式(IRQ,irq)
- 特权模式(Supervisor,sve)
- 数据访问终止模式(Abort,abt)
- 未定义指令终止模式(Undefined,und)
- 系统模式(System,sys)
寄存器
ARM处理器共有37个32位寄存器:31个通用寄存器+6个状态寄存器
ARM处理器运行在每一种模式下时,都会使用属于自己的一组寄存器,通常包括15个通用寄存器(R0~R14)、一个或两个状态寄存器及程序计数器(PC)
通用寄存器
- R0~R7:所有模式共用
R8~R14:备份寄存器
- R8~R12:每个寄存器对应2个不同的物理寄存器
R13~R14:每个寄存器对应6个不同的物理寄存器
R13通常用作堆栈指针,采用下面的记号来区分各个物理寄存器:
R13_<MODE>
<MODE>
取值:usr、svc、abt、und、irq、fiqR14的特殊作用:
- 用户模式下,用作链接寄存器(LR),存放子程序被调用时的返回地址
- 异常处理模式下,R14用来保存异常的返回地址
程序计数器(PC) R15
- PC的值为当前指令地址的值加8个字节,即指向当前指令的下两条指令的地址
程序状态寄存器——用来保存程序执行时的各种状态值
分为两种类型:CPSR和SPSR(格式相同)
ARM异常中断处理
类型
- 复位
- 未定义指令
- 软件中断
- 指令预取中止
- 数据访问中止
- 外部中断请求(IRQ)
- 快速中断请求(FIQ)
异常处理过程
1.响应
step1:将下一条指令的地址保存在相应的LR寄存器中
step2:将CPSR寄存器保存到相应的SPSR寄存器中
伪代码:
1 | R14_<exception_mode>=return link |
2.返回
- 拷贝SPSR_mode寄存器内容到CPSR
- 将LRmode寄存器内容(LR的值减去相应的偏移量)复制到程序计数器PC中 注:复位异常中断处理程序无需返回;如果进入异常处理程序时保存了部分通用寄存器的值,此时需要恢复这些被保存的通用寄存器的值_
异常优先级
高->低
复位>数据中止>FIQ>IRQ>预取指令中止>未定义指令、SWI
ARM存储体系
数据类型
- 字(word): 长度为32位,占4个字节
- 半字(half-word): 长度为16位
- 字节(byte): 长度为8位
存储空间
ARM体系使用平板地址空间,该地址空间的大小为2^32个8位字节,即最大寻址空间为4GB。
首地址为0,0~3放置第一个存储的字数据,4~7字节放置第二个存储的字数据,依次排序。
存储字数据的方法有两种模式:
- 大端模式: 数据的高字节存储在低地址中
- 小端模式: 数据的高字节存储在高地址中