为什么 MIPS 流水线有内存读取信号,但没有寄存器读取信号?

Why a MIPS pipeline has a memory read signal, but not a register read signal?

我想知道为什么读内存时需要内存读取信号?我明白为什么我们需要内存写入的原因与我们需要寄存器写入信号的原因相同。

但是我们不需要寄存器读取信号,为什么我们需要内存读取信号?

如果你想告诉它什么时候写,而不是什么时候读,它就必须在写没有断言的时候一直读。

如果您让处理器在没有实际读取操作可执行的情况下执行内存读取,它是否应该进行随机读取并污染缓存,并且还可能读取错误地址?

因此,存在读取信号以防止无效或不适当的内存读取操作。

相比之下,寄存器读取总是简单地完成,即使某些指令不需要——不同之处在于这样做没有负面影响,因为那些不需要的读取被简单地忽略了(并且没有错误或错误的概念那里缓存污染)。

(在最坏的情况下,在进行这些读取时可能会损失一些电量,但即使不使用,硬件仍然存在并且有电,因此我们需要一些高级硬件节能技术来利用它,尤其是随机的指令流需要。)

不过,如果您想要一个寄存器读取信号,您可以放入一个,只是没有必要,因为下游 MUX 的后续控制信号无论如何都会忽略读取。