ARM 处理器有个 Shadow Register 的概念,查了很多资料,语焉不详,究竟是什么意思呢?
这其实是个和硬件有关的概念。
有些 register 是 2 层的,第一层是供 CPU 访问,第二层供 Hw 访问。
| CPU访问 |
|---|
| Hw访问 |
其中 Hw 访问的这层 register 称之为Shadow Register。
CPU 在写 Register 的时候,会先写在上层的 Shadow Register,随后硬件 update 之后才会在下层供 Hw 访问的 Register 开始执行。
这是同一个 Register,不是 2 个 Register,只不过分了 2 层。形象的讲上层是下层的 Shadow。
因为真正生效的执行 Hw 动作的是下面这层,而上面这层只是将 CPU(也就是将软件)的信息获取到,等下个硬件周期才会执行。
那么这有什么用呢?哪里用到了这点呢?
这样做可以加快程序的相应和信息的处理。
其中 ARM 的 FIQ 有用到,也就是 fast interrupt,快速中断的意思。
因为 FIQ 是有 Shadow Register 的,所以你在使用它或者是设置它的时候,指令可以先存在 Shadow Register 里面,等到下一个硬件周期就会立即执行。
而没有 Shadow Register 的 IRQ(interrupt),就要等 Register 里面的数据执行完毕后才能写入,那样就稍慢一些。
这也就是 FIQ 比 IRQ 快的一个原因。
https://www.cnblogs.com/biglucky/p/4121407.html
