|
||
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% — в программах, ориентированных на обработку чисел с плавающей запятой.
|
||
|
||