MMX

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

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

Регістри 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 доступні з будь-якого режиму процесора.

Див. також

  • Extended MMX
  • SSE
  • SSE2
  • SSE3

Література

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

Посилання

  • IA Software Developer's Manual, Vol 1 (англ.) , Див. розділ 8 про програмування MMX
  • Codenet.ru [Архівовано 4 вересня 2019 у Wayback Machine.] (рос.) , Стаття про програмування ММХ