ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.12.2021
Просмотров: 5261
Скачиваний: 8
Форматы команд
Рис. 2.55.
Базовая регистровая адресация с использованием одного из РОН
Распределение значений смещения, оцененное в [120] при выполнении пяти-
тестовых программ пакета SPECInt92 и пяти программ пакета
показа-
но на рис. 2.56.
Рис. 2.56.
Распределение размеров смещений при базовой регистровой адресации
Длина смещения
16 бит лишь в 1% случаев базовой регистровой
адресации, то есть в подавляющем большинстве случаев длина смещения суще-
ственно меньше.
Разрядность смещения
и, соответственно, затраты оборудования опреде-
ляются из условия
R
CM
N
ОП1
— количество опе-
рандов i-й программы.
Затраты времени составляют:
Т
БРA
=
t
РОН +
t
CЛ +
t
ЗУ
Индексная адресация
При
индексной адресации
(ИА) подполе содержит адрес ячейки памяти, а ре-
гистр (указанный явно или неявно) — смещение относительно этого адреса. Как
видно, этот способ адресации похож на базовую регистровую адресацию. Поскольку
при индексной адресации в поле находится полноразрядный адрес ячейки па-
мяти, играющий роль базы, длина этого поля больше, чем при базовой регистро-
вой адресации. Тем не менее вычисление исполнительного адреса операнда про-
изводится идентично (рис.
Глава 2. Архитектура системы команд
Рис. 2.58.
Индексная адресация с использованием одного из РОН
Индексная адресация предоставляет удобный механизм для организации ите-
ративных вычислений. Пусть, например, имеется массив чисел, расположенных
в памяти последовательно, начиная с адреса
N,
и мы хотим увеличить на единицу
все элементы данного массива. Для этого требуется извлечь каждое число из па-
мяти, прибавить к нему 1 и вернуть обратно, а последовательность исполнитель-
ных адресов будет следующей:
N, N+
1,
N+
2 и т. д., вплоть до последней ячейки,
занимаемой рассматриваемым массивом. Значение
N
берется из подполя
ко-
манды, а в выбранный регистр, называемый
индексным регистром,
сначала зано-
сится 0. После каждой операции содержимое индексного регистра увеличивается
на 1.
Так как это довольно типичный случай, в большинстве
увеличение или
уменьшение содержимого индексного регистра до или после обращения к нему
осуществляется автоматически как часть машинного цикла. Такой прием называ-
ется
автоиндексированием.
Если для индексной адресации используются специ-
ально выделенные регистры, автоиндексирование может производиться неявно
и автоматически. При задействовании для хранения индексов регистров общего
назначения необходимость операции автоиндексирования должна указываться
в команде специальным битом.
Автоиндексирование с увеличением содержимого индексного регистра носит на-
звание
автоинкрементной адресации
и может быть описано следующим образом:
В первом варианте увеличение содержимого индексного регистра происходит
после формирования исполнительного адреса, и этот способ называется
постинк-
рементным автоиндексированием.
Во втором
сначала производится увели-
чение содержимого индексного регистра, и уже новое значение используется для
Форматы команд
формирования исполнительного адреса. Тогда говорят о
преинкрементном авто-
индексировании.
Автоиндексирование с уменьшением содержимого индексного регистра носит
название
автодекрементной адресации
и может быть описано так:
Здесь также возможны два варианта, отличающиеся последовательностью вы-
полнения операций уменьшения содержимого индексного регистра и вычисления
исполнительного адреса:
постдекрементное автоиндексирование
и
предекремент-
ное автоиндексирование.
Интересным и весьма полезным является еще один вариант индексной адреса-
ции —
индексная адресация с масштабированием и смещением:
содержимое индекс-
ного регистра умножается на масштабный коэффициент и суммируется с
Мас-
штабный коэффициент может принимать значения
или 8,
чего в
части команды выделяется дополнительное поле. Описанный способ адресации
реализован, например, в микропроцессорах фирмы Intel.
Следует особо отметить, что система команд многих ВМ предоставляет воз-
можность различным образом сочетать базовую и индексную адресации в каче-
стве дополнительных способов адресации.
Страничная адресация
Страничная адресация
(СТА) предполагает разбиение адресного пространства на
страницы. Страница определяется своим начальным адресом, выступающим в ка-
честве базы. Старшая часть этого адреса хранится в специальном регистре
—реги-
стре адреса страницы
(РАС). В адресном коде команды указывается смещение
внутри страницы, рассматриваемое как младшая часть исполнительного адреса.
Исполнительный адрес образуется конкатенацией (присоединением)
к
содер-
жимому РАС, как показано на рис. 2.59. На рисунке символ || обозначает опера-
цию конкатенации.
Показатели эффективности страничной адресации имеют вид:
где
М
— количество страниц в памяти.
Глава 2. Архитектура системы команд
Блочная
адресация
Блочная адресация используется в командах, для которых единицей обработки
служит блок данных, расположенных в последовательных ячейках памяти. Этот
способ очень удобен при работе с внешними запоминающими устройствами и в
операциях с векторами. Для описания блока обычно берется адрес ячейки, где хра-
нится первый или последний элемент блока, и общее количество элементов блока,
заданное числом байтов или ячеек. Вместо длины блока может использоваться спе-
циальный признак «конец блока», помещаемый за последним элементом блока.
Стековая
адресация
Данный вид адресации был рассмотрен при описании стековой
сис-
темы
Распространенность различных видов адресации
Частота использования различных способов адресации существенно зависит от
типа АСК. Для машин со стековой архитектурой очевидно, что основным спосо-
бом адресации является стековая адресация. Для ВМ с аккумуляторной АСК глав-
ные способы адресации — это прямая и непосредственная.
Достаточно ясна и ситуация с RISC-архитектурой. Из самой идеи этого подхода
вытекает, что преимущественный способ адресации здесь — регистровая адресация.
Более сложным является вопрос о частоте использования различных видов
адресации в регистровых ВМ. В рамках этой архитектуры существует множество
машин с самыми разнообразными списками команд и различными сочетаниями
способов адресации, в силу чего дать однозначный ответ относительно наиболее
распространенных вариантов практически невозможно. Сказанное подтверждают
результаты, полученные при выполнении программ
и Spice на вычислитель-
ной машине DEC VAX (рис. 2.60) и на ВМ с микропроцессором класса 80x86
Из диаграмм видно, что в машине VAX из применявшихся способов адресации
доминируют непосредственная, базовая регистровая и косвенная регистровая. Доля
не упомянутых в таблице способов адресации не превышает 2%.
Рис. 2.60. Частота использования методов адресации на программах GCC и Spice (DEC VAX)
Форматы команд
Рис.
Частота использования методов адресации на программах GCC и Spice (Intel
При выполнении
и Spice на ВМ с микропроцессорами се-
рии 80x86 наиболее активно используются прямая и базовая регистровая ад-
ресации.
Как видно, сделать однозначный вывод о наибольшей распространенности
какого-либо способа адресации для архитектур с POH достаточно сложно. Един-
ственное общее замечание — интенсивность применения конкретных способов ад-
ресации ощутимо зависит от характера решаемой задачи. Это обстоятельство обя-
зательно должно учитываться пользователями при выборе
под конкретное
применение.
Способы адресации в командах
управления потоком команд
Основными способами адресации в командах управления потоком команд явля-
ются прямая и относительная.
Для команд безусловного и условного перехода (ветвления) наиболее типична
относительная адресация, когда в адресной части команды указывается смещение
адреса точки перехода относительно текущей команды, то есть смещение относи-
тельно текущего содержимого счетчика команд. Использование данного способа
адресации позволяет программе выполняться в любом месте памяти — програм-
мы становятся перемещаемыми. Среди команд безусловного перехода доля отно-
сительной адресации составляет около 90%.
Для команд перехода чрезвычайно важно, насколько далеко адрес перехода от-
стоит от адреса команды перехода, иными словами, какова типичная величина
смещения. В [120] приведены данные о типовой величине смещения, оцененной
по программам GCC, Spice,
они представлены на рис. 2.62. Результаты, полу-
ченные на смесях программ с преимущественной обработкой целочисленных и ве-
щественных данных, показаны на нижнем графике того же рисунка.
Как видно, длина смещения в основном не превышает 8 бит, что соответствует
смещению в пределах ±128 относительно команды ветвления. В подавляющем боль-
шинстве случаев переход идет в пределах 3-7 команд относительно команды пе-
рехода.
Рисунок 2.63 дает представление о преимущественном направлении переходов.