首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有EX/MEM管道寄存器或只有MEM/WB管道寄存器的失速周期数

只有EX/MEM管道寄存器或只有MEM/WB管道寄存器的失速周期数
EN

Stack Overflow用户
提问于 2021-08-04 14:46:52
回答 1查看 652关注 0票数 1

我正在研究一个与处理器有关的问题。问题是题为“计算机组织与设计(第6版)”的书中的问题4.12。这个问题的假设如下:

这是一个图像图4.45

第三个问题让我陷入困境

这个问题的答案是MEM/WB比EX/MEM ( CPI为1.45)有更少的失速周期( CPI为1.35)。我对这个答案的解释很困惑。它指出:

只从EX/MEM寄存器转发,EX到第1受抚养人可以满足,但任何其他依赖(即使与EX到第一)发生一个周期的摊档。由于只从MEM/WB登记簿转寄,除第二受抚养人外,没有摊档。MEM到1受抚养人仍然会出现单周期失速,而EX到1受抚养人现在会产生一个失速周期,因为我们必须等待指令完成MEM阶段才能转发到下一条指令。

正确的是,只有EX/MEM管道寄存器,EX到1是解决问题,但我不能证明所有的其他情况只需要一个失速循环。例如,在MEM到1的情况下,我认为需要两个失速循环,因为现在的结果是在MEM阶段产生的,它没有任何MEM/WB管道寄存器来保存结果并将其转发到下一个指令。因此,如果再多两个失速循环,就会得到正确的结果。还有一件事,我想告诉你们的是,在"EX到1,MEM到2“的情况下,在答案中,它还需要多一个循环来解决这里的危险。它使我如此困惑,因为它与"MEM到1“的情况相冲突,后者也只需要一个周期。

同样,在下一种情况下,只有MEM/WB管道寄存器。你有什么证据可以解释这个答案吗?我真的很期待你对这个问题的回答。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-04 15:26:30

这并不是说拥有管道寄存器(或者没有管道寄存器,它根本就不能工作),而是让旁路/转发muxing提供数据以减少原始危险而不是导致阻塞(这将是很愚蠢的,因为检测条件的逻辑必须在这两种情况下都实现,否则处理器就不能工作)。

你正确地认为,如果没有旁路/前向,MEM到1需要两个失速周期,而对于旁路/正向,只有一个周期被减缓,而另一个失速周期仍然存在,不能通过旁路/前向移除。为什么?因为在处理器中任何地方都无法获得所需的数据,直到第一个周期晚于第一个周期之后的第一个周期。

在旁路/转发的其他情况下,数据可以在处理器中的某个地方在正确的时间进行第一或第二次操作--只是数据不在正确的位置,因此旁路/转发解决了这一点。例如,在add指令完成EX后的循环中,算术加法操作的值在处理器的某个位置,但尚未在目标寄存器中。在使用该目标之后的第一条指令(例如,另一条附加的指令)自然会在之后的一个周期进入EX阶段,因此,适当的数据在时间上是可用的,但并不是在正确的位置(这将是先前的目标寄存器),因此旁路实现了原始危险,选择了先前的EX输出,而不是从第一个ID级寄存器读取的陈旧值。

而对于MEM到第一原始,数据将无法在处理器的任何地方,直到第一个周期后的第一个阶段后,所以一个失速加旁路是可以做到的最好的。

他们要问的是,在同一个时钟周期中,可以选择旁路/转发(从EX )、旁路/转发( MEM )到非转发/寄存器(从ID读取)的三路穆X的成本。

如果您想支持上述三项中的任何一项,则需要一个三向mux (或两级双向mux)。移除其中任何一项,您就可以减少修改。

您可以搜索负载/使用原始危险以获得更多详细信息。

本质上,假设在time t中进入t的加载指令是在ID at t+1EX at t+2MEM at t+3WB at t+4中,总共有五个循环。

如果加载(假设lw $a0, 0($a1)紧接着是使用load的目标寄存器(例如addi $t0, $a0, 1)的指令,那么该指令( addi)在时间t+1处进入管道IF,在t+2进入ID,在循环开始时进入t+3. ,在循环开始时进入t+3执行d21所需的数据--在EX中使用ALU的增量在处理器中不存在,并且直到t+3结束时才到达处理器,这是负载的MEM周期的结束。因此,即使是旁路/转发,失速周期也是不可避免和必需的。在这种情况下,失速会将addi的EX阶段推迟到处理器中某个地方可用的t+4阶段。在t+4,负载的数据可以从体系结构寄存器文件中重新获取(尽管这需要三重移植寄存器文件的读取端,并且可能也会增加满足这一要求的循环时间),或者从MEM/WB管道寄存器获取数据)。

由于在ID阶段读取体系结构寄存器文件以获取源操作数值,无需旁路/转发,需要两个暂停来延迟addi的ID (理想情况下会在t+1中发生),直到它在体系结构寄存器文件中看到负载的WB阶段的结果时才开始。

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

https://stackoverflow.com/questions/68653353

复制
相关文章

相似问题

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