处理器寄存器和指令寄存器有什么区别?

时间:2017-02-11 22:12:52

标签: arm cpu cpu-architecture cpu-registers

CPU中Processor registerInstruction register之间有什么区别?每个人用的是什么? 是指令寄存器的一部分?

1 个答案:

答案 0 :(得分:0)

在你的问题中使用类似的链接是不赞成的。在这种情况下,链接提供了充分/良好的描述。

如果您正在研究ARM处理器(现在是复数),那么您已经了解了处理器寄存器。它们的另一个名称是通用寄存器。他们处于这种高级思维水平,非常类似于程序中的变量,它们就在您的功能中随时可用。在ARM中,这些将是r0,r1,r2,r3等。

指令寄存器更像是一个概念,可能有一段时间,你当然可以用这种方式设计一些东西,但现在我们有了管道,所以不存在一个指令所在的地方。但除非这样。一个cpu必须如何工作?它必须从内存,闪存或ram中获取指令,或者让它留在那些指令中。然后逻辑必须检查这些位并确定它是什么指令,然后从那里做什么。

我当然希望您从ARMv5的ARM架构参考手册开始,或者您可以找到最基本的,然后从那里开始工作。那个旧版本是最好的入门版本,而不是过于复杂的所有保护和其他功能,后来它涵盖了螺母和螺栓。

所以让我们拿拇指指令添加。

add r1,r2,r3

我收集它然后反汇编我得

Disassembly of section .text:

00000000 <.text>:
   0:   18d1        adds    r1, r2, r3

看看ARM ARM正是我所期望的前7位是0b0001100然后是三组三位描述三个寄存器,两个输入操作数一个是destionation,不一定按顺序。

那么处理器怎么能用它来做任何有用的事情呢?首先,它必须从内存中获取指令,以便它从内存中进行某种读取(一次读取只是一次读取)以获取这些位0x18D1。然后它需要解码这些位。当它正在解码这些位时,它需要将这些位存储超过时钟周期的持续时间。这通常意味着它被锁存到寄存器中。那么通用寄存器就不是这样,在处理器内部我们需要存储这条指令。如果你想把它称为指令寄存器,那就这样吧。当暂时存储在处理器中时,我们可以对这些位进行解码,一些逻辑将识别前7位并说“嘿,每个人这是一个三寄存器添加”,现在处理器必须去获取这两个输入寄存器。通用或使用您的维基百科术语,处理器寄存器。那些也可能被锁存到其他寄存器中,这些寄存器为alu提供信号或馈送加法器电路,或者可能在不需要的情况下进行添加,这取决于设计。添加发生,现在结果需要转到目标寄存器,另一个处理器寄存器。连同另一个寄存器的标志,处理器状态寄存器(通用)或PSR或ARM术语CPSR。

现在有了管道虽然它更复杂,但是管道只不过是你在纪录片上看到的装配线,或者可能拥有第一手知识。管道正在使用您的维基百科页面一行指令寄存器。或使用编程术语的数组。获取指令并命中管道中的第一个阶段,就像装配线一样,每个阶段都会发生不同的任务,在某些时候我们解码指令,在某些时候请求并显示操作数,在某些时候添加发生,输出必须与标志一起去。一直以来,这种添加通过管道理想地在其后面移动是另一个补充。就像装配线上的红色汽车,然后是白色和绿色,每个都在这个过程中同样的步骤,把车轮放在门上,等等。