如果我在冯·诺依曼架构中拥有 MDR,那么 CIR 的用途是什么?
What is the purpose of the CIR if I have the MDR in Von Neumann Architecture?
从冯·诺依曼架构的获取解码执行周期,在基本层面上,这是我的理解:
- PC内存地址复制到MAR
- PC +=1
- MAR地址中的指令/数据从主存中取出后存入MDR
- 来自 MDR 的指令被复制到 CIR
- 内存中的指令/数据由CU解码并执行。
- 存储在 ACC 中的计算结果。
- 重复
现在,如果将 MDR 值复制到 CIR,为什么它们都是必需的。我对系统架构还很陌生,所以我可能搞错了方向,但我已经尽力了:)
想想如果当前指令是加载或存储会发生什么:MDR 之后需要发生什么吗?如果是这样,如果 CPU 不以某种方式跟踪它,它如何记住它正在做的事情。
是否始终需要原始指令位取决于设计。
需要进行大量解码的 CPU(例如,具有紧凑可变长度指令集的 CISC,如原始 8086)可能不会保留实际指令本身,而只是一些解码结果。例如,实际的 8086 增量解码,一次扫描一个字节的前缀,直到到达操作码。现代 x86 解码为 uops,它沿着管道发送;不需要原始机器码字节。
但是像 MIPS 这样的 CPUs 是专门设计的,因此部分指令字可以直接用作内部控制信号。尽管如此,并不总是有必要将整个指令集中在一块。
将 CIR 视为解码过程的输入锁存器可能更有意义,它根据设计产生必要的内部控制信号或微码序列。如果您不介意在任何步骤中重做解码,那么将真正的物理 CIR 与它分开是可以的,您需要咨询它以确定下一步要做什么。
从冯·诺依曼架构的获取解码执行周期,在基本层面上,这是我的理解:
- PC内存地址复制到MAR
- PC +=1
- MAR地址中的指令/数据从主存中取出后存入MDR
- 来自 MDR 的指令被复制到 CIR
- 内存中的指令/数据由CU解码并执行。
- 存储在 ACC 中的计算结果。
- 重复
现在,如果将 MDR 值复制到 CIR,为什么它们都是必需的。我对系统架构还很陌生,所以我可能搞错了方向,但我已经尽力了:)
想想如果当前指令是加载或存储会发生什么:MDR 之后需要发生什么吗?如果是这样,如果 CPU 不以某种方式跟踪它,它如何记住它正在做的事情。
是否始终需要原始指令位取决于设计。
需要进行大量解码的 CPU(例如,具有紧凑可变长度指令集的 CISC,如原始 8086)可能不会保留实际指令本身,而只是一些解码结果。例如,实际的 8086 增量解码,一次扫描一个字节的前缀,直到到达操作码。现代 x86 解码为 uops,它沿着管道发送;不需要原始机器码字节。
但是像 MIPS 这样的 CPUs 是专门设计的,因此部分指令字可以直接用作内部控制信号。尽管如此,并不总是有必要将整个指令集中在一块。
将 CIR 视为解码过程的输入锁存器可能更有意义,它根据设计产生必要的内部控制信号或微码序列。如果您不介意在任何步骤中重做解码,那么将真正的物理 CIR 与它分开是可以的,您需要咨询它以确定下一步要做什么。