看板 Grad-ProbAsk 關於我們 聯絡資訊
Code scheduling (一次可執行2指令,ie 左:R-type or branch , 右 lw,sw) 在分發管線中該如何安排 Loop: lw t0,0(s1) addu t0,t0,s2 sw t0,0(s1) addi s1,s1,-4 bne s1,zero,Loop 假設索引值是 4 loop 展開後程式碼如下 lw t0,16(s1) addu t0,t0,s2 sw t0,16(s1) lw t1,12(s1) addu t1,t1,s2 sw t1,12(s1) lw t2,8(s1) addu t2,t2,s2 sw t2,8(s1) lw t1,4(s1) addu t1,t3,s2 sw t1,4(s1) addi s1,s1,-16 bne s1,zero,Loop ans ALU or Branch | Data transfer instr | cycle _____________________________________________ Loop: addi s1,s1,-16 lw t0,0(s1) 1 lw t1,12(s1) 2 addu t0,t0,s2 lw t2,8(s1) 3 addu t1,t1,s2 lw t3,4(s1) 4 addu t2,t2,s2 sw t0,16(s1) 5 addu t3,t3,s2 sw t1,12(s1) 6 sw t2,8(s1) 7 bne s1,zero,Loop sw t3,4(s1) 8 疑問: 1.為什麼 cycle的 lw t0,0(s1) 是用0而不是直的16?而且她的sw是16!! 2.cycle 為什麼一開始就可以 -16? 但是之前把他展開是放最後面才作!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.165.98.107
CrazyBoss:因為你執行lw的時候addi-16根本就還沒執行,所以從0開始 11/23 23:57
CrazyBoss:展開後的程式碼板來就是錯的所以才要schedule 11/24 00:03
RebeccaHall:嗯!! 我再仔細看看 11/25 12:19