You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于带停顿与全转发的5段流水线时钟图正确性的技术问询

MIPS全转发流水线停顿分析

指令序列

1. lw $s2,0($s1)
2. lw $s1,40($s6)
3. sub $s6,$s1,$s2
4. add $s6,$s2,$s2
5. or $s3,$s6,$zero
6. sw $s6,60($s1)

数据冒险与转发可行性分析

针对第3条sub指令的数据冒险:

  • 源操作数$s2来自第1条lw指令:第1条lw的WB阶段在时钟周期4(CC4),通过WB→Exe转发路径,可以将$s2的值直接传递给sub的EX阶段,无需额外等待。
  • 源操作数$s1来自第2条lw指令:第2条lw的MEM阶段在CC4,你的流水线支持Mem→Exe转发,可以将MEM阶段生成的$s1值直接传递给sub的EX阶段。

停顿必要性判断

sub指令在CC3进入ID阶段时,需要读取寄存器$s1,但此时第2条lw刚进入EX阶段(CC3),$s1的值还未生成到可转发的阶段(MEM要到CC4),因此必须插入1个停顿(NOP),让sub的EX阶段推迟到CC5——此时第2条lw处于MEM阶段,刚好可以通过Mem→Exe转发给sub的EX阶段。

你只插入1个停顿的做法是完全正确的。那些插入2个停顿的示例,通常是流水线不支持Mem→Exe转发的场景:此时$s1要等到第2条lw的WB阶段(CC5)才能转发,sub的EX阶段要推迟到CC6,因此需要2个停顿。而你的场景是全转发架构,1个停顿就足够解决数据冒险。

内容的提问来源于stack exchange,提问作者Yesk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:15:09