FMA

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 15. července 2021; kontroly vyžadují 6 úprav .

FMA ( anglicky  Fused Multiply-Add , násobení-sčítání s jednoduchým zaokrouhlením) je sada volitelných 128- a 256-bitových instrukcí SIMD pro architektury x86 a x86-64 , navržená k provádění operace násobení-sčítání na číslech v plovoucích- formát bodu, čárka.

Existují dvě možnosti pro rozšíření, která přidávají pokyny FMA:

Funkce

Instrukce FMA3 a FMA4 mají téměř totožné funkce, ale nejsou kompatibilní. Oba obsahují instrukce SIMD multiply-add pro čísla s plovoucí desetinnou čárkou. Jejich podpora v kompilátorech bude nějakou dobu trvat.

Problém s kompatibilitou

Rozdíl mezi FMA3 a FMA4 je v tom, kolik různých operandů má instrukce - 3 nebo 4. Operace FMA je:

Forma 4 operandů (FMA4) umožňuje, aby a, b, c a d byly v různých registrech, zatímco forma se 3 operandy (FMA3) vyžaduje, aby d bylo v jednom ze stejných registrů jako a, b nebo c. Forma 3 operandů činí kód kratší a snadněji implementovatelný v hardwaru, zatímco forma 4 operandů poskytuje větší flexibilitu programování.

FMA3

Procesory s podporou FMA3

Nové instrukce FMA3

Návod operandy Úkon
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

Kromě hlavních instrukcí uvedených v tabulce obsahuje rozšíření FMA3 řadu instrukcí, které patří do následujících skupin:

FMA4

Procesory s podporou FMA4

Nové instrukce FMA4

Návod operandy Úkon
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

Nekompatibilita mezi FMA3 od Intelu a FMA4 od AMD je způsobena tím, že obě společnosti mění své plány, aniž by se vzájemně dohodly na detailech kódování. AMD změnilo plány z FMA3 na FMA4, zatímco Intel změnil plány z FMA4 na FMA3, téměř ve stejnou dobu.

Podpora kompilátoru

Různé kompilátory nabízejí různé úrovně podpory FMA.

Podpora v assembleru:

Viz také

Poznámky

  1. Dosažení rovnováhy . Dave Christie, blogy AMD Developer (7. května 2009). Staženo: 8. května 2009.  (nedostupný odkaz)
  2. Maffeo, Robin AMD a Visual Studio 11 Beta . AMD. Staženo: 8. prosince 2013.  (nepřístupný odkaz)
  3. AMD64 Architecture Programmer's Guide. Svazek 6. 128bitové a 256bitové instrukce XOP, FMA4 a  CVT16 . AMD (1. května 2009). Získáno 7. prosince 2013. Archivováno z originálu 20. května 2009.
  4. Nové pokyny v "Bulldozer" a "Piledriver".  Krok vpřed ve vývoji vysoce výkonného softwaru . AMD (říjen 2012). Datum přístupu: 7. prosince 2013. Archivováno z originálu 7. ledna 2013.
  5. [1] Archivováno 14. září 2017 na Wayback Machine "Ale vzhledem k tomu, že Zen je design s čistým listem, existují některá rozšíření instrukční sady nalezená v procesorech Bulldozer, která se nenacházejí v Zen/znver1. Mezi ty, které již nejsou přítomny, patří FMA4 a XOP."
  6. [https://web.archive.org/web/20160304033017/https://sourceware.org/ml/binutils/2015-03/msg00078.html Archivováno 4. března 2016 na Wayback Machine Gopalasubramanian, G - [PATCH ]přidat procesor znver1]
  7. GCC 4.5 je venku (downlink) . Získáno 7. prosince 2013. Archivováno z originálu 13. prosince 2013. 
  8. Vložené objekty FMA4 přidané do sady Visual Studio 2010 SP1 . Získáno 7. prosince 2013. Archivováno z originálu 16. prosince 2013.
  9. Novinka v x86 Open64 Compiler Suite v4.5.2 . Archivováno z originálu 13. listopadu 2013.

Odkazy