Введение

Операция, часто используемая в цифровой обработке сигналов.
В вычислительной технике, особенно в цифровой обработке сигналов, операция умножения-накопления (MAC) или умножения-сложения (MAD) является распространенным шагом, который вычисляет произведение двух чисел и добавляет это произведение к аккумулятору. Аппаратное устройство, выполняющее эту операцию, известно как умножитель-аккумулятор (блок MAC); сама операция также часто называется операцией MAC или MAD. Операция MAC изменяет аккумулятор a:

При использовании чисел с плавающей точкой она может быть выполнена с двумя округлениями (что типично для многих DSP) или с одним округлением. При выполнении с одним округлением она называется умножением-сложением с округлением (FMA) или умножением-накоплением с округлением (FMAC). Современные компьютеры могут содержать выделенный блок MAC, состоящий из умножителя, реализованного на комбинационной логике, за которым следует сумматор и регистр аккумулятора, хранящий результат. Выход регистра подается обратно на один из входов сумматора, так что на каждом тактовом цикле выход умножителя добавляется к регистру. Комбинационные умножители требуют большого количества логики, но могут вычислить произведение намного быстрее, чем метод сдвига и сложения, характерный для более ранних компьютеров. Перси Ладгейт впервые предложил использовать MAC в своей аналитической машине 1909 года и первым использовал MAC для деления (путем умножения с использованием обратной величины в качестве начального значения, через сходящийся ряд (1+x)^(-1)). Первыми современными процессорами, оснащенными блоками MAC, были цифровые сигнальные процессоры, но теперь эта техника также широко распространена в процессорах общего назначения.

В плавающей точке арифметики

Когда операция выполняется с целыми числами, она обычно точна (вычисляется по модулю некоторой степени двойки). Однако числа с плавающей точкой обладают лишь ограниченной математической точностью. То есть, цифровая арифметика с плавающей точкой, как правило, не является ассоциативной или дистрибутивной. (См. .) Следовательно, для результата имеет значение, выполняется ли умножение-сложение двумя округлениями или в одной операции с одним округлением (сплавленное умножение-сложение). IEEE 754 2008 определяет, что оно должно выполняться с одним округлением, что обеспечивает более точный результат.

Инструкция по производству точек

Некоторые машины объединяют несколько операций умножения-сложения в одну стадию, например, вычисляют скалярное произведение из четырех элементов двух 128-битных SIMD-регистров a0 × b0 + a1 × b1 + a2 × b2 + a3 × b3 за один такт.