FMA x86
aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 31. März 2023 um 11:59 Uhr durch Y2kbug (Diskussion | Beiträge) (→CPUs mit FMA4: implementiert → vorhanden (denn in Zen1 ist es ja implementiert, aber trotzdem nicht vorhanden...)). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Eine gesichtete Version dieser Seite, die am 31. März 2023 freigegeben wurde, basiert auf dieser Version.
Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen (beispielsweise Einzelnachweisen) ausgestattet. Angaben ohne ausreichenden Beleg könnten demnächst entfernt werden. Bitte hilf Wikipedia, indem du die Angaben recherchierst und gute Belege einfügst.
FMA x86 ist eine Befehlssatzerweiterung für Mikroprozessoren von Intel und AMD zur Unterstützung der Fused-Multiply-Add-Technik (FMA). Von AMD erfolgte hierzu erstmals eine Umsetzung in den „Bulldozer"-CPUs. Intel setzte dies erst in den Haswell-Prozessoren ein.
Es gibt zwei nicht miteinander kompatible Ausführungen, FMA4 und FMA3:
- FMA4 ist die vollwertige Version, die eine Operation der Form {\displaystyle d=a+b\cdot c} erlaubt;
- FMA3 erfordert dagegen, dass das Zielregister eines der Operandenregister ist, und dieser dadurch überschrieben wird.
Neue Eigenschaften
FMA erweitert die Möglichkeiten zu Vektoroperationen und kann als Erweiterung der AVX-Befehle gesehen werden.
Neue Instruktionen
CPUs mit FMA4
- Intel hat FMA4 nicht implementiert.
- AMD hatte FMA4 implementiert:
- AMD-Bulldozer-basierte Prozessoren (AMD FX), Q4/2011
- Piledriver-basierte Prozessoren (AMD FX, Trinity und Richland APUs), Q2/2012
- Steamroller-basierte Prozessoren (4. Generation A-Serie-Prozessoren, Kaveri-APUs) Q1/2014
- ab der Zen-Mikroarchitektur (Q1/2017) ist FMA4 nicht mehr vorhanden
Mnemonic | Operanden | Operation |
---|---|---|
VFMADDPDx | xmm, xmm, xmm/m128, xmm/m128 | a = b∙c + d |
VFMADDPDy | ymm, ymm, ymm/m256, ymm/m256 | |
VFMADDPSx | xmm, xmm, xmm/m128, xmm/m128 | |
VFMADDPSy | ymm, ymm, ymm/m256, ymm/m256 | |
VFMADDSD | xmm, xmm, xmm/m64, xmm/m64 | |
VFMADDSS | xmm, xmm, xmm/m32, xmm/m32 |
CPUs mit FMA3
- Intel
- Alle Intel-Core-i-Prozessoren ab der Haswell-Mikroarchitektur (4. Generation Core i-Prozessoren)
- AMD
- Piledriver-basierte Prozessoren (2. Generation FX CPUs, Trinity und Richland APUs), Q2/2012
- Steamroller-basierte Prozessoren (4. Generation A-Serie-Prozessoren, Kaveri-APUs) Q1/2014
- Alle Ryzen- und Epyc-Prozessoren (ab der 1. Zen-Microarchitektur) Q1/2017
Mnemonic | Operanden | Operation |
---|---|---|
VFMADD132PDy | ymm, ymm, ymm/m256 | a = a∙c + b |
VFMADD132PSy | ||
VFMADD132PDx | xmm, xmm, xmm/m128 | |
VFMADD132PSx | ||
VFMADD132SD | xmm, xmm, xmm/m64 | |
VFMADD132SS | xmm, xmm, xmm/m32 | |
VFMADD213PDy | ymm, ymm, ymm/m256 | a = b∙a + c |
VFMADD213PSy | ||
VFMADD213PDx | xmm, xmm, xmm/m128 | |
VFMADD213PSx | ||
VFMADD213SD | xmm, xmm, xmm/m64 | |
VFMADD213SS | xmm, xmm, xmm/m32 | |
VFMADD231PDy | ymm, ymm, ymm/m256 | a = b∙c + a |
VFMADD231PSy | ||
VFMADD231PDx | xmm, xmm, xmm/m128 | |
VFMADD231PSx | ||
VFMADD231SD | xmm, xmm, xmm/m64 | |
VFMADD231SS | xmm, xmm, xmm/m32 |
Anwendung
- Nützlich für gleitkommaintensive Berechnung, vor allem im Multimedia-, wissenschaftlichen oder Finanzberechnungen. Ganzzahloperationen sollen später folgen.
- Erhöht Parallelität und Durchsatz von Gleitkomma-SIMD-Berechnungen
- Verringert die Registerlast durch nicht destruktive Vier-Operanden-Form (im Fall von FMA4)
Betriebsmodi
Real Mode • Protected Mode • Virtual 8086 Mode • System Management Mode • Long Mode • Compatibility Mode