Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 79

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 73 74 75 76 77 78 < 79 > 80 81 82 83 84 85 .. 528 >> Следующая

изменяется Не изменяется Перезаписывается Не изменяется
Элементами обрабатываемых данных являются соответственно байты, 16-
разрядные слова, 32-разрядные двойные слова или 64-разрядные счетверенные
слова. При обработке упакованных данных с помощью ММХ-команд одновременно
(параллельно) выполняется одна и та же операция над всеми элементами
заданного формата, каждый из которых представляет отдельное число
(данные). Например, при помощи одной команды можно сложить элементы,
хранящиеся в одном MMX-регистре с элементами в другом MMX-регистре,
получив восемь отдельных результатов (сумм) в виде упакованных байтов.
Одновременно можно обработать либо восемь байт, либо четыре слова, либо
два двойных слова, либо одно счетверенное слово. Таким образом,
реализуется принцип SIMD-обработки: одновременное выполнение одной
команды над многими данными (до восьми 8-разрядных элементов). В памяти
упакованные данные располагаются так, как зто принято в lntel-
архитектуре, т. е. младший байт размещается первым - по младшему адресу
(рис. 2.24).
63 56 56 48 47 40 39 32 31 24 23 16 15
8 7 О
~| В7 | В6 | В5 | В4 | ВЗ I В2 | В1 I ВО |
Адрес 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). Если результат операции не
выходит за пределы насыщения, то арифметика с насыщением даеттотже
результат, что и обычная арифметика.
а) Числа без знака б) Числа со знаком
I 1 0 1 1 1 0 0 0 ] B8h И 0 0 1
0 0 0 01
+
+
I 1 1 1 0 0 0 0 1 ] E1h I 1 1 1 0
0 0 0 1 I
=
=
h 1 1 1 1 1 1 1 l FFh И 0 0 0
0 0 0 0 I
Рис. 2.25. Выполнение операций сложения при использовании арифметики с
насыщением
СИСТЕМА КОМАНД: ОПЕРАЦИИ ММХ
Таблица 2.40
Пределы насыщения
Нижний предел Верхний предел
Со знаком
Байт 80h =-128 7Fh =127
Слово 8000h = -32768 7FFFh = 32767
Двойное слово 80000000h =-2147483648 7FFFFFFFh= 2147483647
Без знака
Байт 00h = 0 FFh = 255
Слово OOOOh = 0 FFFFh = 65535
Двойное слово OOOOOOOOh = 0 FFFFFFFFh = 4294967295
Ряд MMX-команд выполняет операции обычной арифметики с циклическим
переносом (wraparound arithmetic). Мнемокоды таких команд не имеют
суффикса S или US.
MMX-команды не изменяют содержимое регистра EFLAGS. При этом переполнение
разрядной сетки, возникающее при операциях с упакованными данными, нигде
не фиксируется и не вызывает обработки исключения.
2.5.2. КОМАНДЫ ПЕРЕСЫЛКИ И ПРЕОБРАЗОВАНИЯ ДАННЫХ о"
Команды этой группы приведены в табл. 2.41. Команды MOVD, MOVQ, PEXTRW,
PINSRW и PMOVMSKB осуществляют пересылку данных, а команды PACKSS[WB,DW],
PACKUSWB, PUNPCKH[BW,WD,DQ], PUNPCKL[BW,WD,DQ] и PSHUFW-преобразование
данных: упаковку, распаковку и переупорядочивание элементов. Используемые
операнды задаются в синтаксисе Ассемблера номером MMX-регистра mm, именем
регистра общего назначения г32 или адресом ячейки памяти ml 6, m32 или
т64, хранящей, соответственно 16-, 32- или 64-разрядные данные. При
определении выполняемой операции в табл. 2.41 указывается формат
пересылаемых упакованных данных (В, W, D или Q), а в случае необходимости
также и номер соответствующего элемента: например, mm(W) - слово из ММХ-
регистра с номером mm, mm(BO) -элемент (байт) ВО из ММХ-регистра с
номером mm.
Таблица 2.41
Команды пересылки и преобразования данных
Синтаксис команды Операция
MOVQ mm,mm/nn64 mm/m64(Q) -> mm(Q)
MOVQ mm/m64,mm mm(Q) -> mm/m64(Q)
MOVD mm,r/m32 r/m32 -"mm(DO) 0 -> mm(D1)
MOVD r/m32,mm mm(DO) -> r/m32
PEXTRW r32,mm,imm8 mm[W(im8[1..0])] -> r32(15..0) 0 -> г32(31..16)
PINSRW mm,r32/m16,imm8 r32(15..0)/m16 -" mm[W(im8[1..0])]
PMOVMSKB r32,mm mm[b7(Bi)] -"r32(i), i = 0..7 0 -> r32(31..8)
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
Продолжение табл. 2.41
Синтаксис команды Операция
PACKSSWB mm,mm/m64 PACKSSDW тт,тт/т64 Преобразование с насыщением из
слов со знаком в байты со знаком mm(WO) -"mm(BO) mm{W1) -" mm(B1) mm(W2)
-? mm(B2) mm(W3) -> mm(B3) mm/m64{W0) -"mm(B4) mm/m64{W1) -"mm(B5)
mm/m64(W2) -" mm(B6) mm/m64(W3) -> mm(B7) Преобразование с насыщением из
двойных слов со знаком в слова со знако Mmm(DO) -"mm(WO) mm(D1) ->mm(W1)
mm/m64{D0) -> mm{W2) mm/m64(D1) -> mm(W3)
PACKUSWB тт,тт/тб4 Преобразование с насыщением из слов со знаком в
Предыдущая << 1 .. 73 74 75 76 77 78 < 79 > 80 81 82 83 84 85 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed