нию, поэтому адресная часть команды содержит только поле Ак. Если же составля­ющая- адреса может располагаться в произвольном регистре общего назначения, то для указания конкретного регистра в команду включается дополнительное поле R (при составлении адреса более чем из двух составляющих в команде будет несколь­ко таких полей). Еще одно поле R может появиться в командах, где смещение пе­ред вычислением исполнительного адреса умножается на масштабный коэффи­циент. Такой коэффициент заносится в один из РОН, на который и указывает это дополнительное поле. В наиболее общем случае адресация со смещением подразу­мевает наличие двух адресных полей: Аки R.
В рамках адресации со смещением имеется еще один вариант, при котором ис­полнительный адрес вычисляется не суммированием, а конкатенацией (присо­единением) составляющих адреса. Здесь одна составляющая представляет собой старшую часть исполнительного адреса, а вторая — младшую.
Ниже рассматриваются основные способы адресации со смещением, каждый из которых, впрочем, имеет собственное название.
Относительная адресация
При относительной адресации (ОА) для получения исполнительного адреса опе­ранда содержимое подполя Лккоманды складывается с содержимым счетчика ко­манд (рис. 2.53). Таким образом, адресный код в команде представляет собой сме­щение относительно адреса текущей команды. Следует отметить, что в момент вычисления исполнительного адреса операнда в счетчике команд может уже быть сформирован адрес следующей команды, что нужно учитывать при выборе вели­чины смещения. Обычно подполе Лктрактуется как двоичное число в дополни­тельном коде.
Адресация относительно счетчика команд базируется на свойстве локальнос­ти, выражающемся в том, Что большая часть обращений происходит к ячейкам, расположенным в непосредственной близости от выполняемой команды. Это по­зволяет сэкономить на длине адресной части команды, поскольку разрядность под-поля к может быть небольшой. Главное достоинство данного способа адресации состоит в том, что он делает программу перемещаемой в памяти: независимо от
Рис. 2.53. Относительная адресация
текущего расположения программы в адресном пространстве взаимное положе­ние команды и операнда остается неизменным, поэтому адресация операнда оста­ется корректной.
Эффективность данного способа адресации можно описать выражениями:
Гс = tp0H + +; Сса - int(log2 - RCK),
где tCT — время сложения составляющих исполнительного адреса; i?CK разряд­ность счетчика команд.
Базовая регистровая адресация
В случае базовой регистровой адресации (БРА) регистр, называемый базовым, со­держит полноразрядный адрес, а подполе Ассмещение относительно этого- ад­реса. Ссылка на базовый регистр может быть явной или неявной. В некоторых ВМ имеется специальный базовый регистр и его использование является неявным, то есть подполе R в команде отсутствует (рис. 2.54).
Более типичен случай, когда в роли базового регистра выступает один из регис­тров общего назначения (РОН), тогда его номер явно указывается в подполе R команды (рис. 2.55).
Базовую регистровую адресацию обычно используют для доступа к элементам массива, положение которого в памяти в процессе вычислений может меняться. В базовый регистр заносится начальный адрес массива, а адрес элемента массива указывается в подполе с команды в виде смещения относительно начального ад­реса массива. Достоинство данного способа адресации, в том, что смещение имеет меньшую длину, чем полный адрес, и это позволяет сократить длину адресного поля команды. Короткое смещение расширяется до полной длины исполнитель­ного адреса путем добавления слева битов, совпадающих со значением знакового разряда смещения.
Распределение значений смещения, оцененное в [120] при выполнении пяти-тестовых программ пакета SPECInt92 и пяти программ пакета SPECftp92,показа­но на рис. 2.56.
Рис. 2.56. Распределение размеров смещений при базовой регистровой адресации Длина смещения превысила 16 бит лишь в 1% случаев базовой регистровой адресации, то есть в подавляющем большинстве случаев длина смещения суще­ственно меньше.
Индексная адресация
При индексной адресации (ИА) подполе Л<€одержит адрес ячейки памяти, а ре­гистр (указанный явно или неявно) — смещение относительно этого адреса. Как видно, этот способ адресации похож на базовую регистровую адресацию. Поскольку при индексной адресации в поле Л(«аходится полноразрядный адрес ячейки па­мяти, играющий роль базы, длина этого поля больше, чем при базовой регистро­вой адресации. Тем не менее вычисление исполнительного адреса операнда про­изводится идентично (рис. 2.57,2.58).
112 Глава 2. Архитектура системы команд
Рис. 2.58. Индексная адресация с использованием одного из РОН
Индексная адресация предоставляет удобный механизм для организации ите­ративных вычислений. Пусть, например, имеется массив чисел, расположенных в памяти последовательно, начиная с адреса Ν, и мы хотим увеличить на единицу все элементы данного массива. Для этого требуется извлечь каждое число из па­мяти, прибавить к нему 1 и вернуть обратно, а последовательность исполнитель­ных адресов будет следующей: Ν, Ν+ 1, Ν+ 2 и т. д., вплоть до последней ячейки, занимаемой рассматриваемым массивом. Значение вберется из подполя с ко- ' манды, а в выбранный регистр, называемый индексным регистром, сначала зано­сится 0. После каждой операции содержимое индексного регистра увеличивается на 1.
. Так как это довольно типичный случай, в большинстве ВМ увеличение или уменьшение содержимого индексного регистра до или после обращения к нему осуществляется автоматически как часть машинного цикла. Такой прием называ­ется автоиндексированием. Если для индексной адресации используются специ­ально выделенные регистры, автоиндексирование может производиться неявно и автоматически. При задействовании для хранения индексов регистров общего назначения необходимость операции автоиндексирования должна указываться в команде специальным битом.
Автоиндексирование с увеличением содержимого индексного регистра носит на­звание автоинкрементной адресации и может быть описано следующим образом:
В первом варианте увеличение содержимого индексного регистра происходит после формирования исполнительного адреса, и этот способ называется постинк­рементным автоиндексированием. Во втором случае сначала производится увели­чение содержимого индексного регистра, и уже новое значение используется для
Форматы команд 113
формирования исполнительного адреса. Тогда говорят о преинкрементном авто­индексировании.
Автоиндексирование с уменьшением содержимого индексного регистра носит название автодекрементной адресации и может быть описано так:
Здесь также возможны два варианта, отличающиеся последовательностью вы­полнения операций уменьшения содержимого индексного регистра и вычисления исполнительного адреса: постдекрементное автоиндексирование и предекремент­ное автоиндексирование.
Интересным и весьма полезным является еще один вариант индексной адреса^ ции — индексная адресация с масштабированием и смещением: содержимое индекс­ного регистра умножается на масштабный коэффициент и суммируется с Лс.Мас-штабный коэффициент может принимать значения 1,2,4или 8, для чего в адресной части команды выделяется дополнительное поле. Описанный способ адресации реализован, например, в микропроцессорах фирмы Intel.
Следует особо отметить, что система команд многих ВМ предоставляет воз­можность различным образом сочетать базовую и индексную адресации в каче­стве дополнительных способов адресации.
Страничная адресация
Страничная адресация (СТА) предполагает разбиение адресного пространства на страницы. Страница определяется своим начальным адресом, выступающим в ка­честве базы. Старшая часть этого адреса хранится в специальном регистре —реги­стре адреса страницы (РАС). В адресном коде команды указывается смещение внутри страницы, рассматриваемое как младшая часть исполнительного адреса. Исполнительный адрес образуется конкатенацией (присоединением) Аск содер­жимому РАС, как показано на рис. 2.59. На рисунке символ || обозначает опера­цию конкатенации.
Рис. 2.59. Страничная адресация
Показатели эффективности страничной адресации имеют вид: Сста - intOofoJV, - lofeA/), ГСТА - Гтон + Гзу,
где М— количество страниц в памяти.
114 Глава 2. Архитектура системы команд
Блочная адресация
Блочная адресация используется в командах, для которых единицей обработки служит блок данных, расположенных в последовательных ячейках памяти. Этот способ очень удобен при работе с внешними запоминающими устройствами и в операциях с векторами. Для описания блока обычно берется адрес ячейки, где хра­нится первый или последний элемент блока, и общее количество элементов блока, заданное числом байтов или ячеек. Вместо длины блока может использоваться спе­циальный признак «конец блока», помещаемый за последним элементом блока
Стековая адресация
Данный вид адресации был рассмотрен при описании стековой архитектуры сис­темы команд.
Распространенность различных видов адресации
Частота использования различных способов адресации существенно зависит от типа АСК. Для машин со стековой архитектурой очевидно, что основным спосо­бом адресации является стековая адресация. Для ВМ с аккумуляторной АСК глав­ные способы адресации — это прямая и непосредственная.
Достаточно ясна и ситуация с RISC-архитектурой. Из самой идеи этого подхода вытекает, что преимущественный способ адресации здесь — регистровая адресация.
Более сложным является вопрос о частоте использования различных видов адресации в регистровых ВМ. В рамках этой архитектуры существует множество машин с самыми разнообразными списками команд и различными сочетаниями способов адресации, в силу чего дать однозначный ответ относительно наиболее распространенных вариантов практически невозможно. Сказанное подтверждают результаты, полученные при выполнении программ GCC и Spice на вычислитель­ной машине DEC VAX (рис. 2.60) и на ВМ с микропроцессором класса 80x86 (рис. 2.61).
Из диаграмм видно, что в машине VAX из применявшихся способов адресации доминируют непосредственная, базовая регистровая и косвенная регистровая. Доля не упомянутых в таблице способов адресации не превышает 2%.
Рис. 2.61. Частота использования методов адресации на программах GCC и Spice (Intel 80x86)
При выполнении программ СС и Spice на ВМ с микропроцессорами се­рии 80x86 наиболее активно используются прямая и базовая регистровая ад­ресации.
Как видно, сделать однозначный вывод о наибольшей распространенности какого-либо способа адресации для архитектур с РОН достаточно сложно. Един­ственное общее замечание — интенсивность применения конкретных способов ад­ресации ощутимо зависит от характера решаемой задачи. Это обстоятельство обя­зательно должно учитываться пользователями при выборе ВМ под конкретное применение.
Способы адресации в командах управления потоком команд
Основными способами адресации в командах управления потоком команд явля­ются прямая и относительная.
Для команд безусловного и условного перехода (ветвления) наиболее типична относительная адресация, когда в адресной части команды указывается смещение адреса точки перехода относительно текущей команды, то есть смещение относи­тельно текущего.содержимого счетчика команд. Использование данного способа адресации позволяет программе выполняться в любом месте памяти — програм­мы становятся перемещаемыми. Среди команд безусловного перехода доля отно­сительной адресации составляет около 90%.
Для команд перехода чрезвычайно важно, насколько далеко адрес перехода от­стоит от адреса команды перехода, иными словами, какова типичная величина смещения. В [120] приведены данные о типовой величине смещения, оцененной по программам GCC, Spice, ТеХ; они представлены на рис. 2.62. Результаты, полу­ченные на смесях программ с преимущественной обработкой целочисленных и ве­щественных данных, показаны на нижнем графике того же рисунка.
Как видно, длина смещения в основном не превышает 8 бит, что соответствует смещению в пределах ±128 относительно команды ветвления. В подавляющем боль­шинстве случаев переход идет в пределах 3-7 команд относительно команды пе­рехода.
Рисунок 2.63 дает представление о преимущественном направлении переходов.
116 Глава 2. Архитектура системы команд
Из приведенных данных следует, что в среднем 75% переходов происходит в на­правлении увеличения адреса. Из переходов в сторону уменьшения адреса около 90% связаны с выполнением циклов.
Система операций
Системой операций называется список операций, непосредственно выполняемых техническими средствами вычислительной машины. Система операций ВМ опре-
Hosted by uCoz