ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 25.12.2021

Просмотров: 5257

Скачиваний: 8

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

1 0 6 Глава 2. Архитектура системы команд

Из приведенных диаграмм видно, что наиболее интенсивно

 вид адре-

сации используется в арифметических операциях и командах сравнения. В то же
время загрузка констант в большинстве программ, очевидно, не такая частая опе-
рация.

Непосредственная адресация сокращает время выполнения команды, так как

не требуется обращение к памяти за операндом. Кроме того, экономится память,
поскольку отпадает необходимость в ячейке для хранения операнда. В плане эф-
фективности этот способ можно считать «идеальным»

 = О,

 = 0), и его мож-

но рекомендовать к использованию во всех ситуациях, когда тому не препятству-
ют вышеупомянутые

Прямая адресация

При прямой или абсолютной адресации (ПА) адресный код прямо указывает но-
мер ячейки памяти, к которой производится обращение (рис.

 то есть адрес-

ный код совпадает с исполнительным адресом.

Рис. 2.48. Прямая адресация

При всей простоте использования способ имеет существенный недостаток —

ограниченный размер адресного пространства, так как для адресации к памяти
большой емкости нужно «длинное» адресное поле. Однако более существенным
несовершенством можно считать то, что адрес, указанный в команде, не может быть
изменен в процессе вычислений (во всяком случае, такое изменение не рекомен-

дуется). Это ограничивает возможности по произвольному размещению програм-
мы в памяти.

Прямую адресацию характеризуют следующие показатели эффективности:

 где N

i

 количество адресуемых операндов.

Косвенная адресация

Одним из путей преодоления проблем, свойственных прямой адресации, может

служить прием, когда с помощью ограниченного адресного поля команды указы-
вается адрес ячейки, в свою очередь, содержащей полноразрядный адрес операнда
(рис. 2.49). Этот способ известен как

 косвенная адресация

 (КА). Запись

 озна-

чает содержимое ячейки, адрес которой указан в скобках.

При косвенной адресации содержимое адресного поля команды остается неиз-

 в то время как косвенный адрес в процессе выполнения программы мож-

но изменять. Это позволяет проводить вычисления, когда адреса операндов зара-
нее неизвестны и появляются лишь в процессе решения задачи. Дополнительно
такой прием упрощает обработку массивов и списков, а также передачу

ров


background image

Форматы команд

 2.49. Косвенная адресация

Недостатком косвенной адресации является необходимость в двухкратном об-

 к памяти: сначала для извлечения адреса операнда, а затем для обраще-

ния к операнду

 = 2

t

3y

). Сверх того задействуется лишняя ячейка памяти для

хранения исполнительного адреса операнда. Способу свойственны следующие за-
траты оборудования:

С

КА

 = R

яч

 +

 +

где

 — разрядность ячейки памяти, хранящей исполнительный адрес;

 — ко-

личество ячеек для хранения исполнительных

 N

i

,

 количество адресуе-

мых операндов. Здесь выражение int(log

2

N

A

)

определяет разрядность сокращен-

ного адресного поля команды (обычно

 << N

i

 ).

В качестве варианта косвенной адресации, правда, достаточно редко использу-

емого, можно упомянуть

 многоуровневую

 или

 каскадную косвенную адресацию:

 =

 когда к исполнительному адресу

 цепочка косвенных адре-

сов. В этом случае один из битов в каждом адресе служит признаком косвенной
адресации. Состояние бита указывает, является ли содержимое ячейки очередным
адресом в цепочке адресов или это уже исполнительный адрес операнда. Особых
преимуществ у такого подхода нет, но в некоторых специфических ситуациях он
оказывается весьма удобным, например при обработке многомерных массивов. В то

же время очевиден и его недостаток — для доступа к операнду требуется три и бо-
лее обращений к памяти.

Регистровая адресация

Регистровая адресация

 (РА) напоминает прямую адресацию. Различие состоит

в том, что адресное поле инструкции указывает не на ячейку памяти, а на регистр
процессора (рис. 2.50). Идентификатор регистра в дальнейшем будем обозначать
буквой

 Обычно размер адресного поля в данном случае составляет три или че-

тыре бита, что позволяет указать соответственно на один из 8 или 16 регистров
общего назначения (РОН).

Двумя основными преимуществами регистровой адресации являются: корот-

кое адресное поле в команде и исключение обращений к памяти. Малое число РОН
позволяет сократить длину адресного поля команды,

 есть

 <<

 Кроме того,

 где

 — время выборки операнда из регистра общего назначения, при-


background image

Глава 2. Архитектура системы команд

Рис. 2.50.

 Регистровая адресация

чем

 «

 К сожалению, возможности по использованию регистровой адре-

сации ограничены малым числом РОН в составе процессора.

Косвенная регистровая адресация

Косвенная регистровая адресация

 представляет собой косвенную адреса-

цию, где исполнительный адрес операнда хранится не в ячейке основной памяти,
а в регистре процессора. Соответственно, адресное поле команды указывает не на

ячейку памяти, а на регистр (рис. 2.51).

Рис.

 Косвенная регистровая адресация

Достоинства и ограничения косвенной регистровой адресации те же, что и у

обычной косвенной адресации, но благодаря тому, что косвенный адрес хранится
не в памяти, а в регистре, для доступа к операнду требуется на одно обращение
к памяти меньше. Эффективность косвенной

 адресации можно оце-

нить по формулам:

T

КР

А

 =t

РОН

+t

ЗУ

 = R

РОН

 int(log

2

N

A

)

 = int(log

2

(

N

i

 +

 N

A

),

где R

РОН

 - разрядность регистров общего назначения.

Адресация со смещением

При адресации со смещением исполнительный адрес формируется в результате

суммирования содержимого адресного поля команды с содержимым одного или
нескольких регистров процессора (рис. 2.52).

Адресация со смещением

 предполагает, что адресная часть команды включает

в себя как минимум одно поле

 В нем содержится константа, смысл которой в

разных вариантах адресации со смещением может меняться. Константа может пред-
ставлять собой некий базовый адрес, к которому добавляется хранящееся в регистре
смещение. Допустим и прямо противоположный подход: базовый адрес находится
в регистре процессора, а в поле  указывается смещение относительно этого адре-
са. В некоторых процессорах для реализации определенных вариантов адреса-
ции со смещением предусмотрены специальные регистры, например базовый
или индексный. Использование таких регистров предполагается по умолча-


background image

Форматы команд

Рис.

 2.52. Адресация со смещением

нию, поэтому адресная часть команды содержит только

 Если же составля-

 адреса может располагаться в произвольном регистре общего назначения,

то для указания конкретного регистра в команду включается дополнительное поле

 R

(при составлении адреса более чем из двух составляющих в команде будет несколь-

ко таких полей). Еще одно поле

 R

 может появиться в

 где смещение пе-

ред вычислением исполнительного адреса умножается на масштабный коэффи-
циент. Такой коэффициент заносится в один из РОН, на который и указывает это
дополнительное поле. В наиболее общем случае адресация со смещением подразу-
мевает наличие двух адресных полей:  и

 R.

В рамках адресации со смещением имеется еще один вариант, при котором ис-

полнительный адрес вычисляется не суммированием, а

 (присо-

единением) составляющих адреса. Здесь одна составляющая представляет собой
старшую часть исполнительного адреса, а вторая — младшую.

Ниже рассматриваются основные способы адресации со смещением, каждый

из которых, впрочем, имеет собственное название.

Относительная адресация

При

 относительной адресации

 (ОА) для получения исполнительного адреса опе-

ранда содержимое подполя  команды складывается с содержимым счетчика ко-
манд (рис. 2.53). Таким образом, адресный код в команде представляет собой сме-
щение относительно адреса текущей команды. Следует отметить, что в момент
вычисления исполнительного адреса операнда в счетчике команд может уже быть
сформирован адрес следующей команды, что нужно учитывать при выборе вели-

чины смещения. Обычно подполе  трактуется как двоичное число в дополни-

тельном коде.

Адресация относительно счетчика команд базируется на свойстве локальнос-

ти, выражающемся в том,

 большая часть обращений происходит к ячейкам,

расположенным в непосредственной близости от выполняемой команды. Это по-
зволяет сэкономить на длине адресной части команды, поскольку разрядность под-
поля

 может быть небольшой. Главное достоинство данного способа адресации

состоит в том, что он делает программу перемещаемой в памяти: независимо от


background image

Рис. 2.53.

 Относительная адресация

текущего расположения программы в адресном пространстве взаимное положе-
ние команды и операнда остается неизменным, поэтому адресация операнда оста-
ется корректной.

Эффективность данного способа адресации можно описать выражениями:

 t

РОН

 -

где t

 — время сложения составляющих исполнительного адреса;

 —

 разряд-

ность счетчика команд.

Базовая регистровая адресация

В случае

 базовой регистровой адресации

 (БРА) регистр, называемый базовым, со-

держит полноразрядный адрес, а подполе

 —

 смещение относительно этого ад-

реса. Ссылка на базовый регистр может быть явной или неявной. В некоторых ВМ
имеется специальный базовый регистр и его использование является неявным, то
есть подполе

 R

 в

 отсутствует (рис. 2.54).

Рис. 2.54.

 Базовая регистровая адресация с базовым регистром

Более типичен случай, когда в роли базового регистра выступает один из регис-

тров общего назначения (РОН), тогда его номер явно указывается в подполе

 R

команды (рис. 2.55).

Базовую регистровую адресацию обычно используют для доступа к элементам

 положение которого в памяти в процессе вычислений может меняться.

В базовый регистр заносится начальный адрес массива, а адрес элемента массива

указывается в подполе  команды в виде смещения относительно начального ад-
реса массива. Достоинство данного способа

 в том, что смещение имеет

меньшую длину, чем полный адрес, и это позволяет сократить длину адресного
поля команды.

 смещение расширяется до полной длины исполнитель-

ного адреса путем добавления

 битов, совпадающих со значением знакового

разряда смещения.

 Глава 2. Архитектура системы команд


Смотрите также файлы