Одноадресная система команд
Дальнейшее уменьшение количества адресов, явно заданных в команде, приводит к одноадресной структуре команд (рис. 3.8).
Рис. 3.8. Структура и схема выполнения одноадресной команды
В процессоре с одноадресной структурой команд предусматривается специальный регистр – аккумулятор. Это регистр, в котором находится один из операндов, и в который записывается результат операции (поверх исходного операнда).
Для начальной загрузки аккумулятора и сохранения его содержимого в памяти в наборе команд предусматриваются команда загрузки и команда сохранения содержимого аккумулятора.
Возможно и дальнейшее упрощение команды. Это безадресная система
команд. Такая система существует, но она ориентирована на использование стековой памяти. В этих командах указываются или код операции или данные. Одни команды загружают данные в стек или выводят из стека результаты, другие команды задают операции над данными из вершины стека. Такая система команд использовалась в некоторых калькуляторах, но широкого применения не нашла.
Сравним эффективность программирования в одноадресной и трехадресной системе команд.
Вычисление оператора С = А+В в трехадресной системе команд можно задать одной командой
ADD <A>, <B>, <C>;
а в одноадресной – тремя командами:
MOVAC <A>; загрузить в регистр-аккумулятор число А.
ADD <B>; содержимое аккумулятора увеличить на значение числа В.
MOVM <C>; сохранить содержимое аккумулятора в ячейке памяти С.
Здесь в командах используются условные обозначения: угловые скобки задают не значения операндов А, В, С, а их адреса.
На первый взгляд переход на одноадресные команды не имеет преимуществ. Длина программного кода не уменьшается, только адреса записываются не в строчку, а разнесены по трем командам. Вместо одного кода операции используются три. Но одноадресная структура команд более гибкая. Кроме этого, следует учитывать высокую вероятность передачи результатов текущей операции непосредственно последующей. В этих случаях сохранения содержимого аккумулятора в памяти не требуется, и программный код значительно сокращается.
Например, для оператораA=B´C+D–Eпрограмма в трехадресной системе команд будет содержать 3 команды:
MULT <B>, <C>, <A>
ADD <A>, <D>, <A>
SUB <A>, <E>, <A>,
а в одноадресной системе – 5 коротких команд:
MOVAC <B>
MULT <C>
ADD <D>
SUB <E>
MOVM <A>.
Как видно из примера, код программы значительно сокращается. По этой причине одноадресные ЭВМ получили широкое распространение.
Дальнейшее совершенствование структуры команд связано с отставанием роста быстродействия памяти по сравнению с ростом быстродействия процессора. Это отставание стало серьезным препятствием в развитии вычислительной техники.
Но статистика обращений к памяти показала, что на каждое обращение по записи приходится, в среднем, 13 обращений по чтению. Это означает, что каждый полученный в процессоре результат или выбранный из памяти операнд с большой вероятностью будет использоваться в последующей команде.
Следовательно, временные потери процессора на ожидание данных из памяти можно уменьшить введением в состав процессора не одного аккумулятора, а множества регистров для сохранения и повторного использования данных. Появление дополнительного множества регистров в процессоре и необходимость их адресации существенно повлияли на дальнейшее развитие структуры команд.
Дальнейшее усовершенствование системы команд привело к усложнению системы адресации ячеек оперативной памяти.Адреса оперативной памяти стали задавать не явно, а компонентами. Для хранения компонентов адреса стали использовать те же регистры. Появилась дополнительная индексная (адресная) арифметика для вычисления адреса по компонентам. Дополнительные регистры стали использоваться для хранения как операндов, так и компонентов адреса. А регистры получили название "регистры общего назначения" (РОНы).
Многие фирмы (Intel, DEC) для гибкости системы программирования ста-
ли использовать множество формул (режимов адресации) для вычисления адресов.
С появлением РОНов команды снова стали двухадресными. Один – адрес оперативной памяти, другой – РОНа, или оба адреса – номера используемых РОНов.
В случае использования РОНовкоманды, в зависимости от расположения исходных операндов, разделяются на типы: регистр-регистр, регистр-память.
Команды типа регистр-регистр являются наиболее компактными по размерам и быстрыми по выполнению. Они используют короткие адреса и независимы от задержек при обращении к памяти. Как исключение, некоторые ЭВМ (например, IBM/370) сохранили команды и типа память-память.
Кроме РОНов, современные процессоры содержат ряд других программно доступных регистров, которые образуют регистровый файл процессора.
Вопросы для самопроверки:
1. Двухместные операции.
2. Назначение четвертого адреса в четырехадресной команде.
3. Особенности структуры процессора, использующего команды без явного задания четвертого адреса в двухместной команде.
4. Особенности структуры процессора, использующего команды без явного задания четвертого и третьего адреса в двухместной команде.
5. Особенности структуры процессора, использующего команды без явного задания четвертого, третьего и второго адреса в двухместной команде.
6. Основные преимущества одноадресной системы команд.
7. Причины введения в состав процессора РОНов.
8. Адресация РОНов в командах.
9. Понятие типов команд: регистр-регистр и регистр-память.
Режимы адресации
С появлением РОНов появилось два типа команд:
· команды структуры регистр/регистр (r/r): Коп R1, R2,
· команды структуры регистр/память (r/m): Коп R1, М2,
где:
R1, R2 – номера (адреса) РОНов.
M2 – полноразрядный адрес оперативной памяти.
Первый тип команд по отношению к данным является двухадресным (задаются адреса двух РОНов), но по отношению к памяти – безадресным.
Второй тип команд по отношению к данным тоже двухадресный, но по отношению к памяти – одноадресный (первый адрес является адресом РОНа).
Адреса памяти в современных процессорах задаются в большинстве случаев отдельными компонентами с указанием (явно или "по умолчанию") способа вычисления адреса. Способы вычисления адреса определяютсярежимами адресации. Задание операнда в команде его непосредственным значением (непосредственный операнд), прямым значением адреса (непосредственный адрес) или номером РОНа – это частные случаи режимов адресации.
Адреса операндов в командах задаются через компоненты по двум причинам:
1. для уменьшения разрядности поля адреса в команде,
2. для упрощения процедур обработки массивов.
Дата добавления: 2021-01-26; просмотров: 948;