Реконфигурируемые вычисления — это компьютерная архитектура, объединяющая некоторую гибкость программного обеспечения с высокой производительностью оборудования за счет обработки с помощью гибких аппаратных платформ, таких как программируемые пользователем вентильные матрицы (FPGA). Принципиальное отличие по сравнению с использованием обычных микропроцессоров заключается в возможности добавлять пользовательские вычислительные блоки с помощью FPGA. С другой стороны, основное отличие от пользовательского оборудования, т. е. специализированных интегральных схем (ASIC), заключается в возможности адаптировать оборудование во время выполнения путем «загрузки» новой схемы на реконфигурируемую структуру, тем самым предоставляя новые вычислительные блоки без необходимости производства и добавления новых чипов в существующую систему.
Концепция реконфигурируемых вычислений существует с 1960-х годов, когда в своей работе Джеральд Эстрин предложил концепцию компьютера, состоящего из стандартного процессора и массива «реконфигурируемого» оборудования. [1] [2] Основной процессор будет управлять поведением реконфигурируемого оборудования. Затем последнее будет настроено на выполнение определенной задачи, такой как обработка изображений или сопоставление с образцом , так же быстро, как и выделенная часть оборудования. После того, как задача была выполнена, оборудование можно было настроить на выполнение какой-либо другой задачи. Это привело к гибридной компьютерной структуре, сочетающей гибкость программного обеспечения со скоростью оборудования.
В 1980-х и 1990-х годах в этой области исследований наблюдался ренессанс со многими предложенными реконфигурируемыми архитектурами, разработанными в промышленности и академических кругах, [3] такими как: Copacobana, Matrix, GARP, [4] Elixent, NGEN, [5] Polyp, [6] MereGen, [7] PACT XPP, Silicon Hive, Montium, Pleiades, Morphosys и PiCoGA. [8] Такие проекты стали возможны благодаря постоянному прогрессу кремниевой технологии, которая позволяла реализовывать сложные проекты на одном чипе. Некоторые из этих массивно параллельных реконфигурируемых компьютеров были созданы в первую очередь для специальных поддоменов, таких как молекулярная эволюция, нейронная или обработка изображений. Первый в мире коммерческий реконфигурируемый компьютер Algotronix CHS2X4 был завершен в 1991 году. Он не имел коммерческого успеха, но был достаточно многообещающим, поэтому Xilinx (изобретатель программируемой пользователем вентильной матрицы , FPGA) купила технологию и наняла персонал Algotronix. [9] Более поздние машины позволили впервые продемонстрировать научные принципы, такие как спонтанная пространственная самоорганизация генетического кодирования с помощью MereGen. [10]
Фундаментальная модель парадигмы реконфигурируемой вычислительной машины, антимашина на основе потока данных , хорошо иллюстрируется отличиями от других парадигм машин, которые были введены ранее, как показано в следующей схеме классификации вычислительных парадигм Ника Треденника (см. «Таблица 1: Схема классификации парадигм Ника Треденника»). [11]
Ученый-компьютерщик Райнер Хартенштейн описывает реконфигурируемые вычисления в терминах антимашины , которая, по его словам, представляет собой фундаментальный сдвиг парадигмы от более традиционной машины фон Неймана . [12] Хартенштейн называет это парадоксом реконфигурируемых вычислений, что миграция программного обеспечения в конфигурационное программное обеспечение (программное обеспечение в ПЛИС ) приводит к сообщенным факторам ускорения до более чем четырех порядков, а также к сокращению потребления электроэнергии почти на четыре порядка — хотя технологические параметры ПЛИС отстают от кривой Гордона Мура примерно на четыре порядка, а тактовая частота существенно ниже, чем у микропроцессоров. Этот парадокс частично объясняется синдромом фон Неймана .
Высокопроизводительные реконфигурируемые вычисления (HPRC) — это компьютерная архитектура, объединяющая реконфигурируемые вычислительные ускорители, такие как программируемые пользователем вентильные матрицы , с центральными процессорами или многоядерными процессорами .
Увеличение логики в FPGA позволило программировать в FPGA более крупные и сложные алгоритмы. Присоединение такой FPGA к современному ЦП через высокоскоростную шину, такую как PCI Express , позволило конфигурируемой логике действовать скорее как сопроцессор, а не как периферийное устройство . Это вывело реконфигурируемые вычисления в сферу высокопроизводительных вычислений .
Более того, воспроизведение алгоритма на ПЛИС или использование нескольких ПЛИС позволило создать реконфигурируемые SIMD- системы, в которых несколько вычислительных устройств могут одновременно работать с различными данными, что представляет собой высокопараллельные вычисления .
Эта технология гетерогенных систем используется в компьютерных исследованиях и особенно в суперкомпьютерах . [13] В статье 2008 года сообщалось о факторах ускорения более чем на 4 порядка и факторах экономии энергии почти на 4 порядка. [14] Некоторые компании, занимающиеся суперкомпьютерами, предлагают гетерогенные блоки обработки, включая ПЛИС в качестве ускорителей. [ необходима ссылка ] Одной из областей исследований является производительность потока инструмента программирования с двумя парадигмами, полученная для таких гетерогенных систем. [15]
В Национальном научном фонде США есть центр высокопроизводительных реконфигурируемых вычислений (CHREC). [16] В апреле 2011 года в Европе прошла четвертая конференция по многоядерным и реконфигурируемым суперкомпьютерам. [17]
Коммерческие высокопроизводительные реконфигурируемые вычислительные системы начинают появляться с объявлением IBM об интеграции ПЛИС со своими микропроцессорами IBM Power . [18]
Частичная реконфигурация — это процесс изменения части реконфигурируемой аппаратной схемы , в то время как другая часть сохраняет свою прежнюю конфигурацию. Программируемые пользователем вентильные матрицы часто используются в качестве поддержки частичной реконфигурации.
Электронное оборудование , как и программное обеспечение , может быть спроектировано модульно, путем создания подкомпонентов, а затем компонентов более высокого уровня для их реализации. Во многих случаях полезно иметь возможность заменять один или несколько из этих подкомпонентов, пока ПЛИС все еще работает.
Обычно перенастройка ПЛИС требует, чтобы она находилась в состоянии сброса, пока внешний контроллер перезагружает в нее проект. Частичная перенастройка позволяет критическим частям проекта продолжать работать, пока контроллер на ПЛИС или вне ее загружает частичный проект в перенастраиваемый модуль. Частичная перенастройка также может использоваться для экономии места для нескольких проектов путем сохранения только частичных проектов, которые изменяются между проектами. [19]
Распространенным примером того, когда частичная реконфигурация будет полезна, является случай коммуникационного устройства. Если устройство управляет несколькими соединениями, некоторые из которых требуют шифрования , было бы полезно иметь возможность загружать различные ядра шифрования, не останавливая весь контроллер.
Частичная реконфигурация поддерживается не на всех ПЛИС. Требуется специальный программный поток с акцентом на модульную конструкцию. Обычно модули конструкции строятся вдоль четко определенных границ внутри ПЛИС, что требует особой привязки конструкции к внутреннему оборудованию.
По функциональности конструкции частичную реконфигурацию можно разделить на две группы: [20]
С появлением доступных плат FPGA проекты студентов и любителей направлены на воссоздание старых компьютеров или реализацию более новых архитектур. [21] [22] [23] Такие проекты создаются с использованием реконфигурируемого оборудования (FPGA), а некоторые устройства поддерживают эмуляцию нескольких старых компьютеров с использованием одного реконфигурируемого оборудования ( C-One ).
Полностью основанный на FPGA компьютер — это COPACOBANA, Cost Optimized Codebreaker and Analyzer и его преемник RIVYERA. Отделившаяся компания SciEngines GmbH проекта COPACOBANA университетов Бохума и Киля в Германии продолжает разработку полностью основанных на FPGA компьютеров.
Mitrionics разработала SDK, который позволяет программному обеспечению, написанному с использованием одного языка присваивания , компилироваться и выполняться на компьютерах на базе FPGA. Программный язык Mitrion-C и процессор Mitrion позволяют разработчикам программного обеспечения писать и выполнять приложения на компьютерах на базе FPGA таким же образом, как и с другими вычислительными технологиями, такими как графические процессоры («GPU»), процессоры на основе ячеек, параллельные процессоры («PPU»), многоядерные процессоры и традиционные кластеры одноядерных процессоров. (вышло из бизнеса)
National Instruments разработали гибридную встраиваемую вычислительную систему CompactRIO . Она состоит из реконфигурируемого шасси, в котором размещается программируемая пользователем ПЛИС, модули ввода-вывода с возможностью горячей замены, контроллер реального времени для детерминированной связи и обработки, а также графическое программное обеспечение LabVIEW для быстрого программирования RT и ПЛИС.
Xilinx разработала два стиля частичной реконфигурации устройств FPGA: на основе модулей и на основе различий . Частичная реконфигурация на основе модулей позволяет реконфигурировать отдельные модульные части конструкции, в то время как частичная реконфигурация на основе различий может использоваться при внесении небольших изменений в конструкцию.
Intel [24] поддерживает частичную реконфигурацию своих устройств FPGA на 28 нм устройствах, таких как Stratix V, [25] и на 20 нм устройствах Arria 10. [26] Поток частичной реконфигурации Intel FPGA для Arria 10 основан на иерархической методологии проектирования в программном обеспечении Quartus Prime Pro, где пользователи создают физические разделы FPGA, которые могут быть реконфигурированы [27] во время выполнения, в то время как остальная часть проекта продолжает работать. Программное обеспечение Quartus Prime Pro также поддерживает иерархическую частичную реконфигурацию и моделирование частичной реконфигурации.
Как новая область, классификации реконфигурируемых архитектур все еще разрабатываются и совершенствуются по мере разработки новых архитектур; на сегодняшний день не предложено никакой унифицированной таксономии. Однако для классификации этих систем можно использовать несколько повторяющихся параметров.
Гранулярность реконфигурируемой логики определяется как размер наименьшего функционального блока (конфигурируемый логический блок, CLB), к которому обращаются инструменты отображения. Высокая гранулярность, которая также может быть известна как мелкозернистая, часто подразумевает большую гибкость при реализации алгоритмов в оборудовании. Однако с этим связаны штрафы в виде увеличения мощности, площади и задержки из-за большего количества маршрутизации, необходимой для каждого вычисления. Мелкозернистые архитектуры работают на уровне манипуляции на уровне битов; в то время как крупнозернистые элементы обработки (реконфигурируемый блок пути данных, rDPU) лучше оптимизированы для стандартных приложений пути данных. Одним из недостатков крупнозернистых архитектур является то, что они имеют тенденцию терять часть своего использования и производительности, если им нужно выполнять меньшие вычисления, чем обеспечивает их гранулярность, например, для добавления одного бита к четырехбитному функциональному блоку будет потрачено три бита. Эту проблему можно решить, имея крупнозернистый массив ( реконфигурируемый массив пути данных , rDPA) и ПЛИС на одном чипе.
Крупнозернистые архитектуры ( rDPA ) предназначены для реализации алгоритмов, которым требуются пути данных размером со слово (rDPU). Поскольку их функциональные блоки оптимизированы для больших вычислений и обычно включают арифметико-логические устройства размером со слово (ALU), они будут выполнять эти вычисления быстрее и с большей энергоэффективностью, чем набор взаимосвязанных более мелких функциональных устройств; это связано с тем, что соединительные провода короче, что приводит к меньшей емкости проводов и, следовательно, к более быстрым и менее энергоемким конструкциям. Потенциально нежелательным последствием наличия более крупных вычислительных блоков является то, что когда размер операндов может не соответствовать алгоритму, может возникнуть неэффективное использование ресурсов. Часто тип приложений, которые будут запускаться, известен заранее, что позволяет адаптировать ресурсы логики, памяти и маршрутизации для повышения производительности устройства, при этом обеспечивая определенный уровень гибкости для будущей адаптации. Примерами этого являются доменно-специфические массивы, нацеленные на получение лучшей производительности с точки зрения мощности, площади, пропускной способности, чем их более общие более мелкозернистые собратья FPGA, за счет снижения их гибкости.
Конфигурация этих реконфигурируемых систем может происходить во время развертывания, между фазами выполнения или во время выполнения. В типичной реконфигурируемой системе поток битов используется для программирования устройства во время развертывания. Мелкозернистые системы по своей природе требуют большего времени конфигурации, чем более крупнозернистые архитектуры, из-за большего количества элементов, которые необходимо адресовать и программировать. Таким образом, более крупнозернистые архитектуры выигрывают от потенциально более низких требований к энергии, поскольку передается и используется меньше информации. Интуитивно понятно, что чем медленнее скорость реконфигурации, тем меньше потребление энергии, поскольку связанные с реконфигурацией затраты энергии амортизируются в течение более длительного периода времени. Частичная реконфигурация направлена на то, чтобы часть устройства могла быть перепрограммирована, пока другая часть все еще выполняет активные вычисления. Частичная реконфигурация позволяет использовать меньшие реконфигурируемые потоки битов, таким образом не тратя энергию на передачу избыточной информации в потоке битов. Сжатие потока битов возможно, но необходимо провести тщательный анализ, чтобы гарантировать, что энергия, сэкономленная за счет использования меньших потоков битов, не будет перевешена вычислениями, необходимыми для распаковки данных.
Часто реконфигурируемый массив используется в качестве ускорителя обработки, подключенного к хост-процессору. Уровень связи определяет тип передачи данных, задержку, мощность, пропускную способность и накладные расходы, возникающие при использовании реконфигурируемой логики. Некоторые из наиболее интуитивных конструкций используют периферийную шину для обеспечения сопроцессорного типа расположения для реконфигурируемого массива. Однако также были реализации, в которых реконфигурируемая структура находится гораздо ближе к процессору, некоторые даже внедряются в тракт данных, используя регистры процессора. Работа хост-процессора заключается в выполнении функций управления, настройке логики, планировании данных и предоставлении внешнего интерфейса.
Гибкость в реконфигурируемых устройствах в основном обеспечивается их маршрутизацией соединений. Один из стилей соединений, ставший популярным благодаря поставщикам ПЛИС , Xilinx и Altera, — это островная компоновка, где блоки располагаются в массиве с вертикальной и горизонтальной маршрутизацией. Компоновка с неадекватной маршрутизацией может страдать от плохой гибкости и использования ресурсов, что обеспечивает ограниченную производительность. Если предусмотрено слишком много соединений, это требует больше транзисторов, чем необходимо, и, следовательно, большей площади кремния, более длинных проводов и большего энергопотребления.
Одной из ключевых задач для реконфигурируемых вычислений является обеспечение более высокой производительности проектирования и предоставление более простого способа использования реконфигурируемых вычислительных систем для пользователей, которые не знакомы с базовыми концепциями. Один из способов сделать это — обеспечить стандартизацию и абстракцию, обычно поддерживаемые и реализуемые операционной системой. [28]
Одна из основных задач операционной системы — скрыть аппаратное обеспечение и представить программы (и их программистов) с красивыми, чистыми, элегантными и последовательными абстракциями для работы вместо этого. Другими словами, две основные задачи операционной системы — это абстракция и управление ресурсами . [28]
Абстракция — это мощный механизм для обработки сложных и различных (аппаратных) задач четко определенным и общепринятым образом. Одной из самых элементарных абстракций ОС является процесс. Процесс — это работающее приложение, которое имеет восприятие (предоставляемое ОС), что оно работает само по себе на базовом виртуальном оборудовании. Это можно ослабить с помощью концепции потоков, позволяя различным задачам выполняться одновременно на этом виртуальном оборудовании для использования параллелизма на уровне задач. Чтобы позволить различным процессам и потокам координировать свою работу, ОС должна предоставлять методы связи и синхронизации. [28]
В дополнение к абстракции необходимо управление ресурсами базовых аппаратных компонентов, поскольку виртуальные компьютеры, предоставляемые процессам и потокам операционной системой, должны совместно использовать доступные физические ресурсы (процессоры, память и устройства) пространственно и временно. [28]
{{cite book}}
: CS1 maint: другие ( ссылка ){{cite book}}
: CS1 maint: другие ( ссылка )