我想我理解第一部分
(i)。至少我对此有答案。但我不知道第二部分的实施会在哪里失败呢?第二部分让我完全困惑。有人知道什么情况会失败吗?
如果你想照亮第三部分,你将是我的全班英雄。都被困在那里了。谢谢你的意见。
蒂姆FlimFlam,著名的MN-4363处理器的架构师,正在挣扎于基本MIPS的流水线实现。
(i)为了实现转发,Tim将EX级和MEM级的逻辑输出(这些逻辑输出分别表示对EXMEM和MEMWB锁存的输入)连接到IDEX寄存器的输入端。他声称,他将能够以这种方式涵盖任何受抚养人。
这一执行工作是否有效?
·他需要插入任何互斥词吗?解释,解释
(2) Tim声称,转发到前阶段仅足以涵盖所有依赖项。提供两个例子说明他的执行将失败。
·在这种情况下,“失败”是否与打破正确性约束相对应?
(3) Tim试图确定要传输的最低数量的acros管道级信息。考虑到R型、数据传输和分支指令,解释每个管道寄存器应该有多宽,每个锁存划分不同的字段。
发布于 2014-02-24 23:52:46
不确定这是否晚了,但答案在于第2部分中的“所有依赖项”。依赖/危害是多种类型的,即控制、数据。一些数据风险可以通过转发(从MEM & WB阶段到执行阶段)进行修复。其他数据危险,如负载依赖项,不可能通过转发来修复。要了解为什么会发生这种情况,请注意MEM阶段的LOAD指令只在该时钟周期结束时才能从内存中准备输出。在同一个时钟周期中,执行阶段中任何需要LOAD指令值的结构都会得到不正确的值。在这种情况下,在时钟周期内的任何时刻,比如说开始,当内存开始获取数据时,alu开始执行。在循环结束时,虽然内存已经完成了数据的获取,但alu也用错误的值完成了计算。为了防止危险,您需要alu开始计算时,数据内存已经完成(即alu必须暂停一个周期,或您必须有一个nop之间的负载和ALU指令。希望这能有所帮助!
https://stackoverflow.com/questions/20169168
复制相似问题