100 Глава 2. Архитектура системы команд
В таком варианте адресная часть команды вообще отсутствует или не задей-ствуется.
Выбор адресности команд
При выборе количества адресов в адресной части команды обычно руководству­ются следующими критериями:
•   емкостью запоминающего устройства, требуемой для хранения программы;
•   временем выполнения программы;
•   эффективностью использования ячеек памяти при хранении программы.
Для оценки влияния адресности на каждый из перечисленных элементов вос­пользуемся методикой и выводами, изложенными в [25].
Адресность и емкость запоминающего устройства
Емкость запоминающего устройства для хранения программы ЕА можно оценить из соотношения
где ΝΑ - количество программ в программе; RKразрядность команды, опреде­ляемая в соответствии с формулой (2.1); А — индекс, указывающий адресность команд программы. С этих позиций оптимальная адресность команды определя­ется путем решения уравнения дЕ,/дА=0 при условии, что найденное значение обес-печивает минимум ЕА. В [29] показано, что в среднем Ел монотонно возрастает с увеличением А. Таким образом, при выборе количества адресов по критерию «ем­кость ЗУ» предпочтение следует отдавать одноадресным командам.
Адресность и время выполнения программы
Время выполнения одной команды складывается из времени выполнения опера­ции и времени обращения к памяти.
Для трехадресной команды последнее суммируется из четырех составляющих времени:
•   выборки команды;
•   выборки первого операнда;
•   выборки второго операнда;
•   записи в память результата.
Одноадресная команда требует двух обращений к памяти:
•   выборки команды;
•    выборки операнда.
Как видно, на выполнение одноадресной команды затрачивается меньше вре­мени, чем на'обработку трехадресной команды, однако для реализации одной трех­адресной команды, как правило, нужно три одноадресных. Этих соображений тем
Форматы команд 101
не менее не достаточно, чтобы однозначно отдать предпочтение тому или иному варианту адресности. Определяющим при выборе является тип алгоритмов, на преимущественную реализацию которых ориентирована конкретная ВМ.
В самой общей постановке задачи время выполнения алгоритма ТА можно оп­ределить выражением
(25)
в котором Ναколичество арифметических и логических команд в программе; тета а - время выполнения однойарифметической или логической команды; ΝΗколичество неарифметических команд; тета На — время выполнения одной неарф-метической команды; А = {1, 2, 3} — индекс, определяющий количество адресов в команде. В свою очередь, Nti можно определить как Νπ = Ny + вл, где Ny — коли­чество команд передачи управления (их число в программе не зависит от адресно­сти), а в — количество вспомогательных команд пересылок данных в регистр сумматора и из него.
Время выполнения как арифметической (%ЛУ> так и неарифметической {\л) команды складывается из времени выборки команды из памяти % (το время, за­трачиваемое на одно обращение к памяти) и времени считывания/записи данных Ах0. В случае арифметической команды следует учесть также вклад на исполнение арифметической операции а. Таким образом, имеем:
(2.6) (2.7)
и выражение (2.5) принимает вид:
(2.8)
Подставляя в (2.8) значения Л = 1 и А = 3, можно определить разность времен дельта Т еализации алгоритма с помощью одноадресных и трехадресных команд, при­нимая во внимание, что для трехадресных команд ΝΒ = О :
(2.9)
Теперь проанализируем «выгодность» той или иной адресности команды в за­висимости от типа целевого алгоритма. Возможные типы алгоритмов условно раз­делим на три группы:
•     последовательные;
•    параллельные;
•    комбинированные.
Для последовательного алгоритма результат предшествующей команды исполь­зуется в последующей. Здесь ΝΒ = 2, так как требуется всего одна команда пред­варительной засылки числа в сумматор (аккумулятор) в начале вычисления и одна команда пересылки результата в память в конце вычислений. Если обозначить количество арифметических и логических команд в последовательном алгоритме
104 Глава 2. Архитектура системы команд
и затратами времени Г на доступ к адресуемым данным. Затраты оборудования определяются суммой
где СВАзатраты аппаратных средств, обеспечивающих вычисление исполнитель­ных адресов; СЗУзатраты памяти на хранение адресных кодов команд. Обычно СЗУ » СВА, поэтому при оценке затрат оборудования ограничиваются учетом ве­личины Сзу. Затраты времени Т определяются суммой времени £ФИЛформирова-ния исполнительного адреса и времени-i3y выборки или записи операнда:
= ФИА + ^ЗУ·
В настоящее время используются различные виды адресации, наиболее распро­страненные из которых рассматриваются ниже.
Непосредственная адресация
При непосредственной адресации (НА) в адресном поле команды вместо адреса содержится непосредственно сам операнд (рис. 2.45). Этот способ может приме­няться при выполнении арифметических операций, операций сравнения, а также для загрузки констант в регистры.
Когда операндом является число, оно обычно представляется в дополнитель­ном коде. При записи в регистр, имеющий разрядность, превышающую длину не­посредственного операнда, операнд размещается в младшей части регистра, а ос­тавшиеся свободными позиции заполняются значением знакового бита операнда.
Помимо того, что в адресном поле могут быть указаны только константы, еще одним недостатком данного способа адресации является то, что размер непосред­ственного операнда ограничен длиной адресного поля команды, которое в боль­шинстве случаев меньше длины машинного слова. В [120] приведены данные о типичной длине непосредственного операнда для программ GCC, Spice и ТеХ, выполнявшихся на вычислительной машине DEC VAX (рис. 2.46).
В 50-60% команд с непосредственной адресацией длина операнда не превыша­ет 8 бит, ав 75-80% — 16 бит. Таким образом, в подавляющем числе случаев шест­надцати разрядов вполне достаточно, хотя для вычисления адресов могут потре­боваться и более длинные константы.
Рисунок 2.47 дает представление о распространенности непосредственной ад­ресации в командах различных типов. На верхней диаграмме показана статистика для программ GCC, Spice и ТеХ. Нижняя диаграмма иллюстрирует «популярность» непосредственной адресации в приложениях с преимущественно целочисленны­ми и вещественными вычислениями, однако следует иметь в виду, что средний процент использования непосредственной адресации по всем командам составля­ет 35% для целочисленных вычислений и 10% — в программах, ориентированных на обработку чисел с плавающей запятой.
Hosted by uCoz