37. MMX и SSE-расширения.
MMX
Расширение MMX включает в себя восемь 64-битных регистров общего пользования MM0—MM7. Для совместимости со способами сохранения состояния процессора в существующих ОС Intel была вынуждена объединить в программной модели процессора восемь регистров MMX с мантиссами восьми регистров FPU (Математический сопроцессор). Аппаратно это могут быть разные устройства, но с точки зрения программиста - это одни и те же регистры. Таким образом, нельзя одновременно пользоваться командами Математического сопроцессора и MMX.
Команды технологии MMX работают с 64-разрядными целочисленными данными, а также с данными, упакованными в группы (векторы) общей длиной 64 бита. Такие данные могут находиться в памяти или в восьми MMX-регистрах.
Команды технологии MMX работают со следующими типами данных:
упакованные байты (восемь байтов в одном 64-разрядном регистре) (англ. packed byte);
упакованные слова (четыре 16-разрядных слова в 64-разрядном регистре) (packed word);
упакованные двойные слова (два 32-разрядных слова в 64-разрядном регистре) (packed doubleword);64-разрядные слова (quadword).
SSE
Технология SSE позволяла преодолеть 2 основные проблемы MMX — при использовании MMX невозможно было одновременно использовать инструкции сопроцессора, так как его регистры были общими с регистрами MMX, и возможность MMX работать только с целыми числами.
SSE включает в архитектуру процессора восемь 128-битных регистров и набор инструкций, работающих со скалярными и упакованными типами данных.
Преимущество в производительности достигается в том случае, когда необходимо произвести одну и ту же последовательность действий над разными данными. В таком случае блоком SSE осуществляется распараллеливание вычислительного процесса между данными.
Особенности: Восемь 128-битных регистров XMM. ; 32-битный регистр флагов (MXCSR).
128-битный упакованный тип данных с плавающей точкой одинарной точности.;
Инструкции над вещественными числами одинарной точности.; Инструкции явной предвыборки данных, контроля кэширования данных и контроля порядка операций сохранения.
В SSE добавлены восемь 128-битных регистров, которые называются xmm0 — xmm7.
Каждый регистр может содержать четыре 32-битных значения с плавающей точкой одинарной точности.