Эта статья требует дополнительных ссылок для проверки . ( сентябрь 2014 г. ) ( Узнайте, как и когда удалить это сообщение-шаблон ) |
В вычислениях , аппаратное ускорение является использование компьютерных аппаратных специально , чтобы более эффективно выполнять некоторые функции , чем это возможно в программном обеспечении , работающее на общее назначение центрального процессора (CPU). Любое преобразование из данных или подпрограммы , которые могут быть вычисленным , можно вычислить чисто в программной работающем на общем процессоре, чисто в заказных аппаратных средств , или в какой - то смеси обоих. Операция может быть вычислена быстрее в аппаратном обеспечении, разработанном или запрограммированном для конкретного приложения.для вычисления операции, указанной в программном обеспечении, и выполняемой на универсальном компьютерном процессоре . У каждого подхода есть свои преимущества и недостатки. Аппаратная реализация вычислительных задач для уменьшения задержки и увеличения пропускной способности называется аппаратным ускорением.
Типичные преимущества программного обеспечения включают более быструю разработку (что приводит к более быстрому выходу на рынок ), более низкие единовременные инженерные затраты, повышенную переносимость и простоту обновления функций или исправления ошибок за счет накладных расходов на вычисление общих операций. Преимущества оборудования включают ускорение , пониженное энергопотребление , [1] меньшую задержку , повышенный параллелизм [2] и пропускную способность , а также лучшее использование площади ифункциональные компоненты, доступные на интегральной схеме ; за счет меньшей возможности обновлять конструкции, однажды нанесенные на кремний, и более высоких затрат на функциональную проверку и время вывода на рынок. В иерархии цифровых вычислительных систем, варьирующейся от процессоров общего назначения до полностью настраиваемого оборудования, существует компромисс между гибкостью и эффективностью, причем эффективность возрастает на порядки, когда любое конкретное приложение реализуется выше по этой иерархии. [3] [4] Эта иерархия включает процессоры общего назначения, такие как ЦП, более специализированные процессоры, такие как графические процессоры, фиксированные функцииреализованы на программируемых вентильных матрицах (FPGA), а фиксированные функции реализованы на интегральных схемах (ASIC) для конкретных приложений .
Аппаратное ускорение выгодно для производительности и практично, когда функции фиксированы, поэтому обновления не так необходимы, как в программных решениях. С появлением перепрограммируемых логических устройств, таких как FPGA, ограничение аппаратного ускорения полностью фиксированными алгоритмами с 2010 года ослабло, что позволяет применять аппаратное ускорение к проблемным областям, требующим модификации алгоритмов и потока управления обработкой . [5] [6] [7]
Обзор [ править ]
Интегральные схемы могут быть созданы для выполнения произвольных операций с аналоговыми и цифровыми сигналами. Чаще всего в вычислительной технике сигналы являются цифровыми и могут интерпретироваться как двоичные числовые данные. Компьютерное оборудование и программное обеспечение оперируют информацией в двоичном представлении для выполнения вычислений ; это достигается путем вычисления логических функций на битах ввода и вывода результата на некоторое устройство вывода ниже по потоку для хранения или дальнейшей обработки .
Вычислительная эквивалентность аппаратного и программного обеспечения [ править ]
Программное или аппаратное обеспечение может вычислить любую вычислимую функцию . Специальное оборудование предлагает более высокую производительность на ватт для тех же функций, которые могут быть указаны в программном обеспечении. Описание оборудования Языки (ЛВП) , такие как Verilog и VHDL может моделировать одни и ту же семантику , как программное обеспечение и синтезировать конструкцию в список соединений , которые могут быть запрограммированы на FPGA или составлены в логические вентили в качестве специализированной интегральной схемы .
Компьютеры с хранимой программой [ править ]
Подавляющее большинство программных вычислений происходит на машинах, реализующих архитектуру фон Неймана , вместе известных как компьютеры с хранимыми программами . Компьютерные программы будут сохранены как данные и выполняются с помощью процессоров , как правило , один или несколько процессорных ядер . Такие процессоры должны извлекать и декодировать инструкции, а также операнды данных из памяти как часть цикла команд для выполнения инструкций, составляющих программу программного обеспечения. Использование общего кеша для кода и данных приводит кУзкое место фон Неймана , фундаментальное ограничение пропускной способности программного обеспечения на процессорах, реализующих архитектуру фон Неймана. Даже в модифицированной гарвардской архитектуре , где инструкции и данные имеют отдельные кэши в иерархии памяти , существуют накладные расходы на декодирование кодов операций инструкций и мультиплексирование доступных исполнительных модулей на микропроцессоре или микроконтроллере , что приводит к низкому использованию схемы . Intel «сек Hyper-Threading технология обеспечивает одновременную многопоточностьза счет использования недостаточного использования доступных функциональных блоков процессора и параллелизма на уровне команд между различными аппаратными потоками .
Аппаратные исполнительные устройства [ править ]
Аппаратные исполнительные устройства, как правило, не полагаются на архитектуру фон Неймана или модифицированную гарвардскую архитектуру и не нуждаются в выполнении этапов выборки и декодирования команд цикла команд и несут накладные расходы на эти этапы. Если необходимые вычисления указаны в конструкции оборудования уровня передачи регистров (RTL), время и затраты на площадь схемы, которые будут понесены на этапах выборки команд и декодирования, могут быть восстановлены и использованы для других целей.
Эта рекультивация экономит время, мощность и площадь схемы при вычислениях. Освободившиеся ресурсы можно использовать для увеличения параллельных вычислений, других функций, связи или памяти, а также для увеличения возможностей ввода / вывода . Это происходит за счет альтернативной стоимости менее универсальных коммунальных услуг.
Новые аппаратные архитектуры [ править ]
Более широкая настройка аппаратных средств RTL позволяет новым архитектурам, таким как вычисления в памяти , архитектуры, запускаемые транспортом (TTA) и сети на кристалле (NoC), получать дополнительные преимущества от увеличения локальности данных в контексте выполнения, тем самым сокращая задержки вычислений и связи между ними. модули и функциональные блоки.
Возможности параллельной обработки заказного оборудования ограничены только площадью и логическими блоками, доступными на кристалле интегральной схемы . [8] Таким образом, аппаратное обеспечение гораздо более свободно предлагает массовый параллелизм, чем программное обеспечение на процессорах общего назначения, предлагая возможность реализации модели параллельной машины с произвольным доступом (PRAM).
Обычно многоядерные и многоядерные процессоры строятся из схем IP-ядер микропроцессора на одной ПЛИС или ASIC. [9] [10] [11] [12] [13] Точно так же специализированные функциональные блоки могут быть составлены параллельно, как при цифровой обработке сигналов, без встраивания в IP-ядро процессора . Поэтому аппаратное ускорение часто используется для повторяющихся фиксированных задач, требующих небольшого условного ветвления , особенно для больших объемов данных. Это как Nvidia «s CUDA линия графических процессоров реализованы.
Показатели реализации [ править ]
По мере роста мобильности устройств относительная производительность конкретных протоколов ускорения потребовала новых метрик с учетом таких характеристик, как физические размеры оборудования, энергопотребление и пропускная способность операций. Их можно разделить на три категории: эффективность задачи, эффективность реализации и гибкость. Соответствующие метрики учитывают площадь оборудования, а также соответствующую производительность операций и потребляемую энергию. [14]
Примеры задач ускорены [ править ]
Суммирование двух массивов в третий массив [ править ]
#include <stdio.h>int main ( void ) { int arrayOne [] = { 1 , 2 , 3 }; int arrayTwo [] = { 4 , 5 , 6 }; int arraySum [ 3 ]; для ( int я = 0 ; я < 3 ; я ++ ) { arraySum [ я ] = arrayOne [ я ] + arrayTwo [ я ]; } }
Суммирование одного миллиона целых чисел [ править ]
Предположим, мы хотим вычислить сумму целых чисел . Предполагая , что доступны большие целые числа , достаточно большие для хранения суммы, это можно сделать в программном обеспечении, указав (здесь, в C ++ ): bignum
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 временных шагов, используя алгоритм суммы префиксов . [15] Алгоритм требует только логарифмическое время , и пространство в качестве алгоритма на месте :
параметр 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 ]; конечная конечная функция
В этом примере используются преимущества большего количества параллельных ресурсов, доступных в аппаратном обеспечении для конкретных приложений, чем в большинстве программных и универсальных вычислительных парадигм и архитектур .
Обработка потока [ править ]
Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( Октябрь 2018 г. ) |
Аппаратное ускорение может применяться к потоковой обработке .
Приложения [ править ]
Примеры аппаратного ускорения включают в себя функцию ускорения битовых битов в графических процессорах (ГП), использование мемристоров для ускорения нейронных сетей [16] и аппаратное ускорение регулярных выражений для контроля спама в серверной индустрии, предназначенное для предотвращения отказа в обслуживании с использованием регулярных выражений (ReDoS ) атаки. [17] Аппаратное обеспечение, выполняющее ускорение, может быть частью ЦП общего назначения или отдельным блоком. Во втором случае его называют аппаратным ускорителем , а точнее - 3D-ускорителем., криптографический ускоритель и др.
Традиционно процессоры были последовательными ( инструкции выполняются одна за другой) и были разработаны для выполнения алгоритмов общего назначения, управляемых выборкой инструкций (например, перемещение временных результатов в файл регистров и из него ). Аппаратные ускорители улучшают выполнение определенного алгоритма, обеспечивая больший параллелизм , имея определенные пути данных для их временных переменных и уменьшая накладные расходы на управление инструкциями в цикле выборка-декодирование-выполнение .
Современные процессоры являются многоядерными и часто имеют параллельные блоки «одна инструкция; несколько данных» ( SIMD ). Даже в этом случае аппаратное ускорение по-прежнему дает преимущества. Аппаратное ускорение подходит для любого алгоритма с интенсивными вычислениями, который часто выполняется в задаче или программе. В зависимости от степени детализации аппаратное ускорение может варьироваться от небольшого функционального блока до большого функционального блока (например, оценка движения в MPEG-2 ).
Единицы аппаратного ускорения по приложениям [ править ]
Заявление | Аппаратный ускоритель | Акроним |
---|---|---|
Компьютерная графика
| Блок обработки графики
| GPU
|
Цифровая обработка сигналов | Цифровой сигнальный процессор | DSP |
Обработка аналогового сигнала | Программируемый аналоговый массив
| FPAA
|
Обработка звука | Звуковая карта и микшер звуковой карты | N / A |
Компьютерная сеть
| Сетевой процессор и контроллер сетевого интерфейса
| NPU и NIC
|
Криптография
| Криптографический ускоритель и безопасный криптопроцессор
| N / A |
Искусственный интеллект
| AI-ускоритель
| N / A
|
Полилинейная алгебра | Блок тензорной обработки | ТПУ |
Физическое моделирование | Блок обработки физики | PPU |
Регулярные выражения [17] | Сопроцессор регулярных выражений | N / A |
Сжатие данных [18] | Ускоритель сжатия данных | N / A |
Обработка в памяти | Сеть на микросхеме и систолическом массиве | NoC; N / A |
Любая вычислительная задача | Компьютерное железо
| HW (иногда)
|
См. Также [ править ]
- Сопроцессор
- Ускорение видео DirectX (DXVA)
- Прямой доступ к памяти (DMA)
- Синтез высокого уровня
- C в HDL
- Поток к ЛПВП
- Мягкий микропроцессор
- Таксономия параллельных компьютерных архитектур Флинна
- Одна инструкция, несколько данных (SIMD)
- Одна инструкция, несколько потоков (SIMT)
- Несколько инструкций, несколько данных (MIMD)
- Компьютер для работы с функциями
Ссылки [ править ]
- ^ "Microsoft усиливает поиск Bing с помощью программируемых чипов" . ПРОВОДНОЙ . 16 июня 2014 г.
- ^ "Встроенный" . Архивировано из оригинала на 2007-10-08 . Проверено 18 августа 2012 . «Архитектура ПЛИС от« А »до« Я »» Клайв Максфилд, 2006 г.
- ^ «Сравнение оборудования для майнинга - Биткойн» . Проверено 17 июля 2014 года .
- ^ «Неспециализированное сравнение оборудования - Биткойн» . Проверено 25 февраля 2014 года .
- ^ " Обзор ускорителей на основе FPGA для сверточных нейронных сетей ", С. Миттал, NCAA, 2018
- ^ Морган, Тимоти Прикет (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 .
- ^ « Обзор архитектур на основе ReRAM для обработки в памяти и нейронных сетей », С. Миттал, Машинное обучение и извлечение знаний, 2018
- ^ a b «Регулярные выражения в аппаратном обеспечении» . Проверено 17 июля 2014 года .
- ^ «Ускорители сжатия - исследования Microsoft» . Microsoft Research . Проверено 7 октября 2017 .
- ^ a b Фарабе, Клеман и др. « Сверточные нейронные сети с аппаратным ускорением для систем синтетического зрения ». Схемы и системы (ISCAS), Труды Международного симпозиума IEEE 2010 г. IEEE, 2010 г.
Внешние ссылки [ править ]
- СМИ, связанные с аппаратным ускорением, на Викискладе?