Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory CPU和内存(值、寄存器)_Memory_Copy_Cpu_Cpu Registers_Computer Architecture - Fatal编程技术网

Memory CPU和内存(值、寄存器)

Memory CPU和内存(值、寄存器),memory,copy,cpu,cpu-registers,computer-architecture,Memory,Copy,Cpu,Cpu Registers,Computer Architecture,当一个值从一个寄存器复制到另一个寄存器时,该值会发生什么变化 在源寄存器中?目标寄存器中的值会发生什么变化。我将展示它如何在用于研究CPU体系结构的简单处理器(如DLX或RISC)中工作 何时(AT&T语法,或将$R1复制到$R2) 甚至(对于RISC风格的体系结构) 指令工作,CPU将读取源操作数:R1从和零从。。。可以是立即数操作数或零生成器;将两个输入传递到。ALU将执行一个操作,该操作只将第一个源操作数传递到目标(因为A+0=A),在ALU之后,目标将写回寄存器文件(但要写到R2插槽)

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

我将展示它如何在用于研究CPU体系结构的简单处理器(如DLX或RISC)中工作

何时(AT&T语法,或将$R1复制到$R2)

甚至(对于RISC风格的体系结构)

指令工作,CPU将读取源操作数:R1从和零从。。。可以是立即数操作数或零生成器;将两个输入传递到。ALU将执行一个操作,该操作只将第一个源操作数传递到目标(因为A+0=A),在ALU之后,目标将写回寄存器文件(但要写到R2插槽)

因此,源寄存器中的数据在此操作中仅被读取而不被更改;目标寄存器中的数据将被源寄存器数据的副本覆盖。(目标寄存器的旧状态将丢失。)

在物理级别,寄存器文件中的任何寄存器都是一组,每个寄存器都是两个反相器(双稳态触发器,基于M1、M2、M3、M4)和用于写入和读取的附加门:


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

Wow!兰道尔的原则很酷!从来没有这样想过。你应该知道它仍然有点争议。这是一个下限,对于现代CPU(有几十个经典Wt),它小于Wt的2/100(最坏情况估计)。但它是量子计算机的主要限制因素(如果你不可逆地重写量子寄存器,它将被加热并失去量子属性)。因此,输入和输出的数量相等,任何计算都可以从最终状态恢复(反转)到开始状态。
mov $R1, $R2
add $R1, 0, $R2