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

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

Чтобы выполнять вычислительные задачи быстрее (или лучше каким-либо другим способом), обычно можно инвестировать время и деньги в улучшение программного обеспечения, улучшение оборудования или и то, и другое. Существуют различные подходы с преимуществами и недостатками с точки зрения уменьшения задержки , увеличения пропускной способности и снижения энергопотребления . Типичные преимущества сосредоточения внимания на программном обеспечении могут включать более быструю разработку , более низкие единовременные затраты на разработку, повышенную переносимость и простоту обновления функций или исправления ошибок за счет накладных расходов на вычисление общих операций. Преимущества сосредоточения внимания на аппаратном обеспечении могут включать в себя ускорение , снижение энергопотребления , меньшую задержку, увеличение параллелизма и пропускной способности , а также лучшее использование площади и функциональных компонентов, доступных на интегральной схеме ; за счет меньшей возможности обновлять конструкции, однажды нанесенные на кремний, и более высокой стоимости функциональной проверки и времени вывода на рынок. В иерархии цифровых вычислительных систем, варьирующейся от процессоров общего назначения до полностью настраиваемого оборудования, существует компромисс между гибкостью и эффективностью, причем эффективность возрастает на порядки, когда любое конкретное приложение реализуется выше по этой иерархии. Эта иерархия включает процессоры общего назначения, такие как ЦП, более специализированные процессоры, такие как графические процессоры , фиксированные функции, реализованные на программируемых вентильных массивах (ПЛИС), и фиксированные функции, реализованные на интегральных схемах для конкретных приложений (ASIC).

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

Обзор

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

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

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

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

Подавляющее большинство программных вычислений происходит на машинах, реализующих архитектуру фон Неймана , вместе известных как компьютеры с хранимыми программами . Компьютерные программы хранятся в виде данных и выполняются с помощью процессоров . Такие процессоры должны извлекать и декодировать инструкции, а также загружать операнды данных из памяти (как часть цикла команд ) для выполнения инструкций, составляющих программу. Использование общего кэша для кода и данных приводит к «узкому месту фон Неймана», фундаментальному ограничению пропускной способности программного обеспечения на процессорах, реализующих архитектуру фон Неймана. Даже в модифицированной гарвардской архитектуре , где инструкции и данные имеют отдельные кеши в иерархии памяти , существуют накладные расходы на декодирование кодов операций инструкций и мультиплексирование доступных исполнительных модулей на микропроцессоре или микроконтроллере , что приводит к низкому использованию схемы. Современные процессоры, обеспечивающие одновременную многопоточность, используют недостаточное использование доступных функциональных блоков процессора и параллелизм на уровне команд между различными аппаратными потоками.

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

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

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

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

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

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

Обычно многоядерные и многоядерные процессоры создают из схем IP-ядер микропроцессора на одной ПЛИС или ASIC. Точно так же специализированные функциональные блоки могут быть составлены параллельно, как при цифровой обработке сигналов, без встраивания в IP-ядро процессора . Поэтому аппаратное ускорение часто используется для повторяющихся фиксированных задач, требующих небольшого условного ветвления , особенно для больших объемов данных. Это как Nvidia «S CUDA реализована линия графических процессоров.

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

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

Приложения

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

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

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

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

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

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

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

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