1. [Wiki](https://feex.it/wiki/)
2. [Hardware](https://feex.it/wiki/hardware/)
3. [Systemer og arkitektur](https://feex.it/wiki/hardware/system/)
4. FMA og FMA3

# FMA og FMA3

Arkitekturreference: Feex

Også kaldet FMA, FMA3

FMA beregner en flydende tal-multiplikation og -addition med en enkelt afsluttende afrunding. FMA3 refererer til instruktionsfamilien for fused multiply-add med tre operander på x86; den er opremset særskilt fra AVX2.

## Hvad du behøver at vide

FMA beregner en flydende tal-multiplikation og -addition med en enkelt afsluttende afrunding. FMA3 refererer til instruktionsfamilien for fused multiply-add med tre operander på x86; den er opremset særskilt fra AVX2.

## Sådan virker det

En sammensmeltet operation (fused operation) evaluerer et produkt og en sum som én aritmetisk operation, før der afrundes til destinationsformatet. Dette kan bevare et bidrag, som ville gå tabt, hvis multiplikationen blev afrundet først. Instruktionsformerne 132, 213 og 231 vælger, hvilke operander der leverer produktet, addenden og den overskrevne destination. Skalare og pakkede former har forskellig lane-adfærd.

## Hvor det er nyttigt

Polynomiel evaluering, matrixmultiplikation og digitale filtre kan bruge FMA til at kombinere aritmetiske operationer. Det sammensmeltede resultat kan afvige fra et program, der bevidst anvender to separate operationer. Indstillinger for compilerkontraktion og krav til numerisk reproducerbarhed har derfor betydning ud over tilgængeligheden af instruktioner.

## Sådan kontrolleres understøttelse og aktivering

For VEX FMA3-instruktionerne kontrolleres CPUID.01H:ECX bit 12 sammen med de komplette AVX OS-tilstandskontroller. Hvis der anvendes EVEX-former, kontrolleres de yderligere AVX-512-undersæt og den tilstand, der kræves af disse former. Undersøg compilerflag, når numeriske resultater ændrer sig efter en genkompilering.

Programmet skal både indeholde en passende implementering og vælge den ved kørsel. Hardwareopregning, OS-aktiveret registertilstand og den binære fils kompilerede baseline er separate kontroller. En virtuel maskine kan bevidst udstille færre funktioner end sin vært, og en container tilføjer ikke instruktioner til værts-CPU'en.

## Hvad funktionen ikke fastslår

FMA betyder ikke, at ethvert flydende tal-udtryk evalueres med ekstra præcision, og det garanterer ikke identiske resultater på tværs af compilerindstillinger. FMA4 er en anden instruktionsfamilie. Hverken AVX eller AVX2 alene beviser understøttelse af FMA3.

## Kompatibilitet og ydeevne i praksis

Mål den komplette arbejdsbelastning med repræsentative data. Bredere vektorer kan reducere antallet af instruktioner, mens hukommelsestrafik, synkronisering eller konverteringsomkostninger forbliver uændrede. Instruktionslatenstid, gennemløb og strømadfærd afhænger af den nøjagtige mikroarkitektur og driftsforholdene.

## En praktisk tjekliste til verifikation

1. Registrer den nøjagtige processor- eller platformsmodel samt de involverede applikations-, OS- og runtime-versioner. Bevar formuleringen af den faktiske fejl eller det faktiske krav.
2. Tjek producentreferencen for den nøjagtige model, og undersøg derefter den effektive kapacitet og aktiverede tilstand i det miljø, hvor programmet kører.
3. Sammenlign ethvert krav for den valgte binære fil eller backend. En funktion med et lignende navn, et alias eller en bred teknologimærkat er ikke tilstrækkelig.
4. Bekræft, at applikationen har valgt den tilsigtede implementering. Brug dens dokumenterede diagnosticering og et understøttet fallback, når kravene ikke er opfyldt.
5. Foretag en enkelt understøttet ændring ad gangen, og gentag den samme arbejdsbelastning. Hold den oprindelige konfiguration og gendannelsessti tilgængelig.

## Hvis funktionen er anført, men softwaren ikke kan bruge den

Start med den nøjagtige komponent, der fejler. En hardwaredatabase beskriver registreret kapacitet; operativsystemet eller hypervisoren kan udstille et andet effektivt miljø. En illegal-instruction-fejl kræver også undersøgelse af den faktiske fejlbehæftede instruktion og det binære build, fordi korruption eller en urelateret ikke-understøttet instruktion kan frembringe et lignende symptom.

Installer den applikations-, driver- eller runtime-version, der understøttes til den nøjagtige platform, og brug om nødvendigt leverandørens dokumenterede baseline eller fallback-build. En softwareopdatering kan ikke oprette en instruktion, som processoren mangler. Ændringer i firmware og sikkerhedspolitik bør følge systemproducentens procedure og en genopretningsplan frem for en generisk optimeringsopskrift.

## Relaterede funktioner og nyttige sondringer

[AVX](https://feex.it/wiki/l/da/hardware/system/avx/) · [AVX2](https://feex.it/wiki/l/da/hardware/system/avx2/) · [F16C](https://feex.it/wiki/l/da/hardware/system/f16c/) · [x86-64-v3](https://feex.it/wiki/l/da/hardware/system/x86-64-v3/)

## Kilder og denne forklaringens omfang

[Intel 64 and IA-32 Architectures Software Developer's Manual](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html) · [Linux-kerne: using XSTATE features in user space](https://docs.kernel.org/arch/x86/xstate.html)

Disse referencer fastlægger arkitektonisk adfærd og softwarekrav. De verificerer ikke uafhængigt enhver funktionsværdi på en tilknyttet hardwaremodelside. For modelunderstøttelse skal du bruge den pågældende sides producentdokumentation og kontrollere den effektive systemkonfiguration. Denne artikel leverer ikke et benchmark, en certificering eller en uafhængig revisionsdato.

## Relateret

Disse enheder har forbindelse til denne artikel. Type vises på hvert link.

[AVX: Arkitekturreference](https://feex.it/wiki/l/da/hardware/system/avx/)[AVX2: Arkitekturreference](https://feex.it/wiki/l/da/hardware/system/avx2/)[F16C: Arkitekturreference](https://feex.it/wiki/l/da/hardware/system/f16c/)[x86-64-v3: Arkitekturreference](https://feex.it/wiki/l/da/hardware/system/x86-64-v3/)

## Kilder og verificering

Redaktionelt ejerskab: Feex. Ingen uafhængig revisionsdato er registreret. [Sådan undersøger vi](https://feex.it/wiki/research/).

- [Intel 64 and IA-32 Architectures Software Developer's Manual ](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html)· Bind 1 og 2 beskriver de navngivne instruktionsfamilier og CPUID; Bind 3 beskriver tilstands-, sideinddelings-, VMX- og beskyttelseskontroller. Arkitekturdokumentation fastslår ikke understøttelse for en bestemt model.
- [Linux-kerne: using XSTATE features in user space ](https://docs.kernel.org/arch/x86/xstate.html)· OS-aktiveret vektortilstand, dynamisk aktiveret tile-tilstand, krav til signal-stack og AMX-tilladelsesflow. Linux-specifik adfærd er ikke et løfte om et andet operativsystem.

## Var denne artikel nyttig?

Et ja eller nej er nok. Vælg en grund, hvis du vil, eller tilføj en kort bemærkning.

Hurtige fakta

Den korte identitet for denne side. Specifikationer, kilder og hele historien forbliver i artiklen.

---

Source: [Canonical Feex Wiki page](https://feex.it/wiki/l/da/hardware/system/fma/)

[Developer guide](https://feex.it/wiki/developers/) | [API policy](https://feex.it/developers/api-policy/) | [Agent guidance](https://feex.it/wiki/llms.txt)
