【问题标题】:Fixing load-use hazard issue in pipeline (MIPS)修复管道中的负载使用危险问题 (MIPS)
【发布时间】:2023-04-03 11:57:01
【问题描述】:

我一直在使用 5 阶段流水线进行一些低级编程。但我遇到了障碍。

假设这张图http://i.imgur.com/7kTFi.png 和 mips 代码:

大约 4,1000 美元(6 美元)

sw $4,2000($6)

实际上会发生什么?我以为会有气泡,我在 ID 阶段数了两个气泡。

我们可以通过向新的转发单元添加输入来修复它吗?我可以在哪里添加多路复用器和新数据路径以避免气泡+错误?

【问题讨论】:

    标签: mips pipeline forwarding pipelining


    【解决方案1】:

    你是对的,会有两个气泡。

    假设数据转发:

    1. IF ID EX MM WB
    
    2.    IF S  S  ID EX MM WB
    

    (S 表示失速或气泡)。

    您无法“修复”它,因为无论如何您都必须等待 MM 阶段结束才能使价值达到 1000($6 )。如果没有数据转发,情况可能会更糟,您必须等到 WB 阶段,这意味着 3 个停顿。

    防止这种行为的唯一方法是让智能编译器以不同的方式调度这两条指令(即通过在它们之间添加其他指令空格)。

    请注意,事实上,该程序没有真正的目的在内存地址 [1000+Regs[$6]] 处获取值,并将其复制到地址 [2000+Regs[ $6]])

    【讨论】:

    • 您可以使用从 MM/WB 中间寄存器到 ID/EX 中间寄存器的转发。您只需要 1 个摊位吗?
    【解决方案2】:

    您需要 MEM 到 ALU 转发

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      • 2013-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多