Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭВМ семинары 2006.doc
Скачиваний:
57
Добавлен:
20.05.2014
Размер:
1.86 Mб
Скачать

Модернизация

Если наш процессор обладает 16-ти битовой ячейкой памяти, то четырехадресная команда может адресовать только 23=8 ячеек памяти. Это безнадежно мало. Современные процессоры адресуются к 232, 264и больше ячеек. Если оставить четырехадресный формат команды, то появится необходимость отводить на всю команду 160 бит и более, а это, как вы понимаете, невозможно.

Следовательно, необходимо что-то делать. Попробуем выработать ряд мер, которые могли бы усовершенствовать нашу структуру процессора.

Первое что приходит в голову – целесообразно ли хранить в регистре команд одновременно все поля команды, если они все равно используются последовательно?!!! Может быть четырехадресную команду хранить в ячейках памяти в виде отдельных ее полей..

В этом случае команды и данные хранятся в 16 битовых ячейках памяти. Каждый операнд (результат) и адрес целиком занимает 16 битовую ячейку. Давайте вспомним, что в предыдущей модели при опросе последнего адресного поля исполняемой команды (Y4) в память пересылался адрес той ячейки, где размещались все поля следующей, новой команды. И она целиком переписывалась в регистр команд (Y7) и процессор получал всю необходимую информацию для ее выполнения.

Теперь структура ОП и основных регистров процессора примет следующий вид.

ОП

Адресное Поле данных (и команд)

поле

.

.

121 КОП

122 Адрес 1-го операнда

123 Адрес 2-го операнда

124 Адрес результата

125 Адрес след-ей ком-ды

.

.

345 КОП

Регистр адреса

Счетчик команд

Регистр команд

Регистр данных

Распределив поля команды по разным ячейкам памяти, мы усложняем алгоритм исполнения команды (ничто не дается даром). Теперь в последнем адресном поле предыдущей команды будет храниться адрес не всей следующей команды, а лишь ее первого поля. А где же взять адреса следующих полей?

Обратим внимание на то, что адрес каждого следующего поля отличается от предыдущего на единицу. Это наводит на мысль введения в состав процессора специального регистра, содержимое которого будет наращиваться (инкрементироваться) на 1 после выборки из памяти очередного поля команды (его можно назвать указатель поля или счетчик команд). Содержимое этого регистра послужит для последовательного получения и хранения этих адресов.

Но получив на шине «Чтение» адрес первого операнда, мы не можем в этом же такте получить его содержимое. Нам не удастся одновременно получить на выходе памяти и адрес операнда и его содержимое. Поэтому адрес операнда надо сохранить в каком либо буфере (назовем его регистр адреса), отключить адресную шину от счетчика команд, а уж затем (например через такт) подключить ее к регистру адреса для получения значения первого операнда. Одновременно с получением значения первого операнда можно инкрементировать счетчик команд и создать тем самым адрес второго операнда и т.д. и т.п. Еще одно замечание, в последнем поле выполняемой команды храниться адрес первого поля следующей и совсем не обязательно это номер 126 как в нашем примере, а, например, 345. Поэтому этот адрес следует временно записать в регистр адреса, а затем переписать его в указатель поля.

И последнее, время доступа к ячейке памяти много больше чем время доступа к регистру, поэтому уменьшаемое появляется на входе АЛУ раньше вычитаемого. Для того что бы не снижать быстродействие процессора целесообразно включить дополнительный буфер, назовем его регистр данных.

Вот теперь мы определили все начальные условия и дополнительные требования.