Multiply-accumulate

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

MAC (ang. multiply-accumulate) jest operacją wykonywaną przez jednostkę arytmetyczno-logiczną (ALU) procesora, polegającą na pomnożeniu zawartości dwóch rejestrów z dodaniem wyniku do aktualnej zawartości innego rejestru, najczęściej akumulatora.

a \leftarrow a + b \times c

MAC jest podstawową operacją procesorów sygnałowych. Operacja ta wykonywana jest w jednym cyklu rozkazowym, co znacznie poprawia szybkość przetwarzania dla algorytmów cyfrowego przetwarzania sygnałów.

FMA (Fused multiply-add)[edytuj | edytuj kod]

FMA (alternatywna nazwa: FMAD) to zabezpieczona (ang. fused) operacja typu pomnóż-i-dodaj wykonywana w jednym kroku, podczas którego wykonuje się tylko jedno zaokrąglenie. Oznacza to, że w instrukcji a = b + c*d operacje mnożenia i dodawania wykonywane są dokładnie (bez żadnych zaokrągleń) i dopiero wynik dodawania zaokrąglany jest tak, by mógł być zapisany w a.

FMAD przyspiesza i poprawia dokładność wielu algorytmów numerycznych, w których wyznacza się sumy ilocznów:

Implementacja operacji FMA umożliwia zastosowanie efektywnych software'owych algorytmów obliczania ilorazów i pierwiastków kwadratowych, co można wykorzystać do uproszczenia budowy mikroprocesorów.

Operacja FMA została opisana w standardzie IEEE 754-2008.

Operacja FMA została też włączona do biblioteki standardowej języka C (standard C99) jako funkcja fma.

Zobacz też[edytuj | edytuj kod]