当一个值从一个寄存器复制到另一个寄存器时,源寄存器中的值会发生什么变化?目标寄存器中的值会发生什么变化。
1 回答
我将展示它如何在用于研究 CPU 架构的简单处理器(如 DLX 或 RISC)中工作。
何时(AT&T 语法,或将 $R1 复制到 $R2)
mov $R1, $R2
甚至(对于 RISC 风格的架构)
add $R1, 0, $R2
指令有效,CPU 将读取源操作数:寄存器文件中的 R1和 ... 的零可能是立即操作数或零生成器;将两个输入都传递到算术逻辑单元 (ALU)中。ALU 将执行一个操作,它将第一个源操作数传递给目标(因为 A+0 = A),在 ALU 之后,目标将被写回寄存器文件(但到 R2 插槽)。
因此,在此操作中,源寄存器中的数据只被读取而不被改变;目标寄存器中的数据将被源寄存器数据的副本覆盖。(目标寄存器的旧状态将随着热量的产生而丢失。)
在物理层面,寄存器文件中的任何寄存器都是一组SRAM 单元,每个单元都是两个反相器(双稳态触发器,基于 M1、M2、M3、M4)和用于写入和读取的附加门:
当我们要覆盖存储在 SRAM 单元中的值时,我们将根据我们的数据设置 BL 和 -BL(存储位 0 - 设置 BL 和取消设置 -BL;存储位 1 - 设置 -BL 和取消设置 BL);然后为当前单元组(行)启用写入(WL 开启;它将打开 M5 和 M6)。在 M5 和 M6 打开后,BL 和 -BL 将改变双稳态触发器的状态(如在SR-latch中)。因此,写入新值并丢弃旧值(通过将电荷泄漏到 BL 和 -BL 中)。