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) edytuj

FMA (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:

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