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

Лабораторная работа 5 Параллельные вычисления в процессорах x86

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

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

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

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

от 25%

Подписываем

договор

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

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

Лабораторная работа № 5

Параллельные вычисления в процессорах x86.

5.1. Цель работы

Освоить принцип параллелизма в процессорах x86 на примере технологии SSE.

5.2. Краткие теоретические сведения

Параллелизм (в процессорной архитектуре) — это возможность процессора выполнять параллельно несколько вычислительных операций. Необходимость в параллелизме возникла в процессе эволюции вычислительной техники. Разработчиками процессоров преследовалась вполне определенная цель повышения производительности компьютерных систем путем увеличения объема обрабатываемых за единицу времени данных. В конечном итоге c 1990-х годов в процессорах общего назначения начали появляться так называемые SIMD-расширения или SIMD-инструкции.

 SIMD (англ. Single Instruction Multiple Data — одиночный поток команд, множественный поток данных, ОКМД) — это принцип компьютерных вычислений, позволяющий обеспечить параллелизм на уровне данных. Кроме этого, SIMD – это один из классов вычислительных систем в классификации Флинна.

В серийных процессорах Intel архитектуры x86 принцип SIMD был впервые реализован в виде технологии MMX (Multimedia Extensions — мультимедийные расширения) в Intel Pentium MMX в 1997 году. Более массовое же применение в процессорах x86 получило семейство технологий SSE, ставшее логическим продолжением технологии MMX.

Технология SSE (англ. Streaming SIMD Extensions, потоковое SIMD-расширение процессора) — это набор инструкций, разработанный Intel и впервые представленный в процессорах серии Pentium III. SSE включает в архитектуру процессора восемь 128-битных регистров и набор из 70-ти инструкций, работающих со скалярными и упакованными типами данных.

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

В процессор, поддерживающий SSE, добавлены восемь (шестнадцать для x86-64) 128-битных регистров, которые называются xmm0 — xmm7 (-xmm15). Каждый регистр может содержать четыре 32-битных значения с плавающей точкой одинарной точности.

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

Одна SSE-команда может обрабатывать одновременно четыре 32-разрядных числа. Поддерживается два типа команд над упакованными данными с плавающей запятой: параллельные и скалярные. Параллельные команды, как правило, действуют одновременно на все четыре 32-разрядных элемента данных в каждом из 128-разрядных операндов. В именах команд, выполняющих параллельные операции, присутствует суффикс PS.

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

SSE-команды имеют следующий синтаксис: instruction [dest, src]. Здесь instruction – имя команды, dest – выходной операнд, src - входной операнд. Ниже приведен пример нескольких SSE-команд (обозначения: xmm - XMM-регистр; mm - MMX-регистр; m - память; imm - 8-битный непосредственный операнд; ir32 - целочисленный регистр).

ADDPS xmm, xmm/m

команда попарно складывает упакованные элементы данных и записывает суммы в соответствующие элементы XMM-регистра.

SUBPS xmm, xmm/m

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

MULPS xmm, xmm/m

команда попарно перемножает упакованные элементы. Произведения записываются в соответствующие элементы XMM-регистра.

DIVPS xmm, xmm/m

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

ADDSS xmm, xmm/m

команда складывает младшие элементы данных и записывает результат в младший элемент XMM-регистра. Остальные элементы выходного операнда не меняются.

SUBSS xmm, xmm/m

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

MULSS xmm, xmm/m

команда перемножает младшие элементы данных и записывает результат в младший элемент XMM-регистра. Остальные элементы выходного операнда не меняются.

DIVSS xmm, xmm/m

команда делит младший элемент выходного операнда на соответствующий элемент входного операнда и записывает результат в младший элемент выходного операнда. Остальные элементы выходного операнда не меняются.

SQRTPS xmm, xmm/m

команда вычисляет квадратный корень для каждого из четырех чисел во входном операнде и записывает результаты в выходной операнд.

SQRTSS xmm, xmm/m

команда вычисляет квадратный корень из младшего элемента входного операнда и записывает результат в младший элемент в выходной операнд. Остальные элементы выходного операнда не меняются.

UNPCKHPS xmm, xmm/m

команда копирует третьи элементы входного и выходного операндов в соседние младшие элементы выходного операнда, а четвертые элементы входного и выходного операндов - соответственно, в старшие элементы выходного операнда. Распаковка элементов выполняется одновременно.

UNPCKLPS xmm, xmm/m

команда копирует первые элементы входного и выходного операндов в соседние младшие элементы выходного операнда, а вторые элементы входного и выходного операндов - соответственно, в старшие элементы этого операнда. Распаковка элементов выполняется одновременно.

5.4. Методические указания

Для написания программы на Ассемблере удобно использовать интегрированные среды разработки WinAsm или RadAsm.

После написания программы и получения готового *.exe файла, необходимо провести пошаговую отладку программы, например, используя отладчик OllyDbg. При отладке внимательно изучите содержимое регистров SSE. Отобразить регистры в окне Registers (FPU) возможно, если в меню «Options=>Debugging options=>Registers» выбрать опцию «Decode SSE registers».

5.5. Порядок выполнения работы

В лабораторной работе требуется написать ассемблерную программу для получения массива чисел одинарной точности с плавающей точкой Z из двух исходных массивов X и Y. Каждый i-й элемент массива Z должен вычисляться на основании формулы в соответствии с вариантом. Размерность всех массивов 12. Ассемблерный код должен быть основан на использовании команд SSE. Исходные массивы необходимо задать внутри программы в сегменте данных.

5.6. Задания к лабораторной работе, исходные данные

Таблица 5.1.

Вар. №

Задание

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

  1.  Содержание отчёта

  1.  Титульный лист;
  2.  Цель работы;
  3.  Задание в соответствии с вариантом;
  4.  Исходные данные и полученные результаты в виде скриншотов экрана;
  5.  Листинг конечного варианта программы с необходимыми пояснениями и комментариями;
  6.  Содержательный вывод.

  1.  Примеры контрольных вопросов

  1.  Что такое параллелизм в процессорной архитектуре x86 и в чем его достоинства?
  2.  Какие технологии основаны на принципе SIMD?
  3.  В чем заключается общий смысл технологии SSE?
  4.  Назовите 5 любых команд технологии SSE и поясните принцип их работы;
  5.  Чем отличаются SSE-команды с суффиксом PS от SSE-команд с суффиксом SS?
  6.  Какие принципы необходимо соблюдать при написании кода SSE?




1.  COMPNY STRUCTURES Key Concepts shreholders people who own shres in compny or provide the cpitl
2. Четыре племени. После драки с Пестрозвёздой я устала
3. Разновидности мультипрограммирования
4. Комплексный исследование финансово-хозяйственной деятельности предприятия
5. Ролан Барт Мифологии
6. . Используя первое приближение теории ДебаяХюккеля рассчитать коэффициенты активности ионов Fe3 NO3~ и средн
7. Технологии проводного и жгутового монтажа
8. Бегущая строка и Сегментированные изображения должен открывать файл с любой картинкой в новом окне.html
9. РЕФЕРАТ ТАЙНЫ ЧЕЛОВЕЧЕСКОГО ОСОЗНАНИЯ Автор- Алексеев Игорь
10. Три революции в России
11. Degrees it could chnge the wether ll over the world in big wys
12. Виды и назначение индикаторов эко-эффективности
13. реферат дисертації на здобуття наукового ступеня кандидата технічних наук Луганськ 2002
14. Теория и методика ознакомления детей дошкольного возраста с природой
15. Варіант Завдання- Розрахувати власну біоритмічну активність станом на 01
16. Тема 1 Понятие информатики и информации Что представляет собой наука информатика
17. 1Ал'аш'ы 'ауымды' 'рылыста'ы 'о'амды' билiктi' ерекшелiктерi 'андай-билiк беделге жасы 'лкендi 'рмет ету 'а
18. Реляційна база данних трудової книжки
19. сплющена у полюсов что вызвано вращением Земли вокруг своей оси
20. восстановительных реакциях