Чудя се дали някой може да потвърди отговора ми на този въпрос, моля! Имам междинен семестър следващата седмица и TA все още не е публикувал решения на този въпрос:
Разгледайте следния асемблиращ код на MIPS и идентифицирайте всички опасности на тръбопровода при предположението, че няма внедрени оптимизации на тръбопровода - включително пренасочване. Първата колона с числа са номерата на редовете, които можете да посочите във вашето обяснение.
1. addi $3, $0, 100
2. addi $4, $0, 0
3. loop: addi $4, $4, 4
4. add $5, $4, $3
5. sw $5, 100($4)
6. addi $1, $1, -1
7. slt $2, $4, $3
8. bne $2, $0, loop
9. jr $31
Пренаредете инструкциите, за да намалите броя на сергиите до минимум
Моят отговор:
При преминаване от ред 2 към ред 3 (от външен цикъл към вътрешен), има опасност, тъй като $4, необходими на ред 3 за добавяне, зависят от стойността, зададена в $4 на ред 2.
Ред 4 има опасност, защото зависи от стойността, зададена за $4 в ред 3.
Ред 5 има опасност, защото зависи от стойността, зададена за $4 в ред 4.
Ред 8 има опасност, защото зависи от стойността, зададена за $2 в ред 7.
Пренаредени инструкции:
addi $4, $0, 0 2
addi $3, $0, 100 1
loop: addi $4, $4, 4 3
addi $1, $1, -1 6
add $5, $4, $3 4
slt $2, $4, $3 7
sw $5, 100($4) 5
bne $2, $0, loop 8
jr $31 9