SSE (Streaming SIMD Extensions) набор инструкций и SIMD расширение процессора (Single Instruction, Multiple Data, одна инструкция — множество данных), впервые представленные в процессорах Pentium III (Katmai), в ответ на выпущенные годом ранее инструкции 3DNow! от AMD. Изначально, набор назывался KNI (Katmai New Instructions), но позже приобрёл своё сегодняшнее название. Технология впервые была введена в массовое производство в 1999 году, с выходом PIII (Katmai).

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

В отличии от MMX и 3DNow! Инструкций, SSE может одновременно использовать свои инструкции вместе с инструкциями сопроцессора, так как регистры SSE и сопроцессора не являются общими. Это ещё одно неоспоримое преимущество, впрочем, как и возможность работать не с целыми числами (MMX могла работать только с целыми).

Использование SSE возможно только если операционная система поддерживает данные инструкции.

SSE состоит из:

SIMD расширение добавляет восемь(или 16, если процессор 64-битный) 128-битных регистров XMM (XMM0-XMM7), разделённых на четыре 32-битных (одинарной точности)регистра с плавающей точкой. Также, в составе есть 32-битный (в x86-6464-битный) регистр управления и контроля, который также нужен для проверки состояния SSE инструкций.

Так как каждый регистр имеет 128-бит, может хранить всего 4 из 32-разрядных чисел с плавающей точкой (1бит знака, 8-бит экспоненты, 23разрядная мантисса). На самом деле, за один такт могут выполняться любые данные помещающиеся в 128 бит (буквы, целые числа, байты, с двойной точностью и т.д.) и всё зависит от оптимизации программы под определённую задачу.

SSE

SSE может выполнять 70 новых инструкций, которые и работают на этих 128 битах, MMX и даже обычными 32-битными регистрами, если SIMD простаивает без дела.

SSE 2

SSE 2 инструкции, появились с выходом первых Pentium 4 и значительно усовершенствовали SSE первого поколения. Включает в себя возможность использовать операции со скалярными и упакованными типами данных. Присутствуют инструкции для потоковой обработки целочисленных MMX данных в 128-битных XMM регистрах SSE. Новый набор инструкций значительно упростил работу программистов и даже родилась поговорка – «SSE должен был родиться таким, как SSE 2».

SSE 3

Также имели название PNI (Prescott New Instructions). Добавлены дополнительные 13 инструкций, которые расширяют математические возможности DSP и поток управления инструкциями. Больше походит на косметическое улучшение, чем на практическое, которым было предыдущее обновление.

SSSE 3

Дополнительное обновление для SSE3, которое включает 16 новых инструкций. Позволяет умножать 16-ти разрядные числа с фиксированной точкой и правильным округлением, вносить слова в инструкции и переставлять байты в них.

SSE 4

Добавлены 54 инструкции, но с оговорками. В SSE 4.1 (появилась в Intel Penryn) содержится урезанный набор из 47 инструкций, а в SSE 4.2 – полный, из 54 (+7, добавлены в архитектуре Nehalem).

Инструкции работают только с 128-битными XMM0-XMM15. Добавлены POPCNT и дополнительные целочисленные инструкции & etc. SSE 4 привнесла практически столько нововведений, как в своё время привнесла первая SSE. Основным направлением при разработке было расширение мультимедийных возможностей — декодирование игр, ускорение физических и векторных расчётов для игр, ускорение обработки фото, музыки & etc.