Відмінності між версіями «MMX»

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[перевірена версія][перевірена версія]
(Виправлено джерел: 1; позначено як недійсні: 0. #IABot (v2.0beta10ehf1))
(дослівний переклад)
Рядок 1: Рядок 1:
  +
{{переписати}}
 
'''MMX''' ('''M'''ulti'''m'''edia E'''x'''tensions — [[Мультимедіа|мультимедійні]] розширення) — комерційна назва додаткового [[Архітектура системи команд|набору інструкцій]], що виконують характерні для процесів кодування / декодування потокових аудіо / відео даних дії за одну [[Машинна інструкція|машинну інструкцію]]. Вперше з'явився в процесорах [[Pentium MMX]]. Розроблений у першій половині [[1990-ті|1990-х]].
 
'''MMX''' ('''M'''ulti'''m'''edia E'''x'''tensions — [[Мультимедіа|мультимедійні]] розширення) — комерційна назва додаткового [[Архітектура системи команд|набору інструкцій]], що виконують характерні для процесів кодування / декодування потокових аудіо / відео даних дії за одну [[Машинна інструкція|машинну інструкцію]]. Вперше з'явився в процесорах [[Pentium MMX]]. Розроблений у першій половині [[1990-ті|1990-х]].
   
  +
{{дослівний переклад|url=http://www.radiotex.narod.ru/mmx.htm}}
== Передумови ==
 
Фактично вся історія розвитку комп'ютерів являє собою безперервну гонку між швидкодією центрального процесора і інших систем — пам'яті і зовнішніх пристроїв. Особливо це помітно в системах мультимедіа, де йде обробка звуку та зображення, цифрове подання яких займає великі обсяги пам'яті. Для ефективної обробки звуку і відео при відносно низькій пропускній здатності системної магістралі (шини) все більшу кількість функцій переноситься в апаратуру — модеми, відео-та звукові адаптери. Це викликає їх помітне подорожчання у порівнянні з загальною вартістю комп'ютера, що особливо неприємно за умов швидкого морального старіння всієї комп'ютерної апаратури.
 
 
Особливо дана проблема стала актуальною на початку 1990-х років, коли ПК став доступний широким масам користувачів і все активніше став перетворюватися на розважальний засіб . Першим процесором, що відчув нестачу ресурсів для мультимедійних [[застосунок|застосунків]] став [[Pentium]].
 
 
Насправді, нездатність ПК з процесором Pentium ефективно обробляти в реальному часі звук і відео без спеціальних карт відбувається вже не стільки від загальної швидкодії процесора або шини, які в більшості випадків цілком достатні, а від характеру його набору команд обробки даних, відомого під назвою [[CISC]]. Цей набір, що складається з відносно складних арифметико-логічних команд, орієнтований на типові завдання обробки даних, без спеціальної «заточення» під особливі програми. Ця, вигідна для більшості [[застосунок|застосунків]], архітектура виявляється абсолютно неефективною при швидкісний і специфічній обробці великих масивів даних, оскільки складна система команд використовується на лічені відсотки, а накладні витрати складають десятки і сотні відсотків.
 
 
Технологія MMX являє собою компромісне рішення, що поєднує шляхи, застосовані в комп'ютерах [[SPARC]] і [[Silicon Graphics]] (технологія [[RISC (процесор)|RISC]]- Reduced Instruction Set Computer, комп'ютер з спрощеним набором команд), а також в комп'ютерах з паралельною архітектурою (технологія [[SIMD]]: Single Instruction, Multiple Data — одна команда, багато даних): класичний процесор Pentium ([[CISC]]) з додаванням ряду простих ([[RISC (процесор)|RISC]]) команд паралельної обробки даних ([[SIMD]]).
 
   
 
== Технологія MMX ==
 
== Технологія MMX ==
Рядок 21: Рядок 15:
 
# введено так зване подвійне електроживлення процесора.
 
# введено так зване подвійне електроживлення процесора.
   
Набір з 57 нових команд і є основною відмінністю; інші два — не більше, ніж супутні зміни. Хоча збільшений об'єм кеш і внутрішніх буферів і оптимізований конвеєр дещо прискорюють роботу будь-яких [[застосунок|застосунків]], однак основне збільшення продуктивності — до 60% — можливо тільки при використанні програм, що правильно застосовують технологію MMX в обробці даних.
 
 
== Обробка даних у MMX ==
 
Як вже говорилося, в Pentium MMX додано 57 нових команд обробки даних і, відповідно — чотири нові типи даних. За одну операцію команда MMX обробляє 64-розрядне двійкове слово (так зване квадрослово, або QWord). Нові типи даних утворюються від упаковки в квадраслово звичайних типів — байтів (по 8), слів (по 4) або подвійних слів (по 2). Четвертий тип являє собою саме квадраслово.
 
 
Таким чином, одна елементарна MMX-операція має справу або з одним квадрасловом, що схоже на звичайну операцію великої розрядності, або з двома подвійними словами, чотирма словами або вісьмома байтами, причому виконання відбувається одночасно і кожен елемент даних обробляється незалежно від інших. Подібні групові операції переважають під час обробки зображення (групи точок) і звуку (групи значень амплітуди).
 
 
== Набір MMX-команд ==
 
Набір MMX-команд складається з команд пересилки даних, упаковки / розпаковування, додавання / віднімання, множення, зсуву, порівняння та порозрядних логічних. Команди упаковки і додавання / віднімання можуть працювати в двох режимах: звичайному, коли переповнення розрядної сітки викликає «загортання» (wraparound) значення результату, і спеціальному, коли воно призводить до обмеження (clipping) результату до мінімально або максимально допустимого значення. Режим обмеження, в термінології Intel, називається Saturation (змішування) — в ньому особливо зручно виконувати змішування кольорів зображення або амплітуд звукових сигналів, оскільки при звичайному переповненні результат не має ніякого сенсу.
 
 
Команда множення представлена трьома видами: перші два виконують попарне множення чотирьох слів з вибором або старшої, або молодшої частини результату, а третій виконує операцію виду ab + cd для кожної пари з чотирьох слів операндів, що дуже зручно при обчисленні математичних рядів.
 
 
Команди зсуву реалізують [[Логічний зсув|логічний]] та [[Бітові операції#Арифметичний зсув|арифметичний]] зсув своїх операндів (арифметичний зсув відрізняється від логічного тим, що при зсуві вправо звільнилися розряди заповнюються копією знакового розряду, а не нулями, від чого він придатний для множення / ділення знакових операндів на ступені двійки). Логічні порозрядні команди виконують операції І (AND), АБО (OR), виключаюче АБО (XOR), а також комбіновану команду І з інверсією одного з операндів (AND NOT), зручну для реалізації «зворотного вибору» по бітовій масці.
 
 
Команди порівняння працюють дещо незвично в порівнянні із загальноприйнятою логікою: замість установки ознак для наступних команд переходу вони генерують одиничні бітові маски для тих операндів, які задовольняють умові, і нульові — для решти операндів. Наступні логічні порозрядні операції можуть виділити, погасити або якось інакше обробити відзначені таким чином операнди, які в цьому випадку можуть являти собою точки зображення або відліки звукового сигналу.
 
 
== Особливості реалізації MMX ==
 
 
Для обробки даних і зберігання проміжних результатів у Pentium MMX використовуються вісім 64-розрядних [[Регістр процесора|регістрів]] MM0 .. MM7, які фізично поєднані зі стеком регістрів математичного співпроцесора. При виконанні будь-якої з MMX-команд відбувається установка «режиму MMX» з відміткою цього в слові стану співпроцесора (FPU Tag Word). З цього моменту стек регістрів співпроцесора розглядається як набір MMX-регістрів; завершує роботу в режимі MMX команда EMMS (End MultiMedia State). З одного боку, така реалізація дозволила забезпечити нормальну роботу [[застосунок|застосунків]], що використовують MMX, в багатозадачних системах, що не підтримують цю технологію, оскільки всі подібні системи створюють власну копію вмісту стека співпроцесора і слова його стану для кожного процесу. З іншого боку, перехід між режимами займає значний час, і суміщення, наприклад, в одному циклі команд співпроцесора з командами MMX може не тільки не прискорити, а навіть істотно уповільнити виконання програми. Тому для досягнення найкращих результатів рекомендується групувати ці команди окремо одне від одного, що насправді не представляє ніякої складності.
 
 
== Продуктивність MMX ==
 
Так як MMX — досить вузькоспеціалізоване розширення системи команд процесора, не можна очікувати кардинального прискорення роботи тільки від самого факту переходу на процесор MMX. Як вже було сказано, на застосунках загального характеру, незнайомих з MMX, реальна продуктивність зростає лише на одиниці відсотків, хоча тести можуть показувати її зростання на 20-30% — це відбувається через циклічність більшості тестів, коли більша частина циклу потрапляє в збільшений внутрішній кеш.
 
 
При використанні «чистого» MMX-коду, відповідного до специфіки розв'язуваної задачі, швидкодія переписаної ділянки може зрости в 5-6 разів, проте це прискорення буде локальним і неминуче компенсується «типовими» ділянками програми, тому не слід відразу ж очікувати від програм, що використовують MMX, прискорення роботи в рази. За максимальними результатами тестів Intel Media Benchmark і Norton Media Benchmark для Windows 95, обробка зображень з використанням технології MMX відбувається швидше майже в п'ять разів, проте в середньому виходить приблизно 1.5 .. 3-кратне прискорення.
 
При використанні «чистого» MMX-коду, відповідного до специфіки розв'язуваної задачі, швидкодія переписаної ділянки може зрости в 5-6 разів, проте це прискорення буде локальним і неминуче компенсується «типовими» ділянками програми, тому не слід відразу ж очікувати від програм, що використовують MMX, прискорення роботи в рази. За максимальними результатами тестів Intel Media Benchmark і Norton Media Benchmark для Windows 95, обробка зображень з використанням технології MMX відбувається швидше майже в п'ять разів, проте в середньому виходить приблизно 1.5 .. 3-кратне прискорення.
   
Рядок 85: Рядок 57:
 
* [[SSE2]]
 
* [[SSE2]]
 
* [[SSE3]]
 
* [[SSE3]]
  +
  +
== Джерела ==
  +
{{reflist}}
   
 
== Література ==
 
== Література ==
Рядок 93: Рядок 68:
 
* [http://www.codenet.ru/progr/optimize/mmx.php Codenet.ru] {{ref-ru}} , Стаття про програмування ММХ
 
* [http://www.codenet.ru/progr/optimize/mmx.php Codenet.ru] {{ref-ru}} , Стаття про програмування ММХ
   
[[Категорія:Процесори]]
+
[[Категорія:Інструкції x86]]
  +
[[Категорія:SIMD]]

Версія за 15:05, 15 серпня 2019

MMX (Multimedia Extensions — мультимедійні розширення) — комерційна назва додаткового набору інструкцій, що виконують характерні для процесів кодування / декодування потокових аудіо / відео даних дії за одну машинну інструкцію. Вперше з'явився в процесорах Pentium MMX. Розроблений у першій половині 1990-х.

Текст вилучений зі статті через підозру в порушенні авторських прав
Copyright.svg

Текст, який раніше перебував на цій сторінці, запідозрений у порушенні авторських прав через те, що є дослівним перекладом з таких джерел:

http://www.radiotex.narod.ru/mmx.htm



Тому, хто поставив цей шаблон:
на сторінку обговорення користувача, який розмістив цю статтю, чи додав текст з порушенням авторського права, варто додати повідомлення {{subst:Nothanks tr|MMX|url=http://www.radiotex.narod.ru/mmx.htm }} --~~~~.


Увага До уваги користувача, який розмістив цю статтю

Не редагуйте статтю зараз, навіть якщо ви збираєтеся її переписати. Додержуйтеся вказівок нижче.

  1. Напишіть хоча б гарний накид статті на цій підсторінці. Зверніть увагу: не треба копіювати текст, що порушує авторські права, на зазначену підсторінку й редагувати його. Якщо ви взялися за написання нової статті, не забудьте сповістити про це на сторінці обговорення.
  2. Залиште все як є, і тоді стаття буде вилучена.

У випадку, якщо новий текст написаний не буде, ця стаття буде вилучена через тиждень після появи цього попередження. (Детальніше див. документацію шаблону.)

Вихідний текст цієї статті з можливим порушенням копірайту можна знайти в історії змін.

Зверніть увагу, що розміщення у Вікіпедії матеріалів, включаючи дослівний переклад, автор яких не надав явного дозволу на їхнє використання відповідно до ліцензії GNU FDL без незмінюваних секцій та Creative Commons із зазначенням автора / розповсюдження на тих самих умовах, може бути порушенням законів про авторське право. Користувачі, які додають до Вікіпедії такі матеріали, можуть бути тимчасово позбавлені права редагувати статті.

Незважаючи ні на що, ми завжди раді вашим оригінальним статтям.

Дякуємо.


Технологія MMX

MMX розширення реалізоване фірмою Intel у своїй новій серії процесорів MMX з тактовою частотою 166 і більше МГц.

Процесор Pentium MMX відрізняється від «звичайного» Pentium за шістьма основними пунктами:

  1. додано 57 нових команд обробки даних;
  2. збільшено в два рази обсяг внутрішнього кешу (16 кб для команд і стільки ж — для даних);
  3. збільшено обсяг буфера адрес переходу (Branch Target Buffer — BTB), використовуваного в системі передбачення переходів (Branch Prediction);
  4. оптимізована робота конвеєра (Pipeline);
  5. збільшено кількість буферів запису (Write Buffers);
  6. введено так зване подвійне електроживлення процесора.

При використанні «чистого» MMX-коду, відповідного до специфіки розв'язуваної задачі, швидкодія переписаної ділянки може зрости в 5-6 разів, проте це прискорення буде локальним і неминуче компенсується «типовими» ділянками програми, тому не слід відразу ж очікувати від програм, що використовують MMX, прискорення роботи в рази. За максимальними результатами тестів Intel Media Benchmark і Norton Media Benchmark для Windows 95, обробка зображень з використанням технології MMX відбувається швидше майже в п'ять разів, проте в середньому виходить приблизно 1.5 .. 3-кратне прискорення.

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

Регістри MMX

Розширення MMX включає в себе вісім 64-бітних регістрів загального користування MM0-MM7. Для сумісності зі способами збереження стану процесора в існуючих ОС Intel була змушена об'єднати в програмній моделі процесора вісім регістрів MMX з мантисами восьми регістрів FPU (Математичний співпроцесор). Апаратно це можуть бути різні пристрої, але з точки зору програміста — це одні й ті ж регістри. Таким чином, не можна одночасно користуватися командами Математичного співпроцесора і MMX.

Типи даних MMX

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

Команди технології MMX працюють з такими типами даних:

  • Упаковані байти (вісім байтів в одному 64-розрядному регістрі) (англ. packed byte);
  • упаковані слова (чотири 16-розрядних слова в 64-розрядному регістрі) ( packed word );
  • Упаковані подвійні слова (два 32-розрядних слова в 64-розрядному регістрі) ( packed doubleword );
  • 64-розрядні слова ( quadword ).

Синтаксис

MMX - команди мають такий синтаксис: instruction [dest, src] Тут instruction  — ім'я команди, dest позначає вихідний операнд, src  — вхідний операнд.

У систему команд введено 57 додаткових інструкцій для одночасної обробки декількох одиниць даних. Більшість команд мають суфікс, який визначає тип даних і використану арифметику:

  • US (unsigned saturation) — арифметика з насиченням[en], дані без знака.
  • S або SS (signed saturation) — арифметика з насиченням, дані зі знаком. Якщо у суфіксі немає ні S, ні SS, використовується циклічна арифметика (wraparound).
  • B, W, D, Q вказують тип даних. Якщо у суфіксі є дві з цих букв, перша відповідає вхідному операнду, а друга — вихідно.

Нові інструкції включають такі групи:

  • Команди пересилання даних (Data Transfer Instructions) між регістрами MMX і цілочисельними регістрами і пам'яттю;
  • Команди перетворення типів
  • Арифметичні операції (Arithmetic Instructions), що включають додавання і віднімання в різних режимах, множення і комбінацію множення і складання;
  • Команди порівняння (Comparison Instructions) елементів даних на рівність чи за величиною;
  • Логічні операції (Logical Instructions) — І, І-НЕ, АБО і виключаюче АБО, що виконуються над 64 бітними операндами;
  • Зсувні операції (Shift Instructions) логічні і арифметичні;
  • Команди управління станом (Empty MMX State) очищення MMX — установка ознак порожніх регістрів в слові тегів.

Інструкції MMX не впливають на флаги умов. Регістри MMX, на відміну від регістрів FPU, адресуються фізично, а не відносно TOS. Будь-яка інструкція MMX обнуляє поле TOS регістра стану FPU. Інструкції MMX доступні з будь-якого режиму процесора.

Див. також

Джерела

Література

  • Зубков С. В. Assembler для DOS, Windows, UNIX. 3-тє вид., Стер. — М.: ДМК Прес; СПб. : Питер, 2004. — 608 с.

Посилання