
- •Упакованные целые числа
- •Десятичные числа
- •Числа в форме с плавающей запятой
- •Стандарт ieee 754
- •Размещение числовых данных в памяти
- •Символьная информация
- •Видеоинформация
- •Аудиоинформация
- •Типы команд
- •Операции с целыми числами
- •Форматы команд
- •Длина команды
- •Разрядность адресной части
- •Количество адресов в команде
- •Непосредственная адресация
- •Прямая адресация
- •Косвенная адресация
- •Регистровая адресация
- •Косвенная регистровая адресация
- •Относительная адресация
- •Базовая регистровая адресация
- •Страничная адресация
- •Способы адресации в командах управления потоком команд
- •Система операций
- •Показатели эффективности системы операций
- •Выбор системы операций
Непосредственная адресация
При непосредственной адресации (НА) в адресном поле команды вместо адреса содержится непосредственно сам операнд (рис. 40). Этот способ может применяться при выполнении арифметических операций, операций сравнения, а также для загрузки констант в регистры.
Рис. 40 Непосредственная адресация
При записи в регистр, имеющий разрядность, превышающую длину непосредственного операнда, операнд размещается в младшей части регистра, а оставшиеся свободными позиции заполняются значением знакового бита операнда.
Помимо того, что в адресном поле могут быть указаны только константы, еще одним недостатком данного способа адресации является то, что размер непосредственного операнда ограничен длиной адресного поля команды, которое в большинстве случаев меньше длины машинного слова.
В 50-60% команд с непосредственной адресацией длина операнда не превышает 8 битов, а в 75-80% — 16 битов и лишь в 20-25% случаев непосредственный операнд имеет длину более 16 битов. Таким образом, в подавляющем числе случаев шестнадцати разрядов вполне достаточно, хотя для вычисления адресов могут потребоваться и более длинные константы.
Исследования показывают, что средний процент использования непосредственной адресации по всем командам составляет 35% для целочисленных вычислений и 10% - в программах, ориентированных на обработку чисел с плавающей запятой. Наиболее интенсивно данный вид адресации используется в арифметических операциях и командах сравнения. В то же время загрузка констант в большинстве программ не такая частая операция.
Непосредственная
адресация сокращает время выполнения
команды, так как не требуется обращение
к памяти за операндом. Кроме того,
экономится память, поскольку отпадает
необходимость в ячейке для хранения
операнда. В плане эффективности этот
способ можно считать «идеальным» ()
и его можно рекомендовать к использованию
во всех ситуациях, когда тому не
препятствуют вышеупомянутые ограничения.
Прямая адресация
При прямой или абсолютной адресации (ПА) адресный код прямо указывает номер ячейки памяти, к которой производится обращение (рис. 41), то есть адресный код совпадает с исполнительным адресом.
Рис. 41 Прямая адресация
При всей простоте использования способ имеет существенный недостаток - ограниченный размер адресного пространства, так как для обращения к памяти большой емкости нужно «длинное» адресное поле. Однако более существенным несовершенством можно считать то, что адрес, указанный в команде, не может быть изменен в процессе вычислений (во всяком случае, такое изменение не рекомендуется). Это ограничивает возможности по произвольному размещению программы (и данных) в памяти.
Прямую адресацию характеризуют следующие показатели эффективности:
—
количество
адресуемых операндов.
Косвенная адресация
Одним из путей преодоления проблем, свойственных прямой адресации, может служить прием, когда с помощью ограниченного адресного поля команды указывается адрес ячейки, в свою очередь, содержащей полноразрядный адрес операнда (рис. 42). Этот способ известен как косвенная адресация (КА). Запись (АК) означает содержимое ячейки, адрес которой указан в скобках.
При косвенной адресации содержимое адресного поля команды остается неизменным, в то время как косвенный адрес в процессе выполнение программы можно изменять. Это позволяет проводить вычисления, когда адреса операндов заранее неизвестны и появляются лишь в процессе решения задачи. Дополнительно такой прием упрощает обработку массивов и списков, а также передачу параметров подпрограммам.
Рис.42 Косвенная адресация
Недостатком
косвенной адресации является необходимость
в двухкратном обращении к памяти: сначала
для извлечения адреса операнда, а затем
для обращения к операнду ().
Сверх того, задействуется лишняя ячейка
памяти для хранения исполнительного
адреса операнда. Способу свойственны
следующие затраты оборудования:
(15)
где
- разрядность
ячейки памяти, хранящей исполнительный
адрес;
— количество ячеек для хранения
исполнительных адресов;
— количество адресуемых операндов.
Здесь выражение
определяет разрядность сокращенного
адресного поля команды (обычно
).
В качестве варианта косвенной адресации, правда, достаточно редко используется, многоуровневая или каскадная косвенная адресация: АИСП = (…(АК)…), когда к исполнительному адресу ведет цепочка косвенных адресов. В этом случае один из битов в каждом адресе служит признаком косвенной адресации. Состояние бита указывает, является ли содержимое ячейки очередным адресом в цепочке адресов или это уже исполнительный адрес операнда. Особых преимуществ у такого подхода нет, но в некоторых специфических ситуациях он оказывается весьма удобным, например, при обработке многомерных массивов. В то же время очевиден, и его недостаток — для доступа к операнду требуется три и более обращений к памяти.