ARM架构的进化史
架构版本号 | 处理器内核名字 |
---|---|
v4T | ARM7TDMI ARM7TDMI-S等 |
v5E | ARM926EJ-S ARM1020E等 |
v6 | ARM1136J(F)-S ARM11 MPCore 等 |
v7-(M、R、A) | Cortex-M3、Cortex-R4、CoretexA8等 |
v8-(M、R、R) |
MPU和MMU
电脑和数码产品所使用的处理器几乎清一色地都带MMU。但是MMU也引入了不确定性,这有时是嵌入式领域——尤其是实时系统不可接受的。然而对于安全关键(safety‐critical)的嵌入式系统,还是不能没有内存的分区保护的。为解决矛盾,于是就有了MPU。可以把MPU认为是MMU的功能子集,它只支持分区保护,不支持具有“定位决定性”的虚拟内存机制。
ARM指令集和Thumb指令集
由于历史原因(从ARM7TDMI开始),ARM处理器一直支持两种形式上相对独立的指令集,它们分别是:
- 32位的ARM指令集。对应处理器状态:ARM状态
- 16位的Thumb指令集。对应处理器状态:Thumb状态。
这两种指令集也对应了两种处理器执行状态。在程序的执行过程中,处理器可以动态地在两种执行状态之中切换。实际上,Thumb指令集在功能上是ARM指令集的一个子集,但它能带来更高的代码密度,给目标代码减肥。
Thumb-2指令集
Thumb‐2 是16位Thumb指令集的一个超集,在Thumb‐2中,16位指令首次与32位指令并存,结果在Thumb状态下可以做的事情一下子丰富了许多,同样工作需要的指令周期数也明显下降。