2012-10-20 12 views
3

Мне интересно, может ли кто-нибудь подтвердить мой ответ на этот вопрос, пожалуйста! На следующей неделе у меня есть среднесрочный период, и у 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 

ответ

0
Data hazards: 
(a) Line 3 needs to wait for line 2 to evaluate the value of $4 (in the 
first iteration) 
(b) Line 4 needs to wait for line 2 to evaluate the value of $4 (every 
iteration) 
(c) Line 5 needs to wait for line 4 to evaluate the value of $5 (every 
iteration) 
(d) Line 8 needs to wait for line 7 to evaluate the value of $2 

Control hazard 
(a) Line 8 will stall while determining if $2 is equal to $0 

Moving lines 6 and 7 to between lines 4 and 5 (alternatively moving 
line 5 to between line 7 and 8) and swapping the order, i.e. line 7 
before line 6, would provide the most savings with stalls, because that 
stall occurs on each iteration of the loop. The swap is necessary to 
avoid the data hazard with line 8. 
0
  1. Строка 3 зависит от линии 2 (за $ 4)
  2. Строка 4 зависит от линии 3 (за $ 4)
  3. Строка 5 зависит от линии 3 (за 4 доллара США) и линии 4 (В WB значения add: значение записывается в файл регистра - в первой половине такта. В то же время MEM of sw будет продолжаться, значение будет необходимо - в первой половине такта. Таким образом, существует опасное состояние между этими двумя)
  4. Строка 8 зависит от линии 7
Смежные вопросы