ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.12.2021
Просмотров: 5257
Скачиваний: 8
1 0 6 Глава 2. Архитектура системы команд
Из приведенных диаграмм видно, что наиболее интенсивно
вид адре-
сации используется в арифметических операциях и командах сравнения. В то же
время загрузка констант в большинстве программ, очевидно, не такая частая опе-
рация.
Непосредственная адресация сокращает время выполнения команды, так как
не требуется обращение к памяти за операндом. Кроме того, экономится память,
поскольку отпадает необходимость в ячейке для хранения операнда. В плане эф-
фективности этот способ можно считать «идеальным»
= О,
= 0), и его мож-
но рекомендовать к использованию во всех ситуациях, когда тому не препятству-
ют вышеупомянутые
Прямая адресация
При прямой или абсолютной адресации (ПА) адресный код прямо указывает но-
мер ячейки памяти, к которой производится обращение (рис.
то есть адрес-
ный код совпадает с исполнительным адресом.
Рис. 2.48. Прямая адресация
При всей простоте использования способ имеет существенный недостаток —
ограниченный размер адресного пространства, так как для адресации к памяти
большой емкости нужно «длинное» адресное поле. Однако более существенным
несовершенством можно считать то, что адрес, указанный в команде, не может быть
изменен в процессе вычислений (во всяком случае, такое изменение не рекомен-
дуется). Это ограничивает возможности по произвольному размещению програм-
мы в памяти.
Прямую адресацию характеризуют следующие показатели эффективности:
где N
i
количество адресуемых операндов.
Косвенная адресация
Одним из путей преодоления проблем, свойственных прямой адресации, может
служить прием, когда с помощью ограниченного адресного поля команды указы-
вается адрес ячейки, в свою очередь, содержащей полноразрядный адрес операнда
(рис. 2.49). Этот способ известен как
косвенная адресация
(КА). Запись
озна-
чает содержимое ячейки, адрес которой указан в скобках.
При косвенной адресации содержимое адресного поля команды остается неиз-
в то время как косвенный адрес в процессе выполнения программы мож-
но изменять. Это позволяет проводить вычисления, когда адреса операндов зара-
нее неизвестны и появляются лишь в процессе решения задачи. Дополнительно
такой прием упрощает обработку массивов и списков, а также передачу
ров
Форматы команд
2.49. Косвенная адресация
Недостатком косвенной адресации является необходимость в двухкратном об-
к памяти: сначала для извлечения адреса операнда, а затем для обраще-
ния к операнду
= 2
t
3y
). Сверх того задействуется лишняя ячейка памяти для
хранения исполнительного адреса операнда. Способу свойственны следующие за-
траты оборудования:
С
КА
= R
яч
+
+
где
— разрядность ячейки памяти, хранящей исполнительный адрес;
— ко-
личество ячеек для хранения исполнительных
N
i
,
—
количество адресуе-
мых операндов. Здесь выражение int(log
2
N
A
)
определяет разрядность сокращен-
ного адресного поля команды (обычно
<< N
i
).
В качестве варианта косвенной адресации, правда, достаточно редко использу-
емого, можно упомянуть
многоуровневую
или
каскадную косвенную адресацию:
=
когда к исполнительному адресу
цепочка косвенных адре-
сов. В этом случае один из битов в каждом адресе служит признаком косвенной
адресации. Состояние бита указывает, является ли содержимое ячейки очередным
адресом в цепочке адресов или это уже исполнительный адрес операнда. Особых
преимуществ у такого подхода нет, но в некоторых специфических ситуациях он
оказывается весьма удобным, например при обработке многомерных массивов. В то
же время очевиден и его недостаток — для доступа к операнду требуется три и бо-
лее обращений к памяти.
Регистровая адресация
Регистровая адресация
(РА) напоминает прямую адресацию. Различие состоит
в том, что адресное поле инструкции указывает не на ячейку памяти, а на регистр
процессора (рис. 2.50). Идентификатор регистра в дальнейшем будем обозначать
буквой
Обычно размер адресного поля в данном случае составляет три или че-
тыре бита, что позволяет указать соответственно на один из 8 или 16 регистров
общего назначения (РОН).
Двумя основными преимуществами регистровой адресации являются: корот-
кое адресное поле в команде и исключение обращений к памяти. Малое число РОН
позволяет сократить длину адресного поля команды,
есть
<<
Кроме того,
где
— время выборки операнда из регистра общего назначения, при-
Глава 2. Архитектура системы команд
Рис. 2.50.
Регистровая адресация
чем
«
К сожалению, возможности по использованию регистровой адре-
сации ограничены малым числом РОН в составе процессора.
Косвенная регистровая адресация
Косвенная регистровая адресация
представляет собой косвенную адреса-
цию, где исполнительный адрес операнда хранится не в ячейке основной памяти,
а в регистре процессора. Соответственно, адресное поле команды указывает не на
ячейку памяти, а на регистр (рис. 2.51).
Рис.
Косвенная регистровая адресация
Достоинства и ограничения косвенной регистровой адресации те же, что и у
обычной косвенной адресации, но благодаря тому, что косвенный адрес хранится
не в памяти, а в регистре, для доступа к операнду требуется на одно обращение
к памяти меньше. Эффективность косвенной
адресации можно оце-
нить по формулам:
T
КР
А
=t
РОН
+t
ЗУ
= R
РОН
int(log
2
N
A
)
= int(log
2
(
N
i
+
N
A
),
где R
РОН
- разрядность регистров общего назначения.
Адресация со смещением
При адресации со смещением исполнительный адрес формируется в результате
суммирования содержимого адресного поля команды с содержимым одного или
нескольких регистров процессора (рис. 2.52).
Адресация со смещением
предполагает, что адресная часть команды включает
в себя как минимум одно поле
В нем содержится константа, смысл которой в
разных вариантах адресации со смещением может меняться. Константа может пред-
ставлять собой некий базовый адрес, к которому добавляется хранящееся в регистре
смещение. Допустим и прямо противоположный подход: базовый адрес находится
в регистре процессора, а в поле указывается смещение относительно этого адре-
са. В некоторых процессорах для реализации определенных вариантов адреса-
ции со смещением предусмотрены специальные регистры, например базовый
или индексный. Использование таких регистров предполагается по умолча-
Форматы команд
Рис.
2.52. Адресация со смещением
нию, поэтому адресная часть команды содержит только
Если же составля-
адреса может располагаться в произвольном регистре общего назначения,
то для указания конкретного регистра в команду включается дополнительное поле
R
(при составлении адреса более чем из двух составляющих в команде будет несколь-
ко таких полей). Еще одно поле
R
может появиться в
где смещение пе-
ред вычислением исполнительного адреса умножается на масштабный коэффи-
циент. Такой коэффициент заносится в один из РОН, на который и указывает это
дополнительное поле. В наиболее общем случае адресация со смещением подразу-
мевает наличие двух адресных полей: и
R.
В рамках адресации со смещением имеется еще один вариант, при котором ис-
полнительный адрес вычисляется не суммированием, а
(присо-
единением) составляющих адреса. Здесь одна составляющая представляет собой
старшую часть исполнительного адреса, а вторая — младшую.
Ниже рассматриваются основные способы адресации со смещением, каждый
из которых, впрочем, имеет собственное название.
Относительная адресация
При
относительной адресации
(ОА) для получения исполнительного адреса опе-
ранда содержимое подполя команды складывается с содержимым счетчика ко-
манд (рис. 2.53). Таким образом, адресный код в команде представляет собой сме-
щение относительно адреса текущей команды. Следует отметить, что в момент
вычисления исполнительного адреса операнда в счетчике команд может уже быть
сформирован адрес следующей команды, что нужно учитывать при выборе вели-
чины смещения. Обычно подполе трактуется как двоичное число в дополни-
тельном коде.
Адресация относительно счетчика команд базируется на свойстве локальнос-
ти, выражающемся в том,
большая часть обращений происходит к ячейкам,
расположенным в непосредственной близости от выполняемой команды. Это по-
зволяет сэкономить на длине адресной части команды, поскольку разрядность под-
поля
может быть небольшой. Главное достоинство данного способа адресации
состоит в том, что он делает программу перемещаемой в памяти: независимо от
Рис. 2.53.
Относительная адресация
текущего расположения программы в адресном пространстве взаимное положе-
ние команды и операнда остается неизменным, поэтому адресация операнда оста-
ется корректной.
Эффективность данного способа адресации можно описать выражениями:
t
РОН
-
где t
CЛ
— время сложения составляющих исполнительного адреса;
—
разряд-
ность счетчика команд.
Базовая регистровая адресация
В случае
базовой регистровой адресации
(БРА) регистр, называемый базовым, со-
держит полноразрядный адрес, а подполе
—
смещение относительно этого ад-
реса. Ссылка на базовый регистр может быть явной или неявной. В некоторых ВМ
имеется специальный базовый регистр и его использование является неявным, то
есть подполе
R
в
отсутствует (рис. 2.54).
Рис. 2.54.
Базовая регистровая адресация с базовым регистром
Более типичен случай, когда в роли базового регистра выступает один из регис-
тров общего назначения (РОН), тогда его номер явно указывается в подполе
R
команды (рис. 2.55).
Базовую регистровую адресацию обычно используют для доступа к элементам
положение которого в памяти в процессе вычислений может меняться.
В базовый регистр заносится начальный адрес массива, а адрес элемента массива
указывается в подполе команды в виде смещения относительно начального ад-
реса массива. Достоинство данного способа
в том, что смещение имеет
меньшую длину, чем полный адрес, и это позволяет сократить длину адресного
поля команды.
смещение расширяется до полной длины исполнитель-
ного адреса путем добавления
битов, совпадающих со значением знакового
разряда смещения.
Глава 2. Архитектура системы команд