Форматы команд 107
Рис. 2.49. Косвенная адресация
Недостатком косвенной адресации является необходимость в двухкратном об­ращении к памяти: сначала для извлечения адреса операнда, а затем для обраще­ния к операнду ( = 2t3y). Сверх того задействуется лишняя ячейка памяти для хранения исполнительного адреса операнда. Способу свойственны следующие за­траты оборудования:
где яч — разрядность ячейки памяти, хранящей исполнительный адрес; NAко­личество ячеек для хранения исполнительных адресов; К,— количество адресуе­мых операндов. Здесь выражение int(log27Vy определяет разрядность сокращен­ного адресного поля команды (обычно NA«NJ.
В качестве варианта косвенной адресации, правда, достаточно редко использу­емого, можно упомянуть многоуровневую или каскадную косвенную адресацию: исп = (··■ (А\д-)> когда к исполнительному адресу ведёт цепочка косвенных адре­сов. В этом случае один из битов в каждом адресе служит признаком косвенной адресации. Состояние бита указывает, является ли содержимое ячейки очередным адресом в цепочке адресов или это уже исполнительный адрес операнда. Особых преимуществ у такого подхода нет, но в некоторых специфических ситуациях он оказывается весьма удобным, например при обработке многомерных массивов. В то же время очевиден и его недостаток — для доступа к операнду требуется три и бо­лее обращений к памяти.
Регистровая адресация
Регистровая адресация (РА) напоминает прямую адресацию. Различие состоит в том, что адресное поле инструкции указывает не на ячейку памяти, а на регистр процессора (рис. 2.50). Идентификатор регистра в дальнейшем будем обозначать буквой R. Обычно размер адресного поля в данном случае составляет три или че­тыре бита, что позволяет указать соответственно на один из 8 или 16 регистров общего назначения (РОН).
Двумя основными преимуществами регистровой адресации являются: корот­кое адресное поле в команде и исключение обращений к памяти. Малое число РОН позволяет сократить длину адресного поля команды, то есть СРА « СПА. Кроме того, pa = рои» гДерон ~~ время выборки операнда из регистра общего назначения, при-
108 Глава 2. Архитектура системы команд
чем iP0H « 2i3y. К сожалению, возможности по использованию регистровой адре­сации ограничены малым числом РОН в составе процессора.
Косвенная регистровая адресация
Косвенная регистровая адресация (КРА) представляет собой косвенную адреса- ■ цию, где исполнительный адрес операнда хранится не в ячейке основной памяти, а в регистре процессора. Соответственно, адресное поле команды указывает не на ячейку памяти, а на регистр (рис. 2.51).
Рис. 2.51. Косвенная регистровая адресация
Достоинства и ограничения косвенной регистровой адресации те же, что и у обычной косвенной адресации, но благодаря тому, что косвенный адрес хранится не в памяти, а в регистре, для доступа к операнду требуется на одно обращение к памяти меньше. Эффективность косвенной регистровой адресации можно оце­нить по формулам:
где RPOH - разрядность регистров общегоназначения.
Адресация со смещением
При адресации со смещением исполнительный адрес формируется в результате суммирования содержимого адресного поля команды'с содержимым одного или нескольких регистров процессора (рис. 2.52).
Адресация со смещением предполагает, что адресная часть команды включает в себя как минимум одно поле (Лк). В нем содержится константа, смысл которой в разных вариантах адресации со смещением может меняться. Константа может пред­ставлять собой некий базовый адрес, к которому добавляется хранящееся в регистре смещение. Допустим и прямо противоположный подход: базовый адрес находится в регистре процессора, а в полеЛкуказывается смещение относительно этого адре­са. В некоторых процессорах для реализации определенных вариантов адреса­ции со смещением предусмотрены специальные регистры, например базовый или индексный. Использование таких регистров предполагается по умолча-
нию, поэтому адресная часть команды содержит только поле Ак. Если же составля­ющая- адреса может располагаться в произвольном регистре общего назначения, то для указания конкретного регистра в команду включается дополнительное поле R (при составлении адреса более чем из двух составляющих в команде будет несколь­ко таких полей). Еще одно поле R может появиться в командах, где смещение пе­ред вычислением исполнительного адреса умножается на масштабный коэффи­циент. Такой коэффициент заносится в один из РОН, на который и указывает это дополнительное поле. В наиболее общем случае адресация со смещением подразу­мевает наличие двух адресных полей: Аки R.
В рамках адресации со смещением имеется еще один вариант, при котором ис­полнительный адрес вычисляется не суммированием, а конкатенацией (присо­единением) составляющих адреса. Здесь одна составляющая представляет собой старшую часть исполнительного адреса, а вторая — младшую.
Ниже рассматриваются основные способы адресации со смещением, каждый из которых, впрочем, имеет собственное название.
Относительная адресация
При относительной адресации (ОА) для получения исполнительного адреса опе­ранда содержимое подполя Лккоманды складывается с содержимым счетчика ко­манд (рис. 2.53). Таким образом, адресный код в команде представляет собой сме­щение относительно адреса текущей команды. Следует отметить, что в момент вычисления исполнительного адреса операнда в счетчике команд может уже быть сформирован адрес следующей команды, что нужно учитывать при выборе вели­чины смещения. Обычно подполе Лктрактуется как двоичное число в дополни­тельном коде.
Адресация относительно счетчика команд базируется на свойстве локальнос­ти, выражающемся в том, Что большая часть обращений происходит к ячейкам, расположенным в непосредственной близости от выполняемой команды. Это по­зволяет сэкономить на длине адресной части команды, поскольку разрядность под-поля к может быть небольшой. Главное достоинство данного способа адресации состоит в том, что он делает программу перемещаемой в памяти: независимо от
Hosted by uCoz