比較(a)跟(b)的performance, 假設(a)有unrolled跟rescheduled
(a)
Loop: lw $t0, 0($s1)
lw $t1, -4($s1)
addu $t0, $t0, $s2
addu $t1, $t1, $s2
sw $t0, 0($s1)
sw $t1, -4($s1)
addi $s1, $s1, -8
bne $s1, $zero, Loop
(b)
Loop: lw $t0, 0($s1)
addu $t0, $t0, $s2
sw $t0, 0($s1)
addi $s1, $s1, -4
bne $s1, $zero, Loop
如果bne是在Mem stage可以被解決
那(a)的每一個loop要花11 cycles, 那(b)每一個loop要花9 cycles
注意(b)要多花一個stall(lw跟addu)
所以(a)比(b)快 (2*9)/11 , 因為(a)被unroll兩倍
如果bne是在ID stage可以被解決
那(a)的每一個loop要花10 cycles, 那(b)每一個loop要花8 cycles
注意(b)要多花2個stalls(分別是lw跟addu還有addi跟bne)
所以(a)比(b)快(2*8)/10
如果對這一題還有問題就說出來吧...
--
※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw)
◆ From: 140.112.28.118
※ 編輯: Diron 來自: 140.112.28.118 (05/22 12:02)
※ 編輯: Diron 來自: 140.112.28.118 (05/22 13:18)