FMA

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 15. juli 2021; checks kræver 6 redigeringer .

FMA ( eng.  Fused Multiply-Add , multiplikationsaddition med enkelt afrunding) er et sæt valgfri 128- og 256-bit SIMD - instruktioner til x86- og x86-64-arkitekturer , designet til at udføre multiplikations-additionsoperationen på tal i flydende- punktformat komma.

Der er to muligheder for udvidelser, der tilføjer FMA-instruktioner:

Funktioner

FMA3 og FMA4 instruktionerne har næsten identisk funktionalitet, men de er ikke kompatible. Begge indeholder SIMD multiplic-add-instruktioner til flydende kommatal. Deres support i compilere vil tage noget tid.

Kompatibilitetsproblem

Forskellen mellem FMA3 og FMA4 er, hvor mange forskellige operander instruktionen har - 3 eller 4. FMA-operationen er:

4-operandformen (FMA4) tillader a, b, c og d at være i forskellige registre, mens 3-operandformen (FMA3) kræver, at d er i et af de samme registre som a, b eller c. 3 operandformen gør koden kortere og nemmere at implementere i hardware, mens 4 operandformen giver mere programmeringsfleksibilitet.

FMA3

Processorer med FMA3-understøttelse

Nye FMA3 instruktioner

Instruktion operander Operation
VFMADD132PDy, VFMSUB132PDy ymm, ymm, ymm/m256 a = a c ± b
VFMADD132PSy, VFMSUB132PSy
VFMADD132PDx, VFMSUB132PDx xmm, xmm, xmm/m128
VFMADD132PSx, VFMSUB132PSx
VFMADD132SD, VFMSUB132SD xmm, xmm, xmm/m64
VFMADD132SS, VFMSUB132SS xmm, xmm, xmm/m32
VFMADD213PDy, VFMSUB213PDy ymm, ymm, ymm/m256 a = b a ± c
VFMADD213PSy, VFMSUB213PSy
VFMADD213PDx, VFMSUB213PDx xmm, xmm, xmm/m128
VFMADD213PSx, VFMSUB213PSx
VFMADD213SD, VFMSUB213SD xmm, xmm, xmm/m64
VFMADD213SS, VFMSUB213SS xmm, xmm, xmm/m32
VFMADD231PDy, VFMSUB231PDy ymm, ymm, ymm/m256 a = b c ± a
VFMADD231PSy, VFMSUB231PSy
VFMADD231PDx, VFMSUB231PDx xmm, xmm, xmm/m128
VFMADD231PSx, VFMSUB231PSx
VFMADD231SD, VFMSUB231SD xmm, xmm, xmm/m64
VFMADD231SS, VFMSUB231SS xmm, xmm, xmm/m32

Ud over hovedinstruktionerne i tabellen indeholder FMA3-udvidelsen en række instruktioner, der tilhører følgende grupper:

FMA4

Processorer med FMA4-understøttelse

Nye FMA4 instruktioner

Instruktion operander 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

Historie

Inkompatibiliteten mellem Intels FMA3 og AMDs FMA4 skyldes, at begge virksomheder har ændret deres planer uden at blive enige om kodningsdetaljer med hinanden. AMD ændrede planer fra FMA3 til FMA4, mens Intel ændrede planer fra FMA4 til FMA3, næsten på samme tid.

Kompilerunderstøttelse

Forskellige compilere tilbyder forskellige niveauer af FMA-understøttelse.

Support i monterere:

Se også

Noter

  1. At finde en balance . Dave Christie, AMD-udviklerblogs (7. maj 2009). Hentet: 8. maj 2009.  (ikke tilgængeligt link)
  2. Maffeo, Robin AMD og Visual Studio 11 Beta . AMD. Hentet: 8. december 2013.  (utilgængeligt link)
  3. AMD64 Architecture Programmer's Guide. Bind 6. 128-bit og 256-bit XOP, FMA4 og CVT16  instruktioner . AMD (1. maj 2009). Hentet 7. december 2013. Arkiveret fra originalen 20. maj 2009.
  4. Nye instruktioner i "Bulldozer" og "Piledriver".  Et skridt fremad i højtydende softwareudvikling . AMD (oktober 2012). Dato for adgang: 7. december 2013. Arkiveret fra originalen 7. januar 2013.
  5. [1] Arkiveret 14. september 2017 på Wayback Machine "Men da Zen er et rent ark-design, er der nogle instruktionssætudvidelser fundet i Bulldozer-processorer, der ikke findes i Zen/znver1. De, der ikke længere er til stede, inkluderer FMA4 og XOP."
  6. [https://web.archive.org/web/20160304033017/https://sourceware.org/ml/binutils/2015-03/msg00078.html Arkiveret 4. marts 2016 på Wayback Machine Gopalasubramanian, G - [PATCH ]tilføj znver1-processor]
  7. GCC 4.5 er ude (downlink) . Hentet 7. december 2013. Arkiveret fra originalen 13. december 2013. 
  8. Indlejrede FMA4-objekter tilføjet i Visual Studio 2010 SP1 . Hentet 7. december 2013. Arkiveret fra originalen 16. december 2013.
  9. Nyt i x86 Open64 Compiler Suite v4.5.2 . Arkiveret fra originalen den 13. november 2013.

Links