- 嵌入式处理器结构
控制单元、算术逻辑单元和寄存器
- ARM处理器的特点
小体积、低功耗、成本低、高性能;
16位/32位双指令集;
全球众多的合作伙伴。
- 当前ARM体系结构
的扩充包括
Thumb:16位指令集,用以改善代码密度;
DSP:用于DSP应用的算术运算指令集;
Jazeller:允许直接执行Java代码的扩充。
- ARM体系结构版本
Version 1 (obsolete)
基本数据处理
字节,字以及多字 load/store
软件中断
26 bit 地址总线
Version 2 (obsolete)
Multiply & Multiply-accumulate
支持协处理器
支持线程同步
26 bit 地址总线
V3版本推出32位寻址能力,结构扩展变化为
T—16位压缩指令集
M—增强型乘法器,产生全64位结果
V4版本增加了半字load和store指令
V5版本改进了ARM和Thumb之间的交互,结构扩展变化为:
E—增强型DSP指令集,包括全部算法操作和16位乘法操作
J----支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能
- 体系结构变化
THUMB指令集;
长乘法指令 (‘M’):提供全64位结果;
增强DSP 指令集 (‘E’):可附加在ARM中的DSP指令,64 bit 转换,在v5版本中第一次推出;
处理器内核的变化:D: 在片调试. 处理器可响应调试暂停请求I: Embedded ICE. 支持片上断点调试。
ARM DSP 指令集:对于音频DSP应用提供高达70%的处理速度
Jazelle:提供比基于软件的JAVA虚拟机(JVM)更高的性能
- ARM流水线的级数
ARM9流水线增加到5级,增加了存储器访问段和回写段,
- AMBA总线
最初的AMBA总线包含ARM系统总线(ASB)和ARM外设总线(APB)。
- Cache和紧耦合器
结合Cache和TCM,ARM即能改善性能,又能够获得可预测的实时响应。
- 存储器管理
无保护模式
提供有限保护的存储器保护单元(MPU)
提供全面保护的存储器管理单元(MMU)
- 协处理器
一个协处理器通过扩展指令或提供配置寄存器来扩展内核处理功能。
- ARM体系结构的命名规则
- ARM9TDMI
1.Harvard架构
增加了可用的存储器宽度:指令存储器接口
数据存储器接口
可以实现对指令和数据存储器的同时访问
2. 五级流水线
3.实现了以下改进:
改进 CPI 到 ~1.5
提高了最大时钟频率
- 指令流水线
ARM7 系列使用3级流水线;PC指向正被取指的指令,而非正在执行的指令。
- 处理器的工作状态
ARM - 32-bit, 按字排列的ARM指令集
Thumb -16-bit, 按半字排列的Thumb指令集
- 存储器模式
大端模式 小端模式
高低低高 高高低低
- 数据和指令类型
ARM 采用的是32位架构
- 处理器工作模式
1.特权模式
除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。
2.用户和系统模式
这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。
系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。
3.ARM状态各模式下的寄存器
所有的37个寄存器,分成两大类:
31个通用32位寄存器;6个状态寄存器。
4.一般的通用寄存器
在汇编语言中寄存器R0~R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。
其中R0~R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。
寄存器R8~R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器
寄存器R8~R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。
寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。
寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。
R14为链接寄存器(LR),在结构上有两个特殊功能:(1)在每种模式下,模式自身的R14版本用于保存子程序返回地址;(2)当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。
- 内部寄存器
R14:
程序指针PC (R15):
(1)当处理器执行在ARM状态:
所有指令 32 bits 宽
所有指令必须 word 对齐
所以 pc值由bits [31:2]决定, bits [1:0] 未定义 (所以指令不能halfword / byte对齐).
(2)当处理器执行在Thumb状态:
所有指令 16 bits 宽
所有指令必须 halfword 对齐
所以 pc值由bits [31:1]决定, bits [0] 未定义 (所以指令不能 byte对齐).
(3)当处理器执行在Jazelle状态:
所有指令 8 bits 宽
处理器执行 word 存取一次取4条指令
寄存器R15为程序计数器(PC),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的
- 异常和中断
异常分类:同步异常、异步异常
同步异常是由内部事件(如处理器指令运行产生的事件)引起的异常称为同步异常。
异步异常是由外部事件(如处理器指令执行不相关的事件)引起的异常称为异步异常,一般这些外部事件与硬件信号相关,又称为中断。
异常分类:中断(interrupt)、陷井(trap)、故障(fault)和终止(abort)