Рубрики

ВОРОТА | GATE CS 2008 | Вопрос 77

Задержка ветвления может помочь в управлении опасностями контроля
Следующий код должен работать на конвейере
процессор с одним ответвлением слота:

I1: ADD R2R7+R8
I2 : SUB R4 R5-R6
I3 : ADD R1 R2+R3
I4 : STORE Memory [R4][R1]
BRANCH to Label if R1== 0

Какая из инструкций I1, I2, I3 или I4 может законно занимать интервал задержки
без каких-либо других модификаций программы?
(А) I1
(Б) I2
(С) I3
(D) I4

Ответ: (D)
Объяснение: Это не может быть l1 или l3 , потому что они прямо или косвенно принимают участие в решении ветвления.
Теперь у нас могут быть как l2, так и l4 после принятия решения о ветвлении, и порядок I2 и I4 имеет значение, потому что в I2 мы получаем окончательное значение в регистре R4, а в инструкции мы сохраняем содержимое R1 в памяти, адрес которой хранится в регистр.

Таким образом, если бы мы сделали I2 инструкцией после ветвления, то значение в первом цикле само по себе значение, хранящееся в ячейке памяти, адрес которой хранится в R4, было бы неправильным, потому что оно на самом деле должно было сначала обновляться R5-R6. Так что I4 правильно.

Рекомендуемые посты:

ВОРОТА | GATE CS 2008 | Вопрос 77

0.00 (0%) 0 votes