Difference between revisions 25908936 and 25912481 on ukwiki{{переписати}} '''MMX''' ('''M'''ulti'''m'''edia E'''x'''tensions — [[Мультимедіа|мультимедійні]] розширення) — комерційна назва додаткового [[Архітектура системи команд|набору інструкцій]], що виконують характерні для процесів кодування / декодування потокових аудіо / відео даних дії за одну [[Машинна інструкція|машинну інструкцію]]. Вперше з'явився в процесорах [[Pentium MMX]]. Розроблений у першій половині [[1990-ті|1990-х]]. {{дослівний переклад|url=http://www.radiotex.narod.ru/mmx.htm}} == Технологія MMX == MMX розширення реалізоване фірмою Intel у своїй новій серії процесорів MMX з тактовою частотою 166 і більше МГц. Процесор Pentium MMX відрізняється від «звичайного» Pentium за шістьма основними пунктами: # додано 57 нових команд обробки даних; # збільшено в два рази обсяг внутрішнього [[кеш]]у (16 кб для команд і стільки ж — для даних); # збільшено обсяг буфера адрес переходу (Branch Target Buffer — BTB), використовуваного в [[Модуль передбачення переходів|системі передбачення переходів]] (Branch Prediction); # оптимізована робота конвеєра (Pipeline); # збільшено кількість буферів запису (Write Buffers); # введено так зване подвійне електроживлення процесора. При використанні «чистого» 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-розрядному регістрі) ({{lang-en|packed byte}}); * упаковані [[машинне слово|слова]] (чотири 16-розрядних слова в 64-розрядному регістрі) ('' packed word ''); * Упаковані подвійні слова (два 32-розрядних слова в 64-розрядному регістрі) ('' packed doubleword ''); * 64-розрядні слова ('' quadword ''). == Синтаксис == '' MMX ''- команди мають такий синтаксис: <code>instruction [dest, src]</code> Тут ''' instruction ''' — ім'я команди, ''' dest ''' позначає вихідний операнд, ''' src ''' — вхідний операнд. У систему команд введено 57 додаткових інструкцій для одночасної обробки декількох одиниць даних. Більшість команд мають [[підрядок|суфікс]], який визначає тип даних і використану арифметику: * US (unsigned saturation) — {{нп|арифметика з насиченням|||Saturation arithmetic}}, дані без знака. * 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 доступні з будь-якого режиму процесора. == Див. також == * [[Streaming SIMD Extensions|SSE]] * [[SSE2]] * [[SSE3]] == Джерела == {{reflist}} == Література == * Зубков С. В. Assembler для DOS, Windows, UNIX. 3-тє вид., Стер. — М.: ДМК Прес; СПб. : Питер, 2004. — 608 с. == Посилання == * [https://web.archive.org/web/20090124124345/http://download.intel.com/design/PentiumII/manuals/24319002.PDF IA Software Developer's Manual, Vol 1] {{ref-en}} , Див. розділ 8 про програмування MMX * [http://www.codenet.ru/progr/optimize/mmx.php Codenet.ru] {{ref-ru}} , Стаття про програмування ММХ [[Категорія:Інструкції x86]] [[Категорія:SIMD]] All content in the above text box is licensed under the Creative Commons Attribution-ShareAlike license Version 4 and was originally sourced from https://uk.wikipedia.org/w/index.php?diff=prev&oldid=25912481.
![]() ![]() This site is not affiliated with or endorsed in any way by the Wikimedia Foundation or any of its affiliates. In fact, we fucking despise them.
|