Re: [理工] [計組]-交大94-資工
※ 引述《luckyburgess (the one)》之銘言:
: 想請問一下94年交大資工計組的第9題
: 那邊是怎麼解出來的
: http://www.lib.nctu.edu.tw/n_exam/exam94/isc/7006.pdf
: 感謝!
Loop: lw $t0, 0($s1)
addu $t0, $t0, $s2
sw $t0, 0($s1)
addi $s1, $s1, -4
bne $s1, $zero, Loop
ALU or branch inst. Data transfer inst.
Loop: addi $s1, $s1, -16 lw $t0, 0($s1)
(blank) lw $t1, 12($s1)
(1) lw $t2, 8($s1)
(2) (6)
addu $t2, $t2, $s2 (7)
(3) (8)
(4) (9)
(5) sw $t3, 4($s1)
================================================================
由 addi $s1, $s1, -16 與 addi $s1, $s1, -4 得知unroll了四次
原本 loop 變成
Loop: lw $t0, 0($s1)
addu $t0, $t0, $s2
sw $t0, 0($s1)
lw $t0, 0($s1)
addu $t0, $t0, $s2
sw $t0, 0($s1)
lw $t0, 0($s1)
addu $t0, $t0, $s2
sw $t0, 0($s1)
lw $t0, 0($s1)
addu $t0, $t0, $s2
sw $t0, 0($s1)
addi $s1, $s1, -16
bne $s1, $zero, Loop
接著進行 重排指令 與 register renaming
Loop: addi $s1, $s1, -16
lw $t0, 0($s1)
lw $t1, 12($s1)
lw $t2, 8($s1)
lw $t3, 4($s1)
addu $t0, $t0, $s2
addu $t1, $t1, $s2
addu $t2, $t2, $s2
addu $t3, $t3, $s2
sw $t0, 16($s1)
sw $t1, 12($s1)
sw $t2, 8($s1)
sw $t3, 4($s1)
bne $s1, $zero, Loop
最後 調整成可並行執行的順序且不發生 hazard 的 instruction group
Loop: addi $s1, $s1, -16
lw $t0, 0($s1)
lw $t1, 12($s1)
(blank)
lw $t2, 8($s1)
addu $t0, $t0, $s2
lw $t3, 4($s1)
addu $t1, $t1, $s2
addu $t2, $t2, $s2
sw $t0, 16($s1)
addu $t3, $t3, $s2
sw $t1, 12($s1)
sw $t2, 8($s1)
(blank)
sw $t3, 4($s1)
bne $s1, $zero, Loop
每個 instruction group 可並行執行 變成...
ALU or branch Data transfer
===========================================================
Loop: addi $s1, $s1, -16 lw $t0, 0($s1)
(blank) lw $t1, 12($s1)
addu $t0, $t0, $s2 lw $t2, 8($s1)
addu $t1, $t1, $s2 lw $t3, 4($s1)
addu $t2, $t2, $s2 sw $t0, 16($s1)
addu $t3, $t3, $s2 sw $t1, 12($s1)
(blank) sw $t2, 8($s1)
bne $s1, $zero, Loop sw $t3, 4($s1)
============================================================
找 instruction group 時要注意 group 內
的 hazard 比如:
lw $t0, 0($s1)
addu $t0, $t0, $s2
不能成為一個 group
group 間的 hazard 比如:
你不能分成
group-1:
lw $t1, 12($s1)
addu $t0, $t0, $s2
與
group-2:
lw $t2, 8($s1)
addu $t1, $t1, $s2
因為 group-1 中的 lw 與 group-2 中的 addu
有 load-used hazard
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.222.93
推
10/07 17:12, , 1F
10/07 17:12, 1F
→
10/07 17:26, , 2F
10/07 17:26, 2F
→
10/07 17:27, , 3F
10/07 17:27, 3F
→
10/07 17:27, , 4F
10/07 17:27, 4F
→
10/07 18:14, , 5F
10/07 18:14, 5F
推
10/07 18:17, , 6F
10/07 18:17, 6F
→
10/07 18:18, , 7F
10/07 18:18, 7F
→
10/07 18:18, , 8F
10/07 18:18, 8F
→
10/07 22:09, , 9F
10/07 22:09, 9F
推
10/07 22:30, , 10F
10/07 22:30, 10F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):