0

当一个值从一个寄存器复制到另一个寄存器时,源寄存器中的值会发生什么变化?目标寄存器中的值会发生什么变化。

4

1 回答 1

2

我将展示它如何在用于研究 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 单元(wiki,PD 文件:SRAM_Cell_(6_Transistors).svg)

当我们要覆盖存储在 SRAM 单元中的值时,我们将根据我们的数据设置 BL 和 -BL(存储位 0 - 设置 BL 和取消设置 -BL;存储位 1 - 设置 -BL 和取消设置 BL);然后为当前单元组(行)启用写入(WL 开启;它将打开 M5 和 M6)。在 M5 和 M6 打开后,BL 和 -BL 将改变双稳态触发器的状态(如在SR-latch中)。因此,写入新值并丢弃旧值(通过将电荷泄漏到 BL 和 -BL 中)。

于 2011-11-17T22:25:49.623 回答