Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа по теме

Работа добавлена на сайт samzan.net: 2015-12-27

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 21.5.2024

Лабораторная работа по теме
" Технология
MMX-SSE "

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

Особенности MMX: мультимедийный набор 57 команд ; регистры ММХ  ММО - ММ7; насыщение при выполнении операций.

Дальнейшее расширение параллельности класса SIMD Single Instruction Multiply Data (одна инструкция - много данных) связано с SSE командами. SSE - Streaming SIMD Extensions.

В Pentium реализовано более 70 новых SIMD-инструкций, оперирующих со специальными 128-битными регистрами XMM0-XMM7. Каждый из этих регистров хранит четыре вещественных числа одинарной точности.

Цель работы: В лабораторной работе  предлагается  изучить  и освоить технологию и команды ММХ - SSE.

Программирование проводится на языке Си (visual C++) ,  с использованием ассемблера и отладчика.

Информация: Описание  ММХ SSE формата. Пример программы.

Задание на выполнение работы

ЧТО НУЖНО ИЗЧИТЬ

1. Механизм команд с векторной (параллельной) обработкой данных.

2. Программирование MMX SSE .

ЧТО НУЖНО СДЕЛАТЬ

1. Напишите программу «Изучение команд ММХ-SSE», аналогично примеру, но с новыми командами. Покажите в отладчике visual C++ выполнение команд и изменение содержимого регистров.

2. По заданию преподавателя покажите выполнение “особенных” команд:

  •  с насыщением,
  •  сравнения,
  •  перестановок,
  •  скалярные команды
  •  SSE3 и др.

3. Напишите программу №1, выполняющую операции над массивом данных (массив пикселей изображения) с использованием ММХ SSE  команд. Определите время ее работы.

4. Напишите программу №2, выполняющую те же функции, что и первая программа,  но с использованием базовых команд процессора. Определите время ее работы.

5. Сравните результаты.

ФОРМАТ ММХ КОМАНД

В ММХ используется 4 типа данных

- упакованные байты (8 байт в 64-битовом пакете),

- упакованные слова (4 16-битовых слова в 64-битовом пакете),

- упакованные двойные слова (2 32-битовых двойных слова в 64-битовом пакете)

- учетверенное слово (64 бита).

Формат команды:

instr [dest, src]                  

    dest - destination

    src - source

Суффиксы:

US - команда с непредписанным насыщением (unsigned saturation)

S  или SS - команда с предписанным насыщением (signed saturation)

Если нет суффиксов US или SS, то арифметическое переполнение (wraparound)
B,W,D,Q - тип данных

Группы команд

Команда

Мнемоника

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

movd (32), movq (64)

movd MM4,mem1

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

padd, …

pmadd – слово в двойное слово

pmulh– слово – старшая часть

pmull– слово – младшая часть

логические

pand, por,pxor,

сдвига

psllw MM4,3 – сдвиг влево

psra,    psrl  - сдвиг вправо с 1/0 или 0

сравнения

pcmpeq - равно, pcmpgt - больше,

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

pack/unpack

packuswb M2,M4

команда отмены режима ММХ
Для переключения из режима ММХ в режим вычислений с плавающей точкой процессору требуется 50 тактов

EMMS

Особенности SSE1

В Pentium III реализовано 70 новых SIMD-инструкций, оперирующих со специальными 128-битными регистрами XMM0-XMM7. Каждый из этих регистров хранит четыре вещественных числа одинарной точности. Выполняя операцию над двумя регистрами, SSE фактически оперирует четырьмя парами чисел. Благодаря этому процессор может выполнять до 4-х операций одновременно

Суффиксы:  ps - параллельная операция SIMD (maxps xmm1,xmm5)

ss - скалярная операция (операция над 0-31 битами) (addss xmm1,xmm5)

Пример операции перестановки:       shufps xmm1,xmm2,9Ch

10(b2)-01(b1)-11(a3)-00(a0)  in xmm1

SSE1-команды

Команды над числами с плавающей точкой

  •  Команды пересылки
    •  Скалярные типы – MOVSS
    •  Упакованные типы – MOVAPS, MOVUPS, MOVLPS, MOVHPS, MOVLHPS, MOVHLPS
  •  Арифметические команды
    •  Скалярные типы – ADDSS, SUBSS, MULSS, DIVSS, RCPSS, SQRTSS, MAXSS, MINSS, RSQRTSS
    •  Упакованные типы – ADDPS, SUBPS, MULPS, DIVPS, RCPPS, SQRTPS, MAXPS, MINPS, RSQRTPS
  •  Команды сравнения
    •  Скалярные типы – CMPSS, COMISS, UCOMISS
    •  Упакованные типы – CMPPS
  •  Перемешивание и распаковка
    •  Упакованные типы – SHUFPS, UNPCKHPS, UNPCKLPS
  •  Команды для преобразования типов
    •  Скалярные типы – CVTSI2SS, CVTSS2SI, CVTTSS2SI
    •  Упакованные типы – CVTPI2PS, CVTPS2PI, CVTTPS2PI
  •  Битовые логические операции
    •  Упакованные типы – ANDPS, ORPS, XORPS, ANDNPS

Команды над целыми числами

  •  Арифметические команды
    •  PMULHUW, PSADBW, PAVGB, PAVGW, PMAXUB, PMINUB, PMAXSW, PMINSW
  •  Команды пересылки
    •  PEXTRW, PINSRW
  •  Другие

SSE2

У микропроцессора Intel Pentium 4 появилась новая группа инструкций, получивших название SSE2, она дополнила все предыдущие команды ММХ SSE. Цифра 2 в названии указывается для того, чтобы отличить новую группу от одноименной, уже поддерживаемой микропроцессором Pentium III. В состав SSE2 входят операции для работы с 64-х разрядными целыми и вещественными (представление с удвоенной точностью) числами. Согласно документации Intel в группу SSE2 входят инструкции, выполняющие 144 новые операции.

Большинство новых инструкций двухадресные. Первый операнд является приемником (dest), а второй источником (src). Приемник, как правило, находится в 128-bit регистре xmm, источник может находиться как в регистре xmm, так и в оперативной памяти (ОЗУ). Исключением являются только инструкции пересылки, у которых приемник может располагаться в ОЗУ. Третий операнд, если он есть, является целым числом, размер которого не превышает одного байта.

При работе с вещественными числами возможно выполнение одной и той же операции над одной или двумя парами чисел. Появляются новые суффиксы.

pd - параллельная операция SIMD,  два 64-bit числа расположены в одном 128-bit регистре или в ОЗУ подряд друг за другом.

sd - скалярная операция (операция над 0-63 битами)

SSE2-команды

SQRTPD xmm, xmm/m128  dest = sqrt(src)

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

MAXPD xmm, xmm/m128  dest = max(dest,src)

- нахождение в каждой паре большего вещественного числа удвоенной точности

MINPD xmm, xmm/m128  dest = min(dest,src)

нахождение в каждой паре меньшего вещественного числа удвоенной точности

SSE3

Набор SSE3 содержит 13 инструкций. Наиболее заметное изменение - возможность горизонтальной работы с регистрами. Если говорить более конкретно, добавлены команды сложения и вычитания нескольких значений, хранящихся в одном регистре. Эти команды упростили ряд DSP и 3D-операций. Существует также новая команда для преобразования значений с плавающей точкой в целые без необходимости вносить изменения в глобальном режиме округления.

Инструкции SSE3

  •  ADDSUBPD (Add Subtract Packed Double).
  •  ADDSUBPS (Add Subtract Packed Single).
  •  HADDPD (Horizontal Add Packed Double).
  •  HADDPS (Horizontal Add Packed Single).
  •  HSUBPD (Horizontal Subtract Packed Double).
  •  HSUBPS (Horizontal Subtract Packed Single).
  •  FISTTP — преобразование вещественного числа в целое с сохранением целочисленного значения и округлением в сторону нуля.
  •  LDDQU — загрузка 128bit невыровненных данных из памяти в регистр xmm, с предотвращением пересечения границы строки кеша.

SSE4

SSE4 состоит из 54 инструкций. Добавлены инструкции обработки строк 8/16 битных символов, вычисления CRC32 и др.

Инструкции SSE4.1

2.1 Ускорение видео

2.2 Векторные примитивы

2.3 Вставки/извлечения

2.4 Скалярное умножение векторов

2.5 Смешивания

2.6 Проверки бит

2.7 Округления

2.8 Чтение WC памяти

Инструкции SSE4.2

3.1 Обработка строк

3.2 Подсчет CRC32

3.3 Подсчет популяции единичных бит

3.4 Векторные примитивы

4 Процессоры с SSE4

PHMINPOSUW xmm1, xmm2/m128 — (Packed Horizontal Word Minimum) 

  •  Input — { A0, A1,… A7 }
    •  Output — { MinVal, MinPos, 0, 0… }

Поиск среди 16-ти битных беззнаковых полей A0…A7 такого, который имеет минимальное значение (и позицию с меньшим номером, если таких полей несколько). Возвращается 16-ти битное значение и его позиция.

ПРИМЕР программы:  Изучение команд ММХ-SSE

#include <stdio.h>

#include <conio.h>

int main(void) {

 char qw1[8] = {1, 1, 1, 1, 1, 1, 1, 1};

 char qw2[8] = {2, 2, 2, 2, 2, 2, 2, 2};

 int a = 1;

 int b = 2;

 float c[4] = {1, 2, 3, 4};

 float d[4] = {5, 6, 7, 8};

 double f[2]= {16, 4};

 

 char a128[16] = {1, 18, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31};

 char b128[16] = {17, 2, 19, 4, 21, 6, 23, 8, 25, 10, 27, 12, 29, 14, 31, 16};

 _asm {

 //mmx

 movq mm0, qw1

 movq mm1, qw2

 pcmpeqb mm0, mm1

 movq qw1, mm0

}

printf("%s\n", "Summing elements of vectors qw1 + qw2 :");

 for (int i = 0; i < 8; i++)

{ printf("%d ", qw1[i]); }

printf("\n");

 _asm {

 //sse

 movups xmm0, c

 movups xmm1, d

 addps xmm0, xmm1

 movups c, xmm0

}

printf("%s\n", "Summing elements of vectors c + d :\n");

 for (int i = 0; i < 4; i++)

{ printf("%f ", c[i]); }

 _asm {

 //sse2

 movups xmm1, f

 sqrtpd xmm0, xmm1

 movups f, xmm0

}

printf("\n%s %f %s %f\n", "Square of ", f[0], "is", f[1]);

 _asm {

 movups xmm0, a128

 movups xmm1, b128

 pminub xmm0, xmm1

 movups a128, xmm0

}

printf("\n%s\n", "Comparing elements :");

 for (int i = 0; i<16; i++)

{ printf("( %d , %d) ; ", a128[i], b128[i]); }

printf("\n%s\n", "Minimum elements :");

 for (int i = 0; i<16; i++)

{ printf("%d ", a128[i]); }

 return 0;

 getch(0);

}

2010

PAGE  1




1. Проектирование автоматизированной системы учета материалов бытовой техники на цеховом складе»
2. Закрой глазаоткрой рот или Игра чу
3. Социологизм Эмиля Дюркгейма Работа Э
4. українську карту козирем у великій дипломатичній грі
5. Беларуская эміграцыя ў гады Другой сусветнай вайны
6. Введение в культуру Англии Вопросы- Основные факторы динамического развития английской культуры Э
7. социальный контроль тесно связано с понятием социализация личности
8. по теме Предмет и метод БУ Вопрос Содержание вопроса
9. Глоттогенез славян, или Происхождение славянских языков
10. Проблемы экономического развития Грузии
11. . Цель работы Создание и редактирование таблиц
12. личный цифровой секретарь
13. Фаворит Аккуратные ступеньки открывают вход в дом а небольшой навес над ними только подчеркивает стр
14. Государственная и муниципальная политика в сфере образования Образовательный уровень населения
15. Транспортировка и хранение лесоматериалов Козловой кран КК4 трансбордерная тележка МТ1
16. Громов Борис Всеволодович
17. Мертвые души НВ
18. Реферат з БЖД Вступ людства в епоху ядерної біди
19. Введение Автомобильный транспорт играет важную роль в работе производственного комплекса страны
20. РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИННОВАЦИОННЫХ ТЕХНОЛОГИЙ И ПРЕДПРИНИМАТЕЛЬСТВА О