影子寄存器到底是什么?

电器工程 微控制器 微处理器 数字信号处理器 集会 登记
2022-01-01 13:11:30

我在浏览TMS320F28335 DSPShadow Register的数据表时注意到了这个术语。它实际上是什么意思?它是否像通用寄存器一样在 CPU 中具有物理位置?

3个回答

我猜您在 PIC 编程方面遇到过这种情况。PIC 最初以非常直接的方式处理 I/O 端口 - 您可以读取它们在外部具有的值,或者写入您输出的值,两者都在同一个地址上。这样做的缺点是您尝试输出的值可能与引脚上的状态不匹配 - 其他东西可能会更强烈地驱动它,或者它可能还没有完成更改。这意味着如果您只想更新端口的一部分,则需要一个单独的变量来跟踪您想要的状态,而不是获得的状态。我记得单独的变量通常被称为影子寄存器,因为您总是使用它来存储(不可见)输出寄存器的副本。最近的 PIC 通过添加“锁存器”地址来避免这种情况,可以读取输出寄存器的位置。这在其他微控制器中也很常见,例如 AVR 上的端口与引脚地址。

在 PC 架构中,影子内存也有类似的术语。在这种情况下,它通常意味着一段 RAM 用于存储较慢 ROM 的副本,并映射到相同的地址。它再次存储了一些其他存储的副本,该副本是隐藏的,因为该副本在地址空间中替换了它。

编辑:看到它是一个 TMS320,影子寄存器提供了一个双缓冲区;此技术用于确保在适当的时间进行更新。比较图形中帧缓冲区交换的使用。数据手册显示了几个寄存器的影子和活动版本。例如,考虑一个指示脉冲结束的寄存器;如果要将其更改为更短的脉冲,则在脉冲尚未完成时这样做可能会导致一个脉冲根本无法完成(因为它从未等于该周期的结束值)。但是,如果您写入影子寄存器,硬件可以将其复制到已知安全的活动寄存器中 - 例如,恰好在定时器回绕时。这在数据手册中没有描述,它涵盖了给定芯片的特定参数;知道 TI,有可能单独的手册描述每个模块的功能;这个在第 2.2 节中提到了影子模式。

简而言之,影子寄存器是在微控制器内设计的寄存器,用于保存某些数据以供以后使用。“Shadow”这个名字意味着复制一些值并再次使用它——所以它不会丢失。

影子和镜像寄存器都是指可以从多个地址访问的寄存器。例如,在硬件中,给定的寄存器有一个位于 F00h 的实例。但是,如果它在 1F00h 处具有别名,则对 F00h 的读取或写入与对 1F00h 的读取或写入相同,反之亦然。