MMX (Multi Media Extension oder Matrix Multimedia Extension) ist eine von Intel entworfene SIMD-Technik, die es erlaubt, große Integer-Datenmengen, wie sie z.B. bei der Verarbeitung von Video, Audio und Bildern anfallen, schneller zu verarbeiten. Ursprünglich stand das Kürzel MMX für Matrix Math Extensions, wurde allerdings von Intel aus marketingtechnischen Gründen auf Multi Media Extension umgetauft.
Intel spendiert, um mit MMX arbeiten zu können, dem Prozessor 57 weitere Befehle und führt vier neue Datenformate ein. Ein Hauptvorteil von MMX ist die so genannte Saturation. Sie bedeutet, dass eine Zahl beim Überschreiten ihres größten oder kleinsten Wertes nicht überläuft, sondern ihren Wert behält.
Ein Anwendungsbeispiel: bei einem "Fade-Out"-Effekt von Bildern könnte man beispielsweise immer 2 Pixel mit 32 Bit Farbtiefe gleichzeitig um einen gewissen Wert verdunkeln. Durch die Saturation muss man nicht kontrollieren, ob die Pixel bereits schwarz sind (Beispiele: oder ). Dadurch und durch die parallele Verarbeitung mehrerer Werte kann die Geschwindigkeit der Berechnungen erheblich gesteigert werden.
Noch wesentlich weiter entwickelt findet sich dieser Ansatz jedoch in DSPs (von wo er ursprünglich kommt) sowie in den AltiVec-Einheiten von modernen PowerPC-CPUs – oder auf heutigen Grafikkarten.
Mit MMX ist es möglich, bis zu 64-Bit große Integer-Datenpakete auf einmal zu bearbeiten. Hierfür wurden zusätzliche 64-Bit-Register mmx0 bis mmx7 geschaffen, die allerdings auf die FP-Register gemapt wurden, so dass keine gleichzeitigen MMX und FP Operationen möglich sind (s.u.).
In Multitasking-Betriebssystemen müssen bei einem Taskwechsel sämtliche Registerinhalte in einem speziellen Speicherbereich gesichert werden. Da eine Änderung dieses Speicherbereiches von sämtlichen Betriebssystemen hätte unterstützt werden müssen, wurde ein "Trick" eingesetzt, der MMX auch ohne Betriebssystemuntertützung erlaubt: Es wurden nach außen die MMX-Register auf die acht Fließkomma-Register der FPU abgebildet. Damit sind die eigentlichen FPU-Register nicht mehr verfügbar, sobald ein Programm MMX benutzt.
Die neueren Befehlssatz-Erweiterungen wie SSE benutzen jedoch komplett eigene Register und benötigen somit zwingend eine Unterstützung des Betriebssystems. Auch lässt sich die Überdeckung der Fließkommaregister durch die MMX-Register bei neueren Prozessoren abschalten.
Die meisten MMX-Befehle werden in nur einem Prozessorzyklus verarbeitet. Die Multiplikationsbefehle brauchen 3 Zyklen bis das Ergebnis zur Verfügung steht, es kann aber nach jedem Zyklus eine neue Multiplikation in die Pipeline nachgeschoben werden. (PMMX bis PIII)
Ausführlichere Informationen über die MMX-Befehle (und andere x86-Befehle) finden sich zum Beispiel in der Dokumentation des Assemblers NASM.
Nachfolgend eine Übersicht ab welcher CPU-Familie die jeweiligen Hersteller MMX integriert haben:
MMX | MMX | MMX | MMX (processeur) | MMX | MMX | MMX | MMX | MMX | MMX | MMX | MMX
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Multi Media Extension".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world