Принцип функціонування технологія MMX та обробка даних 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Принцип функціонування технологія MMX та обробка даних



 

Технологія MMX була створена в результаті сумісних зусиль розробників архітектури процесорів Intel і програмістів. Були проведені дослідження широкого кола програм: обробки зображень, MPEG відео, синтезу музики, стиснення мови та її розпізнавання, ігрового, відеоконференційного і багатьох інших. В них виділялися підпрограми, в яких виконуються основні обчислення.

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

· дані цілого типу невеликої розрядності (наприклад: 8-розрядні графічні пікселі, 16-розрядна оцифровка звуку);

· короткі цикли з високими коефіцієнтами повторюваності;

· велика кількість операцій множення і алгоритми підсумовування, що вимагають інтенсивних обчислень;

· операції з високим рівнем паралелізму.

Технологія MMX була розроблена як набір базових цілочисельних команд, які зручно використовувати в різних мультимедійних і комунікаційних додатках. Основні риси цієї технології: архітектура - одна інструкція над багатьма даними (SIMD) 57 нових інструкцій вісім 64-розрядних регістрів MMX чотири нові типи даних

Основою MMX є архітектура "одна інструкція над багатьма даними" (SIMD). Вона полягає в тому, що багато одиниць інформації обробляється однією командою одночасно, значно збільшуючи продуктивність.

Технологія MMX включена в архітектуру процесорів Intel таким чином, що збережена повна сумісність з існуючими на той час операційними системами: MS DOS*, Windows* 3.1, Windows 95, OS/2* і поєднань. Це досягається за рахунок поєднанні регістрів цілочисельної арифметики загального призначення і регістра перебування з регістрами плаваючої арифметики і перебування відповідно. Отже, не введено нових регістрів для реалізації технології MMX. Це значить, що операційна система для збереження і відновлення регістрів при виконанні програм MMX використовує стандартні механізми, передбачені для плаваючої арифметики. Всі програми, написані раніше для процесорів з архітектурою Intel, виконуються на комп'ютерах з технологією MMX.

Основний час при виконанні мультимедійних додатків займають короткі цикли з високими коефіцієнтами повторюваності, складові невелику частину від загального об'єму всіх команд. Переписування цих невеликих послідовностей кодів з використанням набору команд MMX дозволяє поліпшити характеристики додатків. Таким чином, технологія MMX дозволяє розробникам програмного забезпечення за порівняно короткий проміжок часу істотно поліпшити характеристики мультимедійних і комунікаційних додатків.

Як вже мовилося, в Pentium MMX додано 57 нових команд обробки даних і, відповідно - чотири нові типи даних. За одну операцію команда MMX обробляє 64-розрядне двійкове слово (так зване квадраслово, або QWord). Нові типи даних утворюються від упаковки в квадраслово звичних типів - байтів (по 8), слів (по 4) або подвійних слів (по 2). Четвертий тип є саме квадраслово.

Таким чином, одна елементарна MMX-операція має справу або з одним квадрасловом, що схоже на звичну операцію великої розрядності, або з двома подвійними словами, чотирма словами або вісьма байтами, причому виконання відбувається одночасно і кожний елемент даних обробляється незалежно від інших. Подібні групові операції переважають під час обробки зображення (групи точок) і звуку (групи значень амплітуди).

Набір MMX-команд складається з команд пересилки даних, упаковки/розпаковування, додавання/віднімання, множення, зсуву, порівняння і порозрядних логічних. Команди упаковки і додавання/віднімання можуть працювати в двох режимах: звичному, коли переповнювання розрядної сітки викликає "загортання" (wraparound) значення результату, і спеціальному, коли воно приводить до обмеження (clipping) результату до мінімально або максимально допустимого значення. Режим обмеження в термінології Intel називається Saturation (змішування) - в ньому особливо зручно виконувати змішування кольорів зображення або амплітуд звукових сигналів, оскільки при звичному переповнюванні результату не має ніякого значення.

Команда множення представлена трьома видами: перші два виконують попарне множення чотирьох слів з вибором або старшої, або молодшої частини результату, а третій виконує операцію виду ab + cd для кожної пари з чотирьох слів операндів, що дуже зручно при обчисленні математичних рядів.

Команди зсуву реалізують логічний і арифметичний зсуви своїх операндів (арифметичний зсув відрізняється від логічного тим, що при зсуві вправо розряди, що звільнилися, заповнюються копією знакового розряду, а не нулями, від чого він придатний для множення/ділення знакових операндів на ступені двійки). Логічні порозрядні команди виконують операції І (AND), АБО (OR), АБО, що виключає (XOR), а також комбіновану команду І з інверсією одного з операндів (AND NOT), зручну для реалізації "зворотного вибору" по бітовій масці.

Команди порівняння працюють дещо незвичайно в порівнянні із загальноприйнятою логікою: замість установки ознак для подальших команд переходу вони генерують одиничні бітові маски для тих операндів, які задовольняють умові, і нульові - для решти операндів. Подальші логічні порозрядні операції можуть виділити, погасити або якось інакше обробити відзмічені таким чином операнди, які в цьому випадку можуть бути точками зображення або відліками звукового сигналу.

Серед нових команд є такі нестандартні операції, як додавання і віднімання з насиченням, упаковка, розпаковка, множення з додаванням, операції порівняння з утворенням маски результату. Використовуючи ці можливості, можна досягати ще більшого зростання продуктивності.

Розглянемо приклад, аналоги якому можна знайти в найрізноманітніших додатках. Припустимо, нам необхідно відтворити два звукові ефекти одночасно. Для цього необхідно побайтово скласти оцифровані значення звуку, і якщо результат "зашкалює" в ту чи іншу сторону, то обмежити його по амплітуді. На мові С+ фрагмент коду виглядатиме наступним чином sum = snd1 + snd2; if (sum > 127) sum = 127; if (sum < - 128) sum = - 128; Після компіляції ця ділянка коду перетвориться на 7 інструкцій процесора x86.

Якщо ж скористатися технологією MMX, то весь цей громіздкий код можна замінити однією-єдиною інструкцією paddsb mm0, mm1 яка до того ж виконає цю операцію відразу для пакету з 8 байтів даних. Неважко підрахувати, що для даного прикладу досягається прискорення виконання приблизно в 56 разів! Інший приклад, де інструкції MMX можуть дати значний виграш в продуктивності, - додавання двох зображень з використанням одного з кольорів в якості "прозорої" маски. Ця стандартна операція достатньо часто зустрічається в багатьох графічних додатках. Голубий колір фону довкола космічного корабля розглядається як прозорий при складанні зображень. Спеціальні інструкції порівняння з утворенням маски результату дозволяють виконати цю операцію не тільки пакетами по 8 байтів, але й уникнути галужень, а значить, і штрафів за їх неправильний прогноз. При цьому продуктивність при використанні процесора Pentium з технологією MMX зростає не менше, ніж у два рази.

Як існуючі додатки і існуюча операційна система зберігатимуть значення нові 8 регістрів MMX, наприклад, при перемиканні задач, якщо вони нічого про це не знають? Виявляється, регістри МMX суміщені по розташуванню з регістрами плаваючої точки. Завдяки такому рішенню регістри MMX повністю вписуються в існуючу архітектуру.



Поделиться:


Последнее изменение этой страницы: 2020-03-26; просмотров: 107; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.216.205.123 (0.007 с.)