MIPS流水线处理器指令依赖识别及给定指令序列依赖判定
判断结论
该判断不正确,你遗漏了1处数据依赖,给定指令序列共存在4处会触发MIPS流水线数据冒险的写后读(RAW,即真数据)依赖。
待分析指令序列
1 lw $t2, 8($t1) # 访存取数写入$t2 2 lw $s0, 0($t2) # 访存取数写入$s0 3 add $t3, $t2, $t1 # 运算结果写入$t3 4 add $s1, $s0, $t3 # 运算结果写入$s1
全量依赖明细
- 指令2依赖指令1:指令1写通用寄存器
$t2,指令2计算访存基地址时需要读取$t2的值,这处你的判断正确。 - 指令3依赖指令1:指令1写通用寄存器
$t2,指令3执行加法运算时需要读取$t2作为第一个源操作数,这处你的判断正确。 - 指令4依赖指令2:指令2写通用寄存器
$s0,指令4执行加法运算时需要读取$s0作为第一个源操作数,这是你遗漏的依赖。 - 指令4依赖指令3:指令3写通用寄存器
$t3,指令4执行加法运算时需要读取$t3作为第二个源操作数,这处你的判断正确。
注:上述统计仅针对流水线中需要处理的真数据依赖,该指令序列不存在写后写(WAW)、读后写(WAR)类名称依赖——所有指令的目标寄存器均不重复,也没有先读某寄存器、后序指令才写该寄存器的场景。
内容的提问来源于stack exchange,提问作者Cool Guy
相关产品推荐
相关产品推荐

