Введение
Операция, часто используемая в цифровой обработке сигналов.
В вычислительной технике, особенно в цифровой обработке сигналов, операция умножения-накопления (MAC) или умножения-сложения (MAD) является распространенным шагом, который вычисляет произведение двух чисел и добавляет это произведение к аккумулятору. Аппаратное устройство, выполняющее эту операцию, известно как умножитель-аккумулятор (блок MAC); сама операция также часто называется операцией MAC или MAD. Операция MAC изменяет аккумулятор a:
In computing, especially digital signal processing, the multiply–accumulate (MAC) or multiply add (MAD) operation is a common step that computes the product of two numbers and adds that product to an accumulator. The hardware unit that performs the operation is known as a multiplier–accumulator (MAC unit); the operation itself is also often called a MAC or a MAD operation. The MAC operation modifies an accumulator 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 за один такт.