Зміст
Введення
Загальне уявлення про SSE
SIMD-регістри з плаваючою точкою
Тип даних SIMD з плаваючою крапкою.
Модель виконання SIMD
Формат даних у пам'яті
Формат даних SIMD регістра з плаваючою точкою
SIMD регістр стану і управління
Поле управління округленням
Команди Потокового Розширення SIMD
Операнди команд
Приклад програми з використанням SSE
Лістинг програми
Скріншот програми
Висновок
Список літератури
Введення
Потокове розширення SIMD (Streaming SIMD Extensions (Single Instruction, Multiple Data - одна команда, кілька елементів даних)) це узагальнююча назва всіх нових можливостей процесорів, починаючи з Pentium III, що створені для підвищення продуктивності в мультимедіа та інформаційних додатках. Ці нововведення (Що включають нові регістри, типи даних, і команди) об'єднуються з виконуваної моделлю SIMD для підвищення швидкодії додатків. Застосування нових SIMD-команд значно збільшує продуктивність додатків, оброблювальних дані з плаваючою комою, або додатків які в основному використовують алгоритми з інтенсивними обчисленнями, виконуючи повторюють операції над великими масивами простих даних. Також від SSE виграють додатки, яким потрібен постійний доступ до великим розмірам даних.
Нові SIMD-команди, реалізовані в процесорі Pentium III, збільшують продуктивність прикладних програм в наступних областях:
В· відео
В· комбінування графіки і відео
В· обробка зображень
В· звуковий синтез
В· розпізнавання, синтез і компресія мови
В· телефонія
В· відео конференції
В· 2D і 3D графіка.
У лютому 1999 року Intel представила громадськості процесор Pentium III, що містить оновлення технології MMX, отримала назву SSE (Streaming SIMD Extensions - потокові розширення SIMD). До цього моменту інструкції SSE носили ім'я Katmai New Instructions (KNI), так як спочатку вони були включені в процесор Pentium III з кодовим ім'ям Katmai. Процесори Celeron 533A і вище, створені на основі ядра Pentium III, теж підтримують інструкції SSE. Більш ранні версії процесора Pentium II, а також Celeron 533 і нижче (створені на основі ядра Pentium II) SSE не підтримують.
Інструкції SSE містять 70 нових команд для роботи з графікою і звуком на додаток до існуючих команд MMX. Фактично цей набір інструкцій окрім назви KNI мав ще і другу назву - MMX-2. Інструкції SSE дозволяють виконувати операції з плаваючою комою, реалізовувані в окремому модулі процесора. У технологіях MMX для цього використовувалося стандартне пристрій з плаваючою комою.
Інструкції SSE2, що містять 144 додаткові команди SIMD, були представлені в листопаді 2000 року разом з процесором Pentium 4. У SSE2 були включені всі інструкції попередніх наборів MMX і SSE.
Інструкції SSE3 були представлені в лютому 2004 року разом з процесором Pentium 4 Prescott; вони додають 13 команд SIMD, призначених для прискорення виконання складних математичних операцій, обробки графіки, кодування відео і синхронізації потоків даних. Інструкції SSE3 також містять усі інструкції MMX, SSE і SSE2.
В цілому SSE забезпечує наступні переваги: ​​
В· більш високий дозвіл/якість при перегляді і обробці графічних зображень;
В· покращена якість відтворення звукових і відеофайлів у форматі MPEG2, а також одночасне кодування і декодування формату MPEG2 в мультимедійних додатках;
В· зменшення завантаження процесора і підвищення точності/швидкості реагування при виконанні програмного забезпечення для розпізнавання мови.
Інструкції SSE і SSE2 особливо ефективні при декодуванні файлів формату MPEG2, який є стандартом стиснення звукових і відеоданих, використовуваним в DVD. Отже, оснащені SSE процесори дозволяють досягти максимальної швидкості декодування MPEG2 без використання додаткових апаратних засобів (наприклад, плати декодера MPEG2). Крім того, процесори, що містять набір інструкцій SSE, значно перевершують попередні версії процесорів при розпізнаванні мови.
Одним з основних переваг SSE по відношенню до MMX є підтримка операцій SIMD з плаваючою комою, що дуже важливо при обробці тривимірних графічних зображень. Технологія SIMD, як і MMX, дозволяє виконувати відразу декілька операцій при отриманні процесором однієї команди. Зокрема, SSE підтримує виконання до чотирьох операцій з плаваючою комою за цикл; одна інструкція може одночасно обробляти чотири блоки даних. Для виконання операцій з плаваючою комою інструкції SSE можуть використовуватися разом з командами MMX без помітного зниження швидкодії. SSE також підтримує упереджувальну вибірку даних (Prefetching), яка являє собою механізм попереднього прочитування даних з кеш-пам'яті (L1, L2).
Найкращі результати застосування нових інструкцій процесора забезпечуються тільки при їх підтримці на рівні використовуваних додатків. Сьогодні більшість компаній, що займаються розробкою програмного забезпечення, модифікували додатки, пов'язані з обробкою графіки і звуку, що дозволило в більш повній мірі використовувати можливості SSE. Наприклад, графічний додаток Adobe Photoshop підтримує інструкції SSE, що значно підвищує ефективність використання оснащених SSE процесорів. Підтримка інструкцій SSE вбудована в DirectX 6.1 і в самі останні відео та аудіо-драйвери, що поставляються з операційними системами Windows 98 Second Edition, Windows Me, Windows NT 4.0 (з пакетом оновлень 5 або пізнішої версії), Windows 2000, Windows Vista, Windows 7.
Інструкції SSE є розширенням технологій MMX, а SSE2 - розширенням інструкцій SSE. Таким чином, процесори, підтримуючі SSE2, підтримують також SSE, а процесори, що підтримують інструкції SSE, у свою чергу, підтримують оригінальні команди MMX. Це означає, що стандартні додатки MMX можуть виконуватися практично на будь-яких системах.
Перші процесори виробництва AMD з підтримкою розширень SSE3-це 0,09-мікронні версії Athlon 64, а також всі версії двоядерних процесорів Athlon 64 X2.
Загальне уявлення про SSE
SSE забезпечує інструкції для керування кешуванням усієї MMX технології і 32-бітових типів даних. Ці інструкції включають можливість запису даних в пам'ять без "Засмічення" кеша [1], і можливість упреждающей вибірки коду/даних до їх використання.
Потокове Розширення SIMD забезпечує наступні нові можливості при програмуванні обладнання IA [2]:
В· Вісім SIMD-регістрів з плаваючою точкою (XMM0 - XMM7).
В· Тип даних SIMD (Упаковані числа одинарної точності з плаваючою крапкою) - 128-біт.
В· Набір команд SSE.
SIMD-регістри з плаваючою точкою
SSE містить вісім 128-розрядних регістрів загального призначення, кожен з них може бути безпосередньо адресовано. Так як ці регістри нові, то для використання потребують підтримки операційної системи.
SIMD-регістри з плаваючою точкою містять упаковані 128-розрядні дані. Команди SSE звертається до SIMD-регістрів з плаваючою точкою використовуючи регістрові імена XMM0 і до XMM7. SIMD-регістри з плаваючою крапкою можуть бути використані для обчислень над даними; але не можуть бути використані для адресації пам'яті. Адресація виконується за допомогою визначених у IA режимів адресації і регістрів загального призначення (EAX, EBX, ECX, EDX, EBP, ESI, EDI і ESP).
Також вводиться новий регістр контролю/стану MXCSR, він використовується для маскування і демаскування обробки числових виняткових ситуацій, для визначення режиму округлення, для установки режиму скиду в нуль, і для перегляду стану прапорів.
Якщо відбулося зникнення порядку (underflow), а поле flush-to-zero (FZ біт 15) регістра MXCSR встановлено в 1, то процесор виконує наступні дії:
В· повертає нульове ...