Multiplicación-Suma

En informática, especialmente en el procesamiento de señales digitales, multiplicar -acumular es una operación común en la que dos números se multiplican y se suman con un acumulador .

Cuando se realiza una operación en números de punto flotante , se puede redondear dos veces (típico de DSP ) o redondear una vez (la suma se produce con una representación interna más precisa del producto). La versión redondeada también se llama fusión de multiplicación y suma (FMA) o fusión de multiplicación y acumulación (FMAC).

Cita

Esta instrucción le permite implementar de manera más eficiente las operaciones de división y extracción de raíces cuadradas (en ausencia de implementación de hardware), multiplicación de vectores y matrices , cálculo de polinomios según el esquema de Horner .

Implementación en procesadores

El funcionamiento está incluido en el estándar IEEE 754-2008 . El estándar de 1999 para el lenguaje de programación C incluye soporte para la operación FMA (la función fma() de math.h ).

Las computadoras modernas pueden tener una unidad especializada de multiplicación-suma o MAC (multiplicar-acumular), que consta de un multiplicador que implementa la lógica combinacional y un sumador , así como un acumulador , en el que se almacena el resultado. La salida del acumulador se alimenta a una de las entradas del sumador y, por lo tanto, en cada ciclo, el resultado del multiplicador se suma al acumulador. La implementación de MAC requiere lógica adicional en el chip, pero los cálculos son más rápidos que usar el método shift-and-add , típico de las primeras computadoras. FMA también funciona con mayor precisión [1]

Apareciendo en los procesadores de señales, la operación (FMA) está incluida en los sistemas de instrucción de los procesadores: IBM POWER1 ( inglés , 1990), Fujitsu SPARC64 (1995), HP PA-8000 (1996), Sony Emotion Engine (1999), Intel Itanium (2001), IBM Cell (2005), Ambric (2006).

Asimismo, el funcionamiento de FMA está implementado en procesadores AMD con soporte para FMA4 ( Bulldozer ) y FMA3 ( Trinity ) [2] . Intel ha implementado FMA3 en procesadores basados ​​en el núcleo Haswell . [3]

La tecnología está presente en las GPU de las series NVIDIA GeForce 200 (GTX 200), GeForce 300 y NVIDIA Tesla GPGPU C1060 y C2050/C2070 . [4] AMD agregó FMA a la línea Radeon con la serie HD 5000 . [5]

Instrucciones FMA implementadas en los procesadores Intel Sandy Bridge :

Notas

  1. http://www.pgroup.com/lit/articles/insider/v3n3a4.htm "realizar la operación multiplicar-sumar en un solo paso, evitando así el redondeo de etapa intermedia realizado por procesadores anteriores... Las instrucciones FMA4 pueden acelerar y mejorar la precisión de muchos cálculos"
  2. Detalles de AMD Trinity y Piledriver antes del lanzamiento . Consultado el 2 de mayo de 2012. Archivado desde el original el 5 de mayo de 2012.
  3. http://www.reghardware.co.uk/2008/08/19/idf_intel_architecture_roadmap/ Archivado el 17 de febrero de 2012 en Wayback Machine - Intel anunció 22nm octa-core 'Haswell', The Register
  4. http://www.nvidia.com/content/PDF/fermi_white_papers/NVIDIAFermiComputeArchitectureWhitepaper.pdf Archivado el 7 de octubre de 2009 en Wayback Machine Nvidia Fermi Whitepaper
  5. http://www.bit-tech.net/hardware/graphics/2009/09/30/ati-radeon-hd-5870-architecture-analysis/8 Archivado el 16 de abril de 2010 en Wayback Machine - Arquitectura ATI Radeon HD 5870, bit-tech.net