- •Лекция 26
- •Классификация вычислительный систем по
- •SIMD расширения в IA-32
- •Программное окружение технологии MMX
- •MMX-регистры
- •Форматы данных MMX
- •SIMD модель исполнения
- •Виды целочисленной SIMD
- •Виды целочисленной SIMD
- •Формат мнемоники команд
- •Виды MMX-команд
- •Команды передачи данных
- •Команды сложения и
- •Команды умножения
- •Команды умножения
- •Команды сравнения
- •Логические команды
- •Команды сдвига
- •Команды упаковки
- •Команды распаковки
- •Команды распаковки
- •Дополнительные MMX-
- •Дополнительные MMX- команды
- •Технология SSE
- •Программное окружение SSE
- •Регистр
- •Система команд SSE
- •Система команд SSE
- •Система команд SSE
- •Команды передачи данных SSE
- •Команды передачи данных SSE
- •Арифметические команды SSE
- •Арифметические команды SSE
- •Команды сравнения
- •Логические команды
- •Команды преобразования
Команды распаковки
Пример PUNPCKHBW
Пример PUNPCKHBW
Дополнительные MMX-
команды, – вычисляют среднее значение
PAVGB PAVGW
представленных байтами или словами. Значения интерпретируются как беззнаковые целые числа.
двух чисел, операндов
PEXTRW – извлекает одно из четырех упакованных слов входного операнда. Команда имеет три аргумента: выходной операнд – РОН 32bit, входной операнд – MMX-регистр, маска – непосредственное значение (0-3). Извлеченное значение сохраняется в младших 16 разрядах выходного операнда, а старшие разряды обнуляются.
PINSRW – вставляет слово в одно из четырех упакованных слов выходного операнда. Команда имеет три аргумента: выходной операнд – MMX-регистр, входной операнд – РОН, маска – непосредственное значение (0-3). Вставляются младшие 16 бит РОН.
Дополнительные MMX- команды
PMAXUB, PMAXSW – извлекают максимальное значение из каждой пары упакованных элементов в выходном и входном операндах.
PMINUB, PMINSW – извлекают минимальное значение из каждой пары упакованных элементов в выходном и входном операндах.
PMOVMSKB – формирует байт, содержащий знаковые биты восьми байтов, содержащихся во входном операнде, результат записывается в выходной операнд – РОН, младшие 8 бит.
PSADBW – вычисляет суммарную разность значений без знаковых байтов входного и выходного операндов.
Технология SSE
Технология SSE – дальнейшее развитие технологии MMX. Ключевые отличия:
добавление восьми 128-разрядных регистров;
вещественная арифметика (вещественные числа одинарной точности – Single-Precision-Floating-Point);
команды управления КЭШ-памятью.
Программное окружение SSE
Команды SSE-расширения позволяют использовать следующие элементы:
32-разрядные регистры общего назначения;восемь 64-разряных MMX-регистров (MM0-MM7);
восемь 128-разрядных XMM-регистров (XMM0-XMM7);регистр управления/состояния XMM.
регистр флагов EFLAGS.
Регистр
состояния/управления
Система команд SSE
В дополнении к параллельным командам MMX появились скалярные команды, которые выполняют операцию только над младшим упакованным значением в регистре.
Параллельные команды имеют суффикс PS. Схема их выполнения:
Система команд SSE
Скалярные команды имеют суффикс ss. Схема их выполнения:
Система команд SSE
Команды передачи данных
Арифметические команды
Команды сравнения
Команды преобразования
Логические команды
Дополнительные команды
Команды передачи данных SSE
MOVAPS – пересылка выровненных по 16-байтовой границе 128- разрядных данных. Входной операнд – XMM-регистр или память, выходной операнд – XMM-регистр или память.
MOVUPS – пересылка не выровненных по 16-байтовой границе 128- разрядных данных. Входной операнд – XMM-регистр или память, выходной операнд – XMM-регистр или память.
MOVHPS – пересылка не выровненных 64 бит. Входной операнд – XMM-регистр или память, выходной операнд – XMM-регистр или память. Пересылает старшие разряды XMM-регистра.
MOVLPS – пересылка не выровненных 64 бит. Входной операнд – XMM-регистр или память, выходной операнд – XMM-регистр или память. Пересылает младшие разряды XMM-регистра.