Operación de multiplicar-acumular


En computación , especialmente en el procesamiento de señales digitales , la operación de multiplicar-acumular ( MAC ) o multiplicar-sumar ( MAD ) es un paso común que calcula el producto de dos números y agrega ese producto a un acumulador . La unidad de hardware que realiza la operación se conoce como multiplicador-acumulador ( unidad MAC ); la operación en sí también se denomina a menudo MAC o operación MAC. La operación MAC modifica un acumulador a :

Cuando se hace con números de punto flotante , se puede realizar con dos redondeos (típico en muchos DSP ) o con un solo redondeo. Cuando se realiza con un solo redondeo, se denomina multiplicación-suma fusionada ( FMA ) o multiplicación-acumulación fusionada ( FMAC ).

Las computadoras modernas pueden contener un MAC dedicado, que consiste en un multiplicador implementado en lógica combinacional seguido de un sumador y un registro acumulador que almacena el resultado. La salida del registro se retroalimenta a una entrada del sumador, de modo que en cada ciclo de reloj, la salida del multiplicador se agrega al registro. Los multiplicadores combinacionales requieren una gran cantidad de lógica, pero pueden calcular un producto mucho más rápidamente que el método de cambiar y agregar típico de las computadoras anteriores. Percy Ludgate fue el primero en concebir un MAC en su Máquina analítica de 1909, [1] y el primero en explotar un MAC para la división (usando la multiplicación sembrada por recíproco, a través de la serie convergente (1+x ) −1 ). Los primeros procesadores modernos equipados con unidades MAC fueron los procesadores de señales digitales , pero la técnica ahora también es común en los procesadores de uso general. [2] [3] [4] [5]

Cuando se hace con números enteros , la operación es típicamente exacta ( módulo calculado una potencia de dos ). Sin embargo, los números de coma flotante tienen solo una cierta cantidad de precisión matemática . Es decir, la aritmética de coma flotante digital generalmente no es asociativa ni distributiva . (Ver punto flotante § Problemas de precisión ). Por lo tanto, hace una diferencia en el resultado si la multiplicación-suma se realiza con dos redondeos, o en una operación con un solo redondeo (una combinación de multiplicación-suma). IEEE 754-2008 especifica que debe realizarse con un redondeo, lo que arroja un resultado más preciso. [6]

Una operación de multiplicación-suma fusionada ( FMA o fmadd ) [7] es una operación de multiplicación-suma de punto flotante realizada en un paso, con un solo redondeo. Es decir, donde una multiplicación-suma no fusionada calcularía el producto b × c , lo redondearía a N bits significativos, sumaría el resultado a a , y volvería a redondear a N bits significativos, una multiplicación-suma fusionada calcularía la expresión completa a + ( b × c ) hasta su máxima precisión antes de redondear el resultado final a N bits significativos.

Un FMA rápido puede acelerar y mejorar la precisión de muchos cálculos que implican la acumulación de productos: