FMA x86
Der Befehlssatz Fused Multiply-Add (FMA) ist eine Erweiterung des x86-Befehlssatzes für Mikroprozessoren von Intel und AMD, die von Intel und AMD konkurrenzierend entwickelt und von AMD zuerst in den "Bulldozer"-CPUs umgesetzt wurde.
Es gibt zwei nicht miteinander kompatible Ausführungen, FMA3 und FMA4:
- FMA4 ist die vollwertige Version, die eine Vektoroperation der Form 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
- Z.Z. ist noch unklar, ob Intel sich an FMA4 anschließt oder bei FMA3 bleiben wird.
- AMD
- AMD führte FMA4 mit den "Bulldozer"-Cores 2011 ein.
Mnemonic | Operanden | Operation |
---|---|---|
VFMADDPDx | xmm, xmm, xmm/m128, xmm/m128 | $0 = $1×$2 + $3 |
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
- Bei Intel wird die Einführung von FMA3 in der Haswell-Architektur für 2013 erwartet.
- AMD
- AMD hat angekündigt, FMA3 ebenfalls zu unterstützen, falls Intel sich auf FMA3 beschränken sollte.[1]. Dies könnte bereits mit dem "Bulldozer" noch 2012 geschehen.
Mnemonic | Operanden | Operation |
---|---|---|
VFMADD132PDy | ymm, ymm, ymm/m256 | $0 = $0×$2 + $1 |
VFMADD132PSy | ||
VFMADD132PDx | xmm, xmm, xmm/m128 | |
VFMADD132PSx | ||
VFMADD132SD | xmm, xmm, xmm/m64 | |
VFMADD132SS | xmm, xmm, xmm/m32 | |
VFMADD213PDy | ymm, ymm, ymm/m256 | $0 = $1×$0 + $2 |
VFMADD213PSy | ||
VFMADD213PDx | xmm, xmm, xmm/m128 | |
VFMADD213PSx | ||
VFMADD213SD | xmm, xmm, xmm/m64 | |
VFMADD213SS | xmm, xmm, xmm/m32 | |
VFMADD231PDy | ymm, ymm, ymm/m256 | $0 = $1×$2 + $0 |
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)
CPUs mit AVX
- Intel
- keine, erwartet 2013
- AMD:
- Bulldozer-Prozessoren seit Q4 2011.
Einzelnachweise
- ↑ Striking a balance. Dave Christie, AMD Developer blogs, 7. Mai 2009, abgerufen am 8. Mai 2009.