виняткових ситуацій в одній інструкції, відповідний прапор винятку оновлюється і вказує, що хоча б одне з цих умов сталося. За замовчуванням ці прапори скидаються. p> Біти 7-12 (поле маскування винятків) визначають, як обробляються виявлені винятки. Якщо прапор встановлений, то відповідне виняток маскировано і обробляється процесором, який формує прийнятний результат (у згідно з процедурою, встановленою за замовчуванням) і продовжує виконання програми. Якщо прапор скинутий, то викликається програмний обробник для цього винятки. Типово прапори встановлюються в 1, означає що всі виключення маскувати.
Біти 13-14 (RC) встановлюють режим округлення результатів при виконанні SSE-команд над даними з плаваючою крапкою. За замовчуванням встановлюється режим округлення до найближчого. p> Біт 15 (FZ) використовується для включення режиму "Flush To Zero". Типово біт 15 встановлено в 0, що вимикає режим "Flush To Zero".
Решта біти регістра MXCSR (біти 16-31 і біт 6) визначені як зарезервовані і встановлені в 0; спроба записи не нульових значень у ці біти, використовуючи інструкцію FXRSTOR або LDMXCSR, викличе виключення загального порушення захисту (general protection exception).
Поле управління округленням
Поле управління округленням (RC) регістра MXCSR (біти 13 і 14) управляють як округлюється результат інструкції з плаваючою крапкою.
Підтримується чотири режиму округлення:
В· округлення до найближчого
В· до меншого або рівного
В· до більшого чи рівного
В· і в бік нуля (Дивитися таблицю 2-3). p> Округлення до найближчого - режим за замовчуванням і він підходить для більшості додатків. Він забезпечує найбільш точний і статистично несмещенную оцінку правильного результату.
Таблиця 2-3. Поле управління округленням (RC)
Режим округлення
Встановлення полів RC
Опис
Округлення до найближчого
00B
Результатом округлення береться найкраще наближення до точного результату. Якщо два значення однаково близькі до точного результату, то береться парне значення (тобто, те значення у якого найменший значущий розряд встановлений в нуль)
Округлення до меншого або рівного (убік - п‚Ґ)
01B
Результат округлення найближчим, але не більше ніж точне рішення.
Округлення до більшого чи рівного (убік + п‚Ґ)
10B
Результат округлення найближчим, але не менше ніж точне рішення.
Округлення в бік нуля (усічення)
11B
Результат округлення найближчим, але не більше ніж абсолютне значення точного рішення.
Команди Потокового Розширення SIMD
Потокове Розширення SIMD складається з 70 команд, згрупованих у такі категорії:
В· Команди копіювання даних
В· Арифметичні команди
В· Команди порівняння p> В· Команди перетворення типів даних
В· Логічні команди
В· Додаткові цілочисельні SIMD-команди
В· Команди перестановки
В· Команди управління станом
В· Команди управління кешуванням
Операнди команд
Паралельні операції, як правило, діють одночасно на всі чотири 32-розрядних елемента даних в кожному з 128-розрядних операндів В іменах команд, що виконують паралельні операції, присутній суфікс ps . Наприклад, команда addps складає 4 пари елементів даних і записує отримані 4 суми в відповідні елементи першого операнда. p> Скалярні операції діють на молодші (що займають розряди 0 - 31) елементи даних двох операндів Решта три елементи даних у вихідному операнді не змінюються (виняток становить команда скалярного копіювання movss ). В імені команд, виконують скалярні операції, присутній суфікс ss (Наприклад, команда addss ). p> більшість команд мають два операнда. Дані, що містяться в першому операнді, можуть використовуватися командою, а після її виконання, як правило, заміщуються результатами. Дані у другому операнд використовуються в команді і після її виконання не змінюються. Далі в тексті вхідним називається другий операнд, а вихідним - перший.
Для всіх команд адресу операнда в пам'яті повинен бути вирівняний по 16-байтной кордоні, крім НЕ вирівняних команд збереження і завантаження.
Приклад програми з використанням SSE
Програма виконує зміна значення колірних складових кожного пікселя зображення (завантажується з жорсткого диска)...