Одноадресная система команд


Дальнейшее уменьшение количества адресов, явно заданных в команде, приводит к одноадресной структуре команд (рис. 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; просмотров: 750;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.