FMA

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. július 15-én felülvizsgált verziótól ; az ellenőrzések 6 szerkesztést igényelnek .

Az FMA ( angol.  Fused Multiply-Add , szorzás-összeadás egyszeri kerekítéssel) opcionális 128 és 256 bites SIMD utasítások készlete x86 és x86-64 architektúrákhoz , amelyeket arra terveztek, hogy szorzás-összeadás műveleteket hajtsanak végre számokon lebegőben. pont formátum . vessző.

Két lehetőség közül választhat az FMA utasításokat tartalmazó bővítményekhez:

Jellemzők

Az FMA3 és az FMA4 utasítások funkciója szinte azonos, de nem kompatibilisek. Mindkettő SIMD szorzási utasítást tartalmaz a lebegőpontos számokhoz. A fordítóprogramokban való támogatásuk eltart egy ideig.

Kompatibilitási probléma

Az FMA3 és az FMA4 közötti különbség az, hogy az utasításnak hány különböző operandusa van – 3 vagy 4. Az FMA művelet a következő:

A 4 operandusos forma (FMA4) lehetővé teszi, hogy a, b, c és d különböző regiszterekben legyen, míg a 3 operandusos forma (FMA3) megköveteli, hogy d ugyanabban a regiszterben legyen, mint a, b vagy c. A 3 operandusos forma rövidebbé teszi a kódot és könnyebben megvalósítható hardverben, míg a 4 operandusos forma nagyobb programozási rugalmasságot biztosít.

FMA3

Processzorok FMA3 támogatással

Új FMA3 utasítások

Utasítás operandusok Művelet
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

A táblázatban felsorolt ​​fő utasításokon kívül az FMA3 kiterjesztés számos utasítást tartalmaz, amelyek a következő csoportokhoz tartoznak:

FMA4

Processzorok FMA4 támogatással

Új FMA4 utasítások

Utasítás operandusok Művelet
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

Történelem

Az Intel FMA3 és az AMD FMA4 közötti inkompatibilitás annak tudható be, hogy mindkét cég úgy változtatta meg tervét, hogy nem állapodott meg egymással a kódolás részleteiről. Az AMD FMA3-ról FMA4-re, míg az Intel FMA4-ről FMA3-ra változtatta terveit, ezzel szinte egy időben.

Fordító támogatás

A különböző fordítók különböző szintű FMA-támogatást kínálnak.

Támogatás összeszerelőknél:

Lásd még

Jegyzetek

  1. Az egyensúly megteremtése . Dave Christie, AMD fejlesztői blogok (2009. május 7.). Letöltve: 2009. május 8.  (nem elérhető link)
  2. Maffeo, Robin AMD és a Visual Studio 11 Beta . AMD. Letöltve: 2013. december 8.  (elérhetetlen link)
  3. AMD64 architektúra programozói útmutató. 6. kötet. 128 bites és 256 bites XOP, FMA4 és CVT16  utasítások . AMD (2009. május 1.). Letöltve: 2013. december 7. Az eredetiből archiválva : 2009. május 20..
  4. Új utasítások a "Bulldozer" és a "Piledriver"-ben.  Egy lépés előre a nagy teljesítményű szoftverfejlesztésben . AMD (2012. október). Hozzáférés dátuma: 2013. december 7. Az eredetiből archiválva : 2013. január 7.
  5. [1] 2017. szeptember 14-én archiválva a Wayback Machine -nél "De mivel a Zen egy tiszta lapos kialakítás, a Bulldozer processzorokban néhány utasításkészlet-bővítés található, amelyek nem találhatók meg a Zen/znver1-ben. A már nem jelenlevők közé tartozik az FMA4 és az XOP."
  6. [https://web.archive.org/web/20160304033017/https://sourceware.org/ml/binutils/2015-03/msg00078.html Archiválva : 2016. március 4., a Wayback Machine Gopalasubramanian, G - [PATCH ]znver1 processzor hozzáadása]
  7. ↑ A GCC 4.5 nem elérhető (lefelé irányuló kapcsolat) . Letöltve: 2013. december 7. Az eredetiből archiválva : 2013. december 13.. 
  8. Beágyazott FMA4 objektumok hozzáadva a Visual Studio 2010 SP1-hez . Letöltve: 2013. december 7. Az eredetiből archiválva : 2013. december 16..
  9. Újdonság az x86 Open64 Compiler Suite v4.5.2-ben . Az eredetiből archiválva : 2013. november 13.

Linkek