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