технологію MMX в обробці даних.
Передумови MMX
Фактично вся історія розвитку комп'ютерів є безперервною гонкою між швидкодією центрального процесора й інших систем – пам'яті і зовнішніх пристроїв. Особливо це помітно в системах мультимедіа, де йде обробка звуку і зображення, цифрове представлення яких займає великі об'єми пам'яті. Для ефективної обробки звуку і відео при відносно низькій пропускній спроможності системної магістралі (шини) вся більша кількість функцій переноситься в апаратуру – модеми, відео- і звукові адаптери. Це викликає їх помітне дорожчання порівняно із загальною вартістю комп'ютера, що особливо неприємне в обстановці швидкого морального старіння всієї комп'ютерної апаратури.
Насправді, нездатність комп'ютера з процесором Pentium ефективно обробляти в реальному часі звук і відео без спеціальних карт походить не стільки від загальної швидкодії процесора або шини, які в більшості випадків цілком достатні, а від характеру його набору команд обробки даних, відомого під назвою CISC (Common Instruction Set Computer – комп'ютер із спільним набором команд). Цей набір, що складається з відносно складних арифметико-логічних команд, орієнтований на типові задачі обробки даних, без спеціального "заточування" під особливі додатки. Ця вигідна для більшості додатків, архітектура виявляється абсолютно неефективною при швидкісній і специфічній обробці великих масивів даних, оскільки складна система команд використовується на лічені відсотки, а накладні витрати складають десятки і сотні відсотків.
Технологія MMX є компромісним рішенням, об'єднуючим шляхи, що використовуються в комп'ютерах SPARC і Silicon Graphics (технологія RISC – Reduced Instruction Set Computer, комп'ютер із спрощеним набором команд), а також в комп'ютерах з паралельною архітектурою (технологія SIMD: Single Instruction, Multiple Data – одна команда, багато даних): класичний процесор Pentium (CISC) з додаванням ряду простих (RISC) команд паралельної обробки даних (SIMD).
Як працює технологія MMX
Технологія MMX була створена в результаті сумісних зусиль розробників архітектури процесорів Intel і програмістів. Були проведені дослідження широкого кола програм: обробки зображень, MPEG відео, синтезу музики, стиснення мови та її розпізнавання, ігрового, відеоконференційного і багатьох інших. В них виділялися підпрограми, в яких виконуються основні обчислення.
Потім, за допомогою сучасних програмних засобів, вони були ретельно проаналізовані. В результаті цього аналізу було виявлене те загальне, що необхідно для ефективного виконання різних категорій програм. Їх основні характеристики:
дані цілого типу невеликої розрядності (наприклад: 8-розрядні графічні пікселі, 16-розрядна оцифровка звуку);
короткі цикли з високими коефіцієнтами повторюваності;
велика кількість операцій множення і алгоритми підсумовування, що вимагають інтенсивних обчислень;
операції з високим рівнем паралелізму.
Технологія MMX була розроблена як набір базових цілочисельних команд, які зручно використовувати в різних мультимедійних і комунікаційних додатках. Основні риси цієї технології: архітектура – одна інструкція над багатьма даними (SIMD) 57 нових інструкцій вісім 64-розрядних регістрів MMX чотири нові типи даних
Основою MMX є архітектура "одна інструкція над багатьма даними" (SIMD). Вона полягає в тому, що багато одиниць інформації обробляється однією командою одночасно, значно збільшуючи продуктивність. Технологію MMX легко застосовувати.
Технологія MMX включена в архітектуру процесорів Intel таким чином, що збережена повна сумісність з існуючими на той час операційними системами: MS DOS*, Windows* 3.1, Windows 95, OS/2* і поєднань. Це досягається за рахунок поєднанні регістрів цілочисельної арифметики загального призначення і регістра перебування з регістрами плаваючої арифметики і перебування відповідно. Отже, не введено нових регістрів для реалізації технології MMX. Це значить, що операційна система для збереження і відновлення регістрів при виконанні програм MMX використовує стандартні механізми, передбачені для плаваючої арифметики. Всі програми, написані раніше для процесорів з архітектурою Intel, виконуються на комп'ютерах з технологією MMX.
Основний час при виконанні мультимедійних додатків займають короткі цикли з високими коефіцієнтами повторюваності, складові невелику частину від загального об'єму всіх команд. Переписування цих невеликих послідовностей кодів з використанням набору команд MMX дозволяє поліпшити характеристики додатків. Таким чином, технологія MMX дозволяє розробникам програмного забезпечення за порівняно короткий проміжок часу істотно поліпшити характеристики мультимедійних і комунікаційних додатків.
Обробка даних в MMX
Як вже мовилося, в Pentium MMX додано 57 нових команд обробки даних і, відповідно – чотири нові типи даних. За одну операцію команда MMX обробляє 64-розрядне двійкове слово (так зване квадраслово, або QWord). Нові типи даних утворюються від упаковки в квадраслово звичних типів – байтів (по ), слів (по 4) або подвійних слів (по 2). Четвертий тип є саме квадраслово.
Таким чином, одна елементарна MMX-операція має справу або з одним квадрасловом, що схоже на звичну операцію великої розрядності, або з двома подвійними словами, чотирма словами або вісьма байтами, причому виконання відбувається одночасно і кожний елемент даних обробляється незалежно від інших. Подібні групові операції переважають під час обробки зображення (групи точок) і звуку (групи значень амплітуди).
Набір MMX-команд складається з команд пересилки даних, упаковки/розпаковування, додавання/віднімання, множення, зсуву, порівняння і порозрядних логічних. Команди упаковки і додавання/віднімання можуть працювати в двох режимах: звичному, коли переповнювання розрядної сітки викликає "загортання" (wraparound) значення результату, і спеціальному, коли воно приводить до обмеження (clipping) результату до мінімально або максимально допустимого значення. Режим обмеження в термінології Intel називається Saturation (змішування) – в ньому особливо зручно виконувати змішування кольорів зображення або амплітуд звукових сигналів, оскільки при звичному переповнюванні результату не має ніякого значення.
Команда множення представлена трьома видами: перші два виконують попарне множення чотирьох слів з вибором або старшої, або молодшої частини результату, а третій виконує операцію виду ab + cd для кожної пари з чотирьох слів операндів, що дуже зручно при обчисленні математичних