Реконфигурируемые вычисления — это компьютерная архитектура , сочетающая некоторую гибкость программного обеспечения с высокой производительностью аппаратного обеспечения за счет обработки с помощью гибких аппаратных платформ, таких как программируемые пользователем вентильные матрицы (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] Хартенштейн называет это «парадоксом реконфигурируемых вычислений»: миграция программного обеспечения в конфигурируемое (программное обеспечение в FPGA ) приводит к получению ускорения более чем на четыре порядка, а также к снижению потребления электроэнергии на почти на четыре порядка — хотя технологические параметры ПЛИС отстают от кривой Гордона Мура примерно на четыре порядка, а тактовая частота существенно ниже, чем у микропроцессоров. Этот парадокс частично объясняется синдромом фон Неймана .
Высокопроизводительные реконфигурируемые вычисления (HPRC) — это компьютерная архитектура , сочетающая реконфигурируемые вычислительные ускорители, такие как программируемая вентильная матрица, с центральными или многоядерными процессорами .
Увеличение логики в FPGA позволило программировать в FPGA более крупные и сложные алгоритмы. Подключение такой FPGA к современному ЦП через высокоскоростную шину, такую как PCI Express , позволило настраиваемой логике действовать скорее как сопроцессор , чем как периферийное устройство . Это привело к появлению реконфигурируемых вычислений в сфере высокопроизводительных вычислений .
Кроме того, копирование алгоритма на FPGA или использование множества FPGA позволило создать реконфигурируемые SIMD- системы, в которых несколько вычислительных устройств могут одновременно работать с разными данными, что представляет собой высокопараллельные вычисления .
Этот метод гетерогенных систем используется в компьютерных исследованиях и особенно в суперкомпьютерах . [13] В документе 2008 года сообщается о коэффициентах ускорения более чем на 4 порядка и коэффициентах энергосбережения почти на 4 порядка. [14] Некоторые фирмы, производящие суперкомпьютеры, предлагают в качестве ускорителей гетерогенные блоки обработки, включая FPGA. [ нужна цитация ] Одной из областей исследований является производительность потока инструментов программирования с двумя парадигмами, полученная для таких гетерогенных систем. [15]
Национальный научный фонд США имеет центр высокопроизводительных реконфигурируемых вычислений (CHREC). [16] В апреле 2011 года в Европе прошла четвертая конференция по многоядерным и реконфигурируемым суперкомпьютерам. [17]
Коммерческие высокопроизводительные реконфигурируемые вычислительные системы начинают появляться после объявления IBM об интеграции FPGA со своими микропроцессорами IBM Power . [18]
Частичная реконфигурация — это процесс изменения части реконфигурируемой аппаратной схемы, в то время как другая часть сохраняет свою прежнюю конфигурацию. Программируемые пользователем вентильные матрицы часто используются в качестве поддержки частичной реконфигурации.
Электронное оборудование , как и программное обеспечение , можно проектировать модульно, создавая подкомпоненты, а затем компоненты более высокого уровня для их создания. Во многих случаях полезно иметь возможность заменить один или несколько из этих подкомпонентов, пока FPGA еще работает.
Обычно реконфигурация FPGA требует удержания ее в состоянии сброса, пока внешний контроллер перезагружает в нее проект. Частичная реконфигурация позволяет критическим частям проекта продолжать работу, в то время как контроллер либо на ПЛИС, либо вне ее загружает частичный проект в реконфигурируемый модуль. Частичную реконфигурацию также можно использовать для экономии места для нескольких проектов, сохраняя только частичные проекты, которые изменяются между проектами. [19]
Типичным примером того, когда частичная реконфигурация может оказаться полезной, является устройство связи. Если устройство контролирует несколько соединений, некоторые из которых требуют шифрования , было бы полезно иметь возможность загружать разные ядра шифрования без отключения всего контроллера.
Частичная реконфигурация поддерживается не всеми FPGA. Требуется специальный программный поток с упором на модульную конструкцию. Обычно модули проектирования строятся по четко определенным границам внутри FPGA, что требует специального сопоставления проекта с внутренним оборудованием.
По функциональности конструкции частичную реконфигурацию можно разделить на две группы: [20]
С появлением доступных плат FPGA проекты студентов и любителей стремятся воссоздать старинные компьютеры или реализовать более новые архитектуры. [21] [22] [23] Такие проекты создаются с использованием реконфигурируемого оборудования (FPGA), а некоторые устройства поддерживают эмуляцию нескольких старинных компьютеров с использованием одного реконфигурируемого оборудования ( C-One ).
Компьютер, полностью основанный на FPGA, — это COPACOBANA, оптимизированный по затратам взломщик и анализатор кодов и его преемник RIVYERA. Дочерняя компания SciEngines GmbH проекта COPACOBANA университетов Бохума и Киля в Германии продолжает разработку компьютеров, полностью основанных на FPGA.
Mitrionics разработала SDK, который позволяет компилировать и выполнять программное обеспечение, написанное с использованием единого языка присваивания, на компьютерах на базе FPGA. Язык программного обеспечения Mitrion-C и процессор Mitrion позволяют разработчикам программного обеспечения писать и выполнять приложения на компьютерах на базе FPGA так же, как и с другими вычислительными технологиями, такими как графические процессоры («GPU»), процессоры на основе ячеек, параллельная обработка. блоки («PPU»), многоядерные процессоры и традиционные одноядерные кластеры процессоров. (из бизнеса)
Компания National Instruments разработала гибридную встраиваемую вычислительную систему под названием CompactRIO . Он состоит из реконфигурируемого шасси, в котором размещается программируемая пользователем FPGA, модули ввода-вывода с возможностью горячей замены, контроллер реального времени для детерминированной связи и обработки, а также графическое программное обеспечение LabVIEW для быстрого программирования RT и FPGA.
Компания 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) и FPGA .
Грубозернистые архитектуры ( rDPA ) предназначены для реализации алгоритмов, требующих путей данных разрядности слова (rDPU). Поскольку их функциональные блоки оптимизированы для больших вычислений и обычно содержат арифметико -логические блоки (АЛУ), они будут выполнять эти вычисления быстрее и с большей энергоэффективностью, чем набор взаимосвязанных меньших функциональных блоков; это связано с тем, что соединительные провода короче, что приводит к меньшей емкости проводов и, следовательно, к более быстрым конструкциям с меньшим энергопотреблением. Потенциально нежелательным последствием использования больших вычислительных блоков является то, что размер операндов может не соответствовать алгоритму, что может привести к неэффективному использованию ресурсов. Часто тип запускаемых приложений известен заранее, что позволяет адаптировать ресурсы логики, памяти и маршрутизации для повышения производительности устройства, сохраняя при этом определенный уровень гибкости для будущей адаптации. Примерами этого являются специализированные массивы, нацеленные на повышение производительности с точки зрения мощности, площади и пропускной способности, чем их более общие, более мелкозернистые собратья FPGA , за счет снижения их гибкости.
Настройка этих реконфигурируемых систем может происходить во время развертывания, между этапами выполнения или во время выполнения. В типичной реконфигурируемой системе битовый поток используется для программирования устройства во время развертывания. Мелкозернистые системы по своей природе требуют большего времени на настройку, чем более крупнозернистые архитектуры, поскольку необходимо учитывать и программировать большее количество элементов. Таким образом, более крупномасштабные архитектуры выигрывают от потенциально более низких требований к энергии, поскольку передается и используется меньше информации. Интуитивно понятно, что чем медленнее скорость реконфигурации, тем меньше потребляемая мощность, поскольку соответствующие затраты энергии на реконфигурацию амортизируются в течение более длительного периода времени. Частичная реконфигурация направлена на то, чтобы позволить перепрограммировать часть устройства, в то время как другая часть все еще выполняет активные вычисления. Частичная реконфигурация позволяет уменьшить реконфигурируемые потоки битов, таким образом, не тратя энергию на передачу избыточной информации в потоке битов. Сжатие битового потока возможно, но необходимо провести тщательный анализ, чтобы гарантировать, что энергия, сэкономленная за счет использования меньших битовых потоков, не перевешивается вычислениями, необходимыми для распаковки данных.
Часто реконфигурируемый массив используется в качестве ускорителя обработки, подключенного к главному процессору. Уровень связи определяет тип передачи данных, задержку, мощность, пропускную способность и накладные расходы, возникающие при использовании реконфигурируемой логики. Некоторые из наиболее интуитивно понятных конструкций используют периферийную шину для обеспечения структуры, подобной сопроцессору, для реконфигурируемого массива. Однако были также реализации, в которых реконфигурируемая структура располагалась намного ближе к процессору, а некоторые даже внедрялись в тракт данных с использованием регистров процессора. Работа главного процессора заключается в выполнении функций управления, настройке логики, планировании данных и обеспечении внешнего интерфейса.
Гибкость реконфигурируемых устройств в основном обусловлена их маршрутизацией. Один из стилей межсоединений, ставший популярным благодаря производителям FPGA , Xilinx и Altera, представляет собой островную компоновку, при которой блоки располагаются в виде массива с вертикальной и горизонтальной маршрутизацией. Схема с неадекватной маршрутизацией может иметь плохую гибкость и недостаточное использование ресурсов, что приводит к ограничению производительности. Если предусмотрено слишком много межсоединений, это потребует большего количества транзисторов, чем необходимо, и, следовательно, большей площади кремния, более длинных проводов и большего энергопотребления.
Одной из ключевых задач реконфигурируемых вычислений является обеспечение более высокой производительности проектирования и предоставление более простого способа использования реконфигурируемых вычислительных систем для пользователей, которые не знакомы с основными концепциями. Один из способов сделать это — обеспечить стандартизацию и абстракцию, обычно поддерживаемые и реализуемые операционной системой. [28]
Одна из основных задач операционной системы — скрыть оборудование и предоставить программам (и их программистам) красивые, чистые, элегантные и последовательные абстракции для работы. Другими словами, две основные задачи операционной системы — это абстракция и управление ресурсами . [28]
Абстракция — это мощный механизм для решения сложных и различных (аппаратных) задач четко определенным и общепринятым способом. Одной из самых элементарных абстракций ОС является процесс. Процесс — это работающее приложение, которое воспринимает (обеспечиваемое ОС) что оно работает само по себе на базовом виртуальном оборудовании. Это можно смягчить с помощью концепции потоков, позволяющей одновременно выполнять различные задачи на этом виртуальном оборудовании для использования параллелизма на уровне задач. Чтобы позволить различным процессам и потокам координировать свою работу, ОС должна предоставлять методы связи и синхронизации. [28]
Помимо абстракции, необходимо управление ресурсами базовых аппаратных компонентов, поскольку виртуальные компьютеры, предоставляемые процессам и потокам операционной системой, должны совместно использовать доступные физические ресурсы (процессоры, память и устройства) пространственно и временно. [28]
{{cite book}}
: CS1 maint: другие ( ссылка ){{cite book}}
: CS1 maint: другие ( ссылка )