Детальный проект конвейерного RISC процессора (Глава 4 "Основы конвейеризации"), страница 22

Deadlock Free Execution (Выполнение, свободное от тупиков)

Наконец, мы должны доказать, что механизм останова не может производить тупики. Пусть оба синхроимпульса активны в течении цикла Т — 1, т.е.,

CEIT-1 = CE2T-2 = 1,

пусть команды I, I' и I'' находятся на этапах 1 - 3 в течении цикла T. I', I'', возможно являются фиктивными командами. Кроме того, пусть CE1T = 0. Таким образом, должен быть установлен флаг опасности (dhazT = 1) и одна из команд I' и I'' должна быть командой загрузки, которая обновляет исходный регистр команды I.

1. Предположим, что команда I' на этапе 2 является такой командой загрузки, тогда v.2T = v.3T+1 = 0    и    v.4T+2 = l.

Команда I' производит опасности данных в течении циклов Т и Т + 1. В течении этих циклов только фиктивные команды, которые не могут активировать сигнал dhazвходят на низшие этапы, и поэтому

dhazT+2 = 0    и    CE1T+2 = 1.

2. Предположим, что команда I’' на этапе 3 является последней командой загрузки, которая обновляет исходный регистр команды I, тогда

v.2T = v.3T+1 = 1,    v.3T = 0    и    v.4T+1 = 1.

Команда I'' производит опасности данных в течении цикла Tи фиктивная команда вводится на этапе 2 в конце цикла. В следующем цикле CE2 не существует опасностей данных и весь конвейер засинхронизирован:

dhazT+1 = 0   и CE1T+l = 1.

Таким образом, синхросигнал CE1 отключен (CE1 = 0) в течении самое большее двух последовательных циклов CE2, и поэтому все команды достигают всех этапов конвейера. Обратите внимание, что ни один из вышеупомянутых аргументов не зависит от того факта, что конвейерная машина моделирует подготовленную последовательную машину.

QED

2) Второе выражение может быть доказано простой индукцией по T; мы оставляем подробности на упражнение (смотри упражнение 4.5).


4.5.3    Теорема моделирования

Теперь мы можем показать теорему моделирования для произвольной последовательности команд:


Теорема 4.11


Для всех i, k, T, T ' таких, что Iπ(k,T) = Iσ(k,T ') = i и ue.kT = 1, выполняются следующие два требования:

1. для всех сигналов S на этапе k, которые являются входами регистра Rout(k), обновление происходит в конце цикла Т:




2. для всех регистров и Rout(k}, которые являются видимыми или обновленными в конце цикла T:

RπT+1 = Ri .


ДОКАЗАТЕЛЬСТВО


Мы говорили выше о том, что IM[0] синхронизируется в регистр IRв конце CE2 цикла 0, и что PC проинициализирован верно. Таким образом, теорема верна для T = 0. Для шага индукции мы различаем четыре случая:

1. k = 0. Этап 0 получает входы только из этапов 0 и 1. Без сброса эти два этапа синхронизируются одновременно. Таким образом, входы этапа 0 изменяются только при активном синхроимпульсе CE1. Рассуждая о циклах CE1 вместо циклов CE2, можно повторить аргумент из теоремы 4.7.

2. k€ {2, 4}. В путях данных существуют только нисходящие грани в этап k, и команды проходят этапы со 2 по 4 на полной скорости. Поэтому рассуждения остаются неизменными.

3. k = 3. Из Iπ(3, T) = iбольше нельзя заключить, что Iπ(3, Т - 1) = i - 1. Вместо этого можно заключить

Iπ(3, t) = i -1

Mπt+1      =   Mi-1по индукционной гипотезе

=   MTπ.

для последних циклов t < Tтаких, что I(3,t) определен, т.е., таких, что не фиктивная команда была на этапе 3 в течении цикла t. Так как фиктивные команды не обновляют ячейки памяти данных M, из этого следует что


4. k = 1. Для I(1, T) = iи ue.1T = 1 мы обязательно имеем dhazT = 0. Если Ii не имеет регистра операнда GPR[r], тогда используются только нисходящие грани, и требование следует как и выше. Таким образом, пусть Ii читает регистр GPR[r] при r =/= 0. Чтение может быть для операнда Aили B. Мы рассматриваем только чтение операнда A; чтение В обрабатывается тем же самым путем с очевидными изменениями в записи.

Если команды I0 ,... Ii-1 не обновляют регистр GPR[r], из этого следует для любых k > 1, что