Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Расширенные форматы данных






1. MMX (Matrix Math eXtension, Multi-Media eXtension ). В МП присутствует набор команд, позволяющий использовать регистры блока FPU для параллельной обработки пакета целочисленных данных в соответствии с технологией SIMD – " single instruction, multiple data - одна инструкция, несколько операндов". MMX-команды обеспечивают параллельную обработку нескольких байтов, слов или двойных слов.

Команды технологии MMX работают со следующими типами данных, размещенными в 64 младших разрядах 80-разрядных регистров стека FPU:

· восемь упакованных байтов (Packed Byte),

· четыре упакованных 16-разрядных слова (Packed Word),

· два упакованных двойных 32-разрядных слова (Packed Doubleword),

· одно 64-разрядное слово (Quadword).

К регистрам MM0,..., MM7 обеспечивается непосредственный доступ с помощью специальных ММХ-команд, при выполнении которых:

· все биты порядка и знаковый бит в соответствующем регистре с плавающей запятой заполняются единицами (это биты 64-79),

· все разряды слова состояния регистров с плавающей запятой заполняются нулями.

Примеры команд fmul A и pmulhw MM3, MM4 показаны на рис.7.

а) Команды с плавающей запятой работают со стеком регистров. Все вычисления происходят в регистре st(0), на который показывает указатель начала стека TOS (top of stack). На рисунке показан результат умножения st(0) на A. При выполнении команды в слове состояния могут измениться лишь два бита, соответствующие регистру st(0). б) Большинство MMX-команд могут работать с двумя регистрами. На рисунке команда pmulhw умножает слова регистра ММ3 на слова регистра MM4 и записывает результаты в MM3. Биты 64-79 в соответствующем регистре с плавающей запятой заполняются единицами (в " плавающей" арифметике это состояние Nan). Все разряды слова состояния регистров с плавающей запятой заполняются нулями.

Рис.7 Примеры выполнения команд

Основа технологии MMX - расширение набора команд процессора с учетом особенностей мультимедиа-программ. Обычно в таких программах:

· данные имеют небольшое число разрядов;

· однотипные операции выполняются над многими данными;

· поток команд редко зависит от данных;

· требуется высокая производительность вычислений.

 

Команды ММХ объединены в следующие группы:

· арифметические (Arithmetic Instructions),

· сравнение (Comparison Instructions),

· преобразование форматов (Conversion Instructions),

· логические (Logical Instructions),

· сдвиг (Shift Instructions) – логический и арифметический,

· пересылка данных (Data Transfer Instructions) – между регистрами ММХ и целочисленными регистрами или памятью,

· очистка регистров ММХ (Empty MMX State) – установка признаков пустого регистра в слове тегов (комбинация 11).

Команды ММХ не влияют на признаки условий в слове состояния FPU. В отличие от стековых регистров FPU регистры ММХ адресуются непосредственно, а не относительно. Любая команда ММХ обнуляет поле указания вершины стека в регистре состояния сопроцессора. Неиспользуемые в регистрах ММХ биты (79: 64) заполняются единицами. Поэтому ошибочная обработка данных ММХ командой FPU приведет к исключению.

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

Команды MMX и FPU несовместны и их частое чередование с перенастройкой конвейера на обработку (например, сброс регистров ММХ после команд ММХ перед командами FPU) существенно снижает быстродействие вычислений.

Регистры ММХ не могут использоваться для адресации памяти.

В технологии ММХ применяется обработка переполнения согласно арифметике с насыщением (saturating arithmetic). В отличие от обычной арифметики с циклическим переполнением (wraparound mode) фиксируется максимально (или минимально) возможное значение для текущего типа данных, а перенос игнорируется.

В процессорах архитектуры Intel сохранение состояния задачи с MMX-командами аналогично сохранению состояния задачи, использующей арифметику с плавающей запятой. Поэтому механизм переключения задач многозадачных операционных систем совместим с задачами, использующими MMX-команды.

Наличие поддержки ММХ определяется по биту 23 регистра EDX после вызова инструкции CPUID.

 

 

2. SSE (Streaming SIMD Extension). Используется вSIMD-командах для работы с 32-разрядными данными одинарной точности с плавающей запятой (SPFP-данными - single precision floating point). Для хранения данных используются восемь 128-разрядных регистров XMM (XMM0,..., XMM7), которые дополнены регистром состояния/управления MXCSR. XMM-регистры являются новыми компонентами процессора, а SIMD-команды используют новый тип данных - 128-разрядное значение, содержащее четыре последовательно расположенных (" упакованных") 32-разрядных числа с плавающей запятой. Возможна также параллельная обработка двух чисел в формате длинного с плавающей запятой.

Рис.8 Упакованные SPFP-данные

Каждое 32-разрядное число с плавающей запятой имеет 1 знаковый бит, 8 битов характеристики и 23 бита мантиссы, что соответствует стандарту IEEE-754 (SPFP-числа).

Первоначально команды имели название KNI (Kathmai New Instruction), т.к. были ориентированы на применение в процессорах Pentium-III, имевших также название Kathmai.

SIMD-команды поддерживают два типа операций над упакованными данными с плавающей запятой - параллельные и скалярные.

Параллельные операции, как правило, действуют одновременно на все четыре 32-разрядных элемента данных в каждом из 128-разрядных операндов. В именах команд, выполняющих параллельные операции, присутствует суффикс ps. Например, команда addps складывает 4 пары элементов данных и записывает полученные 4 суммы в соответствующие элементы первого операнда.

Скалярные операции действуют на младшие (занимающие разряды 0-31) элементы данных двух операндов. Остальные три элемента данных в выходном операнде не изменяются (исключение составляет команда скалярного копирования movss). В имени команд, выполняющих скалярные операции, присутствует суффикс ss (например, команда addss).

Большинство команд имеют два операнда. Данные, содержащиеся в первом операнде, могут использоваться командой, а после ее выполнения, как правило, замещаются результатами. Данные во втором операнде используются в команде и после ее выполнения не изменяются. Далее в тексте входным называется второй операнд, а выходным - первый.

 

SIMD-команды обработки целочисленных данных (аналогично командам технологии MMX):

· Выполняют SIMD-операции над несколькими целочисленными элементами данных, упакованными в 64-разрядные группы (байты, слова, длинные слова, 64-разрядные слова),

· Загружают и хранят упакованные данные в 64-разрядных MMX-регистрах (отдельно от 128-разрядных XMM-регистров данных с плавающей запятой).

SIMD-команды содержат префикс и суффиксы, указывающие на характер выполняемой операции и тип используемых данных. Префикс p указывает на то, что команда выполняет параллельные операции над несколькими элементами данных. Суффиксы b, w, d и q указывают на используемый тип данных. Суффиксы u или s указывают на использование данных со знаком или без знака, соответственно. Так, например, команда умножения pmulhuw работает с данными типа " упакованные 16-разрядные слова без знака".

Команды управления кэшированием обеспечивают:

· Управление кэшированием данных с целью минимизации " засорения" кэш-памяти и сокращения числа обращений на запись в основную память;

· Упреждающее кэширование данных с целью организации параллельной работы конвейера.

Работа этих команд базируется на следующей классификации данных:

· Данные со слабой локализацией – этоданные, к которым программа обращается нерегулярно и через значительные интервалы времени. Примером может являться набор данных, описывающих трехмерный объект, если обращение к каждой вершине этого набора происходит только один раз при генерации очередного кадра.

· Данные с временной локализацией хранятся в ячейках памяти, к которым МП обращается большое число раз за короткий промежуток времени. Пример - циклы.

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

Команды сохранения и восстановления компонент состояния МП ориентированы на работу с регистрами XMM и регистром состояния и управления MXCSR.

Рис.9 Регистр MXCSR

Состояние процессора архитектуры Intel - это состояние всех его регистров, доступных программе. Сохранение и восстановление состояния процессора необходимо при переключении контекста задач.

Назначение разрядов:

0-5 (поле обнаружения исключений) - содержат 6 флагов-признаков арифметических исключений. При наличии исключения соответствующий флаг установлен в 1, в противном случае - нет.
6 - не используется.
7-12 (поле маскирования исключений) – при установке маски соответствующее исключение маскировано и обрабатывается процессором, а при сброшенном флаге вызывается программный обработчик для этого исключения.
13-14 (RC-поле) - устанавливают режим округления данных.
15 (FZ-поле) - устанавливает режим flush-to-zero.
16-31 - не используются.

Регистр состояния и управления MXCSR служит для:

1. Установки флагов обнаружения арифметических исключений. Под арифметическими исключениями понимаются генерируемые МП при вычислениях с использованием SPFP-команд: недействительная операция (I), денормализованный операнд (D), деление на нуль (Z), переполнение (O), исчезновение порядка (U), неточный результат (P). Обнаружение и обработка каждого из этих исключений управляется флагами состояния (биты 0 - 5) и битовой маской (биты 7 - 12) в регистре MXCSR.

2. Установки флагов маскирования арифметических исключений. Арифметическое исключение обрабатывается с учетом маскирования. Исключение считается маскированным, если соответствующий бит поля обработки исключений в регистре MXCSR установлен в 1, и немаскированным - в противном случае. Маскированные исключения обрабатываются процессором, который формирует приемлемый результат (в соответствии с процедурой, установленной по умолчанию) и продолжает выполнение программы. Немаскированные исключения инициируют программный обработчик исключений.

3. Установки режима округления. Поле RC (биты 13 и 14) регистра MXCSR управляет режимами округления результатов при выполнении SIMD-команд над данными с плавающей запятой. Возможны четыре режима округления:

- 00 – Округление до ближайшего (по умолчанию),

- 01 – Округление до меньшего или равного,

- 10 – Округление до большего или равного,

- 11 – Округление в сторону нуля.

4. Установки режима flush-to-zero. Если произошло исчезновение порядка (underflow), а поле flush-to-zero (FZ, бит 15) регистра MXCSR установлено в 1, то МП возвращает нулевое значение в качестве результата, присваивая ему знак истинного результата и устанавливает в 1 биты 4 и 5 регистра MXCSR (флаги обнаружения исключений исчезновения порядка и неточного результата). Указанные действия выполняются при маскировании исключения underflow (бит 11 регистра MXCSR установлен в 1). При таком режиме увеличивается скорость работы программ, в которых часто происходит исчезновение порядка результата, но при одновременном снижении точности вычислений.

Возможны случаи, когда результаты вычислений с плавающей запятой х87 могут отличаться от результатов вычислений, использующих SIMD SPFP-команды.


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2026 год. (1.799 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал