Аппаратное ускорение - это использование компьютерного оборудования, предназначенного для более эффективного выполнения некоторых функций, чем в программном обеспечении, выполняемом на центральном процессоре общего назначения (ЦП). Любое преобразование из данных или подпрограммы , которые могут быть вычисленным можно вычислить чисто в программное обеспечение , работающее на общей CPU, чисто в заказном оборудовании, или в какой - то смеси обоих. Операция может быть вычислена быстрее в специализированных интегральных схемах (ASIC), разработанных или запрограммированных для вычисления операции, чем указано в программном обеспечении и выполняется на универсальном компьютерном процессоре.. У каждого подхода есть свои преимущества и недостатки. Аппаратная реализация вычислительных задач для уменьшения задержки и увеличения пропускной способности называется аппаратным ускорением.
Типичные преимущества программного обеспечения включают более быструю разработку , более низкие единовременные затраты на разработку, повышенную переносимость и простоту обновления функций или исправления ошибок за счет накладных расходов на вычисление общих операций. Преимущества аппаратного обеспечения включают ускорение , пониженное энергопотребление , [1] меньшую задержку, увеличенный параллелизм [2] и пропускную способность , а также лучшее использование площади и функциональных компонентов, доступных на интегральной схеме ; за счет меньшей возможности обновлять конструкции, однажды нанесенные на кремний, и более высокой стоимости функциональной проверки и времени вывода на рынок. В иерархии цифровых вычислительных систем, варьирующейся от процессоров общего назначения до полностью настраиваемого оборудования, существует компромисс между гибкостью и эффективностью, причем эффективность возрастает на порядки, когда любое конкретное приложение реализуется выше по этой иерархии. [3] [4] Эта иерархия включает универсальные процессоры, такие как CPU, [5] более специализированные процессоры, такие как GPU, [6] фиксированные функции, реализованные на программируемых вентильных массивах (FPGA), [7] и фиксированных - функция реализована на ASIC. [8]
Аппаратное ускорение полезно для производительности и практично, когда функции фиксированы, поэтому обновления не так необходимы, как в программных решениях. С появлением перепрограммируемых логических устройств, таких как FPGA, ограничение аппаратного ускорения полностью фиксированными алгоритмами с 2010 года ослабло, что позволяет применять аппаратное ускорение к проблемным областям, требующим модификации алгоритмов и потока управления обработкой . [9] [10]
Обзор
Интегральные схемы могут быть созданы для выполнения произвольных операций с аналоговыми и цифровыми сигналами. Чаще всего в вычислительной технике сигналы являются цифровыми и могут интерпретироваться как двоичные числовые данные. Компьютерное оборудование и программное обеспечение оперируют информацией в двоичном представлении для выполнения вычислений ; это достигается путем вычисления логических функций на битах ввода и вывода результата на некоторое устройство вывода ниже по потоку для хранения или дальнейшей обработки .
Вычислительная эквивалентность аппаратного и программного обеспечения
Программное или аппаратное обеспечение может вычислить любую вычислимую функцию . Специальное оборудование предлагает более высокую производительность на ватт для тех же функций, которые могут быть указаны в программном обеспечении. Языки описания оборудования (HDL), такие как Verilog и VHDL, могут моделировать ту же семантику, что и программное обеспечение, и синтезировать проект в список соединений, который может быть запрограммирован для FPGA или скомпонован в логические элементы ASIC.
Компьютеры с хранимой программой
Подавляющее большинство программных вычислений происходит на машинах, реализующих архитектуру фон Неймана , вместе известных как компьютеры с хранимыми программами . Компьютерные программы будут сохранены как данные и выполняются с помощью процессоров , как правило , один или несколько процессорных ядер . Такие процессоры должны извлекать и декодировать инструкции, а также операнды данных из памяти как часть цикла команд для выполнения инструкций, составляющих программу программного обеспечения. Использование общего кэша для кода и данных приводит к узкому месту фон Неймана , фундаментальному ограничению пропускной способности программного обеспечения на процессорах, реализующих архитектуру фон Неймана. Даже в модифицированной гарвардской архитектуре , где инструкции и данные имеют отдельные кеши в иерархии памяти , существуют накладные расходы на декодирование кодов операций инструкций и мультиплексирование доступных исполнительных модулей на микропроцессоре или микроконтроллере , что приводит к низкому использованию схемы . Современные процессоры, обеспечивающие одновременную многопоточность, используют недостаточное использование доступных функциональных блоков процессора и параллелизм на уровне команд между различными аппаратными потоками .
Аппаратные исполнительные устройства
Аппаратные исполнительные устройства, как правило, не полагаются на архитектуру фон Неймана или модифицированную гарвардскую архитектуру и не нуждаются в выполнении этапов выборки и декодирования команд цикла команд и несут накладные расходы на эти этапы. Если необходимые вычисления указаны в конструкции оборудования уровня передачи регистров (RTL), время и затраты на площадь схемы, которые будут понесены на этапах выборки команд и декодирования, могут быть восстановлены и использованы для других целей.
Эта рекультивация экономит время, мощность и площадь схемы при вычислениях. Освободившиеся ресурсы можно использовать для увеличения параллельных вычислений, других функций, связи или памяти, а также для увеличения возможностей ввода / вывода . Это происходит за счет альтернативной стоимости менее универсальных коммунальных услуг.
Новые аппаратные архитектуры
Более широкая настройка аппаратных средств RTL позволяет новым архитектурам, таким как вычисления в памяти , архитектуры, запускаемые транспортом (TTA) и сети на кристалле (NoC), получать дополнительные преимущества от увеличения локальности данных в контексте выполнения, тем самым сокращая задержки вычислений и связи между ними. модули и функциональные блоки.
Возможности параллельной обработки заказного оборудования ограничены только площадью и логическими блоками, доступными на кристалле интегральной схемы . [11] Таким образом, оборудование гораздо более свободно для массового параллелизма, чем программное обеспечение на процессорах общего назначения, предлагая возможность реализации модели параллельной машины с произвольным доступом (PRAM).
Распространено создание многоядерных и многоядерных процессоров на основе схем IP-ядра микропроцессора на одной ПЛИС или ASIC. [12] [13] [14] [15] [16] Точно так же специализированные функциональные блоки могут быть составлены параллельно, как при цифровой обработке сигналов, без встраивания в IP-ядро процессора . Поэтому аппаратное ускорение часто используется для повторяющихся фиксированных задач, требующих небольшого условного ветвления , особенно для больших объемов данных. Это как Nvidia «S CUDA линия графических процессоров реализованы.
Метрики реализации
По мере увеличения мобильности устройств относительная производительность конкретных протоколов ускорения потребовала новых метрик с учетом таких характеристик, как физические размеры оборудования, энергопотребление и пропускная способность операций. Их можно разделить на три категории: эффективность задачи, эффективность реализации и гибкость. Соответствующие метрики учитывают площадь оборудования, а также соответствующую производительность операций и потребляемую энергию. [17]
Примеры задач ускорены
Суммирование двух массивов в третий массив
#include int main ( void ) { 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 std :: array < int , two_to_the_N > & int ) { большой результат = 0 ; для ( std :: size_t i = 0 ; i < two_to_the_N ; i ++ ) { result + = ints [ i ]; } вернуть результат ; }
Этот алгоритм работает в линейном времени ,в Big O нотации . В аппаратном обеспечении с достаточной площадью на кристалле вычисления могут быть распараллелены, чтобы сделать только 20 временных шагов, используя алгоритм суммы префиксов . [18] Алгоритм требует только логарифмического времени ,, а также пространство как алгоритм на месте :
параметр int N = 20 ; параметр int two_to_the_N = 1 << N ;функция int array_sum ; входной массив int [ two_to_the_N ]; begin for ( genvar i = 0 ; i < N ; i ++ ) begin for ( genvar j = 0 ; j < two_to_the_N ; j ++ ) begin if ( j > = ( 1 << i )) begin array [ j ] = массив [ j ] + массив [ j - ( 1 << i )]; конец конец конец возвращаемый массив [ two_to_the_N - 1 ]; конечная конечная функция
В этом примере используются преимущества большего количества параллельных ресурсов, доступных в аппаратном обеспечении для конкретных приложений, чем в большинстве программных и универсальных вычислительных парадигм и архитектур .
Потоковая обработка
Аппаратное ускорение может применяться к потоковой обработке .
Приложения
Примеры аппаратного ускорения включают в себя функции ускорения битовых битов в графических процессорах (ГП), использование мемристоров для ускорения нейронных сетей и аппаратное ускорение регулярных выражений для контроля спама в серверной отрасли, предназначенное для предотвращения атак типа отказ в обслуживании (ReDoS) с использованием регулярных выражений . [19] Аппаратное обеспечение, которое выполняет ускорение, может быть частью ЦП общего назначения или отдельным блоком, называемым аппаратным ускорителем, хотя они обычно упоминаются с более конкретным термином, таким как 3D-ускоритель или криптографический ускоритель .
Традиционно процессоры были последовательными ( инструкции выполняются одна за другой) и были разработаны для выполнения алгоритмов общего назначения, управляемых выборкой инструкций (например, перемещение временных результатов в файл регистров и из него ). Аппаратные ускорители улучшают выполнение определенного алгоритма, обеспечивая больший параллелизм , имея определенные пути данных для их временных переменных и уменьшая накладные расходы на управление инструкциями в цикле выборка-декодирование-выполнение .
Современные процессоры являются многоядерными и часто имеют параллельные блоки «одна инструкция; несколько данных» ( SIMD ). Даже в этом случае аппаратное ускорение по-прежнему дает преимущества. Аппаратное ускорение подходит для любого алгоритма с интенсивными вычислениями, который часто выполняется в задаче или программе. В зависимости от степени детализации аппаратное ускорение может варьироваться от небольшого функционального блока до большого функционального блока (например, оценка движения в MPEG-2 ).
Единицы аппаратного ускорения по приложениям
Заявление | Аппаратный ускоритель | Акроним |
---|---|---|
Компьютерная графика
| Блок обработки графики
| GPU
|
Цифровая обработка сигналов | Цифровой сигнальный процессор | DSP |
Обработка аналогового сигнала | Программируемый аналоговый массив
| FPAA
|
Обработка звука | Звуковая карта и микшер звуковой карты | N / A |
Компьютерная сеть
| Сетевой процессор и контроллер сетевого интерфейса
| NPU и NIC
|
Криптография
| Криптографический ускоритель и безопасный криптопроцессор
| N / A |
Искусственный интеллект
| AI-ускоритель
| N / A
|
Полилинейная алгебра | Блок тензорной обработки | ТПУ |
Физическое моделирование | Блок обработки физики | PPU |
Регулярные выражения [19] | Сопроцессор регулярных выражений | N / A |
Сжатие данных [20] | Ускоритель сжатия данных | N / A |
Обработка в памяти | Сеть на микросхеме и систолическом массиве | NoC; N / A |
Обработка данных | Блок обработки данных | DPU |
Любая вычислительная задача | Компьютерное железо
| HW (иногда)
|
Смотрите также
- Сопроцессор
- Ускорение видео DirectX (DXVA)
- Прямой доступ к памяти (DMA)
- Синтез высокого уровня
- C в HDL
- Поток к ЛПВП
- Мягкий микропроцессор
- Таксономия параллельных компьютерных архитектур Флинна
- Одна инструкция, несколько данных (SIMD)
- Одна инструкция, несколько потоков (SIMT)
- Несколько инструкций, несколько данных (MIMD)
- Компьютер для работы с функциями
Рекомендации
- ^ "Microsoft усиливает поиск Bing с помощью программируемых чипов" . ПРОВОДНОЙ . 16 июня 2014 г.
- ^ «Встроенный» . Архивировано из оригинала на 2007-10-08 . Проверено 18 августа 2012 . «Архитектура ПЛИС от« А »до« Я »» Клайв Максфилд, 2006 г.
- ^ «Сравнение майнингового оборудования - Биткойн» . Проверено 17 июля 2014 года .
- ^ «Неспециализированное сравнение оборудования - Биткойн» . Проверено 25 февраля 2014 года .
- ^ Ким, Ёнмин; Конг, Джунхо; Мунир, Арслан (2020). «Совместное планирование CPU-Accelerator для ускорения CNN на границе» . Доступ IEEE . 8 : 211422–211433. DOI : 10,1109 / ACCESS.2020.3039278 . ISSN 2169-3536 .
- ^ Линь, Ибо; Цзян, Цзысюань; Гу, Цзяци; Ли, Уси; Дхар, Шоунак; Рен, Хаосин; Хайланы, Брючек; Пан, Дэвид З. (апрель 2021 г.). «DREAMPlace: ускорение графического процессора с поддержкой Deep Learning Toolkit для размещения современных СБИС» . IEEE Transactions по автоматизированному проектированию интегральных схем и систем . 40 (4): 748–761. DOI : 10,1109 / TCAD.2020.3003843 . ISSN 1937-4151 .
- ^ Ляхов, Павел; Валуева Мария; Валуев, Георгий; Нагорнов, Николай (18.12.2020). «Метод повышения производительности цифрового фильтра на основе усеченных многократно-накапливаемых единиц» . Прикладные науки . 10 (24): 9052. DOI : 10,3390 / app10249052 . ISSN 2076-3417 .
Аппаратное моделирование на ПЛИС повысило производительность цифрового фильтра.
- ^ Мохан, Прашант; Ван, Вэнь; Юнгк, Бернхард; Нидерхаген, Рубен; Сефер, Якуб; Май, Кен (октябрь 2020 г.). «Ускоритель ASIC в 28 нм для схемы XMSS после квантовой цифровой подписи» . 2020 IEEE 38-я Международная конференция по компьютерному дизайну (ICCD) . Хартфорд, Коннектикут, США: IEEE: 656–662. DOI : 10.1109 / ICCD50377.2020.00112 . ISBN 978-1-7281-9710-4.
- ^ Морган, Тимоти Прикет (2014-09-03). «Как Microsoft использует FPGA для ускорения поиска Bing» . Enterprise Tech . Проверено 18 сентября 2018 .
- ^ «Проект катапульты» . Microsoft Research .
- ^ MicroBlaze Soft Processor: Часто задаваемые вопросы, заархивированные 27 октября 2011 г. на Wayback Machine
- ^ István Vassányi. «Реализация массивов процессоров на ПЛИС». 1998 г.
- ^ Чжоукунь ВАН и Омар ХАММАМИ. «Система с 24 процессорами на кристалле FPGA с сетью на кристалле». [1]
- ^ Джон Кент. «Массив Micro16 - простой массив ЦП»
- ^ Кит Итон. «Достигнуто 1000 ядер ЦП: ваш будущий настольный компьютер станет суперкомпьютером». 2011. [2]
- ^ «Ученые сжимают более 1000 ядер на одном чипе». 2011. [3] Архивировано 5 марта 2012 г., Wayback Machine.
- ^ Кинле, Франк; Вен, Норберт; Мейр, Генрих (декабрь 2011 г.). «О сложности, энергоэффективности и эффективности реализации канальных декодеров». Транзакции IEEE по коммуникациям . 59 (12): 3301–3310. arXiv : 1003.3792 . DOI : 10.1109 / tcomm.2011.092011.100157 . ISSN 0090-6778 .
- ^ Хиллис, В. Дэниэл; Стил-младший, Гай Л. (декабрь 1986 г.). «Алгоритмы параллельных данных». Коммуникации ACM . 29 (12): 1170–1183. DOI : 10.1145 / 7902.7903 .
- ^ а б «Регулярные выражения в аппаратном обеспечении» . Проверено 17 июля 2014 года .
- ^ «Ускорители сжатия - исследования Microsoft» . Microsoft Research . Проверено 7 октября 2017 .
- ^ a b Фарабе, Клеман и др. « Сверточные нейронные сети с аппаратным ускорением для систем синтетического зрения ». Схемы и системы (ISCAS), Труды Международного симпозиума IEEE 2010 г. IEEE, 2010 г.
Внешние ссылки
- СМИ, связанные с аппаратным ускорением, на Викискладе?