首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MIPS单周期-为什么MemRead和MemToReg分开?

MIPS单周期-为什么MemRead和MemToReg分开?
EN

Stack Overflow用户
提问于 2019-02-16 18:36:57
回答 1查看 1.7K关注 0票数 2

我目前正在研究MIPS单周期处理器数据通路的进进出出。

我找不到一个原因,为什么MemRead和MemtoReg之间有区别。我目前的理解是,如果我们想从数据内存加载某个东西,如果我们想要在一个寄存器中加载它,并且如果我们不想加载某个东西,那么我们将MemRead设置为1,并且如果我们不想在寄存器中使用ALU的结果(条件是RegWrite设置为1)。那么,为什么MemRead和MemtoReg有不同的信号呢?

下面是我使用的datapath:

EN

回答 1

Stack Overflow用户

发布于 2019-10-31 19:57:10

嗯,我认为这部分是因为内存需要有自己的控制信号。

要记住的一件重要的事情是,所有的复用器输入都是计算出来的,然后选择正确的输出。因此,对于不涉及从内存读取的指令,ALU结果仍然传递给内存,即使MemToReg控制信号告诉复用器忽略来自内存的值。因此,这意味着,如果没有MemRead,内存可能会认为它得到的地址是无效的,这可能会导致一些问题。例如,(不是真正的地址)“地址”可能超出范围,也可能不对字对齐,这可能会触发硬件异常。

下面是帕特森和轩尼诗的“https://rads.stackoverflow.com/amzn/click/com/0124077269”一书中的一张图表--如果你读到标题,它可能有助于回答你的问题:

但是..。为什么MemRead和MemToReg需要分开,而不仅仅是一个被分割并发送到两个地方的值?我不太确定。

一个可能的原因可能是他们区分了可以得到“不关心”值的控制信号。在MemToReg可以得到“不关心”值的情况下,MemRead可能仍然需要获得0,这样就不会因为前面所述的原因而导致任何错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54726371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档