Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛК_МашЗавЯП_А4.doc
Скачиваний:
158
Добавлен:
10.06.2015
Размер:
19.94 Mб
Скачать
    1. XmMрасширение с плавающей точкой

Синтаксис XMM команд:

  • Мнемоника приемник, источник

  • Мнемоника приемник, источник, маска

  • Мнемоника приемник

Приемник – всегда регистр XMM, источник - регистр XMM или ячейка памяти,

      1. Типы данных

XMM-расширение реализовано в виде аппаратно-программного модуля SSE, который включает дополнительные восемь регистров разрядностью в 128 бит, имеющих обозначение ХММО - ХММ7,

и 32-разрядный регистр управления/состояния MXCSR.

Программная часть XMM-расширения включает в себя набор команд для работы с данными в формате плавающей точки. Содержимое ХММ-регистра представляет собой четыре 32-разрядных операнда с плавающей точкой в коротком формате (SinglePrecisionFloatingPoint,SPFP). Представление данныхSSE-расширения соответствует стандартуIEEE-754, а сам формат данных показан на рисунке.

Здесь мантисса (mantissa) и порядок (exponent) формируют число в формате SPFP в соответствии с формулой

мантисса * 2порядок.

Этот формат данных несопоставим с тем, который принят для математического сопроцессора (число в 80-разрядном расширенном формате), поэтому в некоторых случаях при разных границах выравнивания результаты вычислений с использованием форматов FPU и SSE могут различаться.

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

Структура полей регистра управления/состояния (MXCSR) во многом напоминает ту, что реализована в регистрах состояния (swr) и управления (cwr) математического сопроцессора. Состоянием вычислений можно управлять путем установки определенных значений в поля этого регистра.

Набор инструкций XMM-расширения включает 70 команд.

Значительная часть команд может выполняться в двух контекстах: скалярном и параллельном. Это относится к арифметическим командам, а также к командам сравнения. Команды обрабатывают:

  • В параллельном контексте одновременно 4 двойных слова и имеют в своей мнемонике суффикс ps.

  • В скалярном контексте только младшие 32-разрядные двойные слова упакованных операндов, не затрагивая при этом три старших двойных слова. Исключение составляют некоторые команды скалярной пересылки данных. Мнемоническое обозначение этих команд включает суффикс ss.

В процессе обработки данных команды XMM-расширения могут возбуждать исключительные ситуации, которые возникают, если происходит одно из следующих событий:

  • некорректная операция (invalid operation);

  • денормализованный операнд (denormalized operand);

  • деление на 0 (divide-by-zero);

  • арифметическое переполнение (numeric overflow);

  • потеря значащих разрядов (numeric underflow);

  • потеря точности (inexact result).

При возникновении исключительных ситуаций устанавливаются биты 0-5 в регистре управления/состояния (MXCSR). Каждая исключительная ситуация может быть замаскирована путем установки в 1 битов 7-12 регистра MXCSR. Если какое-либо исключение замаскировано, то оно обрабатывается процессором по стандартному алгоритму, после чего продолжается выполнение программного кода. Формат полей регистра MXCSR и их назначение показаны на рис. 13.5.

Биты 13-14 регистра MXCSR поля RC (или гс, что одно и то же) задают режим округления. По умолчанию устанавливается режим округления к ближайшему значению числа с плавающей точкой в коротком формате. Эти биты можно установить программно, причем возможны следующие комбинации:

  • 00 — округление к ближайшему числу;

  • 01 — округление к меньшему числу;

  • 10 — округление к большему числу;

  • 11 — округление с отбрасыванием дробной части.

Бит 15 используется, если результат операции близок к нулю. При этом процессор выполняет следующие действия:

  • возвращает значение 0 и знак результата;

  • устанавливает флаги Р (бит 5) и U (бит 4);

  • маскирует биты исключений.

Программная реализация SSE-расширения включает несколько десятков команд. Все их условно можно разделить на несколько групп:

  • команды передачи данных;

  • арифметические команды;

  • команды сравнения;

  • команды преобразования;

  • логические команды;

  • дополнительные команды.

  • Классификация команд

После обзора команды будут рассмотрены подробно.

Категория

Подкатегория

Команды

Передачаданных

Арифметика

Скалярные

Параллельные

Сравнение

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

Логика

Дополнительные

Вычисления

Извлечения

Извлечения знака

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]