0

我想我理解第一部分
(i)。我至少对此有答案。对于第二部分,我不确定这个实现会在哪里失败?第二部分让我完全难过。有谁知道这会失败的情况?

如果您想对第三部分有所了解,您将成为我整个班级的英雄。都被难住了。感谢您的任何意见。

MN-4363 处理器的臭名昭著的架构师 Tim FlimFlam 正在为基本 MIPS ISA 的流水线实现而苦苦挣扎。

(i) 为了实现转发,Tim 将 EX 和 MEM 级的逻辑输出(这些逻辑输出分别代表 EXMEM 和 MEMWB 锁存器的输入)连接到 IDEX 寄存器的输入。他声称他将能够以这种方式涵盖任何依赖。
• 这种实施会奏效吗?
• 他是否需要插入任何多路复用器?说明
1.生产者指令是负载。
2.生产者指令为R型。3.消费指令为R型。4.消费者指令是一个分支。5. 消费者指示是商店。

(ii) Tim 声称转发到 EX 阶段仅足以涵盖所有依赖项。• 提供两个实施失败的例子。
• 在这种情况下,“失败”是否对应于打破正确性约束?

(iii) Tim 试图确定跨管道阶段传输的最小信息量。考虑 R 类型、数据传输和分支指令,解释每个流水线寄存器应该有多宽,划分每个锁存器的不同字段。

4

1 回答 1

0

不确定这是否为时已晚,但答案在于第 2 部分中的“所有依赖项”。依赖项/危害有多种类型,即控制、数据。一些数据危害可以通过转发修复(从 MEM && WB 阶段到执行阶段。其他数据危害(如 LOAD 依赖关系)无法通过转发修复。要了解为什么会发生这种情况,请注意 MEM 阶段中的 LOAD 指令将具有仅在该时钟周期结束时才从内存中准备好输出。在同一时钟周期内,执行阶段中需要 LOAD 指令值的任何指令都将获得不正确的值。在这种情况下,在任何时刻时钟周期内的时间说开始,当内存“开始”获取数据时,alu开始执行。在周期结束时,当内存完成获取数据时,alu 也完成了错误值的计算。为了防止危险,您需要 alu 在数据存储器完成获取时开始计算(即 alu 必须停止 1 个周期,或者您必须在 LOAD 和 ALU 指令之间有一个 nop。希望这会有所帮助!

于 2014-02-24T23:52:46.653 回答