3DNow! ist eine veraltete Erweiterung des x86 -Befehlssatzes, entwickelt von Advanced Micro Devices (AMD). Sie fügt dem x86-Basisbefehlssatz SIMD-Befehle ( Single Instruction Multiple Data ) hinzu und ermöglicht so die Vektorverarbeitung von Gleitkomma- Vektoroperationen mithilfe von Vektorregistern . Diese Verbesserung steigert die Leistung vieler grafikintensiver Anwendungen. Der erste Mikroprozessor mit 3DNow! war der AMD K6-2 , der 1998 eingeführt wurde. In geeigneten Anwendungen erhöhte diese Erweiterung die Geschwindigkeit um das Zwei- bis Vierfache. [ 1 ]
Der Befehlssatz erlangte jedoch nie große Popularität, und AMD kündigte im August 2010 an, dass die Unterstützung für 3DNow! in zukünftigen AMD-Prozessoren bis auf zwei Befehle eingestellt würde PREFETCH. PREFETCHW[ 2 ] Diese beiden Befehle sind auch in Bay-Trail-Intel-Prozessoren verfügbar. [ 3 ]
Geschichte
3DNow! wurde zu einer Zeit entwickelt, als 3D-Grafiken in der PC-Multimedia und bei Spielen immer beliebter wurden. Die Echtzeitdarstellung von 3D-Grafiken war stark von der Gleitkommaeinheit (FPU) der Host-CPU abhängig, die Gleitkommaberechnungen durchführen musste – eine Aufgabe, bei der der AMD K6-Prozessor seinem Konkurrenten, dem Intel Pentium II, deutlich unterlegen war.
Als Erweiterung des MMX -Befehlssatzes erweiterte der 3DNow!-Befehlssatz die MMX-SIMD-Register, um gängige arithmetische Operationen (Addition/Subtraktion/Multiplikation) mit einfachgenauen (32-Bit-)Gleitkommazahlen zu unterstützen. Software, die AMDs 3DNow! anstelle der langsameren x87-FPU nutzte , konnte je nach Befehlskombination bis zu viermal schneller ausgeführt werden.
Versionen
3DNow!
Die erste Implementierung der 3DNow!-Technologie umfasste 21 neue Befehle zur Unterstützung von SIMD -Gleitkommaoperationen. Das 3DNow!-Datenformat ist gepacktes, einfachgenaues Gleitkommaformat. Der 3DNow!-Befehlssatz beinhaltete außerdem Operationen für SIMD-Ganzzahloperationen, Datenvorabruf und einen schnelleren Wechsel zwischen MMX- und Gleitkommaoperationen. Später fügte Intel dem Pentium III ähnliche (aber inkompatible) Befehle hinzu , die als SSE (Streaming SIMD Extensions) bekannt sind.
Die Gleitkomma-Befehle von 3DNow! lauten wie folgt:
PI2FD– Konvertierung von gepackten 32-Bit-Ganzzahlen in GleitkommazahlenPF2ID– Konvertierung von gepackten Gleitkommazahlen in 32-Bit-GanzzahlenPFCMPGE– Vergleich von gepackten Gleitkommazahlen, größer oder gleichPFCMPGT– Vergleich von gepackten Gleitkommazahlen, größerPFCMPEQ– Vergleich von gepackten Gleitkommazahlen, gleichPFACC– Gepackte Gleitkomma-AkkumulationPFADD– Addition von Gleitkommazahlen in gepackten FormatenPFSUB– Subtraktion mit gepackten GleitkommazahlenPFSUBR– Gepackte Gleitkomma-RückwärtssubtraktionPFMIN– Gepackte Gleitkomma-MinimumPFMAX– Maximalwert für gepackte GleitkommazahlenPFMUL– Multiplikation von gepackten GleitkommazahlenPFRCP– Gepackte Gleitkomma-ReziprokappungPFRSQRT– Gepackte Gleitkomma-Reziprok-QuadratwurzelapproximationPFRCPIT1– Gepackter Gleitkomma-Reziprokwert, erster IterationsschrittPFRSQIT1– Gepackte Gleitkomma-Kehrwert-Quadratwurzel, erster IterationsschrittPFRCPIT2– Gepackte Gleitkomma-Reziprok-/Reziprok-Quadratwurzel, zweiter Iterationsschritt
Die 3DNow!-Integer-Befehle lauten wie folgt:
PAVGUSB– Gepackte 8-Bit-Ganzzahlmittelung ohne VorzeichenPMULHRW– Multiplikation einer gepackten 16-Bit-Ganzzahl mit Rundung
Die Anweisungen zur Leistungssteigerung von 3DNow! lauten wie folgt:
FEMMS– Schnellerer Eintritt in/Austritt aus dem MMX- oder Gleitkomma-ZustandPREFETCH/PREFETCHW– Mindestens eine 32-Byte-Zeile in den L1-Datencache vorladen (dies ist die einzige nicht veraltete Anweisung)
3DNow!-Erweiterungen
Es gibt kaum oder gar keine Hinweise darauf, dass die zweite Version von 3DNow! jemals einen offiziellen Markennamen erhalten hat. Dies hat in der Dokumentation zu diesem neuen Befehlssatz zu Verwirrung geführt. Die gebräuchlichsten Bezeichnungen sind Extended 3DNow!, Enhanced 3DNow! und 3DNow!+ . Der Ausdruck „Enhanced 3DNow!“ findet sich an einigen Stellen auf der AMD-Website, wobei die Großschreibung von „Enhanced“ entweder rein grammatikalisch bedingt ist oder zur Hervorhebung von Prozessoren dient, die diese Erweiterungen möglicherweise nicht besitzen (beispielsweise verweist eine Benchmark-Seite auf den K6-III-P, der diese Erweiterungen nicht aufweist). [ 4 ] [ 5 ]
Diese Erweiterung des 3DNow!-Befehlssatzes wurde mit den Athlon -Prozessoren der ersten Generation eingeführt. Der Athlon enthielt fünf neue 3DNow!-Befehle und 19 neue MMX-Befehle. Später enthielten die K6-2+ und K6-III+ (beide für den Mobilmarkt konzipiert) die fünf neuen 3DNow!-Befehle, jedoch nicht die 19 neuen MMX-Befehle. Die neuen 3DNow!-Befehle wurden zur Verbesserung der digitalen Signalverarbeitung (DSP) hinzugefügt . Die neuen MMX-Befehle dienten der Verbesserung des Streaming-Medien-Verhaltens .
Die 19 neuen MMX-Befehle sind eine Teilmenge des SSE-Befehlssatzes von Intel. In den technischen Handbüchern von AMD werden diese Befehle von den 3DNow!-Erweiterungen getrennt aufgeführt. [ 4 ] In der Produktliteratur für AMD-Kunden ist diese Trennung jedoch weniger deutlich, da die Vorteile aller 24 neuen Befehle der verbesserten 3DNow!-Technologie zugeschrieben werden. [ 6 ] Dies hat dazu geführt, dass Programmierer eigene Bezeichnungen für die 19 neuen MMX-Befehle entwickelt haben. Die gebräuchlichste scheint Integer SSE ( ISSE ) zu sein. [ 7 ] SSEMMX und MMX2 finden sich auch in der Dokumentation von Videofiltern aus dem öffentlichen Bereich. ISSE könnte sich auch auf Internet SSE beziehen, eine frühere Bezeichnung für SSE.
Die Anweisungen für die 3DNow!-Erweiterungs-DSP lauten wie folgt:
PF2IW– Konvertierung von gepackten Gleitkommazahlen in Ganzzahlen mit VorzeichenerweiterungPI2FW– Umwandlung von gepackten Ganzzahlwörtern in GleitkommazahlenPFNACC– Akkumulation von Gleitkommazahlen mit negativen WertenPFPNACC– Gepackte Gleitkommazahlen gemischt positiv-negativ akkumulierenPSWAPD– Packed swap doubleword
Die MMX-Erweiterungsbefehle (Integer SSE) lauten wie folgt:
MASKMOVQ– Streaming (Cache-Umgehung) Speichern mit Byte-MaskeMOVNTQ– Streaming-Speicher (Cache-Umgehung)PAVGB– Gepackter Durchschnitt von vorzeichenlosen BytesPAVGW– Gepackter Durchschnitt von vorzeichenlosen WörternPMAXSW– Maximal gepacktes signiertes WortPMAXUB– Gepacktes maximales vorzeichenloses BytePMINSW– Mindestanzahl an UnterschriftenPMINUB– Gepacktes minimales unsigniertes BytePMULHUW– Gepacktes mehrfach hohes vorzeichenloses WortPSADBW– Gepackte Summe der absoluten Byte-DifferenzenPSHUFW– Gepacktes Shuffle-WortPEXTRW– Wort in Integer-Register extrahierenPINSRW– Wort aus dem Integer-Register einfügenPMOVMSKB– Bytemaske in Integer-Register verschiebenPREFETCHNTA– Vorabruf mithilfe der NTA-ReferenzPREFETCHT0– Vorabruf unter Verwendung der T0-ReferenzPREFETCHT1– Vorabruf unter Verwendung der T1-ReferenzPREFETCHT2– Vorabruf unter Verwendung der T2-ReferenzSFENCE– Zaun
3DNow! Professional
3DNow! Professional ist eine Markenbezeichnung für Prozessoren, die die 3DNow!-Technologie mit einem vollständigen SSE-Befehlssatz (z. B. SSE, SSE2 oder SSE3) kombinieren. [ 8 ] Der Athlon XP war der erste Prozessor mit der Markenbezeichnung 3DNow! Professional und das erste Produkt der Athlon-Familie, das den vollständigen SSE-Befehlssatz unterstützte (insgesamt: 21 ursprüngliche 3DNow!-Befehle; fünf 3DNow!-Erweiterungs-DSP-Befehle; 19 MMX-Erweiterungsbefehle; und 52 zusätzliche SSE-Befehle für vollständige SSE-Kompatibilität). [ 9 ]
3DNow! und die Geode GX/LX
Die Geode GX und Geode LX verfügen über zwei neue 3DNow!-Befehle, die bei allen anderen Prozessoren fehlen.
Die speziell für die Geode GX/LX entwickelten „professionellen“ Anweisungen von 3DNow! lauten wie folgt:
PFRSQRTV– Näherung der reziproken Quadratwurzel für ein Paar von 32-Bit-GleitkommazahlenPFRCPV– Reziproke Approximation für ein Paar von 32-Bit-Gleitkommazahlen
Vor- und Nachteile
Ein Vorteil von 3DNow! besteht darin, dass sich zwei Zahlen, die im selben Register gespeichert sind, addieren oder multiplizieren lassen. Mit SSE kann jede Zahl nur mit einer Zahl an derselben Position in einem anderen Register kombiniert werden. Diese in der Intel-Terminologie als „horizontal“ bezeichnete Funktionalität war die wichtigste Neuerung des SSE3 -Befehlssatzes.
Ein Nachteil von 3DNow! ist, dass sich 3DNow!-Befehle und MMX-Befehle denselben Registersatz teilen, während SSE 8 neue unabhängige Register hinzufügt ( XMM0– XMM7).
Da die MMX/3DNow!-Register von der Standard- x87- FPU gemeinsam genutzt werden, können 3DNow!-Befehle und x87-Befehle nicht gleichzeitig ausgeführt werden. Da die 3DNow!- und MMX-Register jedoch der x87-FPU zugeordnet sind, können die Zustände der 3DNow!- und MMX-Register mithilfe der herkömmlichen x87-Befehle gesichert und wiederhergestellt werden F(N)SAVE. F(N)RSTORDiese Anordnung ermöglichte es Betriebssystemen, 3DNow! ohne explizite Änderungen zu unterstützen, wohingegen für SSE-Register explizite Unterstützung durch das Betriebssystem erforderlich war, um die neuen XMM-Register korrekt zu speichern und wiederherzustellen (mittels der hinzugefügten FXSAVEBefehle FXRSTOR).
Die FX*-Befehle von SSE bieten eine funktionale Erweiterung der älteren x87-Speicher- und Wiederherstellungsbefehle. Sie können nicht nur SSE-Registerzustände, sondern auch x87-Registerzustände speichern (und sind daher auch für MMX- und 3DNow!-Operationen anwendbar, sofern diese unterstützt werden).
Bei AMD Athlon XP- und K8-basierten Kernen (d. h. Athlon 64 ) haben Assembler-Programmierer festgestellt, dass es möglich ist, 3DNow!- und SSE-Befehle zu kombinieren, um den Registerdruck zu reduzieren . In der Praxis ist es jedoch schwierig, die Leistung zu verbessern, da die Befehle auf gemeinsam genutzten Funktionseinheiten ausgeführt werden. [ 10 ]
Prozessoren, die 3DNow! unterstützen.
- Alle AMD- Prozessoren nach K6-2 (basierend auf K6), Athlon, Athlon 64 und Phenom Architekturfamilien.
- Wird von Bulldozer-, Bobcat- und Zen-Architekturprozessoren und deren Derivaten nicht unterstützt.
- Der letzte AMD- APU- Prozessor mit 3DNow!-Unterstützung ist der A8-3870K, der auf der Llano -Architektur basiert . Er ist auch die einzige APU mit 3DNow!-Befehlen, da die Modelle Bobcat und höher diese Funktion nicht unterstützen.
- National Semiconductor Geode GX2 , später AMD Geode .
- VIA C3 (auch bekannt als Cyrix III ) „Samuel“, „Samuel 2“, „Ezra“ und „Eden ESP“-Kerne.
- IDT WinChip 2, 3
Referenzen
- ^ „Effektive Nutzung von 3DNow unter Linux“ . Linux Journal. 1. Dezember 1999. Archiviert vom Original am 7. Juni 2011. Abgerufen am 3. Oktober 2010 .
- ^ „3DNow-Befehle werden eingestellt | AMD Developer Central“ . Blogs.amd.com. 18.08.2010. Archiviert vom Original am 24.10.2010 . Abgerufen am 03.10.2010 .
- ^ „IntelE38xx - MinnowBoard Wiki“ . Archiviert vom Original am 11. Februar 2017. Abgerufen am 13. Februar 2017 .
- ^ a b „AMD Extensions to the 3DNow and MMX Instruction Sets Manual“ (PDF) . Advanced Micro Devices, Inc. März 2000. Archiviert (PDF) vom Original am 17.05.2008 . Abgerufen am 07.06.2008 .
- ^ „Mobiles Notebook mit AMD-K6-III-P-Prozessor: Ziff-Davis CPUmark 99“ . Archiviert vom Original am 24.07.2008 . Abgerufen am 07.06.2008 .
Falscher Seitentitel: Mobile AMD-K6-III+ und Mobile AMD-K6-2+ Prozessoren mit verbesserter
3DNow
!-Technologie
- ^ „AMD Athlon Prozessor – Produktübersicht“ . Advanced Micro Devices, Inc. Archiviert vom Original am 25.02.2008 . Abgerufen am 08.06.2008 .
- ^ "ISSE" . AviSynth . Archiviert vom Original am 02.07.2017 . Abgerufen am 19.07.2017 .
- ^ „Erklärung der neuen 3DNow! Professional-Technologie“ . Advanced Micro Devices, Inc. Archiviert vom Original am 21.01.2009 . Abgerufen am 08.06.2008 .
- ^ „Architektonische Merkmale des AMD Athlon XP“ . Advanced Micro Devices, Inc. Archiviert vom Original am 25.02.2008 . Abgerufen am 08.06.2008 .
- ^ Larry Lewis (9. Juli 2003). „3DNow+ vs SSE auf Athlon XP“ . Newsgroup : comp.sys.ibm.pc.hardware.chips . Usenet: ad82cd69.0307090931.25391323@posting.google.com . Archiviert vom Original am 3. Oktober 2012. Abgerufen am 4. Januar 2023 – via Google Groups.
Weiterführende Literatur
- Case, Brian (1. Juni 1998). „3DNow steigert die 3D-Leistung von Nicht-Intel-Prozessoren“. Microprocessor Report .
- Oberman, S.; Favor, G.; Weber, F. (März 1999). „AMD 3DNow-Technologie: Architektur und Implementierungen“ . IEEE Micro .
Externe Links
- 3DNow Technology Partners , archiviert vom Original (Anfang 2001 von der AMD-Website entfernt)
- AMD 3DNow Anleitung zur Portierung von Befehlen (PDF) , archiviert vom Original (2014 von der AMD-Website entfernt)
- 3DNow-Technologiehandbuch
- AMD-Erweiterungen für die 3DNow- und MMX-Befehlssätze – Handbuch
- AMD Geode LX Prozessoren Datenbuch
- AMD 3DNow! SDK März 1999 , archiviert