※ 引述《Diron (好吃不黏手)》之銘言:
: 比較(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
: 如果對這一題還有問題就說出來吧...
關於bne在 ID stage的答案不曉得對不對,如果大家覺得有問題可以提出來...
--
※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw)
◆ From: 140.112.28.118