FMA

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

У обчислювальній техніці, особливо в цифровій обробці сигналів поєднане множення-додавання (multiply-accumulate) - поширена операція, при якій множаться два числа і складаються з акумулятором.

\ a \leftarrow a + ( b \times c )

Коли операція виконується над числами з плаваючою комою, то може виконуватися подвійне округлення (типово для DSP) або одноразове (додавання відбувається з більш точним внутрішнім поданням добутку). Версія з одноразовим округленням також називається fused multiply-add (FMA) або fused multiply-accumulate (FMAC).

Призначення[ред.ред. код]

Дана інструкція дозволяє більш ефективно реалізувати операції ділення і добування квадратного кореня (при відсутності апаратної реалізації), множення векторів і матриць, обчислення поліномів за схемою Горнера.

Реалізація в процесорах[ред.ред. код]

Операція включена в стандарт IEEE 754-2008. У стандарт 1999 для мови програмування Сі включена підтримка операції FMA (функція fma () з math.h).

Сучасні комп'ютери можуть мати спеціалізований блок множення-складання або MAC (multiply-accumulate), що складається з помножувача, який реалізує комбінаційну логіку, і суматора, а також акумулятор, в якому зберігається результат. Вихід акумулятора подається на один із входів суматора, і таким чином кожен такт результат з помножувача складається з акумулятором. Реалізація MAC вимагає додаткової логіки на кристалі, але обчислення відбуваються швидше, ніж при використанні методу зрушень і складань типового для перших комп'ютерів. FMA також працює з більш високою точністю .

З'явившись на сигнальних процесорах, операція (FMA) включена в системи команд процесорів: IBM POWER1 (1990), Fujitsu SPARC64 (1995), HP PA-8000 (1996), Sony Emotion Engine (1999), Intel Itanium (2001), IBM Cell (2005).

Також вона реалізована в процесорах AMD з підтримкою FMA4 (Bulldozer) і FMA3 (Trinity). Intel планує додати FMA3 в процесори на ядрі Haswell до 2012.

Див. також[ред.ред. код]