www.wikidata.de-de.nina.az
Die Multi Media Extension kurz MMX ist eine Anfang 1997 von Intel auf den Markt gebrachte SIMD Erweiterung des IA 32 Befehlssatzes bei der Befehle stets auf mehrere Daten gleichzeitig angewendet werden Ursprunglich stand das Kurzel MMX fur Matrix Math Extensions wurde allerdings von Intel marketingbedingt in Multi Media Extension umbenannt 1 Intel Prozessor mit MMXMMX verwendet keine neuen physischen Prozessorregister sondern funktioniert die Register des mathematischen Koprozessors FPU um Intel entwarf fur MMX 57 neue Befehle zum Verarbeiten von Ganzzahlen und fuhrte vier neue Vektor Datenformate ein MMX Befehle unterstutzen Sattigungsarithmetik MMX wurde nach seiner Einfuhrung von der Software Industrie nur zogerlich unterstutzt und war schon nach drei Jahren durch Intels eigene Fortentwicklungen SSE und AMDs 3DNow uberholt Benchmarks zu seiner Performance wiesen eine grosse Bandbreite auf Inhaltsverzeichnis 1 Anforderungen von Multimediaanwendungen 2 Realisierung 2 1 Neue Datenformate 2 2 Registerverwendung 2 3 Wechsel zwischen FPU und MMX 2 4 Einsatz in Betriebssystemen 2 5 Saturation Mode und Wrap around Mode 2 6 Angabe der Operanden 2 7 Zeitverhalten 3 Befehlssatz 3 1 Arithmetische Befehle 3 2 Logische Operationen 3 3 Datenaustausch 3 4 Datenvergleich 3 5 Datenkonversion 3 6 MMX Status 3 7 Exceptions 4 CPUs mit MMX 5 Programmiersprachen 6 Einsatz in Software 7 Leistung 8 Nach MMX 8 1 Erweiterung des MMX Befehlsvorrats unter SSE 8 2 SSE2 bis SSE4 9 Literatur 10 Weblinks 11 EinzelnachweiseAnforderungen von Multimediaanwendungen BearbeitenDie Anforderungen des Multimedia und Kommunikationsbereiches stellen an ein Computersystem und damit den Prozessor teilweise andere und neue Anforderungen Die Verarbeitung der Daten ist meist hochgradig parallelisierbar 2 So sind z B bei einem Videoschnitt die Operationen fur die vielen einzelnen Bildpunkte identisch Theoretisch optimal ware hier die Ausfuhrung mittels eines einzigen auf alle Punkte anzuwendenden Befehles Die erforderlichen Operationen sind haufig keine einfachen einzelnen Anweisungen sondern eher umfangreichere Befehlsketten Das Einblenden eines Bildes vor einem Hintergrund ist beispielsweise ein komplexer Vorgang aus Maskenbildung mittels XOR Vorbereitung des Hintergrundes mittels AND und NOT sowie der Uberlagerung der Teilbilder durch OR Diesen Anforderungen wird durch die Bereitstellung neuer komplexer Befehle entsprochen So vereinigt z B der MMX Befehl PANDN eine Invertierung und Und Verknupfung der Form x y AND NOT x Realisierung Bearbeiten nbsp Die vier neuen Datenformate von MMXIntel schuf mit MMX ein neues Konzept zur Verwendung bereits existierender Register neue Datenformate einen erweiterten Befehlssatz und die Wahl zwischen verschiedenen arithmetischen Moglichkeiten Saturation Mode und Wrap around Mode Kleinere interne nicht den Befehlsumfang betreffende Unterschiede bestehen zwischen den nicht offiziell so benannten Versionen MMX 1 0 und 2 0 der verschiedenen Pentium Prozessoren Noch wesentlich weiter entwickelt findet sich der MMX Ansatz in den ASICs wo er ursprunglich herkommt sowie in den AltiVec Einheiten von modernen PowerPC CPUs oder auf Grafikkarten Neue Datenformate Bearbeiten Es wurden fur MMX vier neue Datenformate PackedByte PackedWord PackedDoubleWord und QuadWord geschaffen mit denen es moglich ist bis zu 64 Bit grosse Integer Datenpakete auf einmal zu bearbeiten 3 Diese Formate sind im Prinzip nur andere Bezeichnungen fur bereits existierende Formate Die neue Nomenklatur zeigt an dass mit MMX nicht einzelne Daten bzw Zahlen sondern Datenfelder bearbeitet werden Im Prinzip ist ein QuadWord nur ein 64 Bit Feld das man auch DoubleLongInt hatte nennen konnen ein ShortPackedWord ist eigentlich ein ShortPackedInteger 4 Registerverwendung Bearbeiten nbsp Verwendung von FPU Registern durch MMX hellblau markiert Fur die Datenmanipulation wurden zusatzliche 64 Bit Register MM0 bis MM7 geschaffen 3 die allerdings mit den 80 Bit Registern R0 bis R7 der FPU physisch identisch sind Dabei werden von MMX nur je acht Byte der je zehn Byte breiten FPU Register also nur der Mantissenbereich von FPU Werten genutzt Die beiden restlichen Bytes werden unter MMX auf den hexadezimalen Wert FFFF gesetzt Auch die ubrigen FPU Register wie die 16 Bit breiten Control Status und Tag Register das 11 Bit breite Op Register sowie die beiden 48 Bit breiten Pointer Register haben bei MMX Anwendungen keine bzw eine in seltenen Fallen eingeschrankte oder anders zu interpretierende Bedeutung der hier anfallenden Werte 5 Wechsel zwischen FPU und MMX Bearbeiten Vor einem Wechsel zu einer MMX Anwendung sollte zuerst gepruft werden ob SIMD Erweiterungen und speziell MMX vom System unterstutzt werden Dies ist durch den seit dem Pentium vorhandenen Befehl CPUID unter Ubergabe des Wertes 1 im Register EAX moglich 6 7 MOV eax 1 Es soll das Feature Flag abgefragt werden CPUID CPUID Befehl ausfuhren TEST edx 00800000 h Ist Bit 23 im Register edx gesetzt JNZ MMX kompatibel Wenn ja dann ist der Prozessor MMX kompatibel Mochte man nach einem positiven Test auf MMX Fahigkeit diese nutzen sollten als Nachstes die FPU Daten durch den Befehl FXSAVE in einen 512 Byte grossen Speicherbereich gesichert werden Uber die beiden von MMX nicht verwendeten Bytes in jedem Register wird eine MMX Anwendung abgesichert d h einer FPU Anwendung angezeigt Ein expliziter Befehl zum Wechsel in eine MMX Anwendung existiert allerdings nicht Eventuell auftretenden FPU Befehlen wahrend einer MMX Anwendung wird der Status NaN Not a Number ubersandt Storende FPU Befehle bleiben so meist relativ folgenlos Nach Beendigung der Anwendung sollten durch FXSTOR die zuvor durch FXSAVE gesicherten FPU Daten wiederhergestellt werden Zur Signalisierung einer Freigabe von MMX an anstehende FPU Anwendungen existiert auch der allerdings nicht zwingend vorgeschriebene und nicht immer notwendige MMX Befehl EMMS Dieser kann auch innerhalb einer MMX Anwendung wenn z B eine MMX Anwendung eine API aufruft welche ihrerseits FPU Befehle verwendet notig sein 8 Einsatz in Betriebssystemen Bearbeiten In Multitasking Betriebssystemen mussen bei einem Kontextwechsel samtliche Registerinhalte in einem speziellen Speicherbereich gesichert werden Da eine Anderung dieses Speicherbereiches von samtlichen Betriebssystemen hatte unterstutzt werden mussen wurde ein Trick eingesetzt der MMX auch ohne Betriebssystemunterstutzung erlaubt Es wurden nach aussen die MMX Register auf die acht Gleitkomma Register der FPU abgebildet Damit sind die eigentlichen FPU Register nicht mehr verfugbar sobald ein Programm MMX benutzt 6 Neuere Befehlssatzerweiterung wie SSE benutzen komplett eigene Register und benotigen somit zwingend eine Unterstutzung des Betriebssystems Auch lasst sich die Uberdeckung der Gleitkomma Register durch die MMX Register bei neueren Prozessoren abschalten Saturation Mode und Wrap around Mode Bearbeiten Der MMX Befehlsvorrat enthalt Befehle die den Saturation Mode anwenden und Befehle die im Wrap around Mode arbeiten So fuhrt z B der MMX Befehl PADDB eine Addition zweier Packed Bytes im Wrap around Mode aus wahrend PADDSB Selbiges im Saturation Mode macht Der Saturation Mode bedeutet dass eine Zahl beim Uberschreiten ihres grossten oder kleinsten Wertes nicht uberlauft sondern diesen grossten bzw kleinsten moglichen Wert annimmt Ein Anwendungsbeispiel Bei einem Fade Out Effekt von Bildern konnte man beispielsweise immer zwei 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 0 2 0 displaystyle 0 2 0 nbsp oder 5 88 0 displaystyle 5 88 0 nbsp Dadurch und durch die parallele Verarbeitung mehrerer Werte kann die Geschwindigkeit der Berechnungen erheblich gesteigert werden Im Wrap around Mode wird bei einem Uberlauf bzw Unterlauf der Ubertrag nicht berucksichtigt So ergibt bei einem Maximalwert von einem Byte dezimal 256 die Addition 255 2 displaystyle 255 2 nbsp das Ergebnis 1 Binar ausgedruckt ergibt 11111111 00000010 1 00000001 displaystyle 11111111 00000010 1 00000001 nbsp von dem das hochstwertige Bit hier in Klammern unberucksichtigt bleibt was zum Ergebnis 00000001 also dezimal 1 fuhrt Angabe der Operanden Bearbeiten Ein wesentlicher Unterschied zwischen FPU und MMX Anwendungen besteht darin in welcher Form die Befehle ihre Operanden erhalten Hinter vielen FPU Befehlen stehen keine expliziten Operanden Diese holen sich die Befehle uber einen Stackpointer top of the stack aus den Bits 11 bis 13 des Status Registers 9 MMX Befehle arbeiten dagegen ebenso wie CPU Befehle mit explizit nach dem Befehl angegebenen Operanden 5 Ein MMX Befehl kann keinen einen oder zwei Quell und Zieloperanden aufweisen 10 Dies konnen MMX Register MMX Allzweckregister Reg Speicherstellen Mem oder Konstanten Const unterschiedlicher Grosse 8 16 32 oder 64 Bit sein Welche Operanden fur einen speziellen Befehl zulassig sind ist unterschiedlich und in Referenzbuchern vermerkt Eine Angabe wie Befehl Mem32 MMX Befehl MMX Reg32 Befehl Reg32 MMX wurde z B besagen dass die Operation Befehl von einem MMX Register zu einem 32 Bit Allzweckregister von einem 32 Bit Allzweckregister zu einem MMX Register und umgekehrt moglich ist Zeitverhalten Bearbeiten Die meisten MMX Befehle werden in nur einem Prozessorzyklus verarbeitet Die Multiplikationsbefehle brauchen drei Zyklen bis das Ergebnis zur Verfugung steht es kann aber nach jedem Zyklus eine neue Multiplikation in die Pipeline nachgeschoben werden Pentium MMX bis Pentium III Befehlssatz Bearbeiten nbsp Kategorisierung der MMX BefehleInsgesamt 24 neue Befehle konnen mit den verschiedenen Datentypen umgehen was zu den von Intel angegebenen 57 Befehlen fuhrt Von diesen 24 Befehlen unterscheiden sich etliche nur durch unterschiedliche Berucksichtigung der Vorzeichen und der Uberlaufart so dass im Prinzip nur 15 Grundoperationen ubrigbleiben Da MMX mit gepackten Daten arbeitet beginnen die meisten Befehle zwecks Unterscheidung von den mit F beginnenden FPU Instruktionen mit einem P MMX Befehle bestehen ausser dem fuhrenden P optional aus den Buchstaben B W D oder Q fur das Datenformat einem CPU ahnlichen Befehlswort wie z B ADD oder CMP und aus S fur vorzeichenbehafteten bzw US fur vorzeichenlosen Saturation Mode So besagt z B der Befehl PADDSW P fur Packed ADD fur Addition S fur vorzeichenbehafteten Saturation Mode angewandt auf das Datum eines Words Der MMX Befehlssatz umfasst Anweisungen 11 zum arithmetischen Manipulieren von Daten logischen Manipulieren von Daten Datenaustausch Datenvergleich Datenkonversion MMX StatusDetailfragen zum Befehlsvorrat sind dem Intel Architecture Software Developer s Manual Volume 2 Instruction Set zu entnehmen siehe im Abschnitt Literatur Arithmetische Befehle Bearbeiten Zur Addition im Wrap around Mode existieren drei Befehle PADDB PADDW PADDD fur die Datentypen PackedByte PackedWord und PackedDoubleWord Im Saturation Mode existieren Befehle fur die vorzeichenbehaftete PADDSB PADDSW sowie vorzeichenlose PADDUSB PADDUSW Addition von PackedBytes und PackedWords Ein Befehl fur die Addition von DoubleWords ist nicht vorhanden In beiden Modi wird kein Hinweis auf einen Uber oder Unterlauf des Wertebereichs z B durch Setzen von Flags gegeben 12 Die Befehle zur Subtraktion sind analog zur Addition gestaltet nbsp Die kombinierte Multiplikations und AdditionsanweisungPMADDWD im DetailBei der Multiplikation besteht das Problem dass die Ergebnisse die Grosse der Register von 64 Bit ubersteigen konnen Dies wurde dadurch gelost dass der hoherwertige und der niederwertige Anteil des Ergebnisses in zwei verschiedenen Registern gespeichert wird Fur die Multiplikation und die Verwendung des niederwertigen Anteils wird PMULLW Multiply Packed Word and Store Low und fur den hoherwertigen Anteil PMULHW Multiply Packed Word and Store High verwandt 13 Der Befehl PMADDWD multipliziert vier Paare von 16 Bit Worten und addiert paarweise die Ergebnisse auf Die Befehle zur Verschiebung funktionieren mit Ausnahme des in MMX dabei nicht gesetzten Carry Flags analog zu den Schiebe Befehlen der CPU wie z B SLL SRL und SRA Sie sind nur auf Words DoubleWords und QuadWords nicht aber auf Bytes anwendbar Fur das logische Verschieben nach links werden PSLLW und PSLLD und fur die umgekehrte Richtung PSRLW und PSRLD angewandt Fur das arithmetische Verschieben stehen PSRAW und PSRAD zur Verfugung fur die logische Verschiebung von QuadWords PSLLQ und PSRLQ 10 Logische Operationen Bearbeiten nbsp Quell und Zieloperanden der Befehle zum DatenaustauschDie Bit Manipulationsbefehle sind identisch mit den CPU Befehlen AND OR und XOR nur werden von ihnen gleich 64 Bit also ein QuadWord auf einmal bearbeitet Eine MMX Entsprechung zum CPU Befehl NOT existiert nicht Der einzige MMX Befehl ohne Entsprechung im CPU Befehlsvorrat ist PANDN der eine Negation des ersten Operanden mit anschliessender AND Verknupfung mit dem zweiten Operanden in folgender Form darstellt x y AND NOT x 14 Datenaustausch Bearbeiten Dazu existieren analog zum CPU Befehl MOV die beiden Befehle MOVD und MOVQ fur DoubleWords und QuadWords Bedingt durch die Rechnerarchitektur also die unterschiedliche Grosse von 64 Bit MMX Registern 32 Bit Allzweckregistern und dem 32 Bit Adressbus sind beide Befehle gewissen Beschrankungen in Bezug auf die zulassigen Operanden unterworfen 15 MOVD kann nicht zum Datenaustausch zwischen zwei MMX Registern verwandt werden da es fur MMX Register nur 64 Bit Daten gibt Er ermoglicht also nur den Austausch zwischen einem MMX Register und 32 Bit Allzweckregistern und Speicherstellen in beiden Richtungen 16 Die moglichen Formen sind also MOVD MMX Mem32 MOVD Mem32 MMX MOVD MMX Reg32 MOVD Reg32 MMX Dabei sind immer nur die niederwertigen Bits 0 bis 31 des MMX Registers betroffen Beim Verschieben von Daten aus einem MMX Register werden also nur diese Bits verwandt Beim Verschieben von Daten in das MMX Register wird der hoherwertige Anteil Bits 32 bis 64 geloscht also auf Null gesetzt MOVQ erlaubt einen bidirektionalen Datenaustausch aller 64 Bit zwischen MMX Registern und Speicherstellen Ein Datenaustausch mit den 32 Bit Allzweckregistern ist nicht vorgesehen Die moglichen Formen sind damit MOVQ MMX MMX MOVQ MMX Mem64 MOVQ Mem64 MMX Datenvergleich Bearbeiten Die MMX Befehle zum Datenvergleich sind weniger flexibel und machtig als die entsprechenden CPU und FPU Befehle Es ist nur vorgesehen beide Operanden auf Gleichheit zu testen oder prufen zu lassen ob der Wert im ersten Operand grosser als im zweiten ist Beide Vergleichsmoglichkeiten sind fur die drei Formate Byte Word und DoubleWord verfugbar Somit ergeben sich folgende Befehle PCMPEQB PCMPEQW PCMPEQD PCMPGTB PCMPGTW und PCMPGTD EQ steht hierbei jeweils fur equal GT fur greater Als erster Operand ist nur ein MMX Register als zweiter ein MMX Register oder eine 64 Bit Speicherstelle erlaubt Ein wesentlicher Unterschied zu CPU und FPU besteht in der Art wie das Ergebnis des Vergleichs ubergeben wird Es wird nicht durch das Setzen von Flags oder das Setzen einzelner Bits z B im Statusregister der FPU angezeigt sondern im ersten Operanden also einem MMX Register abgelegt Fuhrt der Vergleich zu einem wahren Ergebnis wird dort der hexadezimale Wert FF bzw FFFF oder FFFFFFFF eingetragen Im anderen Fall werden Nullen eingefugt Ein Vergleich von zwei DoubleWords auf Gleichheit durch PCMPEQD MMx MMy liesse sich in seinem Ablauf demnach folgendermassen ausdrucken IF MMx 31 00 gt MMy 31 00 THEN MMx 31 00 FFFFFFFF ELSE MMx 31 00 00000000 IF MMx 63 32 gt MMy 63 32 THEN MMx 63 32 FFFFFFFF ELSE MMx 63 32 00000000 Datenkonversion Bearbeiten MMX Befehle ermoglichen die Konvertierung eines Datums in ein kleineres oder grosseres wobei eine Konvertierung in ein kleineres Datenformat naturlich immer einen Datenverlust zur Folge hat Fur die Konvertierung in ein kleineres Datum stehen die Befehle PACKSSWB PACKSSDW und PACKUSWB fur die Umwandlung von Word zu Byte und DoubleWord zu Word zur Verfugung Zwecks Erhaltung des Vorzeichens wird dabei das hochstwertige Bit des Zieldatums nicht verwendet Damit ist nur die Halfte des Wertebereichs verfugbar Die Befehle saturieren deshalb Werte welche diesen Bereich uber oder unterschreiten So setzt z B PUNBKHBW alle Werte die 128 unterschreiten auf 128 und alle Werte die 127 uberschreiten auf 127 PACKUSWB Pack with Unsigned Saturation Word to Byte berucksichtigt das Vorzeichen nicht saturiert aber dennoch Die Konvertierung in ein grosseres Format ist von Byte zu Word Word zu DoubleWord und DoubleWord zu QuadWord moglich Dabei existiert jeweils ein Befehl fur die Umwandlung des niederwertigen und des hoherwertigen Teil der Daten Ersteres decken die drei Befehle PUNPCKHBW PUNPCKHWD und PUNPCKHDQ ab Letzteres PUNPCKLBW PUNPCKLWD und PUNPCKLDQ 10 MMX Status Bearbeiten Die drei Befehle zum MMX Status EMMS FXSAVE und FXRSTOR besitzen keine Operanden EMMS ist eine Art Aufraumbefehl nach Beendigung einer MMX Anwendung FXSAVE und FXRSTOR dienen jeweils zum Sichern und Wiederherstellen FPU spezifischer Daten Flags und Register siehe hierzu auch im Abschnitt Wechsel zwischen FPU und MMX Die beiden Befehle FXSAVE und FXRSTOR wurden erst mit dem Deschutes Kern des Pentium II eingefuhrt In fruheren CPUs stehen sie nicht zur Verfugung Exceptions Bearbeiten Da MMX Befehle sich nicht grundlegend von CPU Befehlen unterscheiden konnen sie auch grundsatzlich dieselben Exceptions auslosen FPU spezifische Gleitkommazahlen betreffende Exceptions wie z B Ausnahmesituationen bei Denormalisierungen konnen bei Benutzung der Register durch MMX nicht auftreten 17 CPUs mit MMX BearbeitenDa MMX die erste Erweiterung der x86 Architektur ist besitzen eigentlich alle CPUs der letzten Jahre MMX Eine vollstandige Liste aller CPUs mit MMX wurde also den Rahmen sprengen An dieser Stelle sei allerdings auf die Liste von Mikroprozessoren verwiesen Nachfolgend eine Ubersicht ab welcher CPU Familie die jeweiligen Hersteller MMX integriert haben AMD ab AMD K6 18 Centaur Technology ab IDT WinChip C6 Cyrix ab Cyrix 6x86MX 18 Intel ab Intel Pentium MMX 19 Rise Technology Rise mP6 Transmeta ab Transmeta CrusoeProgrammiersprachen BearbeitenZur Umsetzung der erweiterten und erhohten Potenziale eines neuen Prozessorkonzeptes wie MMX in optimierte Anwendungssoftware ist es erforderlich dass die erweiterten Moglichkeiten der Maschinensprache auch von den neuen Versionen der diversen hoheren Programmiersprachen unterschiedlichsten Abstraktionsniveaus und ihren Compilern unterstutzt werden Die Sprachen konnen sich dabei einerseits darauf beschranken die Moglichkeiten von MMX im Kompilierungsprozess umzusetzen den Befehlsvorrat der jeweiligen Sprache aber nicht zu erweitern Fur den Programmierer andert sich dadurch recht wenig er muss lediglich aus Grunden der Abwartskompatibilitat vor der Kompilierung angeben ob MMX im Zielcode verwendet werden soll oder nicht 20 Eine Sprache kann aber auch ihren Befehlsvorrat erweitern und neue speziell die Starken von MMX unterstutzende Konzepte und Befehle fur das Schreiben des Quellcodes implementieren So stellt z B Free Pascal 21 vordefinierte Array Typen speziell fur MMX und 3DNow bereit 22 Vector Pascal ermoglicht parallele Operationen auf Daten Im systemnahen Sprachbereich unterstutzte der Microsoft Macro Assembler schon ein dreiviertel Jahr nach Markteinfuhrung von MMX in Version 6 12 die neuen Moglichkeiten von MMX Auch der Flat Assembler und NASM unterstutzten spater MMX Intel unterstutzte in seinen eigenen C Compilern und spater in C 23 relativ zugig MMX Auch der VectorC Compiler 24 von Codeplay unterstutzt die Vektorisierung und optimiert C Quellcode bei der Ubersetzung fur MMX Andere Programmiersprachen folgten spater mit der Umsetzung der Moglichkeiten von MMX Die MMX Unterstutzung in Microsofts C Compiler wurde allerdings nicht mehr fur 64 Bit Anwendungen ubernommen 25 Einsatz in Software BearbeitenMMX wurde ebenso wie AMDs 3DNow nicht im von Intel erhofften Umfang von der Softwareindustrie eingesetzt Nur bei wenigen Produkten ist ein Vermerk wie Optimiert fur MMX explizit zu finden Am ehesten wurde es noch bei Spielen und Video Anwendungen wie z B Ulead VideoStudio eingesetzt 26 Eine der Anwendungen die die MMX Moglichkeiten relativ schnell implementierten war Adobe Photoshop siehe dazu auch den Abschnitt Leistung Leistung BearbeitenAngaben zur Leistung sind stark vom jeweiligen Gesamtsystem den getesteten Anwendungsbereichen und Anwendungen den angewandten Algorithmen der Testmethode bzw der testenden Firma und vielen anderen Randbedingungen abhangig 27 Intel selbst verspricht bei MMX Prozessoren 10 20 mehr Leistung bei herkommlicher Software und bis zu 60 mehr bei MMX optimierter Software 28 29 Gerade aber bei 3D Grafik mit vielen Gleitkommaberechnungen bringt MMX siehe auch Grafik kaum eine Leistungssteigerung da das Umschalten zwischen MMX und FPU Arithmetik Context Switch mit bis zu 50 Taktzyklen 7 relativ viel Zeit in Anspruch nehmen kann 30 Sreraman und Govindarajan haben im Jahr 2000 in Bezug auf die Vektorisierung unter der Sprache C Leistungssteigerungen vom Faktor 2 bis 6 5 fur MMX ermittelt 31 Bei Benutzung von Intel eigenen Programmbibliotheken fur Signal und Bildbearbeitung bringt MMX Verbesserungen der Performance vom Faktor 1 5 bis 2 bei Grafikanwendungen zwischen 4 und 6 32 Nach anderen Untersuchungen bringt die Verwendung von MMX Performancevorteile von Faktoren zwischen 1 2 und 1 75 33 Beim MPEG Decoding beschrankt sich laut Intel der Performencegewinn durch MMX auf 40 Prozent Somit kann MMX nur bei bestimmten Aufgabenstellungen deutliche Leistungsvorteile gegenuber nichtoptimierter Software bringen Testergebnisse konnen sogar im Vergleich verschiedener Versionen derselben Software stark schwanken So ergaben sich bei einem Test des fur MMX optimierten Adobe Photoshop Version 4 0 bei den meisten Filtern Performancegewinne zwischen 5 und 20 Prozent 34 In Version 4 0 1 liefen manche Aktionen unter MMX dagegen uberraschenderweise langsamer als ohne MMX Unterstutzung 35 Nach MMX BearbeitenMMX konnte schon bald den gestiegenen Anforderungen schnell wechselnder Grafik in hochauflosender Form wie sie z B Spiele stellen nicht mehr genugen Deshalb fuhrte Intel mit der Einfuhrung des Pentium III Prozessors Anfang 1999 die SSE Technologie ein Dabei wurden acht auch physisch neue CPU und FPU unabhangige 128 Bit breite Register geschaffen Es wurde sowohl der MMX Befehlssatz erweitert als auch ganzlich neue Befehle geschaffen SSE erweiterte ausserdem das ausschliessliche Arbeiten von MMX mit Ganzzahlen Integer auf Gleitkommazahlen Spatere Nachfolgeversionen erweiterten zudem stetig die Fahigkeiten von SSE Das von AMD 1998 mit dem AMD K6 2 eingefuhrte 3DNow nutzte ebenso wie MMX die Register der FPU allerdings in einer der FPU adaquaten Art zur Bearbeitung von Gleitkommazahlen Die nachfolgenden Versionen von 3DNow beseitigten Inkompatibilitaten zu Intels SSE Konzept Erweiterung des MMX Befehlsvorrats unter SSE Bearbeiten Mit SSE wurden zwolf neue Befehle fur den MMX Modus eingefuhrt welche nicht mit den neuen XMM Registern von SSE sondern ausschliesslich mit den alten MMX bzw FPU Registern arbeiten PAVGB und PAVGW bilden den gerundeten Mittelwert zweier Operanden PEXTRW und PINSRW dienen der Extraktion und Insertion von Words PMAXSW PMAXUB PMINSW und PMINUB berechnen Minima und Maxima zweier vorzeichenbehafteter Words bzw vorzeichenloser Bytes PMOVMSKB erzeugt aus den Most Significant Bits eines Short Packed Bytes eine Maske PMULHUW arbeitet wie der alte Befehl PMULHW verwendet im Gegensatz dazu aber zwei vorzeichenlose Words PSADWB berechnet fur zwei Werte die absoluten Werte der Differenzen ihrer einzelnen Bytes und addiert danach die Summe dieser Differenzen auf PSHUFW mischt die Einzelbestandteile zweier 64 Bit Werte nach Regeln die uber einen dritten Befehlsoperanden ubergeben werden 36 37 SSE2 bis SSE4 Bearbeiten Mit SSE2 wurde ein vereinheitlichter Befehlssatz verwirklicht der ebenso auf die 128 Bit breiten XMM wie auf 64 Bit breiten MMX Register verwandt werden kann Manche Befehle erlauben sogar die gleichzeitige Verwendung beider Registergruppen z B der Konvertierungsbefehl CVPD2PI MMX XMM 38 Mit SSE4 wurde die Unterstutzung von MMX dann aber beendet Literatur BearbeitenDavid Bistry Carole Delong Mickey Gutman Complete Guide to MMX Technology McGraw Hill 1997 ISBN 0 07 006192 0 Richard Blum Professional Assembly Language Wiley Publishing 2005 ISBN 0 7645 7901 0 Paul Cockshott Kenneth Renfrew SIMD Programming Manual for Linux and Windows Springer Berlin 2004 ISBN 1 85233 794 X Rohan Coelho Maher Hawash DirectX RDX RSX and MMX Technology A Jumpstart Guide to High Performance APIs Addison Wesley Amsterdam 1997 ISBN 0 201 30944 0 Randall Hyde The Art of Assembly Language No Starch Press 2003 ISBN 1 886411 97 2 Intel Intel Architecture Software Developer s Manual Volume 1 Basic Architecture Bestellnummer 243190 1999 Intel Intel Architecture Software Developer s Manual Volume 2 Instruction Set Bestellnummer 243191 1999 Intel Intel Architecture Software Developer s Manual Volume 3 System Programming Guide Bestellnummer 243192 1999 Trutz Eyke Podschun Das Assemblerbuch Grundlagen Einfuhrung und Hochsprachenoptimierung Addison Wesley 2002 ISBN 3 8273 2026 7 Shreekant S Thakkar Programmer s Guide for Internet Streaming SIMD Extensions Wiley amp Sons 2000 ISBN 0 471 37524 1 Bliss Sloan Developing for MMX Technology Que 1997 ISBN 0 7897 1302 0 Ralf Weber Pentium MMX AMD konfigurieren Sybex 1997 ISBN 3 8155 7106 5 Joachim Rohde Assembler GE PACKT mitp Verlag 2001 ISBN 3 8266 0786 4 Joachim Rohde Assembler GE PACKT 2 Auflage mitp Verlag 2007 ISBN 978 3 8266 1756 0Weblinks BearbeitenRasmus Hahn Bernd Peterson Andreas Micklei Prozessorerweiterungen fur Multimedia Workstationarchitekturen fur Multimediasysteme WS 96 97 Andreas Roskosch Prozessoren Ausarbeitung eines Proseminars an der Technischen Universitat Chemnitz von 1997 Ubersicht zu Intel Pentium MMX Prozessoren Bernd Leitenberger SIMD und VLIW Uberblick uber einige SIMD Technologien Jens Hohmuth MMX Tutorial Anleitung zur Nutzung vom MMX bei der Westsachsischen Hochschule Zwickau vom 2 Januar 1999 Pei Qi Yang Wang Accelerating 3D Geometry Transformation with Intel MMX Technology PDF 195 kB Einzelnachweise Bearbeiten Controversy brews over use of MMX moniker Memento vom 19 Juli 2012 im Webarchiv archive today Bnet 6 Januar 1997 Richard Blum Professional Assembly Language Wiley Publishing 2005 S 482 a b Intel Architecture Software Developer s Manual Volume 1 Basic Architecture Bestellnummer 243190 1999 Kapitel 8 Programming with the Intel MMX Technology S 216 f Trutz Eyke Podschun Das Assemblerbuch Grundlagen Einfuhrung und Hochsprachenoptimierung Addison Wesley 2002 S 274 f a b Trutz Eyke Podschun Das Assemblerbuch Grundlagen Einfuhrung und Hochsprachenoptimierung Addison Wesley 2002 S 276 278 a b Randall Hyde The Art of Assembly Language No Starch Press 2003 Seite 710 712 a b Jens Hohmuth MMX Tutorial Memento des Originals vom 8 Februar 2009 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www fh zwickau de Anleitung zur Nutzung vom MMX bei der Westsachsischen Hochschule Zwickau vom 2 Januar 1999 Randall Hyde The Art of Assembly Language No Starch Press 2003 S 734 Don Brumm Leo J Scanlon 80486 Programming Windcrest 1991 S 24 a b c Intel Architecture Software Developer s Manual Volume 1 Basic Architecture Bestellnummer 243190 1999 Kapitel 8 Programming with the Intel MMX Technology Seite 221 ff Trutz Eyke Podschun Das Assemblerbuch Grundlagen Einfuhrung und Hochsprachenoptimierung Addison Wesley 2002 S 281 Klaus Wust Mikroprozessortechnik Grundlagen Architekturen und Programmierung von Mikroprozessoren Mikrocontrollern und Signalprozessoren vieweg 2006 S 214 218 Richard Blum Professional Assembly Language Wiley Publishing 2005 S 488 ff Richard Blum Professional Assembly Language Wiley Publishing 2005 S 494 Trutz Eyke Podschun Das Assemblerbuch Grundlagen Einfuhrung und Hochsprachenoptimierung Addison Wesley 2002 S 296 ff Randall Hyde The Art of Assembly Language No Starch Press 2003 S 718 ff David Bistry Carole Delong Mickey Gutman Complete Guide to MMX Technology McGraw Hill 1997 S 138 a b Paul Herrmann Rechnerarchitektur vieweg 2002 Seite 417 Intel Pentium MMX Prozessoren auf cpu collection de Shreekant S Thakkar Programmer s Guide for Internet Streaming SIMD Extensions Wiley amp Sons 2000 S 72 Free Pascal Programmer s Guide Abschnitt 5 1 Intel MMX support What is it about FreePascal org Larry Carter Jeanne Ferrante Languages and Compilers for Parallel Computing S 400 Introduction to MMX Programming The Code Project Beispiele zur Nutzung von MMX mit C Codeplay VectorC Compiler Technology Memento des Originals vom 9 Mai 2009 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www codeplay com Codeplay MMX Technology Microsoft Developer Network Klaus Dembowski PC Werkstatt Boards Speicher Prozessoren Markt Technik 2005 S 711 David J Lilja Measuring Computer Performance A pracitioner s guide Cambridge University Press 2000 S 2 ff Andreas Roskosch Prozessoren Abschnitt MMX im Leistungsvergleich Memento des Originals vom 12 Juli 2010 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www tu chemnitz de Intel Introduces 11TH Microprocessor with MMX Technology Memento des Originals vom 8 September 2008 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot infopad eecs berkeley edu Berkeley Wireless Research Center David Bistry Carole Delong Mickey Gutman Complete Guide to MMX Technology McGraw Hill 1997 S 291 Paul Cockshott Kenneth Renfrew SIMD Programming Manual for Linux and Windows Springer Berlin 2004 S 23 Alan Conrad Bovik Handbook of Image amp Video Processing 2005 S 636 R Bhargava R Radhakrishnan B L Evans L John Characterization of MMX enhanced DSP and Multimedia Applications on a General Purpose Processor Digest of the Workshop on Performance Analysis and Its Impact on Design held in conjunction with ISCA98 1 2 Vorlage Toter Link eprints kfupm edu sa Seite nicht mehr abrufbar festgestellt im April 2019 Suche in Webarchiven nbsp Info Der Link wurde automatisch als defekt markiert Bitte prufe den Link gemass Anleitung und entferne dann diesen Hinweis PDF University of Texas at Austin Jennis Meyer Spradow Andreas Stiller Grossspurig Ein kritischer Blick auf MMX Memento vom 8 Juli 2001 im Internet Archive In c tAusgabe 1 97 S 228 Weniger MMX bei Photoshop heise online 9 Juni 1997 Trutz Eyke Podschun Die Assembler Referenz Kodierung Dekodierung und Referenz Addison Wesley 2002 S 231 249 Intel Architecture Software Developer s Manual Volume 2 Instruction Set Kapitel 9 3 6 Additional SIMD Integer Instructions Seite 246 Trutz Eyke Podschun Das Assemblerbuch Grundlagen Einfuhrung und Hochsprachenoptimierung Addison Wesley 2002 S 345 ff VBefehlssatzerweiterungen der x86 Architektur 16 Bit 32 Bit IA 32 64 Bit x64 Betriebsmodi Real Mode Protected Mode Virtual 8086 Mode System Management Mode Long Mode Compatibibility ModeBefehlssatzerweiterungen x87 PAE NX AMD64 Intel 64 x64 HTT VT x AMD V VIA VT 3DNow MMX SSE SSE2 SSE3 SSSE3 SSE4 SSE4a SSE5 F16C AVX CLMUL AES FMA TSX BMI MPX SGX Abgerufen von https de wikipedia org w index php title Multi Media Extension amp oldid 237190442