Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_rab_7.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
269.31 Кб
Скачать

4. Определение поддержки sse

Перед тем как начинать работать с расширениями SSE (согласно документации Intel), нужно убедиться, что выполнены следующие три условия:

1. Бит 2 регистра CRO (эмуляция сопроцессора) должен быть равен нулю.

2. Бит 9 регистра CR4 (поддержка команд FXSAVE/FXRSTOR) должен быть

равен 1.

3. Бит 25 регистра EDX после команды CPUID (поддержка SSE) должен быть

равен 1.

5. Исключения

Особые ситуации при выполнении команд SSE вызывают новое системное исключение #XF (INT 19), обработчик которого может прочитать содержимое регистра MXCSR, чтобы определить тип исключения и выполнить соответствующие действия. Кроме того, команды SSE могут вызывать и обычные системные исключения - #UD (неопределенная команда), #NM (расширение отсутствует), #SS (переполнение стека), #GP (общая ошибка защиты), #PF (ошибка страничной защиты), #АС (невыровненное обращение к памяти).

Собственные исключения, вызываемые командами SSE и отраженные при помощи флагов в регистре MXCSR, - это:

  • #1 — невыполнимая команда (вызывается перед выполнением команды);

  • #Z - деление на ноль (вызывается перед выполнением команды);

  • #D - денормализованный операнд (вызывается перед выполнением команды);

  • #О - переполнение (вызывается после выполнения команды);

  • #U - антипереполнение (вызывается после выполнения команды);

  • #Р - потеря точности (вызывается после выполнения команды).

Практическая часть.

Замечание. Так как технология SSE появилась только в процессоре Pentium III, то требуются новые версии компилятора, поддерживающего соответствующие инструкции. Таким компилятором является, например, Visual Studio 2010, т.к. VS 6.00 была выпущена в 1997 году. Поэтому эту лабораторную работу необходимо выполнить в Visual Studio 2010.

Пример №1. Найти сумму 2-х векторов.

Решение.

Задания для самостоятельной работы

  1. Ознакомьтесь с теоретическим материалом.

  2. Разберите все примеры из практической части лабораторной работы, т.е. наберите и просмотрите их работу.

  3. Выполните индивидуальные задания.

Индивидуальные варианты

1. Составить программу, которая находит разность 2-х векторов (начальные значения вводим самостоятельно).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]