December 12 2017 08:08:46
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
форматы упакованных данных
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ

Отображение ММХ-регистров на регистры блока FPU фиксировано и не зависит от значения поля ТОР регистра состояния FPSR. В обозначении ММn число n указывает на физический номер регистра ММn ® Rn. Напомним, что при выполнении операций FPU в обозначении регистра ST(n) число n указывает относительный номер регистра, а его физический номер определяется значением поля ТОР. Поэтому при значении ТОР = 000 регистр ММ0 отображается на ST(0), MM1 - на ST(1) и т. д.; при ТОР = 010 ММ0 отображается на ST(6), ММ1 - на ST(7), MM2 - на ST(0) и т. д.

Так как блоки ММХ и FPU используют физически одни и те же регистры, то для сохранения и восстановления содержимого ММХ-регистров используются команды FSAVE и FRSTOR.

На рис. 2.23 приведены форматы упакованных данных, обрабатываемых ММХ-командами:

•  упакованные байты В7-0 (8 элементов по 8 бит, рис. 2.23,а);

•   упакованные слова W3-0 (4 элемента по 16 бит, рис. 2.23,6);

•  упакованные двойные слова D1-0 (2 элемента по 32 бита, рис. 2.23,в);

•  упакованное счетверенное слово Q (1 элемент, 64 бита, рис. 2.23,г).

а)

63         56 56         48 47         40 39         32 31         24 23         16 15           8 7             0
B7 В6 В5 В4 ВЗ В2 В1 В0
б)


63                             48 47                             32 31                             16 15                               0
W3 W2 W1 W0
в)
63                                                                   32

31                                                                     0
D1 D0

г) 63                                                                                                                                                  0

Q

Рис. 2.23. Форматы упакованные данных: а) ‑ байты, б) ‑ слова, в) – двойные слова, г) ‑ счетверенное слово

Таблица 2.39 Влияние ММХ-команд на содержимое регистров FPU

Тип команды Регистр TW Поле ТОР Поле порядка и знаковый бит ММn (79-64) Поле мантиссы ММn (63-0)
Чтение из регистра ММn
Запись в регистр ММn
EMMS
Все поля 00 Все поля 00 Все поля 11 000
000
000
Не изменяется
Заполняется единицами
Не изменяется
Не изменяется
Перезаписывается
Не изменяется

Элементами обрабатываемых данных являются соответственно байты, 16-разрядные слова, 32-разрядные двойные слова или 64-разрядные счетверенные слова. При обработке упакованных данных с помощью ММХ-команд одновременно (параллельно) выполняется одна и та же операция над всеми элементами заданного формата, каждый из которых представляет отдельное число (данные). Например, при помощи одной команды можно сложить элементы, хранящиеся в одном ММХ-регистре с элементами в другом ММХ-регистре, получив восемь отдельных результатов (сумм) в виде упакованных байтов. Одновременно можно обработать либо восемь байт, либо четыре слова, либо два двойных слова, либо одно счетверенное слово. Таким образом, реализуется принцип SIMD-обработки: одновременное выполнение одной команды над многими данными (до восьми 8-разрядных элементов). В памяти упакованные данные располагаются так, как это принято в Intel-архитектуре, т. е. младший байт размещается первым - по младшему адресу (рис. 2.24).



63    56 55    48 47    40 39    32 31    24 23    16 15      8 7        0


В7 В6 В5 В4 В3 В2 В1 В0



Адрес 2008h
Адрес 2000h

Рис. 2.24. Расположение упакованных байтов в памяти по адресу 2000h

Ряд ММХ-команд используют арифметику с насыщением (saturation arithmetic). Если произошло переполнение, то в арифметике с насыщением результатом операции будет ближайшее к полученному значению число, которое умещается в формате, определенном для результата. Таким образом, результат как бы «насыщается» до максимально возможного значения. Например, результатом сложения двух байтов без знака B8h (184) и E1h (225), при использовании арифметики с насыщением, будет байт FFh (255) (рис. 2.25,а). Если сложить байты со знаком 90h (- 112) и E1h (- 31), то результатом сложения с насыщением будет байт 80h (- 128) (рис. 2.25,6).

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

а) Числа без знака 6) Числа со знаком
1 0 1 1 1 0 0 0 B8h 1 0 0 1 0 0 0 0 90h
+
+
1 1 1 0 0 0 0 1 Е1h 1 1 1 0 0 0 0 1 Е1h
=
=
1 1 1 1 1 1 1 1 FFh 1 0 0 0 0 0 0 0 99h

Рис. 2.25. Выполнение операций сложения при использовании арифметики с насыщением


Таблица 2.40 Пределы насыщения


Нижний предел Верхний предел

Со знаком
Байт 80h         =-128 7Fh        =127
Слово 8000h      = -32768 7FFFh     = 32767
Двойное слово 80000000h =-2147483648 7FFFFFFFh = 2147483647

Без знака
Байт 00h         =0 FFh       = 255
Слово 0000h       = 0 FFFFh     = 65535
Двойное слово 00000000h = 0 FFFFFFFFh = 4294967295

Ряд ММХ-команд выполняет операции обычной арифметики с циклическим переносом (wraparound arithmetic). Мнемокоды таких команд не имеют суффикса S или US.

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

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.04 секунд 2,295,753 уникальных посетителей