Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

Нажав на кнопку "Отправить", Я даю своё согласие на автоматизированную обработку указанной информации, распространяющейся на осуществление всех действий с ней, включая сбор, передачу по сетям связи общего назначения, накопление, хранение, обновление, изменение, использование, обезличивание, блокирование, уничтожение и обработку посредством внесения в электронную базу данных, систематизации, включения в списки и отчетные формы.


Расширение наборов инструкций процессоров (Haswell и далее...).

Расширение наборов инструкций процессоров (Haswell и далее...).

Главная функция микропроцессора - это выполнение заданного для него набора команд. Выполняя последовательность команд (т. е. программу) он вычисляет, управляет

внешними устройствами, рассчитывает зарплату и т. п.(принцип программного управления - мы пишем программу - он ее исполняет). Набор команд у процессоров постоянно расширяется, чтобы программисты могли более эффективно реализовывать алгоритмы своих программ (например, «старый» набор команд процессора Pentium позволял реализовывать алгоритм программы с помощью 120 команд, а наборы команд современных процессоров позволяют реализовать тот же алгоритм программы с помощью всего 12 команд).

Начиная с архитектуры процессоров Haswell опять появились новые наборы инструкций. Их можно условно разделить на две большие группы: направленные на увеличение векторной производительности и направленные на серверный сегмент.

К первым относятся AVX и FMA3.

Advanced Vector Extensions 2 (AVX2).

Набор AVX былрасширендоверсии AVX 2.0. Набор AVX2 предоставляет:

- поддержку 256-битных целочисленных векторов (ранее была поддержка только 128-битных);

- поддержку gather-инструкций, которые снимают требование непрерывного расположения данных в памяти; теперь данные «собираются» с разных адресов памяти — интересно будет посмотреть, как это повлияет на производительность;

- добавление инструкций манипуляций/операций над битами.

В целом, новый набор больше ориентирован на целочисленную арифметику, и основной выигрыш от AVX 2.0 будет виден лишь в целочисленных операциях.

Fused Multiply-Add (FMA3).

FMA — это операции совмещенного умножения-сложения, при которых умножаются два числа и складываются с аккумулятором. Данный тип операций достаточно распространен и позволяет более эффективно реализовывать умножение векторов и матриц. Поддержка данного расширения должна значительно увеличить производительность векторных операций. FMA3 уже поддерживается в процессорах AMD с ядром Piledriver, а FMA4 - в Bulldozer.

FMA представляет собой комбинацию операции умножения и сложения: a=b×c+d.

Что касается FMA3, то это трехоперандные инструкции, то есть запись результата производится в один из трех участвующих в инструкции операндов. В итоге мы получаем операцию типа a=b×c+a, a=a×b+c, a=b×a+c.

FMA4 - это четырехоперандные инструкции с записью результата в четвертый операнд. Инструкция приобретает вид: a=b×c+d.

Эффект от FMA3: данное нововведение позволит увеличить производительность более чем на 30% при условии адаптации кода под FMA3. Стоит заметить, что когда Haswell еще был далеко на горизонте, Intel планировала внедрять FMA4, а не FMA3, но впоследствии изменила решение в пользу FMA3. Скорее всего, именно из-за этого Bulldozer вышел с поддержкой FMA4: дескать, не успели переделать под Intel (а вот Piledriver вышел уже с FMA3). Причем изначально Bulldozer еще в 2007 году планировался именно с FMA3, но после обнародования планов Intel внедрить FMA4 в 2008 году AMD свое решение переиграла, выпустив Bulldozer с FMA4. А Intel затем сменила в планах FMA4 на FMA3, поскольку выигрыш от FMA4 по сравнению с FMA3 небольшой, а усложнение электрических логических схем — значительное, что также увеличивает транзисторный бюджет.

Польза от инструкций AVX2/FMA3 зависит от разработчиков ПО: чем быстрее они адаптируют свои приложения, тем быстрее конечный пользователь получит прирост производительности. Однако не стоит рассчитывать на рост всего и везде: SIMD-инструкции в основном используются в работе с мультимедийными данными и в научных расчетах, так что рост производительности будет именно в этих задачах. Основной выигрыш от увеличения энергоэффективности получат мобильные системы, где этот вопрос действительно важен. Поддержка FMA3 может дать прирост в некоторых приложениях от 30% до 70%. Поддержка AVX2/FMA3 даст большой выигрыш и в рабочих станциях, занимающихся научными расчетами.

 


Лицензия