Xreferat.com » Рефераты по информатике и программированию » Форматы данных и команды их обработки процессоров Pentium III, Pentium IV

Форматы данных и команды их обработки процессоров Pentium III, Pentium IV

случае NaN и соответствующая установка флагов в EFLAGS (ZF, PF, CF) с извлечением (P6+)

FUCOMP Сравнение без генерации исключения в случае NaN с извлечением (387+)

FUCOMPP Сравнение без генерации исключения в случае NaN с двойным извлечением (387+)

FXAM Анализ числа — установка кода условия в СО, С2, СЗ


Трансцендентные функции

Р2ХМ1 Вычисление

FCOS Косинус (387+)

PPATAN Арктангенс частного с извлечением

FPTAN Вычисление тангенса и загрузка (push) в стек +1,0

FSIN Вычисление синуса (387+)

FSINCOS Вычисление синуса и косинуса с помещением (push) в стек (387+)

FYL2X Вычисление Yxlog2(X)

FYL2XP1 Вычисление Yxlog2(X+1)


Управление сопроцессором

FCLEX Сброс флагов исключений с предварительной проверкой

ожидающих немаскированных исключений

FDECSTP Декремент указателя стека FPU

FFREE Освобождение регистра — пометка как свободного

FINCSTP Инкремент указателя стека FPU

FINIT Инициализация FPU с предварительной проверкой ожидающих исключений

FLDCW Загрузка управляющего слова (FPU CW) из памяти

FLDENV Загрузка состояния сопроцессора из памяти, сохраненного инструкциями FSTENV/FNSTENV

FNCLEX Сброс флагов исключений без проверки ожидающих

FNINIT Инициализация FPU без проверки ожидающих исключений

FNOP Пустая операция FPU

FNSAVE Сохранение состояния сопроцессора и стека регистров в памяти без проверки ожидающих исключений

FNSTCW Сохранение управляющего слова без проверки ожидающих исключений

FNSTENV Сохранение состояния сопроцессора (SR, CR, TAGW, FIP и FDP) в памяти без проверки ожидающих исключений

FNSTSW Запись слова состояния без проверки ожидающих исключений

FRSTOR Загрузка состояния сопроцессора и регистров из памяти

FSAVE Сохранение состояния сопроцессора и стека регистров в памяти с предварительной проверкой ожидающих исключений

FSTCW Сохранение управляющего слова с предварительной проверкой ожидающих исключений

FSTENV Сохранение состояния сопроцессора (SR, CR, TAGW, FIP и FDP) в памяти с предварительной проверкой ожидающих исключений

FSTSW Запись слова состояния для последующего переноса кода завершения в регистр флагов с предварительной проверкой ожидающих исключений

WAIT/FWAIT Синхронизация — останов CPU до завершения текущей операции FPU, проверка ожидающих исключений FPU


Инструкции ММХ появились в процессорах Pentium ММХ и с тех пор поддерживаются всеми более современными процессорами (Pentium Pro, появившийся раньше, эти инструкции не поддерживает). Они имеют сложную мнемонику, которая включает следующие элементы:

• префикс Р (Packed), указывающий на обработку упакованных форматов;

• мнемонику операции (например, ADD, CMP или XOR);

• суффикс, идентифицирующий тип насыщения: US (Unsigned Saturation) — насыщение беззнаковое, S (Signed saturation) — насыщение знаковое;

• суффикс, идентифицирующий тип данных: В — упакованные байты, W — упакованные слова, D — упакованные двойные слова, Q -учетверенное слово.


Инструкции, у которых типы входных и выходных данных различаются (например, преобразования), имеют два суффикса.


Для инструкций пересылки данных операнды источника и назначения могут находиться в памяти (m32 или m64), целочисленных регистрах (ir32) или регистрах ММХ (mm). Для остальных инструкций, кроме вышеперечисленных, операнд-источник может быть и непосредственным, а операнд назначения всегда является регистром ММХ. Для операндов, находящихся в памяти, применимы все существующие режимы адресации.


Таблица. Инструкции ММХ


Инструкция Описание

EMMS Очистка стека регистров — установка всех единиц в слове тегов


Пересылка данных

MOVD Пересылка данных в младшие 32 бита регистра ММХ (с заполнением старших бит нулями) или из младших 32 бит регистра ММХ

MOVQ Пересылка данных (64 бит) из/в регистр ММХ


Преобразование форматов

PACKSSDW Упаковка со знаковым насыщением четырех двойных слов в четыре

слова

PACKSSWB Упаковка со знаковым насыщением восьми слов в восемь байт

PACKUSWB Упаковка с насыщением восьми знаковых слов в восемь беззнаковых байт

PUNPCKHBW Чередование в регистре назначения байт старшей половины операнда-источника с байтами старшей половины операнда назначения

PUNPCKHWD Чередование в регистре назначения слов старшей половины операнда-источника со словами старшей половины операнда назначения

PUNPCKHDQ Чередование в регистре назначения двойного слова старшей половины операнда-источника с двойным словом старшей половины операнда назначения

PUNPCKLBW Чередование в регистре назначения байт младшей половины операнда-источника с байтами младшей половины операнда назначения

PUNPCKLWD Чередование в регистре назначения слов младшей половины операнда-источника со словами младшей половины операнда назначения

PUNPCKLDQ Чередование в регистре назначения двойного слова младшей половины операнда-источника с двойным словом младшей половины операнда назначения


Упакованная арифметика

PADDB Сложение упакованных байт (слов или двойных слов) без насыщения

PADDW (с циклическим переполнением)

PADDD

PADDSB Сложение знаковых упакованных байт (слов) с насыщением

PADDSW

PADDUSB Сложение упакованных беззнаковых байт (слов) с насыщением PADDUSW

PMADDWD Умножение четырех знаковых слов операнда-источника на четыре знаков слова операнда назначения. Два двойных слова результатов умножения младших слов суммируются и записываются в младшее двойное слово операнда назначения. Два двойных слова результатов умножения старших слов суммируются и записываются в старшее двойное слово операнда назначения

PMULHW Умножение упакованных знаковых слов с сохранением только старших 16 элементов результата

PMULLW Умножение упакованных знаковых или беззнаковых слов с сохранением только младших 16 бит элементов результата

PSUBB Вычитание упакованных байт (слов или двойных слов) без

PSUBW насыщения (с циклическим антипереполнением)

PSUBD

PSUBSB Вычитание упакованных знаковых байт (слов) с насыщением PSUBSW

PSUBUSB Вычитание упакованных беззнаковых байт (слов) с насыщением PSUBUSW


Логика

PAND Логическое И

PANDN Логическое И mm/m64 и инверсного значения mm

POR Логическое ИЛИ

PXOR Исключающее ИЛИ


Сравнение

PCMPEQB Сравнение (на равенство) упакованных байт (слов, двойных

слов). Все биты элемента результата будут единичными (True)

PCMPEQD совпадении соответствующих элементов (байт, слов или двойных

PCMPEQW слов) операндов и нулевыми (False) при несовпадении

PCMPGTB Сравнение (по величине) упакованных знаковых байт (слов, двойных слов).

PCMPGTD, PCMPGTW Все биты элемента результата будут единичными (True), если соответствующий элемент операнда назначения больше элемента операнда-источника, и нулевыми (False) в противном случае

Сдвиги и вращения

PSLLD, PSLLQ, PSLLW Логический сдвиг влево упакованных слов (двойных, учетверенных) операнда назначения на количество бит, указанных в операнде-источнике, с заполнением младших бит нулями

PSRAD, PSRAW Арифметический сдвиг вправо упакованных двойных (учетверенных) знаковых слов операнда назначения на количество бит, указанных в операнде-источнике, с заполнением младших бит битами знаковых разрядов

PSRLD, PSRLQ, PSRLW Логический сдвиг вправо упакованных слов (двойных, учетверенных) операнда назначения на количество бит, указанных в операнде- источнике, с заполнением старших бит нулями


Инструкции SSE появились в процессорах Pentium 3. Они делятся на три основные группы: инструкции над числами в блоке ХММ, дополнительные целочисленные SIMD-инструкции (в блоке ММХ) и новые инструкции кэширования. Основное число новых инструкций предназначено для работы с блоком ХММ. Векторные инструкции выполняются сразу над четырьмя парами чисел. Скалярные инструкции выполняются только над числами, расположенными в младших 32 битах операндов. Операнд-источник для инструкций ХММ может быть как регистром ХММ, так и 128-битной ячейкой памяти. Для многих инструкций требуется, чтобы операнд в памяти был выровнен по границе параграфа. При обработке скалярными инструкциями операнда в памяти пересылка между памятью и регистрами ХММ производится для всего 128-битного слова, хотя используется только 32 бита.


Таблица. Инструкции расширения SSE


Инструкция Описание


Пересылка данных с участием регистров ХММ

MOVAPS Пересылка 128-битных данных между памятью и регистрами ХММ или

между регистрами ХММ. Данные в памяти должны быть выровнены по границе 16-байтного параграфа

MOVUPS Пересылка 128-битных данных между памятью и регистрами ХММ или между регистрами ХММ (без требования выравнивания)

MOVHPS Пересылка 64-битных данных между памятью и старшей половиной регистров ХММ или между регистрами ХММ (младшая половина ХММ не изменяется)

MOVHLPS Пересылка старшей половины источника в младшую половину назначения (старшая половина регистра назначения не меняется)

MOVLHPS Пересылка младшей половины источника в старшую половину назначения (младшая половина регистра назначения не меняется)

MOVLPS Пересылка 64-битных данных между памятью и младшей половиной регистров ХММ или между регистрами ХММ (старшая половина ХММ не изменяется)

MOVMSKPS Сборка старших бит упакованных операндов из регистра ХММ в регистр общего назначения (биты 31, 63, 95 и 127 регистра ХММ попадают в биты О, 1, 2 и 3 регистра-приемника, остальные биты приемника будут нулевыми)

MOVSS Пересылка скалярного операнда (младшие 32 бита) между памятью и регистрами ХММ или между регистрами ХММ


Арифметические инструкции над числами в FP-формате в регистрах ХММ

ADDPS Векторное сложение

SUBPS Векторное вычитание

ADDSS Скалярное сложение

SUBSS Скалярное вычитание

MULPS Векторное умножение

MULSS Скалярное умножение

DIVPS Векторное деление

DIVSS Скалярное деление

SQRTPS Векторное извлечение квадратного корня

SQRTSS Скалярное извлечение квадратного корня

MAXPS Векторное нахождение максимума

MAXSS Скалярное нахождение максимума

MINPS Векторное нахождение минимума

MINSS Скалярное нахождение минимума


Сравнение


CMPPS Векторное сравнение (задается полный набор 12 условий, как в инструкциях условных переходов). В том элементе операнда назначения, для которого условие сравнения выполняется, устанавливаются все единицы (32 бита), где не выполняется — все нули

CMPSS Скалярное сравнение (12 условий), аналогично предыдущему, но только для младших 32 бит

COMISS Скалярное сравнение с установкой бит ZF, PF и CF регистра EFLAGS (биты 0F, SF и AF обнуляются)

UCOMISS Скалярное сравнение, но без генерации исключения в случае NaN (при этом ZF=PF=CF=1)


Инструкции преобразований


CVTPI2PS Преобразование двух знаковых целых из регистра ММХ или 64-битной ячейки памяти в два младших РР-числа в регистре ХММ (старшая пара не изменяется). При необходимости выполняется округление

CVTSI2SS Преобразование знакового целого из 32-битного регистра или 64-битной ячейки памяти в младшее упакованное FP-число в регистре ХММ (старшие три числа не изменяются). При необходимости выполняется округление

CVTPS2PI Преобразование двух младших FP-чисел из регистра ХММ или памяти в пару целых знаковых в регистре ММХ или 64-битной ячейки памяти. При необходимости выполняется округление; если результат не умещается, возвращается значение бесконечности (80000000h)

CVTTPS2PI Преобразование, аналогичное CVTPS2PI, но при невозможности точного преобразования выполняется усечение

CVTSS2SI Преобразование младшего FP-числа из регистра ХММ в целое знаковое в 32-битном регистре. При необходимости выполняется округление; если результат не умещается, возвращается значение бесконечности (80000000h)

CVTTSS2SI Преобразование, аналогичное CVTSS2SI, но при невозможности точного преобразования выполняется усечение


Логические инструкции в блоке ХММ

ANDPS Логическое И двух пакетов операндов

ANDNPS Логическое И-НЕ двух пакетов операндов

ORPS Логическое ИЛИ двух пакетов операндов

XORPS Исключающее ИЛИ двух пакетов операндов Перестановки операндов в ХММ

SHUFPS Перестановка слов в регистре ХММ под управлением 8-битного непосредственного операнда

UNPCKHPS Переупаковка старших половин с чередованием слов в результате

UNPCKLPS Переупаковка старших половин с чередованием слов в результате


Управление состоянием

LDMXCSR Загрузка регистра MXCSR

STMXCSR Сохранение регистра MXCSR

FXSAVE Сохранение состояния блоков FP/MMX и ХММ

FXRSTOR Восстановление состояния блоков FP/MMX и ХММ


Дополнительные целочисленные SIMD-инструкции (выполняются с операндами в регистрах ММХ, входят и в расширенный набор 3DNow!)


PAVGB/PAVGW Нахождение среднего упакованных беззнаковых байт или слов

PEXTRW Извлечение 16-битного слова из регистра ММХ в младшую половину 32-битного регистра (старшая половина обнуляется). Номер слова определяется младшими битами непосредственного операнда

PINSRW Помещение младшей половины 32-битного регистра в выбранное слово регистра ММХ. Номер слова определяется младшими битами непосредственного операнда

PMAXUB, PMAXSW Нахождение максимума упакованных беззнаковых байт/знаковых слов

PMINUB, PMINSW Нахождение минимума упакованных беззнаковых байт/знаковых слов

PMOVMSKB Сборка старших бит упакованных байт в 8-битную маску, помещаемую в целочисленный регистр

PMULHUW Умножение беззнаковых слов с сохранением старших половин произведений

PSADBW Нахождение суммы модулей разности пар слов (результат — 16-битное число)

PSHUFW Перемешивание слов под управлением 8-битного непосредственного операнда


Управление кэшированием (входят и в расширенный набор 3DNow!)


MASKMOVQ Выборочная запись байт из регистра ММХ в память, минуя кэш MOVNTQ Запись из регистра ММХ в память, минуя кэш

MOVNTPS Запись из регистра ХММ в память, минуя кэш (адрес должен быть

выровнен по границе параграфа)

PREFETCHTO Загрузка 32 или более байт в кэш-память

PREFETCHT1

PREFETCHT2

PREFETCHNT

SFENCE Выгрузка результатов всех предыдущих инструкций в кэш-память


Новые инструкции управления кэшированием обеспечивают запись содержимого регистров ММХ и ХММ в память, минуя кэш, что позволяет избегать "загрязнения" кэш-памяти промежуточными данными. Появилась и возможность "закачивать" требуемые данные в кэш прежде использующих их инструкций.


По сравнению с расширением 3DNow! набор инструкций SSE шире, часть инструкций пересекается, но и в 3DNow! имеются уникальные инструкции, не реализованные в SSE.


Инструкции SSE2 появились в процессорах Pentium 4. Большая их часть предназначена для работы с числами с плавающей точкой двойной точности (64-битные операнды), расположенными в регистрах ХММ, векторными (упакованная пара 64-битных чисел) и скалярными (старшим или младшим числом). Они обеспечивают векторные и скалярные пересылки этих чисел, арифметические инструкции (сложение, вычитание, умножение, деление, извлечение корня, нахождение максимума и минимума), сравнение чисел, преобразования форматов, перестановки операндов, а также побитные логические функции. Появились и SIMD-инструкции обработки 32- и 64-битных целых чисел, расположенных в регистрах ХММ. Новые инструкции управления кэшированием позволяют миновать кэш при записи в память из регистров ХММ и общих регистров, упорядочивать последовательности загрузки данных из памяти и записи в память и выполнять некоторые другие действия.


Таблица. Инструкции SSE2


Инструкция Описание


Инструкции пересылки данных (чисел с плавающей точкой двойной точности между регистрами ХММ, а также регистрами ХММ и памятью)

MOVAPD Пересылка пары упакованных выровненных чисел

MOVUPD Пересылка пары упакованных невыровненных чисел

MOVHPD Пересылка старшего упакованного числа

MOVLPD Пересылка младшего упакованного числа

MOVMSKPD Извлечение знаковой маски из пары чисел

MOVSD Пересылка скалярного числа


Арифметические инструкции над операндами с плавающей точкой двойной точности в регистрах ХММ

ADDPD Векторное сложение

ADDSD Скалярное сложение

SUBPD Векторное вычитание

SUBSD Скалярное вычитание

MULPD Векторное умножение

MULSD Скалярное умножение

DIVPD Векторное деление

DIVSD Скалярное деление

SQRTPD Векторное извлечение квадратного корня

SQRTSD Скалярное извлечение квадратного корня

MAXPD Векторное нахождение максимума

MAXSD Скалярное нахождение максимума

MINPD Векторное нахождение минимума

MINSD Скалярное нахождение минимума


Логические инструкции над упакованными 64-битными операндами в регистрах ХММ (побитные функции)

ANDPD Логическое И

ANDNPD Логическое И-НЕ

ORPD Логическое ИЛИ

XORPD Исключающее ИЛИ


Инструкции сравнения упакованных (векторных) и скалярных операндов с плавающей точкой двойной точности в регистрах ХММ с помещением результата в операнд-приемник или регистр EFLAGS

CMPPD Сравнение векторное

CMPSD Сравнение скалярное

COMISD Упорядоченное сравнение скалярных чисел с помещением результата в биты регистра EFLAGS (если хоть один из операндов QNaN или SNaN, генерируется исключение #I и EFLAGS не модифицируется)

UCOMISD Неупорядоченное сравнение (то же, но исключение #I генерируется только в случае SNaN)


Инструкции перестановок и распаковки операндов с плавающей точкой двойной точности в регистрах ХММ

SHUFPD Перестановка элементов в упакованных операндах

UNPCKHPD Распаковка и чередование старших элементов (в приемнике собираются старшие части операндов)

UNPCKLPD Распаковка и чередование младших элементов (в приемнике собираются младшие части операндов)

Инструкции преобразований в формат и из формата упакованных и скалярных чисел с плавающей точкой двойной точности

CVTPD2PI Преобразование упакованных чисел с плавающей точкой в упакованные целые (двойные слова)

CVTTPD2PI Преобразование с усечением упакованных чисел с плавающей точкой двойной точности в упакованные целые (двойные слова)

CVTP12PD Преобразование упакованных целых (двойных слов) в упакованные числа с плавающей точкой двойной точности

CVTPD2DQ Преобразование упакованных чисел с плавающей точкой в упакованные целые (двойные слова)

CVTTPD2DQ Преобразование с усечением упакованных чисел с плавающей точкой двойной точности в упакованные целые (двойные слова)

CVTDQ2PD Преобразование упакованных 32-битных целых в упакованные числа с плавающей точкой двойной точности

CVTPS2PD Преобразование упакованных чисел с плавающей точкой одинарной точности в числа двойной точности

CVTPD2PS Преобразование упакованных чисел с плавающей точкой двойной точности в числа одинарной точности

CVTSS2SD Преобразование скалярного числа с плавающей точкой одинарной точности в число двойной точности

CVTSD2SS Преобразование скалярного числа с плавающей точкой двойной точности в число одинарной точности

CVTSD2SI Преобразование скалярного числа одинарной точности в 32-битное целое

CVTTSD2SI Преобразование с усечением скалярного числа двойной точности в 32-битное целое

CVTS12SD Преобразование 32-битного целого в число двойной точности


Инструкции преобразований с числами одинарной точности

CVTDQ2PS Преобразование упакованных 32-битных целых в упакованные числа с плавающей точкой одинарной точности

CVTPS2DQ Преобразование упакованных чисел одинарной точности в числа двойной точности

CVTTPS2DQ Преобразование с усечением упакованных чисел одинарной точности в числа двойной точности


Целочисленные 128-битные SIMD-инструкции

MOVDQA Пересылка выровненного 128-битного операнда

MOVDQU Пересылка невыровненного 128-битного операнда

MOVQ2DQ Пересылка 64-битного целого из ММХ в ХММ

MOVDQ2Q Пересылка 64-битного целого из ХММ в ММХ

PMULUDQ Умножение упакованных беззнаковых 32-битных целых

PADDQ Сложение упакованных 64-битных целых

PSUBQ Вычитание упакованных 64-битных целых

PSHUFLW Перестановка упакованных младших слов

PSHUFHW Перестановка упакованных старших слов

PSHUFD Перестановка упакованных двойных слов

PSLLDQ Логический сдвиг 64-битных чисел влево

PSRLDQ Логический сдвиг 64-битных чисел вправо

PUNPCKHQDQ Распаковка старших 64-битных чисел

PUNPCKLQDQ Распаковка младших 64-битных чисел Управление кэшированием

CLFLUSH Очистка и инвалидация строки кэша (всех уровней), связанной

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту
Нужна помощь в написании работы?
Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Пишем статьи РИНЦ, ВАК, Scopus. Помогаем в публикации. Правки вносим бесплатно.

Похожие рефераты: