ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.12.2021
Просмотров: 5256
Скачиваний: 8
Типы команд 89
увеличение значения операнда на единицу (инкремент), уменьшение значения
операнда на единицу (декремент).
Отметим, что
выполнение арифметических
команд может дополнительно со-
провождаться перемещением данных из устройства ввода в АЛУ или из
на
устройство вывода.
Операции с числами в форме с плавающей запятой
Для работы с числами, представленными в форме с плавающей запятой, в АСК
большинства машин предусмотрены:
• основные арифметические операции: сложение, вычитание, умножение и деление;
• операции сравнения, обеспечивающие сравнение двух вещественных чисел
с выработкой признаков: <>, >, <, <=, >=;
• операции преобразования: формы представления (между фиксированной
и плавающей запятой), формата представления (с одинарной и двойной точно-
стью).
Логические операции
Стандартная система команд
содержит команды для выполнения
логических операций над отдельными битами слов или других адресуемых еди-
ниц. Такие команды предназначены для обработки символьных и логических дан-
ных. Минимальный набор поддерживаемых логических операций — это «НЕ», «И»,
«ИЛИ» и сложение по модулю 2.
Операции сдвигов
В дополнение к побитовым логическим операциям, практически во всех АСК пре-
дусмотрены команды для реализации операций логического, арифметического
и циклического сдвигов (рис. 2.32).
90 Глава 2. Архитектура системы команд
При
логическом
сдвиге влево или вправо (см. рис. 2.32, а), сдвигаются все раз-
ряды слова. Биты, вышедшие за пределы разрядной сетки, теряются, а освободив-
шиеся позиции заполняются нулями.
При
арифметическом
сдвиге (см. рис.
данные трактуются как целые
ла со знаком, причем бит знака не изменяет положения. При сдвиге вправо осво-
бодившиеся позиции заполняются значением знакового разряда, а при сдвиге вле-
во — нулями. Арифметические сдвиги позволяют ускорить выполнение некоторых
арифметических операций. Так, если числа представлены двоичным дополнитель-
ным кодом, то сдвиги влево и вправо эквивалентны соответственно умножению
и делению на 2.
При
циклическом
сдвиге (см. рис. 2.32, смещаются все разряды слова, причем
значение разряда, выходящего за пределы слова, заносится в позицию, освободив-
шуюся с противоположной стороны, то есть потери информации не происходит.
Одно из возможных применений циклических сдвигов — это перемещение инте-
ресующего бита в крайнюю левую (знаковую) позицию, где он может быть про-
анализирован как знак числа.
Операции с десятичными числами
Десятичные числа представляются в ВМ в двоично-кодированной форме. В вычи-
слительных машинах первых поколений для обработки таких чисел предусматрива-
лись специальные команды, обеспечивавшие выполнение основных арифметиче-
ских операций (сложение, вычитание, умножение и деление). В АСК современных
машин подобных команд обычно нет, а соответствующие вычисления имитируют-
ся с помощью команд целочисленной арифметики.
Название данного типа команд представляет собой аббревиатуру от Single Instruc-
tion Multiple Data — буквально «одна инструкция — много данных». В отличие от
обычных команд, оперирующих двумя числами, SIMD-команды обрабатывают
сразу две группы чисел (в принципе их можно называть групповыми командами).
Операнды таких команд обычно представлены в одном из упакованных форматов.
Идея
была выдвинута Институте точной механики и вы-
числительной техники им. С. А. Лебедева в 1978 году в рамках проекта
С 1992 года команды типа SIMD становятся неотъемлемым элементом АСК мик-
ропроцессоров фирм Intel и AMD. Поводом послужило широкое распространение
приложений. Видео, трехмерная графика и звук в ВМ представ-
ляются большими массивами данных, элементы которых чаще всего обрабатыва-
ются идентично. Так, при сжатии видео и преобразовании
в формат MPEG
один и тот же алгоритм применяется к тысячам битов данных. В трехмерной гра-
фике часто встречаются операции, которые можно выполнить за один такт: интер-
полирование и нормировка векторов, вычисление скалярного произведения век-
торов, интерполяция компонентов цвета и т. д. Включение SIMD-команд в АСК
позволяет существенно ускорить подобные вычисления.
Первой на мультимедийный бум отреагировала фирма Intel, добавив в систему
команд своего микропроцессора Pentium
57 SIMD-команд. Название ММХ
(MultiMedia eXtention — мультимедийное расширение) разработчики обосновы-
Типы команд 91
вали тем, что при выборе состава новых команд были проанализированы алгорит-
мы, применяемые в различных мультимедийных приложениях. Команды ММХ
обеспечивали параллельную обработку упакованных целых чисел. При выполне-
нии арифметических операций каждое из чисел, входящих в группу, рассматрива-
ется как самостоятельное, без связи с соседними числами. Учитывая специфику
обрабатываемой информации, команды ММХ реализуют так называемую ариф-
метику с насыщением: если в результате сложения образуется число, выходящее
за пределы отведенных под него позиций, оно заменяется
двоичным
числом, которое в эти позиции вмещается. На рис. 2.33 показано сложение двух
групп четырехразрядных целых чисел, упакованных в 32-разрядные слова.
Следующим шагом стало создание новых наборов
работающих
также с операндами, представленными виде упакованных чисел с плавающей
запятой. Такие команды в соответствующих приложениях повышают производи-
тельность процессора примерно вдвое. Первой подобную технологию в середине
1998 года предложила фирма AMD в микропроцессоре К6-2. Это мультимедий-
ное расширение включало в себя 21
и получило название 3DNow!.
Расширение 3DNow! в дополнение к
целочисленной информа-
ции типа ММХ позволяло оперировать парой упакованных чисел в формате с пла-
вающей запятой.
Полугодом позже фирма Intel ввела в свои микропроцессоры так называемые
потоковые
обозначив их аббревиатурой SSE — Streaming SIMD
Extension (потоковая обработка по принципу «одна команда — много данных»).
Сначала это были 70 команд в микропроцессоре Pentium III. Команды дополняли
групповые целочисленные операции ММХ и расширяли
счет групповых опе-
раций с 32-разрядными вещественными числами.
В зависимости от типа чисел (целые или вещественные) команды SSE делятся
на три категории:
• работа с упакованными группами целых чисел, которые могут иметь размер
байта, слова, двойного слова или квадрослова (количество чисел в группе зави-
сит от их разрядности и от разрядности всей группы — 64 или 128);
• оперирование одной парой 32-разрядных или 64-разрядных чисел с плаваю-
щей запятой (обычная или двойная точность);
92 Глава 2. Архитектура системы команд
• обработка четырех пар вещественных чисел обычной точности или двух пар
вещественных чисел двойной точности.
Дальнейшее развитие технологии SSE вылилось в SSE2 и получило реализа-
цию в Pentium 4. Этот вариант включает в себя 271 команду и позволяет выпол-
нять групповые арифметические и логические операции, сдвиги, сравнения чисел,
перегруппировку и извлечение отдельных чисел, различные варианты пересылок.
За один такт обрабатываются четыре 32-разрядных числа с плавающей запятой,
упакованных в 128-разрядное слово.
Новый импульс получила и технология 3DNow!, более совершенный вариант
которой получил название Enhanced 3DNow!. Этот набор команд близок к SSE2.
Таблица
дает представление о том, какие из рассмотренных мультимедий-
ных расширений поддерживаются наиболее популярными микропроцессорами
класса Pentium.
Таблица
Поддержка мультимедийных расширений в различных микропроцессорах
Pentium III
Pentium 4
Athlon XP
Да
Да
Да
Да
Да
3DNow!
Да
Нет
Нет
Да
Да
SSE
Нет
Да
Да
Да
Да
SSE2
Нет
Нет
Да
Нет
Нет
Еще один вариант архитектуры системы команд с
воплощен
фирмой IBM в процессорах серии PowerPC. Эта реализация носит название AltiVec
и во многих отношениях превосходит вышеупомянутые расширения
К. В част-
ности, имеются трехоперандные команды, допускаются нестандартные целочис-
ленные форматы, например «упаковка» из 1 + 5 + 5 + 5 битов.
Команды для работы со строками
Для работы со строками в АСК обычно предусматриваются команды, обеспечива-
ющие перемещение, сравнение и поиск строк. В большинстве машин перечислен-
ные операции просто имитируются за счет других команд.
Команды преобразования
Команды преобразования осуществляют изменение формата представления дан-
ных. Примером может служить преобразование из десятичной системы счисления
в двоичную или перевод 8-разрядного кода символа из кодировки ASCII в коди-
ровку EBCDIC, и наоборот.
Команды ввода/вывода
Команды этой группы могут быть подразделены на команды управления перифе-
рийным устройством (ПУ), проверки его состояния, ввода и вывода.
Команды
периферийным устройством
служат для запуска ПУ и ука-
зания ему требуемого действия. Например, накопителю на магнитной ленте мо-
Типы команд 93
быть предписано на необходимость перемотки ленты или ее продвижения впе-
ред на одну запись. Трактовка подобных инструкций зависит от типа ПУ.
Команды
проверки состояния ввода/вывода
применяются для тестирования
различных признаков, характеризующих состояние модуля В/ВЫВ и подключен-
ных к нему ПУ. Благодаря этим
центральный процессор может выяс-
нить, включено ли питание ПУ, завершена ли предыдущая операция ввода/вывода,
возникли ли в процессе ввода/вывода какие-либо ошибки и т. п.
Собственно обмен информацией с ПУ обеспечивают команды ввода и вывода.
Команды
ввода
предписывают модулю В/ВЫВ получить элемент данных (байт
или слово) от ПУ и поместить его на шину данных, а команды
вывода —
заставля-
ют модуль В/ВЫВ принять элемент данных с шины данных и переслать его на
Команды управления системой
" Команды, входящие в эту группу, являются привилегированными и могут выпол-
няться, только когда центральный процессор
находится в привилегированном
состоянии или выполняет программу, находящуюся в привилегированной облас-
ти памяти (обычно привилегированный режим используется лишь операционной
системой). Так, лишь эти команды способны считывать и изменять состояние ряда
регистров устройства управления.
Команды управления потоком команд
Концепция фон-неймановской вычислительной машины предполагает, что коман-
ды программы, как правило, выполняются в порядке их расположения в памяти.
Для получения адреса очередной команды достаточно увеличить содержимое счет-
чика команд на длину текущей команды. В то же время основные преимущества
ВМ заключаются именно в возможности изменения хода вычислений в зависимо-
сти от возникающих в процессе счета результатов. С этой целью в АСК вычисли-
машины включаются команды, позволяющие нарушить естественный
порядок следования и передать управление в иную точку программы. В адресной
части таких команд содержится адрес точки перехода (адрес той команды, которая
должна быть выполнена следующей). Переход реализуется путем загрузки адреса
точки перехода в счетчик команд (вместо увеличения содержимого этого счетчика
на длину команды).
В системе команд
можно выделить три типа команд, способных изменить
последовательность вычислений:
• безусловные переходы;
• условные переходы (ветвления);
• вызовы процедур и возвраты из процедур.
Степень утилизации каждого из этих типов
в реальных приложениях
иллюстрирует диаграмма, приведенная на рис. 2.34.
Согласно приведенным данным, среди команд рассматриваемой группы доми-
нируют условные переходы.
Несмотря на то что присутствие в программе большого числа
команд безуслов-
ного перехода
считается признаком плохого стиля программирования, такие