MAC (Multiply-Accumulate)
MAC, czyli operacja mnożenia i dodawania, jest realizowana przez jednostkę arytmetyczno-logiczną (ALU) procesora. Polega na pomnożeniu zawartości dwóch rejestrów i dodaniu wyniku do innego rejestru, najczęściej akumulatora. Operacja ta jest wyrażona wzorem:
MAC jest kluczową operacją w procesorach sygnałowych, ponieważ odbywa się w jednym cyklu rozkazowym, co znacząco zwiększa szybkość przetwarzania w algorytmach cyfrowego przetwarzania sygnałów.
FMA (Fused Multiply-Add)
FMA, znana również jako FMAD, to operacja typu pomnóż-i-dodaj, która łączy mnożenie i dodawanie w jeden krok, wykonując tylko jedno zaokrąglenie. Oznacza to, że w instrukcji a = b + c*d
mnożenie i dodawanie są realizowane dokładnie, a zaokrąglenie dotyczy jedynie wyniku dodawania.
FMA przyspiesza i zwiększa dokładność wielu algorytmów numerycznych, w tym:
- Iloczyn skalarny
- Mnożenie macierzy
- Obliczanie wartości wielomianów
- Obliczanie wartości całek
- Obliczanie pierwiastków funkcji metodą Newtona
Dzięki implementacji FMA możliwe jest zastosowanie efektywnych algorytmów do obliczania ilorazów i pierwiastków kwadratowych, co ułatwia konstrukcję mikroprocesorów.
Operacja FMA została opisana w standardzie IEEE 754-2008 i włączona do biblioteki standardowej języka C (standard C99) jako funkcja fma
.