Будь умным!


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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 4.6.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. l e f крыло pertur e f ~ отверстие burs e f ~ сумка column e f столб cost e f ~ ребро crist e f ~ гр
2. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ к разработке показателей прогнозов социальноэкономического развития суб.
3. 40 Цена- 135900 руб
4. чудом спасшимся царевичем Дмитрием стало настоящим подарком для короля Сигизмунда III и многих магнатов
5. Вы знали куда вы шли и Не нравиться ~ увольняйтесь не катят
6. Рияд С именем Аллаха Милостивого Милосердного Вступление Хвала Аллаху
7. Методика исследования лор-органов
8. расселявшегося на огромных пространствах Европы и Азии от лазурной Адриатики до берегов Тихого океана и от
9. Лабораторная работа по курсу ldquo; Сети ЭВМ и средства телекоммуникацииrdquo; Версия от 28
10. на тему- Анализ российского рынка мороженого
11. МЕТОДИКА ОФОРМЛЕНИЯ РЕЗУЛЬТАТОВ ПРОВЕРКИ ОПЕРАЦИЙ С ОСНОВНЫМИ СРЕДСТВАМИ
12. Системный подход в развитии образного мышления на уроках музыки
13. Лабораторная работа 7 Компоненты TStringGrid TTreeView TPgeControl THederControl и THeder Цель работы- изучить часто используе
14. Статья Школьная дезадаптация
15. Доклад- Женщины-самураи.html
16. 62 Продукты питания животного происхождения 5 ПБ 238 4
17. Реферат- Пищевые инфекции
18. koobru Н
19. Реферат- Финансовый анализ ОАО Измайловская мануфактура
20. тема которая требует кропотливого изучения и анализа применительно к разным слоям населения к разным регио