看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《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
mqazz1:謝謝! 09/05 10:01