Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
100
Добавлен:
10.05.2015
Размер:
151.55 Кб
Скачать

Логические операции

Стандартная система команд ВМ содержит команды для выполнения различных логических операций над отдельными битами слов или других адресуемых еди­ниц. Такие команды предназначены для обработки символьных и логических дан­ных. Минимальный набор поддерживаемых логических операций — это «НЕ», «И», «ИЛИ» и сложение по модулю 2.

Операции сдвигов

В дополнение к побитовым логическим операциям, практически во всех АСК пре­дусмотрены команды для реализации операций логического, арифметического и циклического сдвигов (рис. 9.1).

Рис. 9.1. Варианты операций сдвига.

При логическом сдвиге влево или вправо (см. рис. 9.1, а), сдвигаются все раз­ряды слова. Биты, вышедшие за пределы разрядной сетки, теряются, а освободив­шиеся позиции заполняются нулями.

При арифметическом сдвиге (см. рис. 9.1, б) данные трактуются как целые чис­ла со знаком, причем бит знака не изменяет положения. При сдвиге вправо осво­бодившиеся позиции заполняются значением знакового разряда, а при сдвиге вле­во — нулями. Арифметические сдвиги позволяют ускорить выполнение некоторых арифметических операций. Так, если числа представлены двоичным дополнитель­ным кодом, то сдвиги влево и вправо эквивалентны соответственно умножению и делению на 2.

При циклическом сдвиге (см. рис. 9.1, в) смещаются все разряды слова, причем значение разряда, выходящего за пределы слова, заносится в позицию, освободив­шуюся с противоположной стороны, то есть потери информации не происходит. Одно из возможных применений циклических сдвигов — это перемещение инте­ресующего бита в крайнюю левую (знаковую) позицию, где он может быть про­анализирован как знак числа.

Операции с десятичными числами

Десятичные числа представляются в ВМ в двоично-кодированной форме. В вычи­слительных машинах первых поколений для обработки таких чисел предусматрива­лись специальные команды; обеспечивавшие выполнение основных арифметиче­ских операций (сложение, вычитание, умножение и деление). В АСК современных машин подобных команд обычно нет, а соответствующие вычисления имитируют­ся с помощью команд целочисленной арифметики.

Simd-команды

Название данного типа команд представляет собой аббревиатуру от Single Instruc­tion Multiple Data — буквально «одна инструкция — много данных». В отличие от обычных команд, оперирующих двумя числами, SIMD-команды обрабатывают сразу две группы чисел (в принципе их можно называть групповыми командами). Операнды таких команд обычно представлены в одном из упакованных форматов.

Идея SIMD-обработки была выдвинута в Институте точной механики и вы­числительной техники им. С. А. Лебедева в 1978 году в рамках проекта «Эльбрус-1». С 1992 года команды типа SIMD становятся неотъемлемым элементом АСК мик­ропроцессоров фирм Intel и AMD. Поводом послужило широкое распространение мультимедийных приложений. Видео, трехмерная графика и звук в ВМ представ­ляются большими массивами данных, элементы которых чаще всего обрабатыва­ются идентично. Так, при сжатии видео и преобразовании его в формат MPEG один и тот же алгоритм применяется к тысячам битов данных. В трехмерной гра­фике часто встречаются операции, которые можно выполнить за один такт: интер­полирование и нормировка векторов, вычисление скалярного произведения век­торов, интерполяция компонентов цвета и т. д. Включение SIMD-команд в АСК позволяет существенно ускорить подобные вычисления.

Следующим шагом стало создание новых наборов SIMD-команд, работающих также с операндами, представленными в виде упакованных чисел с плавающей запятой. Такие команды в соответствующих приложениях повышают производи­тельность процессора примерно вдвое. Первой подобную технологию в середине 1998 года предложила фирма AMD в микропроцессоре К6-2. Это мультимедий­ное расширение включало в себя 21 SIMD-команду и получило название 3DNow!. Расширение 3DNow! в дополнение к SIMD-обработке целочисленной информа­ции типа ММХ позволяло оперировать парой упакованных чисел в формате с пла­вающей запятой.

Полугодом позже фирма Intel ввела в свои микропроцессоры так называемые потоковые SIMD-команды, обозначив их аббревиатурой SSE — Streaming SIMD Extension (потоковая обработка по принципу «одна команда — много данных»). Сначала это были 70 команд в микропроцессоре Pentium III. Команды дополняли групповые целочисленные операции ММХ и расширяли их за счет групповых опе­раций с 32-разрядными вещественными числами.

В зависимости от типа чисел (целые или вещественные) команды SSE делятся на три категории:

  • работа с упакованными группами целых чисел, которые могут иметь размер байта, слова, двойного слова или квадрослова (количество чисел в группе зави­сит от их разрядности и от разрядности всей группы — 64 или 128);

  • оперирование одной парой 32-разрядных или 64-разрядных чисел с плаваю­щей запятой (обычная или двойная точность);

  • обработка четырех пар вещественных чисел обычной точности или двух пар вещественных чисел двойной точности.

Дальнейшее развитие технологии SSE вылилось в SSE2 и получило реализа­цию в Pentium 4. Этот вариант включает в себя 271 команду и позволяет выпол­нять групповые арифметические и логические операции, сдвиги, сравнения чисел, перегруппировку и извлечение отдельных чисел, различные варианты пересылок. За один такт обрабатываются четыре 32-разрядных числа с плавающей запятой, упакованных в 128-разрядное слово.

Новый импульс получила и технология 3DNow!, более совершенный вариант которой получил название Enhanced 3DNow!. Этот набор команд близок к SSE2.

Таблица 9.1 дает представление о том, какие из рассмотренных мультимедий­ных расширений поддерживаются наиболее популярными микропроцессорами класса Pentium.

Таблица 9.1. Поддержка мультимедийных расширений в различных микропроцессорах

MMX

3DNow!

SSE

SSE2

VIA C3

Да

Да

Нет

Нет

Celeron-2, Pentium III

Да

Нет

Да

Нет

Pentium 4

Да

Нет

Да

Да

Duron

Да

Да

Да

Нет

Athlon XP

Да

Да

Да

Нет

Еще один вариант архитектуры системы команд с SIMD-командами воплощен фирмой IBM в процессорах серии PowerPC. Эта реализация носит название AltiVec и во многих отношениях превосходит вышеупомянутые расширения АСК. В част­ности, имеются трехоперандные команды, допускаются нестандартные целочис­ленные форматы, например «упаковка» из 1 + 5 + 5 + 5 битов.

Соседние файлы в папке Lection