Аппаратное ускорение - Hardware acceleration

В вычисление, аппаратное ускорение использование компьютерное железо специально сделано для выполнения некоторых функций более эффективно, чем это возможно в программного обеспечения работает на универсальном центральное процессорное устройство (ЦПУ). Любые трансформация из данные или рутина это может быть вычислен, можно рассчитать чисто в программного обеспечения работает на обычном процессоре, чисто на заказ оборудование или их сочетание. Операцию можно вычислить быстрее в специализированное оборудование разработан или запрограммированный для вычисления операции, чем указано в программном обеспечении, и выполняемой на универсальном компьютерный процессор. У каждого подхода есть свои преимущества и недостатки. Реализация вычислительные задачи в аппаратном для уменьшения задержка и увеличить пропускная способность называется аппаратным ускорением.

Типичные преимущества программного обеспечения включают более быстрое развитие (приводит к более быстрому раз выйти на рынок ), нижний разовая инженерия расходы, повышенные переносимость, и простота обновление функций или исправление ошибки, по цене накладные расходы к вычислить общие операции. Преимущества оборудования включают ускорение, уменьшено потребляемая мощность,[1] ниже задержка, вырос параллелизм[2] и пропускная способность, и лучшее использование площади и функциональные компоненты доступно на Интегральная схема; за счет меньшей возможности обновлять дизайн один раз вытравлен на кремнии и более высокие затраты на функциональная проверка и время выхода на рынок. В иерархии цифровых вычислительных систем от процессоров общего назначения до полностью настроен аппаратного обеспечения, существует компромисс между гибкостью и эффективностью, при этом эффективность увеличивается на порядки величины когда любое данное приложение реализовано выше по этой иерархии.[3][4] Эта иерархия включает процессоры общего назначения, такие как ЦП и т. Д. специализированные процессоры такие как графические процессоры, фиксированная функция реализовано на программируемые вентильные матрицы (FPGA) и фиксированная функция, реализованная на специализированная интегральная схема (ASIC).

Аппаратное ускорение выгодно для спектакль, и практично, когда функции фиксированы поэтому обновления не так необходимы, как в программных решениях. С появлением перепрограммируемый логические устройства таких как FPGA, ограничение аппаратного ускорения полностью фиксированными алгоритмами было ослаблено с 2010 года, что позволяет применять аппаратное ускорение к проблемным областям, требующим модификации алгоритмов и обработки. поток управления.[5][6][7]

Обзор

Интегральные схемы могут быть созданы для выполнения произвольных операций с аналог и цифровой сигналы. Чаще всего в вычислительной технике сигналы являются цифровыми и могут интерпретироваться как двоичное число данные. Компьютерное оборудование и программное обеспечение оперируют информацией в двоичном представлении для выполнения вычисление; это достигается путем вычисления логические функции на биты ввода и вывода результата на некоторые устройство вывода вниз по течению для место хранения или дальнейшая обработка.

Вычислительная эквивалентность аппаратного и программного обеспечения

Программное обеспечение или оборудование могут вычислить любые вычислимая функция. Специальное оборудование предлагает более высокие производительность на ватт для тех же функций, которые могут быть указаны в программном обеспечении. Языки описания оборудования (HDL), такие как Verilog и VHDL может моделировать то же самое семантика как программное обеспечение и синтезировать дизайн в список соединений который можно запрограммировать на FPGA или составлен в логические ворота из специализированная интегральная схема.

Компьютеры с хранимой программой

Подавляющее большинство программных вычислений происходит на машинах, реализующих фон Неймана архитектура, известные как компьютеры с хранимой программой. Компьютерные программы находятся хранится как данные и казнен от процессоры, обычно один или несколько Ядра процессора. Такие процессоры должны принести и расшифровать инструкции а также операнды данных от объем памяти как часть цикл обучения для выполнения инструкций, составляющих программу. Опираясь на общее тайник для кода и данных приводит к узкое место фон Неймана, фундаментальное ограничение производительности программного обеспечения на процессорах, реализующих архитектуру фон Неймана. Даже в модифицированная архитектура Гарварда, где инструкции и данные имеют отдельные тайники в иерархия памяти, есть накладные расходы к инструкции по расшифровке коды операций и мультиплексирование имеется в наличии исполнительные единицы на микропроцессор или микроконтроллер, что приводит к низкая загрузка контура. Intel с Hyper Threading технология обеспечивает одновременная многопоточность за счет использования недостаточного использования доступных функциональных блоков процессора и параллелизм на уровне инструкций между разными аппаратные потоки.

Аппаратные исполнительные устройства

Оборудование исполнительные единицы обычно не полагаются на архитектуру фон Неймана или модифицированную архитектуру Гарварда и не нуждаются в выполнении шагов выборки и декодирования инструкций цикл обучения и нести накладные расходы этих этапов. При необходимости расчеты указываются в зарегистрировать уровень передачи (RTL), время и затраты на площадь схемы, которые могут быть понесены на этапах выборки команд и декодирования, могут быть восстановлены и использованы для других целей.

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

Новые аппаратные архитектуры

Более широкая настройка аппаратного обеспечения RTL позволяет создавать новые архитектуры, такие как вычисления в памяти, архитектуры, запускаемые транспортом (TTA) и сети на кристалле (NoC) для получения дополнительных преимуществ местонахождение данных в контекст выполнения, тем самым сокращая объем вычислений и задержка связи между модули и функциональные блоки.

Пользовательское оборудование ограничено параллельная обработка возможность только по площади и логические блоки доступно на кристалл интегральной схемы.[8] Следовательно, оборудование гораздо более бесплатное. массивный параллелизм чем ПО на универсальных процессорах, предлагая возможность реализации параллельная машина с произвольным доступом (PRAM) модель.

Обычно строить многоядерный и многоядерный единицы обработки вне схема IP ядра микропроцессора на одной ПЛИС или ASIC.[9][10][11][12][13] Точно так же специализированные функциональные единицы можно составлять параллельно как в цифровой обработке сигналов без встраивания в процессор IP ядро. Поэтому аппаратное ускорение часто используется для повторяющихся, фиксированных задачи мало условное ветвление, особенно на больших объемах данных. Вот как Nvidia с CUDA линия GPU реализованы.

Метрики реализации

По мере роста мобильности устройств относительная производительность конкретных протоколов ускорения потребовала новых метрик с учетом таких характеристик, как физические размеры оборудования, энергопотребление и пропускная способность операций. Их можно разделить на три категории: эффективность задачи, эффективность реализации и гибкость. Соответствующие метрики учитывают площадь оборудования, а также соответствующую производительность операций и потребляемую энергию.[14]

Примеры задач ускорены

Суммирование двух массивов в третий массив

#включают <stdio.h>int основной(пустота){    int arrayOne[] = {1, 2, 3};    int arrayTwo[] = {4, 5, 6};    int arraySum[3];    для (int я = 0; я < 3; я++)    {        arraySum[я] = arrayOne[я] + arrayTwo[я];    }    }

Суммируя один миллион целых чисел

Предположим, мы хотим вычислить сумму целые числа. Предполагая большие целые числа доступны как bignum достаточно большой для хранения суммы это можно сделать в программном обеспечении, указав (здесь, в C ++ ):

constexpr int N = 20;constexpr int two_to_the_N = 1 << N;bignum array_sum(const стандартное::массив<int, two_to_the_N>& ints) {    bignum результат = 0;    для (стандартное::size_t я = 0; я < two_to_the_N; я++) {        результат += ints[я];    }    вернуть результат;}

Этот алгоритм работает в линейное время, в Обозначение Big O. В оборудовании, с достаточной площадью на чип, расчет можно распараллелить и получить всего 20 временные шаги с использованием сумма префикса алгоритм.[15] Алгоритм требует только логарифмическое время, , и Космос как алгоритм на месте:

параметр int N = 20;параметр int two_to_the_N = 1 << N;функция int array_sum;    ввод int массив[two_to_the_N];    начать        для (Genvar я = 0; я < N; я++) начать            для (Genvar j = 0; j < two_to_the_N; j++) начать                если (j >= (1 << я)) начать                    массив[j] = массив[j] + массив[j - (1 << я)];                конец            конец        конец        вернуть массив[two_to_the_N - 1];    конецконечная функция

В этом примере используется большее количество параллельных ресурсов, доступных в аппаратном обеспечении для конкретных приложений, чем в большинстве программных и универсальных вычислительные парадигмы и архитектуры.

Потоковая обработка

Аппаратное ускорение можно применить к потоковая обработка.

Приложения

Примеры аппаратного ускорения включают: немного блит функция ускорения в графические процессоры (GPU), использование мемристоры для ускорения нейронные сети[16] и регулярное выражение аппаратное ускорение для контроль спама в сервер промышленность, предназначенная для предотвращения отказ в обслуживании регулярным выражением (ReDoS) атаки.[17] Аппаратное обеспечение, выполняющее ускорение, может быть частью ЦП общего назначения или отдельным блоком. Во втором случае он упоминается как аппаратный ускоритель, или часто более конкретно как 3D ускоритель, криптографический ускоритель, так далее.

Традиционно процессоры были последовательными (инструкции выполняются один за другим) и были разработаны для запуска алгоритмов общего назначения, управляемых получение инструкций (например, перемещение временных результатов к и от а зарегистрировать файл ). Аппаратные ускорители улучшают выполнение определенного алгоритма, позволяя параллелизм, имея конкретные пути к данным для них временные переменные, и уменьшая накладные расходы на управление инструкциями в цикл выборки-декодирования-выполнения.

Современные процессоры многоядерный и часто имеют параллельную "одну инструкцию; несколько данных" (SIMD ) единицы. Даже в этом случае аппаратное ускорение по-прежнему дает преимущества. Аппаратное ускорение подходит для любого алгоритма с интенсивными вычислениями, который часто выполняется в задаче или программе. В зависимости от степени детализации аппаратное ускорение может варьироваться от небольшого функционального блока до большого функционального блока (например, оценка движения в MPEG-2 ).

Единицы аппаратного ускорения по приложениям

заявкаАппаратный ускорительАкроним
Компьютерная графикаБлок обработки графикиGPU
  • ГПГПУ
  • CUDA
  • RTX
Цифровая обработка сигналовЦифровой сигнальный процессорDSP
Обработка аналогового сигналаПрограммируемая аналоговая матрицаFPAA
  • FPRF
Обработка звукаЗвуковая карта и микшер звуковой картыНет данных
Компьютерная сетьСетевой процессор и контроллер сетевого интерфейсаNPU и NIC
  • NoC
  • TCPOE или TOE
  • I / OAT или IOAT
КриптографияКриптографический ускоритель и безопасный криптопроцессорНет данных
Искусственный интеллектAI-ускорительНет данных
  • ВПУ
  • PNN
  • Нет данных
Полилинейная алгебраБлок тензорной обработкиТПУ
Физическое моделированиеБлок обработки физикиPPU
Обычные выражения[17]Сопроцессор регулярных выраженийНет данных
Сжатие данных[18]Ускоритель сжатия данныхНет данных
Обработка в памятиСеть на микросхеме и Систолический массивNoC; Нет данных
Любая вычислительная задачаКомпьютерное железоHW (иногда)
  • FPGA
  • ASIC
  • CPLD
  • SoC
    • MPSoC
    • PSoC

Смотрите также

использованная литература

  1. ^ «Microsoft усиливает поиск Bing с помощью программируемых чипов». ПРОВОДНОЙ. 16 июня 2014 г.
  2. ^ «Встроенный». Архивировано из оригинал на 2007-10-08. Получено 2012-08-18. «Архитектура ПЛИС от« А »до« Я »» Клайв Максфилд, 2006 г.
  3. ^ «Сравнение оборудования для майнинга - Биткойн». Получено 17 июля 2014.
  4. ^ «Неспециализированное сравнение оборудования - Биткойн». Получено 25 февраля 2014.
  5. ^ "Обзор ускорителей на базе FPGA для сверточных нейронных сетей ", С. Миттал, NCAA, 2018
  6. ^ Морган, Тимоти Прикет (03.09.2014). «Как Microsoft использует FPGA для ускорения поиска Bing». Корпоративные технологии. Получено 2018-09-18.
  7. ^ «Проект Катапульта». Microsoft Research.
  8. ^ MicroBlaze Soft Processor: часто задаваемые вопросы В архиве 2011-10-27 на Wayback Machine
  9. ^ Иштван Васани. «Реализация массивов процессоров на ПЛИС». 1998 г.
  10. ^ Чжоукунь ВАН и Омар ХАММАМИ. «Система из 24 процессоров на кристалле FPGA с сетью на кристалле». [1]
  11. ^ Джон Кент. «Массив Micro16 - простой массив ЦП»
  12. ^ Кит Итон. «Достигнуто 1000 ядер ЦП: ваш будущий настольный компьютер станет суперкомпьютером». 2011 г. [2]
  13. ^ «Ученые сжимают более 1000 ядер на одном чипе». 2011 г. [3] В архиве 2012-03-05 в Wayback Machine
  14. ^ Кинле, Франк; Вен, Норберт; Мейр, Генрих (декабрь 2011 г.). «О сложности, энергоэффективности и эффективности реализации канальных декодеров». Транзакции IEEE по коммуникациям. 59 (12): 3301–3310. arXiv:1003.3792. Дои:10.1109 / tcomm.2011.092011.100157. ISSN  0090-6778.
  15. ^ Хиллис, У. Дэниэл; Стил-младший, Гай Л. (декабрь 1986 г.). «Алгоритмы параллельных данных». Коммуникации ACM. 29 (12): 1170–1183. Дои:10.1145/7902.7903.
  16. ^ "Обзор архитектур на основе ReRAM для обработки в памяти и нейронных сетей ", С. Миттал, Машинное обучение и извлечение знаний, 2018 г.
  17. ^ а б «Регулярные выражения в аппаратном обеспечении». Получено 17 июля 2014.
  18. ^ «Ускорители сжатия - исследования Microsoft». Microsoft Research. Получено 2017-10-07.
  19. ^ а б Фарабет, Клеман и др. "Сверточные нейронные сети с аппаратным ускорением для систем синтетического зрения. »Схемы и системы (ISCAS), Труды Международного симпозиума IEEE 2010 г. по IEEE, 2010 г.

внешние ссылки