推 mqazz1:謝謝! 09/05 10:01
※ 引述《mqazz1 (無法顯示)》之銘言:
: 張凡下冊 110頁 39題(1)
: Loop: add $1, $2, $3
: sub $2, $3, $1
: lw $1, 0($2)
: or $3, $2, $1
: beq $2, $3, Loop
: addi $1, $3, 2
: sw $1, 0($2)
: subi $2, $1, 2
: If we assume that the branch decision can be made in the stage of ID and the
: branch is eventually taen in this case, please show the multi-cycle graph of
: the pipelining execution
: 請問這題要怎麼畫?
Lp: add $1,$2,$3 F D E M W
﹨ //$2 $3相加結果 前饋到 EX層的$1做算術相減
sub $2,$3,$1 F D E M W
﹨ //$3 $1相減結果 前饋到 EX層的$2做位址相加
lw $1,0($2) F D E M W
﹨ //因為load資料危障 $1必須等到MEN才能前饋
or $3,$2,$1 * F D E M W 到EX做算術or
| //因為在ID層判斷taken 這裡沒講
beq $2,$3,Lp * * F D E M W full forwarding(EX可前饋到ID)
假設是一般前饋 就要等前後半週寫回
addi... * * * * * // 因為他預測notTaken但是卻taken
這行指令被沖刷掉
add F D E M W
: ==============
: 張凡下冊 118頁 題47(1)
: L1: addi $t0, $t0, 4
: lw $s1, 0($t0)
: sw $s1, 32($t0)
: lw $t1, 64($t0)
: slt $s0, $t1, $zero
: bne $s0, $zero, L1
: no forwarding unit, insert NOP
: 張凡的解答說 1 no-op behind bne 請問這是為什麼?
類似上一題 就是指令的最後因為
slt 0 1 z
bne 0 z L1
xxx x x x <---原本NotTaken的指令 跳回L1 被沖刷掉了 = 1 nop
addi ..... // 跳回L1的指令
不過其實我沒看到這題哪裡有寫最後面到底是Taken還是notTaken..... XD
: =========================
: 張凡下冊 121頁 題51
: lw $4, 50($7)
: beq $1, $4, 3
: add $5, $3, $4
: sub $6, $4, $3
: or $7, $5, $2
: slt $8, $5, $6
: 5 pipeline stages and data forwarding capability
: if this CPU uses "always assume branch not taken" strategy to handle
: instruction but the branch is taken in this example, how many clock cycles
: are required to complete this programe?
: 答案是(5-1)+3+2+1 = 10
我是用畫圖土法煉鋼做出來的XD 答案一樣不過我不懂解答得算式QQ
這裡必須先知道beq 會往下跳到第3+1=4行指令 = slt $x,$x,$x
1 2 3 4 5 6 7 8 9 10
lw $4,50($7) F D E M W
//一樣前饋只能到EX沒到ID 要等到前後半
beq $1,$4,3 * * F D E M W 週才能繼續往下執行
add(flush) * * * * * //沖掉原本沒有taken繼續向下執行的指令
(1 nop)
slt $8,$5,$6 F D E M W
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.112.107