- •2.5 Процессор чисел с плавающей точкой (fpu)
- •2.5.1 История
- •2.5.2 Математический сопроцессор x87 (fpu)
- •2.5.3 Форматы чисел с плавающей точкой
- •2.5.4 Регистры сопроцессора х87
- •2.5.5 Команды сопроцессора х87
- •Команды передачи данных сопроцессора х87
- •Арифметические команды
- •Команды сравнений
- •Трансцендентные команды
- •Дополнительные арифметические команды
- •Команды управления сопроцессором х87
- •2.6 Команды mmx
- •2.7 Команды sse и 3Dnow!
2.7 Команды sse и 3Dnow!
Основное отличие новой технологии «ММХ-2», так называемое, потоковое расширение – SSE (Streaming SIMD Extensions), получившей официальное название «Новый набор инструкций KATMAI» – KNI (Katmai New Instruction), – использование параллельных вычислений над числами с плавающей запятой одинарной точности (SIMD-FP, Single Instruction Multiple Data –– Floating Point). В добавление к 57 ММХ-командам процессор PЕNTIUM-3 (более раннее название – KATMAI) имеет еще 70 команд, ориентированных на SIMD-FP (направленных на обработку 3D-приложений), а также дополнительные целочисленные инструкции с регистрами ММХ и команды управления кэшированием. Добавлены специализированные команды для ускорения трансформации трехмерных объектов, эффектов освещения, атмосферных эффектов и др.
В архитектуру процессора PENTIUM-3 (1999 г.) добавлены восемь новых 128-ми битовых регистра ХММ0…ХММ7 (eXtended MultiMedia) и 32-х битовый регистр состояния-управления MXCSR для одновременной обработки четырех чисел с плавающей запятой одинарной точности (4 * 32 = 128 бит). Это позволяет использовать одновременно либо обработку вещественных чисел в блоке SIMD-FP и целых – в ММХ, либо SIMD-FP и основной блок с плавающей запятой двойной точности.
Расширение 3Dnow!, введенное фирмой AMD в процессорах К6-2 (1998 г.), расширяет возможности ММХ. Оно позволяет оперировать с новым типом данных – парой упакованных чисел в формате с плавающей точкой. Эти числа занимают по 2 * 32 бита в 64-х битовых регистрах ММХ.
Процессор К6-2 (и последующие процессоры фирмы AMD) имеет ДВА ИСПОЛНИТЕЛЬНЫХ БЛОКА, которые способны одновременно выполнять операции с плавающей точкой над своими регистрами. Каждая такая операция занимает всего 2 такта, операции полностью конвейеризуются.
В систему команд добавлена 21 новая инструкция, большая часть которых предназначена для обработки упакованных чисел с плавающей точкой. Имеется и новая целочисленная ММХ-инструкция усреднения восьми пар 8-ми битовых чисел, предназначенная для декодеров MPEG-2.
Технология 3Dnow! дает заметный результат при обработке графики, хотя не претендует на вытеснение графических ускорителей, а призвана служить их мощным дополнением. При этом сохраняется программная совместимость с прежними процессорами и операционными системами (поскольку регистры ММХ отображаются на регистры FPU, для них работают традиционные механизмы сохранения контекста в многозадачных ОС).
Расширение 3Dnow! работает с упакованными целочисленными форматами ММХ, а также с упакованными данными в FP-формате одинарной точности. В случае выхода результата за границы представимых величин в FP-формате возвращаемый результат соответствует граничным представимым числам (не бесконечностям), т.е. FP-арифметика выполняется с насыщением. В случае исчезновения значащих разрядов – результат обнуляется.
Округление результатов операции выполняется всегда только в сторону ближайшего числа. В инструкциях преобразования целочисленных форматов в FP и обратно округление выполняется в сторону нуля (усечение).
В процессорах Athlon набор инструкций 3Dnow! был дополнен. Появилось 5 новых инструкций для сигнальных процессоров (DSP), работающими с упакованными FP-числами. Еще 19 инструкций расширяют набор инструкций ММХ, а также служат для управления кэшированием.
В процессорах Athlon-МР (2001 г.) добавлен еще и полный набор инструкций SSE фирмы INTEL.
Расширение SSE-2. В новом процессоре PENTIUM-4 (2000 г.) основные нововведения направлены на ускорение обработки потоковых данных, что обеспечивает максимальную производительность при обработке видео, графических изображений, работе с мультимедиа и в других сложных задачах. Поток в данном контексте подразумевает, что с его данными должны выполняться однотипные операции. Кроме того, данные, уже прошедшие обработку, в дальнейшем этим вычислительным процессом использоваться не будут и ими не следует засорять КЭШ.
Добавлены дополнительные 144 команды (SSE-2), ускоряющие работу широкого спектра потоковых ресурсоемких приложений.
В процессоре PENTIUM-4 добавлены новые форматы данных:
упакованная пара чисел с плавающей точкой двойной точности (2 * 64 = 128 бит);
упакованные целые числа: 16 байт (16 * 8 = 128 бит), 8 слов (8 * 16 = 128 бит), 4 двойных слова (4 * 32 = 128 бит) и 2 счетверенных слова (2 * 64 = 128 бит).
В процессор введены новые команды целочисленной арифметики SIMD – 128-ми разрядные для регистров ХММ и такие же 64-х разрядные для регистров ММХ; ряд старых инструкций ММХ распространили и на ХММ (в 128-ми разрядном варианте); добавлены инструкции преобразования для новых форматов данных. Кроме того, расширена поддержка управлением кэшированием и порядком исполнения операций с памятью.
Расширение SSE-3. В процессор PENTIUM-4 на ядре PRESCOTТ (который появился в конце 2003 г.) добавлены еще 13 новых команд SIMD-FP, получившие название SSE-3.
Расширение SSE-4. В процессоре CORE-i7 в 2007 г. появились дополнительные 7 команд SSE-4.
