gpt4 book ai didi

MIPS流水线时序图

转载 作者:行者123 更新时间:2023-12-01 05:42:18 25 4
gpt4 key购买 nike

我想确认以下时序图是否适用于 MIPS 5 级流水线(* = 停顿):

               |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
LW R1, 0(R4) | IF | ID | EX | M | W | | | | | | | | | | | |
LW R2, 400(R4) | | IF | ID | EX | M | W | | | | | | | | | | |
ADD1 R3,R1,R2 | | | IF | ID | * | * | EX | M | W | | | | | | | |
SW R3, 0(R4) | | | | IF | * | * | ID | * | * | EX | M | W | | | | |
SUB R4,R4,#4 | | | | | | | IF | * | * | ID | EX | M | W | | | |
BNEZ R4, L1 | | | | | | | | | | IF | ID | * | * | EX | M | W |

注释:

1) ADDI : ID 停顿 2 个周期,因此前一个 WB 可以完成

2) SW : 2 档因为 ID 不能开始,还有 2 档用于 ID 以供前一个 WB 完成

3) SUB : IF 直到第 7 周期才能启动,ID 必须等到第 10 周期,因为前面的指令

4) BNEZ : IF 直到循环#10 才能开始,ID 有 2 个停顿,所以前一个 WB 可以完成

最佳答案

指令结果仅通过寄存器文件传递(无转发/绕过)并且寄存器仅在 EX 之前读取,那么您的图表看起来是正确的。 (您可能会将 SUB 和 BNEZ 的 IF 之前的空阶段视为停顿周期,因为通常下一条指令的 IF 会紧跟上一条指令的 IF 阶段。另一方面,这可能会被视为使图表困惑。)

然而,5 级流水线通常通过将结果直接从结果生成指令的 EX 阶段的结尾(或 M 阶段的结尾)转发到结果生成指令的开头来避免大多数上述停顿。依赖指令的 EX 阶段。 (对于存储指令,要存储在内存中的值可能只有 M 甚至 W 阶段需要,因此设计人员可能会考虑为这种情况添加转发。有了这个简单的管道,这只会对一对指令有意义提供内存移动,因为加载是唯一延迟大于 1 的指令。对于双宽超标量,这可能允许诸如“ADD R3, R2, R1; SW R3, 0(R4);”之类的东西开始执行同一个循环。)

有了这样一个优化的流水线,通过将结果从“LW R2, 400(R4)”的 M 阶段结束转发到 ADD 的 EX 开始,ADD 只有一个停顿周期(在 ID 之后)。

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
LW R1, 0(R4) |如果 |身份证 |前 |男 | W | | | | | | |
LW R2, 400(R4) | |如果 |身份证 |前 |男 | W | | | | | |
ADD1 R3,R1,R2 | | |如果 |身份证 | * |前 |男 | W | | | |
SW R3, 0(R4) | | | |如果 | * |身份证 |前 |男 | W | | |
SUB R4,R4,#4 | | | | | * |如果 |身份证 |前 |男 | W | |
BNEZ R4, L1 | | | | | | |如果 |身份证 |前 |男 | W |

这种优化增加了设计的复杂性,但避免不必要的停顿可以显着提高性能。

关于MIPS流水线时序图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20765995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com