cisc&risc
cisc(复杂指令集):
- 具有大量指令,寻址方式
- 8/2原则,80%程序用20%指令
- 大多数程序少量代码运行
risc(精简指令集):
- 通道只有最有用的指令
- 可快速执行
- CPU结构简单
risc特点与ARM增加
- 简化指令集
- 设计大量通用寄存器,减少访存次数
- 支持流水线
- 简单指令格式,规整字长与寻址方式
- 单机器周期
ARM7增加:
- ALU与移位处理
- 地址自增自减
- 批量传输
- 条件执行
ARM7三级流水:取指,解码,执行
pc会指向即将进行取指的指令
冯诺依曼结构/哈佛结构 - 五大结构
- 二进制运算
- 存储单元与控制单元
- 哈佛和冯诺依曼区别就在于哈佛存储将指令与数据分开放了
ARM总线:总线标准AMBA
AHB:高性能高时钟
ASB:高性能,读写双工模式
APB:连接低功耗外设
前两个称为系统总线,后面的称为片内外设总线
外设追踪技术
宏单元:实现在线调试,运行过程跟踪功能
可跟踪端口,跟踪触发器
ARM7指令系统
分为ARM(32位,字处理,默认)与thumb(16位,半字处理)两种指令集
ARM包含thumb, 地址置1表示thumb状态,bx切换指令
地址置0表示ARM状态,bx切换状态
ARM7模式
- 用户模式
- 快中断模式
- 中断模式
- 管理模式
- 中止模式
- 未定义模式
- 系统模式
特权模式:
除用户模式外都成为特权模式,用户模式不能直接转换到其他模式
其他模式可以直接切换到用户模式
异常模式
除用户,系统模式外的五种称为异常模式,可进退出异常
用户,系统模式不能直接进入异常,要修改cpsr(后面说)
ARM寄存器
- ARM有37个存储器,31个通用寄存器。6个状态寄存器
- 7种模式,用户系统占用一组,其他一个模式一组
- SPSR,系统,用户模式不可见
R0-R7为未分组通用寄存器,任何模式都能用
R8-R12分为用于快中断和不用于快中断的,快中断可以不保存状态,加快FIQ(快中断)处理速度
R13-R14,用户,系统模式占用一个,其余模式各占用一个
R13称为SP,堆栈段指针寄存器,用于保存待使用的寄存器内容
R14称为链接寄存器LR,一般将返回地址放置在LR中
R15称为PC程序计数存储器,指向正在取指的指令
CPSR当前程序状态寄存器,SPSR程序状态保存寄存器。每一个异常都有自己的SPSR,进入异常CPSR保存在SPSR,退出回复CPSR
thumb下可以访问的寄存器
R0-R8
PC,SP,LR,CPSR
发生异常时,处理器会自动进入ARM状态
R8-R12称为高端寄存器,Thumb中只有MOV,CMP,ADD可以访问
二者切换图
ARM异常处理
正常程序流被暂时中止,处理机就会进入异常模式
多异常下,会按优先级顺序处理
- 复位
- 数据中断
- LFQ(快中断)
- IRQ(中断)
- 欲取指中止
- 未定义指令中止
- 软件中断异常
异常进入:
- PC+偏移->LR
- CPSR->SPSR
- CPSR设置为对应异常模式
- PC设置为异常进入入口
异常退出
- LR-偏移量->PC
- SPSR->PCSR
- 清零中断禁止标志
ARM存储方式
单个平面2^32 ,8位字节地址
地址空间包含2^30,32位字节地址或
2^31,16位半字节地址
两种映射机制
- 小端存储器系统
- 大端存储器系统。
小端高字节在高地址,大端低字节在高地址
非对齐访问
字对齐地址写thumb,非字写入ARM的R15
或者这样的形式读除其他存储器的值