📌 XMM
XMM — 128-битные векторные регистры, введённые в архитектуру x86_64 с набором инструкций SSE, предназначенные для работы с числами с плавающей точкой и SIMD-вычислениями.
🧠 Как работает
XMM регистры используются для параллельной обработки данных по SIMD-модели (Single Instruction, Multiple Data).
Каждый регистр может хранить:
- четыре 32-битных float (FP32)
 - два 64-битных double (FP64)
 - восемь 16-битных short или шестнадцать 8-битных int
 
Операции выполняются одной SSE-инструкцией сразу над всеми элементами регистра.
Примеры инструкций: addps, mulps, movaps, xorps, sqrtpd, minsd
Расширения:
⚙️ Где применяется
| Область | Примеры | 
|---|---|
| Multimedia | Аудио, видео фильтрация, кодирование | 
| Scientific computing | Векторные операции над матрицами, числами | 
| Cryptography | Потоковая обработка блоков данных | 
| Game engines | Физика, векторы движения, пересчёты координат | 
| Machine Learning | Обработка входных данных, нормализация | 
💻 Пример (на SSE)
#include <xmmintrin.h>
 
__m128 a = _mm_set_ps(1.0, 2.0, 3.0, 4.0);
__m128 b = _mm_set_ps(5.0, 6.0, 7.0, 8.0);
__m128 result = _mm_add_ps(a, b); // поэлементное сложение float📐 Схема XMM регистра
+-----------------------------------------------------+
|        128-битный XMM регистр (SSE)                 |
+----------+----------+----------+----------+---------+
| float[3] | float[2] | float[1] | float[0] | ← порядок
+----------+----------+----------+----------+
✅ Преимущества
- 
Параллельная обработка до 4 чисел за такт
 - 
Аппаратное ускорение векторной математики
 - 
Совместимость со всеми x86 CPU начиная с SSE
 
❌ Недостатки
- 
Ограничение в 128 бит (устарело по сравнению с AVX)
 - 
Требует выравнивания данных и специфичных инструкций
 - 
Не работает с целыми числами без SSE2