FMA

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 15. heinäkuuta 2021 tarkistetusta versiosta . tarkastukset vaativat 6 muokkausta .

FMA ( eng.  Fused Multiply-Add , kertolasku yhdellä pyöristyksellä) on joukko valinnaisia ​​128- ja 256-bittisiä SIMD - käskyjä x86- ja x86-64-arkkitehtuureille , jotka on suunniteltu suorittamaan kertolasku- ja yhteenlaskutoiminto numeroille kelluvassa pistemuoto . pilkku.

Laajennuksille, jotka lisäävät FMA-ohjeet, on kaksi vaihtoehtoa:

Ominaisuudet

FMA3- ja FMA4-käskyillä on lähes identtiset toiminnot, mutta ne eivät ole yhteensopivia. Molemmat sisältävät SIMD-kerroinlaskuohjeet liukulukuille. Niiden tukeminen kääntäjissä kestää jonkin aikaa.

Yhteensopivuusongelma

FMA3:n ja FMA4:n ero on siinä, kuinka monta eri operandia käskyllä ​​on - 3 tai 4. FMA-toiminto on:

4-operandin muoto (FMA4) sallii a:n, b:n, c:n ja d:n olevan eri rekistereissä, kun taas 3-operandin muoto (FMA3) edellyttää, että d on jossakin samoista rekistereistä kuin a, b tai c. 3 operandin muoto tekee koodista lyhyemmän ja helpommin toteutettavan laitteistossa, kun taas 4 operandin muoto tarjoaa enemmän ohjelmointijoustavuutta.

FMA3

Prosessorit FMA3-tuella

Uudet FMA3-ohjeet

Ohje operandit Operaatio
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

Taulukossa lueteltujen pääohjeiden lisäksi FMA3-laajennus sisältää joukon ohjeita, jotka kuuluvat seuraaviin ryhmiin:

FMA4

Prosessorit FMA4-tuella

Uudet FMA4-ohjeet

Ohje operandit Operaatio
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

Historia

Intelin FMA3:n ja AMD:n FMA4:n välinen yhteensopimattomuus johtuu siitä, että molemmat yhtiöt muuttivat suunnitelmiaan sopimatta keskenään koodausyksityiskohdista. AMD muutti suunnitelmansa FMA3:sta FMA4:ään, kun taas Intel muutti suunnitelmansa FMA4:stä FMA3:een, lähes samaan aikaan.

Kääntäjän tuki

Eri kääntäjät tarjoavat eri tasoisia FMA-tukea.

Tuki kokoajissa:

Katso myös

Muistiinpanot

  1. Tasapainon löytäminen . Dave Christie, AMD:n kehittäjäblogit (7. toukokuuta 2009). Haettu: 8. toukokuuta 2009.  (linkki ei saatavilla)
  2. Maffeo, Robin AMD ja Visual Studio 11 Beta . AMD. Haettu: 8. joulukuuta 2013.  (linkki, jota ei voi käyttää)
  3. AMD64-arkkitehtuuriohjelmoijan opas. Volume 6. 128- ja 256-bittinen XOP-, FMA4- ja CVT16-  ohjeet . AMD (1. toukokuuta 2009). Haettu 7. joulukuuta 2013. Arkistoitu alkuperäisestä 20. toukokuuta 2009.
  4. Uudet ohjeet "Bulldozer" ja "Piledriver".  Askel eteenpäin korkean suorituskyvyn ohjelmistokehityksessä . AMD (lokakuu 2012). Käyttöpäivä: 7. joulukuuta 2013. Arkistoitu alkuperäisestä 7. tammikuuta 2013.
  5. [1] Arkistoitu 14. syyskuuta 2017 Wayback Machinessa "Mutta koska Zen on puhtaan arkin suunnittelu, Bulldozer-prosessoreista löytyy joitain ohjesarjalaajennuksia, joita ei löydy Zen/znver1:stä. Niitä, joita ei enää ole, ovat FMA4 ja XOP."
  6. [https://web.archive.org/web/20160304033017/https://sourceware.org/ml/binutils/2015-03/msg00078.html Arkistoitu 4. maaliskuuta 2016 Wayback Machinessa Gopalasubramanian, G - [PATCH ]lisää znver1-prosessori]
  7. GCC 4.5 on poissa (downlink) . Haettu 7. joulukuuta 2013. Arkistoitu alkuperäisestä 13. joulukuuta 2013. 
  8. Upotetut FMA4-objektit lisätty Visual Studio 2010 SP1:een . Haettu 7. joulukuuta 2013. Arkistoitu alkuperäisestä 16. joulukuuta 2013.
  9. Uutta x86 Open64 Compiler Suite -versiossa 4.5.2 . Arkistoitu alkuperäisestä 13. marraskuuta 2013.

Linkit