3DNJetzt! -3DNow!

AMD 3DNow!
3dnow-logo.svg
Designfirma moderne Mikrogeräte
Eingeführt 1998
Typ Befehlssatzarchitektur

3DNJetzt! ist eine Erweiterung des von Advanced Micro Devices (AMD) entwickelten x86- Befehlssatzes . Es fügt Single Instruction Multiple Data (SIMD) Anweisungen an den Basisbefehlssatz X 86, so dass es zur Durchführung der Vektorverarbeitung von Gleitkomma- Vektor-Operationen unter Verwendung von Vektorregistern , die verbessert die Leistung vieler grafikintensive Anwendungen. Der erste Mikroprozessor, der 3DNow implementierte, war der AMD K6-2 , der 1998 eingeführt wurde. Bei entsprechender Anwendung erhöhte dies die Geschwindigkeit um das 2- bis 4-fache.

Der Befehlssatz gewann jedoch nie an Popularität, und AMD kündigte im August 2010 an, dass die Unterstützung für 3DNow in zukünftigen AMD-Prozessoren eingestellt wird, mit Ausnahme von zwei Befehlen (den PREFETCHund PREFETCHW-Befehlen). Die beiden Anweisungen sind auch in Bay-Trail Intel-Prozessoren verfügbar.

Geschichte

3DNow wurde zu einer Zeit entwickelt, als 3D-Grafiken in PC-Multimedia und -Spielen zum Mainstream wurden. Die Echtzeitdarstellung von 3D-Grafiken hing stark von der Fließkommaeinheit (FPU) der Host-CPU ab, um Fließkommaberechnungen durchzuführen , eine Aufgabe, bei der AMDs K6-Prozessor von seinem Konkurrenten, dem Intel Pentium II, leicht übertroffen wurde.

Als Verbesserung des MMX- Befehlssatzes erweiterte der 3DNow-Befehlssatz die MMX-SIMD-Register, um übliche arithmetische Operationen (Addieren/Subtrahieren/Multiplizieren) an Gleitkommadaten mit einfacher Genauigkeit (32 Bit) zu unterstützen. Software, die geschrieben wurde, um AMDs 3DNow anstelle der langsameren x87-FPU zu verwenden, könnte je nach Befehlsmix bis zu 4x schneller ausgeführt werden.

Versionen

3DNow

Die erste Implementierung der 3DNow-Technologie enthält 21 neue Befehle, die SIMD- Gleitkommaoperationen unterstützen. Das 3DNow-Datenformat ist gepackt, mit einfacher Genauigkeit , Gleitkomma. Der 3DNow-Befehlssatz umfasst auch Operationen für SIMD-Integer-Operationen, Datenvorabruf und schnellere MMX-zu-Gleitkomma-Umschaltung. Später fügte Intel dem Pentium III ähnliche (aber inkompatible) Anweisungen hinzu , bekannt als SSE (Streaming SIMD Extensions).

3DNow-Gleitkommaanweisungen sind die folgenden:

  • PI2FD – Gepackte 32-Bit-Integer-zu-Gleitkomma-Konvertierung
  • PF2ID – Gepackte Gleitkomma- in 32-Bit-Ganzzahlkonvertierung
  • PFCMPGE – Gepackter Gleitkommavergleich, größer oder gleich
  • PFCMPGT – Gepackter Gleitkommavergleich, größer
  • PFCMPEQ – Gepackter Gleitkommavergleich, gleich
  • PFACC – Gepackte Gleitkomma-Akkumulierung
  • PFADD – Gepackte Gleitkommaaddition
  • PFSUB – Gepackte Gleitkomma-Subtraktion
  • PFSUBR – Gepackte Gleitkomma-Umkehrsubtraktion
  • PFMIN – Gepacktes Gleitkomma-Minimum
  • PFMAX – Gepacktes Gleitkommamaximum
  • PFMUL – Gepackte Gleitkommamultiplikation
  • PFRCP – Gepackte Gleitkomma-Reziproke-Approximation
  • PFRSQRT – Gepackte Gleitkomma-Reziproke-Quadratwurzel-Approximation
  • PFRCPIT1 – Gepackter Gleitkomma-Kehrwert, erster Iterationsschritt
  • PFRSQIT1 – Gepackte reziproke Gleitkomma-Quadratwurzel, erster Iterationsschritt
  • PFRCPIT2 – Gepackte Gleitkomma-Reziproke/reziproke Quadratwurzel, zweiter Iterationsschritt

3DNow Integer-Anweisungen sind die folgenden:

  • PAVGUSB – Gepackte 8-Bit-Ganzzahlmittelung ohne Vorzeichen
  • PMULHRW – Gepackte 16-Bit-Ganzzahl multiplizieren mit Rundung

Die Anweisungen zur Leistungssteigerung von 3DNow lauten wie folgt:

  • FEMMS – Schnelleres Ein-/Aussteigen des MMX- oder Gleitkomma-Zustands
  • PREFETCH/PREFETCHW – Rufen Sie mindestens eine 32-Byte-Zeile in den L1-Datencache vorab ab (dies ist die nicht veraltete Anweisung)

3DNow-Erweiterungen

Es gibt kaum oder keine Beweise dafür, dass die zweite Version von 3DNow jemals offiziell einen eigenen Handelsnamen erhalten hat. Dies hat zu einigen Verwirrung in der Dokumentation geführt, die sich auf diesen neuen Befehlssatz bezieht. Die gebräuchlichsten Begriffe sind Extended 3DNow , Enhanced 3DNow und 3DNow+ . Der Ausdruck "Enhanced 3DNow" ist an einigen Stellen auf der AMD-Website zu finden, aber die Großschreibung von "Enhanced" scheint entweder rein grammatikalisch zu sein oder zur Betonung von Prozessoren verwendet zu werden, die diese Erweiterungen haben oder nicht (von denen die bemerkenswertesten sind) verweist auf eine Benchmark-Seite für den K6-III-P, die diese Erweiterungen nicht hat).

Diese Erweiterung des 3DNow-Befehlssatzes wurde mit den Athlon- Prozessoren der ersten Generation eingeführt . Der Athlon hat 5 neue 3DNow-Befehle und 19 neue MMX-Befehle hinzugefügt. Später enthielten die K6-2+ und K6-III+ (beide auf den Mobilfunkmarkt ausgerichtet) die 5 neuen 3DNow-Befehle, wobei die 19 neuen MMX-Befehle weggelassen wurden. Die neuen 3DNow-Befehle wurden hinzugefügt, um DSP zu verstärken . Die neuen MMX-Anweisungen wurden hinzugefügt, um das Streaming von Medien zu verbessern .

Die 19 neuen MMX-Befehle sind eine Untermenge von Intels SSE1-Befehlssatz. In den technischen Handbüchern von AMD trennt AMD diese Anweisungen von den 3DNow-Erweiterungen. In der Produktliteratur von AMD-Kunden ist diese Trennung jedoch weniger klar, wo die Vorteile aller 24 neuen Anweisungen der verbesserten 3DNow-Technologie zugeschrieben werden. Dies hat Programmierer dazu veranlasst, einen eigenen Namen für die 19 neuen MMX-Befehle zu finden. Am häufigsten scheint Integer SSE ( ISSE ) zu sein. SSEMMX und MMX2 finden sich auch in Videofilter-Dokumentationen aus dem Public Domain-Bereich. ISSE könnte sich auch auf Internet SSE beziehen, ein früher Name für SSE.

Die DSP-Anweisungen für die 3DNow-Erweiterung lauten wie folgt:

  • PF2IW – Gepackte Fließkomma-zu-Ganzzahl-Wortkonvertierung mit Vorzeichenerweiterung
  • PI2FW – Gepackte Integer-Wort-zu-Gleitkomma-Konvertierung
  • PFNACC – Gepackte Gleitkomma-negative Akkumulation
  • PFPNACC – Gepackte Gleitkommazahlen gemischt positiv-negativ akkumulieren
  • PSWAPD – Gepacktes Swap-Doppelwort

Die Anweisungen zur MMX-Erweiterung (Integer SSE) lauten wie folgt:

  • MASKMOVQ – Streaming (Cache Bypass) speichern mit Byte-Maske
  • MOVNTQ – Streaming-Speicher (Cache-Bypass)
  • PAVGB – Gepackter Durchschnitt von unsigned byte
  • PAVGW – Gepackter Durchschnitt von vorzeichenlosem Wort
  • PMAXSW – Gepacktes maximales vorzeichenbehaftetes Wort
  • PMAXUB – Gepacktes maximales vorzeichenloses Byte
  • PMINSW – Gepacktes minimales vorzeichenbehaftetes Wort
  • PMINUB – Gepacktes minimales vorzeichenloses Byte
  • PMULHUW – Gepacktes mehrfach hohes vorzeichenloses Wort
  • PSADBW – Gepackte Summe der absoluten Byte-Differenzen
  • PSHUFW – Gepacktes Shuffle-Wort
  • PEXTRW – Wort in Integer-Register extrahieren
  • PINSRW – Wort aus Integer-Register einfügen
  • PMOVMSKB – Verschieben Sie die Byte-Maske in das Integer-Register
  • PREFETCHNTA – Prefetch mit der NTA-Referenz
  • PREFETCHT0 – Prefetch mit der T0-Referenz
  • PREFETCHT1 – Prefetch mit der T1-Referenz
  • PREFETCHT2 – Prefetch mit der T2-Referenz
  • SFENCE – Zaun lagern

3DNow Professional

3DNow Professional ist ein Handelsname, der verwendet wird, um Prozessoren anzuzeigen, die die 3DNow-Technologie mit einem vollständigen SSE-Befehlssatz (wie SSE1, SSE2 oder SSE3) kombinieren. Der Athlon XP trug als erster Prozessor den Handelsnamen 3DNow Professional und war das erste Produkt der Athlon-Familie, das den kompletten SSE1-Befehlssatz unterstützte (insgesamt: 21 originale 3DNow-Befehle; fünf 3DNow-Erweiterungs-DSP-Befehle; 19 MMX Erweiterungsanweisungen und 52 zusätzliche SSE-Anweisungen für vollständige SSE1-Kompatibilität).

3DNow und die Geode GX/LX

Der Geode GX und Geode LX zwei neue 3DNow Anweisungen , die in allen anderen Prozessoren zur Zeit abwesend sind.

3DNow "professionelle" Anweisungen, die nur für Geode GX/LX gelten, sind die folgenden:

  • PFRSQRTV – Reziproke Quadratwurzel-Approximation für ein Paar 32-Bit-Floatwerte
  • PFRCPV – Reziproke Approximation für ein Paar 32-Bit-Floatwerte

Vorteile und Nachteile

Ein Vorteil von 3DNow besteht darin, dass es möglich ist, die beiden Zahlen, die im selben Register gespeichert sind, zu addieren oder zu multiplizieren . Bei 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 Fähigkeit war die wichtigste Ergänzung des SSE3- Befehlssatzes.

Ein Nachteil von 3DNow besteht darin, dass sich 3DNow-Befehle und MMX-Befehle dieselbe Registerdatei teilen, während SSE 8 neue unabhängige Register hinzufügt ( XMM0XMM7).

Da MMX/3DNow-Register von der Standard- x87- FPU gemeinsam genutzt werden, können 3DNow-Befehle und x87-Befehle nicht gleichzeitig ausgeführt werden. Da es jedoch der x87-FPU zugeordnet ist, können die 3DNow- und MMX-Registerzustände durch die herkömmlichen x87- F(N)SAVEund F(N)RSTORAnweisungen gespeichert und wiederhergestellt werden . Diese Anordnung ermöglichte es Betriebssystemen , 3DNow ohne explizite Änderungen zu unterstützen, während SSE-Register eine explizite Betriebssystemunterstützung erforderten, um die neuen XMM-Register ordnungsgemäß zu speichern und wiederherzustellen (über die hinzugefügten FXSAVEund FXRSTORAnweisungen).

Die FX*-Befehle sind ein Upgrade zu den älteren x87-Speicher- und Wiederherstellungsbefehlen, da diese nicht nur SSE-Registerzustände, sondern auch diese x87-Registerzustände speichern konnten (was bedeutete, dass auch MMX- und 3DNow-Register gespeichert werden konnten).

Auf AMD Athlon XP- und K8-basierten Kernen (zB Athlon 64 ) haben Assembler-Programmierer festgestellt, dass es möglich ist, 3DNow- und SSE-Befehle zu kombinieren, um den Registerdruck zu reduzieren , aber in der Praxis ist es schwierig, die Leistung zu verbessern, da die Befehle auf Shared ausgeführt werden funktionale Einheiten.

Prozessoren, die 3DNow . unterstützen

  • Alle AMD- Prozessoren nach K6-2 basierend auf den Architekturfamilien K6, Athlon, Athlon 64 und Phenom. Nicht unterstützt von Bulldozer-, Bobcat- und Zen-Architekturprozessoren und ihren Derivaten.
  • Der letzte AMD APU-Prozessor, der 3DNow unterstützt, ist der A8-3870K.
  • National Semiconductor Geode , später AMD Geode.
  • VIA C3 (auch bekannt als Cyrix III) "Samuel", "Samuel 2", "Ezra" und "Eden ESP" Kerne.
  • IDT Winchip 2

Verweise

Weiterlesen

Externe Links