MIPS 中的影子寄存器是什么?它们是如何使用的?

What are shadow registers in MIPS and how are they used?

当我阅读 MIPS 架构时,我遇到了影子寄存器,据说它们是通用寄存器的副本。

我无法理解以下内容:什么时候使用影子寄存器?

MIPS 影子寄存器用于减少寄存器 load/store 处理中断的开销。分配了影子寄存器集的中断不需要保存任何现有上下文来提供空闲寄存器或在进入中断处理程序时加载存储在影子寄存器中的任何中断特定数据;在中断处理程序退出时,无需保存中断处理程序上下文或恢复先前的上下文。

ARM 提供了与它所谓的分组寄存器类似的功能。 (对于 ARM,只有部分 GPR 被复制。)

MIPS 多线程应用特定扩展扩展了影子寄存器集的使用,使其成为线程上下文。 (影子寄存器集实际上支持一种非常有限的事件切换多线程形式,其中额外的线程在概念上仅限于中断处理程序,而事件仅限于中断。)

我认为你的意思是一种机制,它将流水线最后阶段的结果共享给执行下一条指令的前几阶段,这些指令可能恰好读取该结果。物理上没有这样的影子寄存器,只是每个前面阶段的中间选择器,它可能需要结果作为输入总线,从寄存器组或最后阶段的结果中捕获。对不起我糟糕的英语措辞。