Multiply-accumulate
MAC (ang. multiply-accumulate) – operacja wykonywana przez jednostkę arytmetyczno-logiczną (ALU) procesora, polegająca na pomnożeniu zawartości dwóch rejestrów z dodaniem wyniku do aktualnej zawartości innego rejestru, najczęściej akumulatora.
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)
edytujFMA (alternatywna nazwa: FMAD) jest zabezpieczoną (ang. fused) operacją typu pomnóż-i-dodaj, wykonywaną 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 iloczynów:
- Iloczyn skalarny,
- Mnożenie macierzy,
- Wyznaczanie wartości wielomianów,
- Wyznaczanie wartości całek,
- Wyznaczanie pierwiastków funkcji za pomocą metody Newtona.
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
.