我想知道如果有人可以验证我对这个问题的答案,请!我有一个下周的期中,TA还没有公布这个问题的解决方案:管道的危害
考虑下面的MIPS汇编代码,并且假设没有流水线优化(包括转发)的假设下识别所有流水线危害。第一列数字是您可以在您的解释中参考的行号。
1. addi $3, $0, 100
2. addi $4, $0, 0
3. loop: addi $4, $4, 4
4. add $5, $4, $3
5. sw $5, 100($4)
6. addi $1, $1, -1
7. slt $2, $4, $3
8. bne $2, $0, loop
9. jr $31
重新排序的指示档位的数量减少到最低限度
我的回答:
从线2移动到第3行(从外循环到内部),有一个危险,因为需要对另外3线$ 4是依赖于值设置在$ 4第2行
线4具有危险,因为它是依赖于在线为$ 4中设置的值3.
线5具有一个危险,因为它是依赖于在线为$ 4中设置的值4.
线8具有危险,因为它是依赖于在管线7
重新排序指令$ 2中设置的值:
addi $4, $0, 0 2
addi $3, $0, 100 1
loop: addi $4, $4, 4 3
addi $1, $1, -1 6
add $5, $4, $3 4
slt $2, $4, $3 7
sw $5, 100($4) 5
bne $2, $0, loop 8
jr $31 9