Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В вычислениях , аппаратное ускорение является использование компьютерных аппаратных специально , чтобы более эффективно выполнять некоторые функции , чем это возможно в программном обеспечении , работающее на общее назначение центрального процессора (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 ];  конечная конечная функция

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

Обработка потока [ править ]

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

Приложения [ править ]

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

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

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

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

См. Также [ править ]

  • Сопроцессор
  • Ускорение видео DirectX (DXVA)
  • Прямой доступ к памяти (DMA)
  • Синтез высокого уровня
    • C в HDL
    • Поток к ЛПВП
  • Мягкий микропроцессор
  • Таксономия параллельных компьютерных архитектур Флинна
    • Одна инструкция, несколько данных (SIMD)
    • Одна инструкция, несколько потоков (SIMT)
    • Несколько инструкций, несколько данных (MIMD)
  • Компьютер для работы с функциями

Ссылки [ править ]

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

Внешние ссылки [ править ]

  • СМИ, связанные с аппаратным ускорением, на Викискладе?