当一个值从一个寄存器复制到另一个寄存器时,该值会发生什么 在源寄存器?目的地寄存器中的值会发生什么。
答案 0 :(得分:2)
我将展示它如何在用于研究CPU架构的简单处理器(如DLX或RISC)中工作。
何时(AT& T语法,或将$ R1复制到$ R2)
mov $R1, $R2
或甚至(对于RISC风格的架构)
add $R1, 0, $R2
指令有效,CPU将读取源操作数:来自register file 的R1和来自...的零可以是立即操作数或零生成器;将两个输入传递到Arithmetic Logic Unit (ALU)。 ALU将执行一个操作,它只将第一个源操作数传递到目标(因为A + 0 = A),在ALU之后,目标将被写回寄存器文件(但到R2插槽)。
因此,源寄存器中的数据仅在此操作中被重新加载未更改;目标寄存器中的数据将被覆盖,并带有源寄存器数据的副本。 (旧的目的地登记状态将丢失with generating of heat。)
在物理层,寄存器文件中的任何寄存器都设置为SRAM cells,每个寄存器都是两个反相器(双稳态触发器,基于M1,M2,M3,M4)和其他门写作和阅读:
当我们想要覆盖存储在SRAM单元中的值时,我们将根据我们的数据设置BL和-BL(存储位0 - 设置BL和未设置-BL;存储位1 - 设置-BL和取消设置BL) ;然后对当前的单元格(行)启用写入(WL打开;它将打开M5和M6)。打开M5和M6后,BL和-BL将改变双稳态触发器的状态(如SR-latch中所示)。因此,写入新值并丢弃旧值(通过将电荷泄漏到BL和-BL中)。