处理器寄存器和指令寄存器有什么区别?
What is the Difference between Processor register and instruction register?
Processor register and Instruction register 和 CPU 有什么区别?每一个是做什么用的?
指令寄存器是处理器寄存器的一部分吗?
在你的问题中使用这样的链接是不受欢迎的。在这种情况下,链接提供 adequate/good 描述。
如果您正在研究 ARM 处理器(现在是复数形式),那么您已经了解处理器寄存器。它们的另一个名字是通用寄存器。在这种高层次的思考中,它们与程序中的变量非常相似,它们就在您的函数中随时可用。在 ARM 中,这些将是 r0、r1、r2、r3 等
指令寄存器更多的是一个概念,可能曾经有一段时间你当然可以这样设计一些东西,但现在我们有了流水线,所以指令不再只有一个地方。但除此之外。 cpu 必须如何工作?它必须从内存、闪存或 ram 中获取指令,或者让它留在那些地方。然后逻辑必须检查这些位并确定它是什么指令,然后从那里如何处理它。
我当然希望您从 ARMv5 的 ARM 体系结构参考手册或您基本上可以找到的最古老的手册开始,然后从那里继续前进。那个旧的是更好的入门工具,并且没有过于复杂的所有保护和其他功能,它涵盖了螺母和螺栓。
所以让我们使用拇指指令添加。
add r1,r2,r3
我assemble然后disassemble我得到
Disassembly of section .text:
00000000 <.text>:
0: 18d1 adds r1, r2, r3
看看 ARM ARM,这正是我所期望的,前 7 位是 0b0001100,然后是三组三位描述三个寄存器,两个输入操作数一个是目标,不一定按这个顺序。
那么处理器怎么能用它做任何有用的事情呢?首先,它必须从内存中获取指令,因此它会从内存中进行某种读取(获取只是读取)以获取这些位 0x18D1。然后它需要解码这些位。好吧,在解码这些位时,它需要将这些位存储的时间超过一个时钟周期的持续时间。这通常意味着它被锁存到一个寄存器中。好吧,通用寄存器不是这个地方,我们需要在处理器内部的某个地方存储这条指令。如果您想将其称为指令寄存器,那就这样吧。当临时存储在处理器中时,我们可以解码这些位,一些逻辑会重新识别前 7 位并说 "hey everybody this is a three register add",现在处理器必须去获取这两个输入寄存器。一般用途或使用您的维基百科术语、处理器寄存器。那些也可能被锁存到其他寄存器中,这些寄存器为 alu 或加法器电路供电,或者加法可能在不需要它的情况下发生,具体取决于设计。添加发生,现在结果需要转到目标寄存器,另一个处理器寄存器。连同进入另一个寄存器的标志,处理器状态寄存器(一般)或 PSR 或 ARM 术语 CPSR。
现在有了流水线,虽然比较复杂,但流水线无非就是你在纪录片里看到的流水线,或者说是亲身体验。管道正在使用您的维基百科页面的一行指令寄存器。或使用编程术语的数组。指令被获取并到达管道的第一阶段,就像装配线在每个阶段发生不同的任务,在某些时候我们解码指令,在某些时候请求操作数并显示,在某些时候发生加法,并且输出必须与标志一起出现在某个地方。一直以来,当这个添加物通过管道时,理想情况下,它后面是另一个添加物。就像流水线上的红色汽车,后面是白色和绿色汽车,每辆汽车都在这个过程中撞到同样的步骤,装上轮子,装上车门,等等
Processor register and Instruction register 和 CPU 有什么区别?每一个是做什么用的? 指令寄存器是处理器寄存器的一部分吗?
在你的问题中使用这样的链接是不受欢迎的。在这种情况下,链接提供 adequate/good 描述。
如果您正在研究 ARM 处理器(现在是复数形式),那么您已经了解处理器寄存器。它们的另一个名字是通用寄存器。在这种高层次的思考中,它们与程序中的变量非常相似,它们就在您的函数中随时可用。在 ARM 中,这些将是 r0、r1、r2、r3 等
指令寄存器更多的是一个概念,可能曾经有一段时间你当然可以这样设计一些东西,但现在我们有了流水线,所以指令不再只有一个地方。但除此之外。 cpu 必须如何工作?它必须从内存、闪存或 ram 中获取指令,或者让它留在那些地方。然后逻辑必须检查这些位并确定它是什么指令,然后从那里如何处理它。
我当然希望您从 ARMv5 的 ARM 体系结构参考手册或您基本上可以找到的最古老的手册开始,然后从那里继续前进。那个旧的是更好的入门工具,并且没有过于复杂的所有保护和其他功能,它涵盖了螺母和螺栓。
所以让我们使用拇指指令添加。
add r1,r2,r3
我assemble然后disassemble我得到
Disassembly of section .text:
00000000 <.text>:
0: 18d1 adds r1, r2, r3
看看 ARM ARM,这正是我所期望的,前 7 位是 0b0001100,然后是三组三位描述三个寄存器,两个输入操作数一个是目标,不一定按这个顺序。
那么处理器怎么能用它做任何有用的事情呢?首先,它必须从内存中获取指令,因此它会从内存中进行某种读取(获取只是读取)以获取这些位 0x18D1。然后它需要解码这些位。好吧,在解码这些位时,它需要将这些位存储的时间超过一个时钟周期的持续时间。这通常意味着它被锁存到一个寄存器中。好吧,通用寄存器不是这个地方,我们需要在处理器内部的某个地方存储这条指令。如果您想将其称为指令寄存器,那就这样吧。当临时存储在处理器中时,我们可以解码这些位,一些逻辑会重新识别前 7 位并说 "hey everybody this is a three register add",现在处理器必须去获取这两个输入寄存器。一般用途或使用您的维基百科术语、处理器寄存器。那些也可能被锁存到其他寄存器中,这些寄存器为 alu 或加法器电路供电,或者加法可能在不需要它的情况下发生,具体取决于设计。添加发生,现在结果需要转到目标寄存器,另一个处理器寄存器。连同进入另一个寄存器的标志,处理器状态寄存器(一般)或 PSR 或 ARM 术语 CPSR。
现在有了流水线,虽然比较复杂,但流水线无非就是你在纪录片里看到的流水线,或者说是亲身体验。管道正在使用您的维基百科页面的一行指令寄存器。或使用编程术语的数组。指令被获取并到达管道的第一阶段,就像装配线在每个阶段发生不同的任务,在某些时候我们解码指令,在某些时候请求操作数并显示,在某些时候发生加法,并且输出必须与标志一起出现在某个地方。一直以来,当这个添加物通过管道时,理想情况下,它后面是另一个添加物。就像流水线上的红色汽车,后面是白色和绿色汽车,每辆汽车都在这个过程中撞到同样的步骤,装上轮子,装上车门,等等