Полная версия

Главная arrow Информатика arrow Архитектура ЭВМ и вычислительных систем

  • Увеличить шрифт
  • Уменьшить шрифт


<<   СОДЕРЖАНИЕ

Набор команд х86

В табл. П3.1 приводится практически полный набор команд х86 (процессоров 8086—8088), большинство из которых функционируют в 32-разрядных процессорах, используя 32-битовые регистры (еах, евх и пр.) и величины, вместо их 16-битовых (ах, вх и пр.) аналогов.

Таблица ПЗ. I. Некоторые из исходных команд набора 8086—8088

Команда

Расшифровка

Действие

ААА

ASCII adjust AL after addition

Выравнивание символов после сложения

AAD

ASCII adjust AX before division

Выравнивание символов перед делением

ААМ

ASCII adjust AX after multiplication

Выравнивание символов после перемножения

AAS

ASCII adjust AL after subtraction

Выравнивание символов после вычитания

ADC

Add with carry

Сложение с переносом единицы

ADD

Add

Сложение

AND

Logical AND

Логическая операция и

CALL

Call procedure

Вызов процедуры

CBW

Convert byte to word

Преобразование байта в слово

CLC

Clear carry flag

Очистка флага переноса

CLD

Clear direction flag

Очистка флага направления?

CLI

Clear interrupt flag

Очистка флага прерывания

CMC

Complement carry flag

Дополнение флага переноса?

CMP

Compare operands

Сравнение операндов

CMPSB

Compare bytes in memory

Сравнение операндов в памяти

CMPSW

Compare words

Сравнение слов

CWD

Convert word to doubleword

Преобразовать слово в двойное слово

Продолжение табл. ПЗ. 1

Команда

Расшифровка

Действие

DAA

Decimal adjust AL after addition

Выравнивание двоично-десятичного после сложения

DAS

Decimal adjust AL after subtraction

Выравнивание двоично-десятичного после вычитания

DEC

Decrement by 1

Уменьшение на 1

DIV

Unsigned divide

Деление чисел без знака

HLT

Enter halt state

Остановить процессор

IDIV

Signed divide

Деление чисел со знаком

IMUL

Signed multiply

Перемножение чисел со знаком

IN

Input from port

Ввод данных из порта

INC

Increment by 1

Увеличение на 1

INT

Call to interrupt

Вызов по прерыванию

INTO

Call to interrupt if overflow

Вызов по переполнению

IRET

Return from interrupt

Возврат из прерывания

Jxx (JE, JG, JZ и t. д . )

Jump if condition

Условный переход (те — переход, если «равно», те — переход, если больше, те переход, если «0», и пр.)

JMP

Jump

Безусловный переход

LAHF

Load flags into AH register

Загрузить флаги в регистр ан

LDS

Load pointer using DS

Загрузить указатель, используя сегмент данных (об)

LODSB

Load byte

Загрузить (в регистр) байт

LODSW

Load word

Загрузить слово

LOOP/LOOPx

Loop control

Управление циклом «ДО/РОД» (ьооре — повторить, если «равно», ьос^е - повторить, если «не равно», ъооря — повторить, если «0», и пр.)

MOV

Move

Переслать

MOVSB

Move byte from string to string

Переслать байт из строки в строку

MOVSW

Move word from string to string

Переслать слово из строки в строку

Продолжение табл. ПЗ. 1

Команда

Расшифровка

Действие

MUL

Unsigned multiply

Перемножение чисел без знака

NEG

Two's complement negation

Дополнение к отрицанию

NOP

No operation

Нет операции

NOT

Negate the operand, logical NOT

Инвертировать операнд (логическое отрицание)

OR

Logical OR

Логическое или

OUT

Output to port

Вывести в порт

POP

Pop data from stack

Принять(«поднять») данные из стека

POPF

Pop data from flags register

Принять данные из регистра флагов

PUSH

Push data onto stack

Поместить («опустить») данные в стек

PUSHF

Push flags onto stack

Поместить флаги в регистр флагов

RCL

Rotate left (with carry)

Циклический сдвиг влево (с переносом)

RCR

Rotate right (with carry)

Циклический сдвиг вправо (с переносом)

REPxx

Repeat

Управление циклом «ПОКА/Ш1ЦЕ»

(лере — повторить, если «равно», лерие — повторить, если «не равно»,

И т. д.)

RET/RETN.

RETF

Return from procedure

Возврат из процедуры

ROL

Rotate left

Циклический сдвиг влево

ROR

Rotate right

Циклический сдвиг вправо

SAHF

Store AH into flags

Поместить регистр АН во флаги

SAL

Shift Arithmetically left (multiply)

Арифметический сдвиг влево (перемножение)

SAR

Shift Arithmetically right (signed divide)

Арифметический сдвиг вправо (деление со знаком)

SBB

Subtraction with borrow

Вычитание с займом единицы

SCASB

Compare byte string

Сравнить битовые строки

SCASW

Compare word string

Сравнить строки слов

SHL

Shift left (multiply)

Сдвиг влево (перемножение)

Окончание табл. ПЗ. 1

Команда

Расшифровка

Действие

SHR

Shift right (unsigned divide)

Сдвиг вправо (беззнаковое деление)

STC

Set carry flag

Установить флаг переноса

STD

Set direction flag

Установить флаг направления

STI

Set interrupt flag

Установить флаг прерывания

STOSB

Store byte in string

Поместить байт в строку

STOSW

Store word in string

Поместить слово в строку

SUB

Subtraction

Вычитание

TEST

Logical compare (AND)

Логическое сравнение (и)

WAIT

Wait until not busy

Ожидать, пока линия busy# не занята (используется с блоком ПЗ)

XCHG

Exchange data

Обмен данными

XLAT

Table look-up translation

Использование таблицы транслитерации

XOR

Exclusive OR

Исключающее или

MMX-команды исполняются в том же режиме процессора, что и команды с плавающей запятой. Поэтому при исполнении всех MMX-команд (кроме EMMS) «портится» слово состояния регистров с плавающей запятой. В табл. П3.2 приведены примеры некоторых команд (здесь МР — MMX-регистр; П32, П64 — 32- и 64-разрядные слова в ОП; но — непосредственный операнд; Р32 — целочисленный регистр).

Полный список ММХ-инструкций:

EMMS, MOV’D, MODQ, PACKSSDW, PACKSSWB, PACKUSWB, PADDB, PADDD, PADDSB, PADDSW, PADDUSB, PADDUSW, PADDW, PAND, PANDN, PCMPEQB, PCMPEQD, PCMPEQW, PCMPGTB, PCMPGTD, PCMPGTW, PMADDWD, PMULHW, PMULLW, POR, PSLLD, PSLLQ, PSLLW, PSRAD, PSRAW, PSRLD, PSRLQ, PSRLW, PSUBB, PSUBD, PSUBSB, PSUBSW, PSUBUSB, PSUBUSW, PSUBW, PUNPCKHBW, PUNPCKHDQ, PUNPCKHWD, PUNPCKLBW, PUNPCKLDQ, PUNPCKLWD, PXOR.

Все команды ММХ оперируют с двумя операндами — источник и приемник. В обозначениях команды правый операнд является источником, а левый — приемником.

Операнд-приемник может также быть и вторым операндом-источником. Команды записывают в приемник результат.

Операнд-источник для всех команд ММХ (кроме команд пересылок) может располагаться либо в памяти, либо в регистре ММХ. Операнд-приемник должен располагаться в регистре М MX.

Для команд пересылок операндами могут также выступать целочисленные РОН или ячейки памяти. Все 57 ММХ-команд разделены на следующие классы — арифметические, сравнения, преобразования, логические, сдвига, пересылки и смены состояний. Основные форматы представлены в табл. П3.2 (не представлены команды сравнения, логические, сдвига и смены состояний).

Таблица П3.2. Некоторые команды технологии ММХ

Мнемоника

Действие

Арифметические

PADD[В,W,D]

Сложение С округлением [byte, word, doubleword]

PADDS[В,W]

Сложить знаковые с насыщением [byte, word]

ADDUS[В,W]

Сложить беззнаковые с насыщением [byte, word]

PSUB[В,W,D]

Вычесть С Округлением [byte, word, doubleword]

PSUBS[В,W]

Вычесть знаковые с насыщением [byte, word]

PSUBUS[В,W

Вычесть беззнаковые с насыщением [byte, word]

PMULHW

Упакованное умножение, старшее для слов

PMULLW

Упакованное умножение, младшее для слов

PMADDWD

Упакованное умножение слов и сложение результирующих пар

Преобразования

PACKUSWB

Упаковка слов в байты (беззнаковая с насыщением)

PACKSS[WB,DW]

Упаковка слов в байт, двойных слов в слова (знаковая с насыщением)

PUNPCKH [BW,WD,DQ]

Распаковка с расслоением, старшая часть [bytes, words, doublewords]

PUNPCKL [BW,WD,DQ]

Распаковка с расслоением, младшая часть [bytes, words, doublewords]

Пересылка

MOV[D,Q]

Пересылка [doubleword, quadword] в или из ММХ-регистра

Технология 3DNow! предлагает для выполнения векторных ММХ и 3DNow! операций несколько устройств (пара умножителей, сумматоров и т. д.). Все команды 3DNow! имеют длительность исполнения 2 такта и полностью конвейеризированы. Полный список ЗОЫош!-инструкций:

  • введены с процессорами К6-2 femms, pavgusb, PF2ID, PFACC, PFADD, PFCMPEQ, PFCMPGE, PFCMPGT, PFMAX, PFMIN, PFMUL, PFRCP, PFRCPIT1, PFRCPIT2, PFRSQIT1, PFRSQRT, PFSUB, PFSUBR, PI2FD, PMULHRW, PREFETCH, PREFETCHW;
  • введены с процессорами Athlon PF2IW, pfnacc, pfpnacc, PI2FW, PSWAPD.

Формат команд 3DNow!:

mnemonic

mmregl

mmreg2/mem64

Операнд-приемник должен быть MMX-регистром (ммО— ММ7). Операнд-источник может быть как MMX-регистром, так и операндом в памяти. Используемые сокращения в мнемонике команд: Р - Packed (упакованный), F - Float (вещественный), I - integer (целочисленный). Список команд представлен в табл. ПЗ.З.

Таблица ПЗ.З. Система команд 3DNow!

Команда

Действие

PAVGUSB

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

PFADD

Упакованное вещественное сложение

PFSUB

Упакованное вещественное вычитание

PFSUBR

Упакованное вещественное обратное вычитание

PFACC

Упакованное вещественное сложение с накоплением

PFCMPGE

Упакованное вещественное сравнение, >=

PFCMPGT

Упакованное вещественное сравнение, >

PFCMPEQ

Упакованное вещественное сравнение, =

PFMIN

Упакованный вещественный минимум

PFMAX

Упакованный вещественный максимум

PI2FD

Преобразование 32-битовых целых в вещественные числа

PF2ID

Преобразование вещественных чисел в 32-битовые целые числа

Окончание табл. ПЗ.З

Команда

Действие

PFRCP

Приближенное обратное значение

PFRSQRT

Приближенное обратное значение квадратного корня

PFMUL

Упакованное вещественное умножение

PFRCPIT1

Первый шаг нахождения обратного значения

PFRSQIT1

Первый шаг нахождения обратного значения квадратного корня

PFRCPIT2

Второй шаг нахождения обратного значения или обратного значения квадратного корня

PMULHRW

Упакованное умножение целочисленных слов с округлением

FEMMS

Быстрая смена ММХ состояния и FPU х87

PREFETCH

Предвыборка как минимум 32 байт в кэш данных L1

SSE. Система команд Streaming SI MD Extensions — набор команд, которые обрабатывают только значения с ПЗ, подобно 3DNow!.

SSE вводит новые 128-битовые регистры, известные как хммо — хмм7. Каждый регистр позволяет обработать четыре упакованных 32-битовых числа ПЗ одинарной точности.

Полный список SSE-инструкций (см. также табл. П3.4):

  • операции С ПЗ — ADDPS, ADDSS, ANDNPS, ANDPS, CMPPS, CMPSS, COMISS, CVTPI2PS, CVTPS2PI, CVTSI2SS, CVTSS2SI, CVTTPS2PI, CVTTSS2SI, DIVPS, DIVSS, LDMXCSR, MAXPS, MAXSS, MINPS, MINSS, MOVAPS, MOVHLPS, MOVHPS, MOVLHPS, MOVLPS,MOVMSKPS, MOVNTPS, MOVSS, MOVUPS, MULPS, MULSS, ORPS, RCPPS, RCPSS, RSQRTPS, RSQRTSS, SHUFPS, SQRTPS, SQRTSS, STMXCSR, SUBPS, SUBSS, UCOMISS, UNPCKHPS, UNPCKLPS, XORPS;
  • операции с ФЗ — pavgb, pavgw, pextrw, pinsrw, pmaxsw,

PMAXUB, PMINSW, PMINUB, PMOVMSKB, PSADBW, PSHUFW.

SSE2 добавляет команды обработки чисел ПЗ двойной точности (64 бит) и 8/16/32-битовых целых чисел с использованием файла тех же 128-битовых ХММ-регистров.

Полный список SSE2-HHCTpyKunm

операции С ПЗ — ADDPD, ADDSD, ANDNPD, ANDPD, CMPPD, CMPSD, COMISD, CVTDQ2PD, CVTDQ2PS, CVTPD2DQ, CVTPD2PI, CVTPD2PS, CVTPI2PD, CVTPS2DQ, CVTPS2PD, CVTSD2SI,

Таблица П3.4. Некоторые команды набора SSE

Команда

Расшифровка

Действие

ADDPS

Packed Single-FP ADD

Суммирует два векторных операнда (по четыре 32-разряд-ных числа ПЗ)

ADDSS

Scalar Single-FP

ADD

Суммирует числа (32 разряда с ПЗ), расположенные в младших четвертях регистров

ANDNPS

Bitwise Logical AND NOT

Побитовая операция and над операндами, один их которых предварительно обращен (not)

ANDPS

Bitwise Logical AND

Побитовая операция and

CMPccPS

Packed Single-FP Compare

Сравнивает векторы (по четыре 32-разрядных числа ПЗ)

CMPccSS

Scalar Single-FP Compare

Сравнивает числа (32 разряда с ПЗ), расположенные в младших четвертях регистров

COMISS

Scalar Compare and Set EFLAGS

Сравнивает числа (32 разряда с ПЗ), расположенные в младших четвертях регистров, и соответственно устанавливает флаги процессора. Вырабатывает сигнал исключения, если один из операндов равен SNaN или QNaN

CVTPI2PS

Packed Integer to

Floating-Point

Conversion

Конвертирует пару 32-битовых целых чисел в 32-битовые с ПЗ, результат записывается в младшие 64 разряда регистра результата

CVTPS2PI

Packed

Floating-Point to Integer Conversion

Конвертирует пару 32-битовых чисел с ПЗ в 32-битовые с

ФЗ

CVTSI2SS

Scalar Integer to

Floating-Point

Conversion

Конвертирует число (32 разряда с ФЗ) в 32-битовое ПЗ, записывает его в младшую четверть регистра результата

CVTSS2SI

Scalar

Floating-Point to Integer Conversion

Конвертирует число (32 разряда с ПЗ) в 32-битовое ФЗ

FXRSTOR

Restore FP, MMX and SSE States

Восстанавливает состояние процессора (FP, ММХ или SSE) по данным в памяти, предварительно сохраненных командой FXSAVE

LDMXCSR

Load MXCSR

Считывает из памяти 32 бита и заносит их в MXCSR (регистр статуса SSE)

MAX PS

Packed Single-FP Maximum

Сравниваются два вектора по 32 бита (ПЗ) и максимумы заносятся в соответствующие четверти регистра результата

MAXSS

Scalar Single-FP Maximum

Определяется максимум из чисел (32 разряда с ПЗ), расположенных в младших четвертях регистров

Окончание табл. П3.4

Команда

Расшифровка

Действие

MINPS

Packed Single-FP Minimum

Сравниваются два вектора по 32 бита (ПЗ) и минимумы заносятся в соответствующие четверти регистра результата

MINSS

Scalar Single-FP Maximum

Определяется минимум из чисел (32 разряда с ПЗ), расположенных в младших четвертях регистров

MOVHLPS

Move High to Low

Помещает 8 байт из верхней половины исходного регистра в младшую половину регистра результата

MOVHPS

Move High

Перемещает 8 байт из памяти в верхнюю половину регистра

MOVLHPS

Move Low to High

Помещает 8 байт из нижней половины исходного регистра в старшую половину регистра результата

MOVLPS

Move Low

Перемещает 8 байт из памяти в нижнюю половину регистра

ORPS

Bitwise Logical OR

Побитовая операция 0R

RCPPS

Packed Single-FP

Reciprocal

Approximation

Для каждого из четырех 32-битовых значений с ПЗ вычисляется приближенное значение обратной величины (с точностью 3/8192) и записывается в соответствующие четверти регистра результата

RCPSS

Scalar Single-FP

Reciprocal

Approximation

Вычисляется приближенное значение обратной величины для числа (ПЗ) в младшей четверти регистров

STMXCSR

Store MXCSR

Копирует регистр (регистр статуса SSE) в память

XORPS

Bitwise Logical XOR

Побитовая операция X0R

CVTSD2SS, CVTSI2SD, CVTSS2SD, CVTTPD2DQ, CVTTPD2PI, CVTPS2DQ, CVTTSD2SI, DIVPD, DIVSD, MAXPD, MAXSD, MINPD, MINSD, MOVAPD, MOVHPD, MOVLPD, MOVMSKPD, MOVSD, MOVUPD, MULPD, MULSD, ORPD, SHUFPD, SQRTPD, SQRTSD, SUBPD, SUBSD,UCOMISD, UNPCKHPD, UNPCKLPD, XORPD;

операции С ФЗ MOVDQ2Q, MOVDQA, MOVDQU, MOVQ2DQ, PADDQ, PMULUDQ, PSHUFHW, PSHUFLW, PSHUFD, PSLLDQ, PSRLDQ, PUNPCKHQDQ, PUNPCKLQDQ.

Однако дополнительной трудностью явилось то, что операционные системы должны были «уметь» обрабатывать команды этого нового набора, чтобы сохранять состояния их регистров. Intel предложила немного измененную версию защищенного режима,

названную улучшенным режимом (Enhanced mode), который допускает использование команд SSE (в то время как они блокируются в обычном защищенном режиме). ОС, которая «знает» о SSE, автоматически переключается в улучшенный режим, тогда как «ОС-незнайка» войдет в традиционный защищенный режим.

SSE3 — набор команд, также известный как Prescott New Instructions (PNI), является третьей итерацией набора команд SSE для IA-32 (табл. П3.5). Intel использует SSE3 с начала 2004 г. в ЦП Pentium IV Prescott. В апреле 2005 г. AMD также включает SSE3 в ЦП Athlon 64 (версия Е — Venice и San Diego). SSE3 не требует дополнительных регистров.

Таблица П3.5. Некоторые команды SSE3

Команда

Расшифровка

Исходные данные

Результат

«Вертикальная» арифметика

ADDSUBPD

Add-Subtract-Packed-

Double

адддьадад

А - {А, - А,, Д + #,}

ADDSUBPS

Add-Subtract-Packed-

Single

{А()А]А2АЪ}, {В()В]В2В3}

{А() — В(), А] + 5,,

А2 - В2, А3 + В3}

«Горизонтальная» арифметика

HADDPD

Horizontal-Add-Packed-

Double

ЇЛА}, {ад

0 + А, А + Д}

HADDPS

Horizontal-Add-Packed-

Single

йА1А2А3}90В]В2В3}

0 + 5,, В2 + Въ,

А() + А19 А2 + А3)

HSUBPD

Horizontal-Subtract-

Packed-Double

{ад, {ад

>

і

>

J30

і

HSUBPS

Horizontal-Subtract-

Packed-Single

{АДААЫАЛад

0 А1? А2 А3,

Во ~ В19 В2 — В3}

Прочие команды

LDDQU

Загрузка 128 бит невыровненных данных из памяти в регистр ХММ, с предотвращением пересечения границы строки кэша

Окончание табл. П3.5

Команда Расшифровка

Исходные данные Результат

MOVDDUP, MOVSHDUP, MOVSLDUP

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

FISTTP

FISTTP — преобразование вещественного числа в целое с сохранением целочисленного значения и округлением в сторону нуля

MONITOR, MWAIT

Оптимизируют многопроцессные приложения (multi-threaded), увеличивают производительность процессоров в режиме Hyper-Threading

SSSE3Supplemental Streaming SIMD Extension 3 (дополнительное расширение потоковых команд SIMD 3), название четвертой итерация для набора команды SSE (Intel считает это просто пересмотром SSE3). Эти команды также известны как TNI (Tejas New Instructions) или MNI (Merom New Instructions) no первым процессорам, которые должны были их поддерживать.

Представленный в микроархитектуре Intel Core, набор SSSE3 доступен в процессорах Xeon 5100 (серверы и рабочие станции) и Intel Core 2 (ноутбуки и настольные ПК).

SSSE3 содержит 16 новых команд сравнительно с SSE3 (Intel считает это как 32, так как каждая команда имеет две формы — для 64-битовых регистров ММХ и 128-битовых ХММ).

В табл. П3.6 функция satsw (X) (saturate to signed word — насыщение к слову со знаком) означает, что целое со знаком х преобразуется в -32 7 68 (если оно меньше, чем -32 768) либо в + 32 7 67 (если оно больше, чем 32 767), и оставляется без изменения в противном случае. «Регистр» (Р) относится к векторным регистрам ММХ или ХММ.

SSE4 — набор команд, используемых в процессорах с микроархитектурами Intel Core и AMD К10 (K8L). Система команд была объявлена 27 сентября 2007 г. на Форуме разработчиков Intel.

Intel SSE4 включает 54 команды. Подмножество, содержащее 47 команд, известное как SSE4.1, впервые появляется в ЦП Penryn. Дополнение — SSE4.2, включает еще 7 команд, впервые использованные в ядре Nehalem.

AMD также вводит ряд новых SSE-инструкций (с выпуском процессора Phenom), называя их SSE4a. Эти команды не поддерживаются ЦП Intel-SSE4.1 и наоборот, процессоры AMD не поддерживают Intel-SSE4.1 (табл. П3.7).

Таблица П3.6. Команды SSSE3

Команда

Расшифровка

Действие

PSIGNB, PSIGNW,

PSIGND

Упаковка со знаками (Packed Sign)

Добавляет знак «-» к элементам (ю, в, э и пр.) в регистре, если соответствующие элементы другого регистра отрицательны

PABSB, PABSW,

PABSD

Упаковка абсолютных величин (Packed Absolute Value)

Заполняет элементы регистра (и, в, о и пр.) соответствующими элементами другого регистра

PALIGNR

Упаковка с выравниваем вправо (Packed Align

Right)

Соединяет содержание двух регистров, затем подстрока с длиной регистра сдвигается на величину,заданную непосредственным операндом

PSHUFB

Упаковка с перестановкой байтов (Packed Shuffle Bytes)

Входные регистры:

= {Дм Д> Аг> • ••}>

Р2 = {В0, Вх, В-,,...}.

Результат: Р] = {АВаВгАВг,...}

PMULHRSW

Перемножение упакованных с округлением (Packed Multiply High with Round and Scale)

Рассматриваются 16-битовые слова регистров Р и Р2 как числа ФЗ 15 бит со знаком (между -1 и +1) и перемножаются с округлением

PMADDUBSW

Суммирование и перемножение (Multiply and

Add Packed Signed and Unsigned Bytes)

Входные регистры:

В = {Д)> Д> • • • }>

В2 {в0, Вх, В2, ?. ? }•

Результат:

{8а18лг(Л0Я01 + АХВ^

{satsw(Д2Д2l + А3В3<), ...}

PHADDW/PHSUBW,

PHADDD/PHSUBD

Горизонтальное сложение/вычитание (Packed Horizontal Add/Subtract — Words or Doublewords)

Входные регистры:

В = {Д)> Д> • ••}>

Р2 = {В0, В2,...}.

Результат:

0 ± А„А2 ± А3, ...

... Ва ± Вх, В2 ± Въ, ...}

PHADDSW/PHSUBSW

Горизонтальное сложение/вычитание с насыщением (Packed Horizontal Subtract and Saturate Words)

Подобна РНАООИ/Рнэивю, но результат: {satsw(Д) ± Л,), satsw(Д2 ± Д3), ...

... эа18м(В{) - /?,), ...}

Таблица ПЗ. 7. Некоторые команды SSE4

Команда

Расшифровка

Действие

Набор SSE4.1

BLENDPD, BLENDPS, BLENDVPD, BLENDVPS, PBLENDVB, PBLENDW

Blend Packed Double and

Single Precision Floating-Point Values

Условное копирование чисел ПЗ простой или двойной точности из одного места размещения в другое

DPPD, DPPS

Dot Product of Packed Double and Single Precision Floating-Point Value

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

EXTRACTPS, INSERTPS

Extract and Insert Packed Single Precision Floating-Point Value

Извлечение и вставка упакованных чисел ПЗ обычной точности

MPSADBW

Compute Multiple Packed Sums of Absolute Difference

Вычислить абсолютную разность нескольких упакованных сумм

PACKUSDW

Pack with Unsigned Saturation

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

PEXTRB,

PEXTRD/PEXTRQ, PEXTRW

Extract Byte, Dword/Qword, and Word

Извлечь байт, сдвоенное/счетверенное слово и слово

PHMINPOSUW

Packed Horizontal Word Minimum

Горизонтальный минимум упакованных слов

PINSRB, PINSRD/PINSRQ

Insert Byte and Dword/Qword

Вставить байт или сдвоенное/счетверенное слово

PMAXSB, PMAXSD,

PMAXUD, PMAXUW,

PMINSB, PMINSD,

PMINUD, PMINUW

Find Minimum and Maximum of Packed Signed, Unsigned,

Dword and Word-length

Integers

Найти минимум и максимум упакованных, со знаком или без целых чисел обычной и двойной длины

PMOVSX, PMOVZX

Packed Move with Sign and

Zero Extend

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

PMULDQ, PMULLD

Multiply Packed Signed Dword Integers and Store Low Result

Перемножение целых двойной длины со знаком и запись младших разрядов

PTEST

Logical Compare

Логическое сравнение

ROUNDPD, ROUNDPS, ROUNDSD, ROUNDSS

Round Packed and

ScalarDouble and Single Precision Floating-Point Values

Округление упакованных чисел

ПЗ до целых значений

Набор SSE4.2

CRC32

Accumulate CRC32 Value

Накопление контрольной суммы

PCMPESTRI, PCMPISTRI

Packed Compare Explicit and Implicit Length Strings, Return Index

Сравнить упакованные строки равной или различной длины, выдать указатель

PCMPESTRM, PCMPISTRM

Packed Compare Explicit and Implicit Length Strings, Return Mask

Сравнить упакованные строки равной или различной длины, выдать маску

Окончание табл. ПЗ. 7

Команда

Расшифровка

Действие

PCMPEQQ, PCMPGTQ

Compare Packed Data For Equal or Greater Than

Сравнить упакованные данные на «равно» или «больше»

POPCNT

«Population Count» (Return the Count of Number of Bits Set to 1)

Подсчет количества битов (например, установленных в «1»)

Набор SSE4a

LZCNT

Leading Zero Count

Бит-манипуляции. Подсчет ведущих нулей слова

POPCNT

Population count (count number of bits set to 1)

Бит-манипуляции. Подсчет нулей или единиц в слове

EXTRQ/INSERTQ

Combined mask-shift instructions

Команды комбинированного маскирования/сдвига

MOVNTSD/MOVNTSS

Scalar streaming store instructions

Команды потоковой записи данных

SSE5 (сокращение от Streaming SI MD Extensions, версия 5) — объявлен AMD 30 августа 2007 г., представляет собой набор дополнительных 128-разрядных команд для AMD64 для процессорного ядра Bulldozer, намечающегося к выходу в 2009 г.

SSE5 включает 170 команд (в том числе 46 основных команд), многие из которых предназначены для ускорения параллельной обработки. Некоторые из SSE5-KOMaaa являются трехадресными, но приспособленными к условиям RISC-процессоров, и их использование снижает среднее число команд на цикл для обработки кодов х86. Основные новые инструкции включают:

  • • команды смешанного перемножения с накоплением (FMACxx);
  • • команды целочисленного умножения с накоплением
  • (IMAC, IMADC)
  • • команды перестановок (pperm, permpx) и условных пересылок;
  • • команды управления точностью, округлением и преобразования данных.

Специалисты AMD полагают, что SSE5 существенно повысит эффективность, особенно в высокоскоростных вычислениях (High Performance Computing — НРС), мультимедийных приложениях и защите данных, включая 5-кратное повышение эффективности кодирования (на примере алгоритма DES) и не менее чем на 30 % повышение эффективности цифровой обработки сигналов видеопотока.

 
<<   СОДЕРЖАНИЕ