
- •Тема 6. Архитектуры инструкций процессоров и их типы
- •6.1. Наборы инструкций ммх
- •6.2. Наборы инструкций 3dNow!
- •6.3. Наборы инструкций sse
- •6.4. Наборы инструкций sse2
- •6.5. Наборы инструкций sse3
- •6.6. Наборы инструкций sse4
- •6.7. Наборы инструкций sse4.1
- •6.8. Наборы инструкций sse4.2
- •6.9. Наборы инструкций avx
- •6.10. Наборы инструкций aes
6.2. Наборы инструкций 3dNow!
3DNow! — дополнительное расширение MMX для процессоров AMD, начиная с AMD K6 3D. Причиной создания 3DNow! послужило стремление завоевать превосходство над процессорами производства компании Intel в области обработки мультимедийных данных.
Технология 3DNow! ввела 21 новую команду процессора и возможность оперировать 32-битными вещественными типами в стандартных MMX-регистрах. Также были добавлены специальные инструкции, оптимизирующие переключение в режим MMX/3DNow! (femms, которая заменяла стандартную инструкцию emms) и работу с кэшем процессора. Таким образом технология 3DNow! расширяла возможности технологии MMX, не требуя введения новых режимов работы процессора и новых регистров.
Перед началом работы с расширением 3DNow! следует убедиться, что ЦП их поддерживает. Для этого используется инструкция CPUID.
Инструкции 3DNow!:
PAVGUSB — вычисление среднего 8-битовых целых значений
PI2FD — перевод 32-битных целых в вещественные числа
PF2ID — перевод вещественных в 32-битные целые числа
PFCMPGE — сравнение вещественных чисел, больше или равно
PFCMPGT — сравнение вещественных чисел, больше
PFCMPEQ — сравнение вещественных чисел, равно
PFACC — накопление суммы вещественных чисел
PFADD — сложение вещественных чисел
PFSUB — вычитание вещественных чисел
PFSUBR — обратное вычитание вещественных чисел
PFMIN — нахождение минимума вещественных чисел
PFMAX — нахождение максимума вещественных чисел
PFMUL — умножение вещественных чисел
PFRCP — нахождение приближённого значения обратного (1/x) вещественных чисел
PFRSQRT — нахождение приближённого значения обратного от квадратного корня (1/sqrt(x)) вещественных чисел
PFRCPIT1 — первый шаг вычисления значения обратного (1/x) вещественных чисел
PFRSQIT1 — первый шаг вычисления значения обратного от квадратного корня (1/sqrt(x)) вещественных чисел
PFRCPIT2 — второй шаr вычисления значения обратного или обратного от квадратного корня вещественных чисел
PMULHRW — умножение 16-битных целых чисел с округлением
FEMMS — быстрое переключение состояния FPU/MMX
PREFETCH/PREFETCHW — предвыборка строки кэша процессора из памяти
6.3. Наборы инструкций sse
SSE ( Streaming SIMD Extensions, потоковое SIMD-расширение процессора) — это SIMD (Single Instruction, Multiple Data, Одна инструкция — множество данных) набор инструкций, разработанный Intel и впервые представленный в процессорах серии Pentium III как ответ на аналогичный набор инструкций 3DNow! от AMD, который был представлен годом раньше. Первоначально названием этих инструкций было KNI — Katmai New Instructions (Katmai — название первой версии ядра процессора Pentium III).
Технология SSE позволяла преодолеть 2 основные проблемы MMX — при использовании MMX невозможно было одновременно использовать инструкции сопроцессора, так как его регистры были общими с регистрами MMX, и возможность MMX работать только с целыми числами.
SSE включает в архитектуру процессора восемь 128-битных регистров и набор инструкций, работающих со скалярными и упакованными типами данных.
Преимущество в производительности достигается в том случае, когда необходимо произвести одну и ту же последовательность действий над разными данными. В таком случае блоком SSE осуществляется распараллеливание вычислительного процесса между данными.
Особенности:
Восемь 128-битных регистров XMM.
32-битный регистр флагов (MXCSR).
128-битный упакованный тип данных с плавающей точкой одинарной точности.
Инструкции над вещественными числами одинарной точности.
Инструкции явной предвыборки данных, контроля кэширования данных и контроля порядка операций сохранения.