Опасности по тръбопровода

Чудя се дали някой може да потвърди отговора ми на този въпрос, моля! Имам междинен семестър следващата седмица и 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

person jyim    schedule 20.10.2012    source източник


Отговори (1)


  1. Линия 3 зависи от линия 2 (за $4)
  2. Линия 4 зависи от линия 3 (за $4)
  3. Ред 5 зависи от Ред 3 (за $4) и Ред 4 (В WB на add: стойността ще бъде записана в регистрационния файл --в първата половина на тактовия цикъл. В същото време ще работи MEM на sw, стойността ще е необходима --в първата половина на тактовия цикъл. Така че между тези две съществува условие на опасност)
  4. Ред 8 зависи от ред 7
person Joe Roth    schedule 07.10.2014