Введение
Компьютерная архитектура с возможностью перепрограммирования
Реконфигурируемые вычисления – это компьютерная архитектура, сочетающая в себе гибкость программного обеспечения и высокую производительность аппаратных средств за счет обработки на гибких аппаратных платформах, таких как полевые программируемые вентильные матрицы (FPGA). Основное отличие от использования обычных микропроцессоров заключается в возможности добавления специализированных вычислительных блоков с помощью FPGA. С другой стороны, главное отличие от специализированного аппаратного обеспечения, то есть интегральных схем специального назначения (ASIC), состоит в возможности адаптации аппаратной части во время работы путем "загрузки" новой схемы на переконфигурируемую структуру, что позволяет создавать новые вычислительные блоки без необходимости производства и добавления новых чипов в существующую систему.
История
Концепция реконфигурируемых вычислений существует с 1960-х годов, когда в статье Джеральда Эстрина была предложена концепция компьютера, состоящего из стандартного процессора и массива "реконфигурируемого" оборудования. Главный процессор контролировал бы поведение реконфигурируемого оборудования. Последнее затем настраивалось бы для выполнения конкретной задачи, такой как обработка изображений или поиск соответствий, с той же скоростью, что и специализированное аппаратное обеспечение. После завершения задачи оборудование можно было перенастроить для выполнения другой задачи. Это привело к созданию гибридной компьютерной структуры, сочетающей гибкость программного обеспечения со скоростью аппаратного обеспечения. В 1980-х и 1990-х годах в этой области исследований произошел ренессанс, и в промышленности и академических кругах было разработано множество предложенных реконфигурируемых архитектур, таких как: Copacobana, Matrix, GARP, Elixent, NGEN, Polyp, MereGen, PACT XPP, Silicon Hive, Montium, Pleiades, Morphosys и PiCoGA. Реализация таких конструкций стала возможной благодаря постоянному прогрессу кремниевых технологий, позволяющих создавать сложные схемы на одном чипе. Некоторые из этих массивно-параллельных реконфигурируемых компьютеров были созданы в основном для специализированных областей, таких как молекулярная эволюция, нейронные сети или обработка изображений. Первый в мире коммерческий реконфигурируемый компьютер, Algotronix CHS2X4, был завершен в 1991 году. Он не имел коммерческого успеха, но был достаточно перспективным, чтобы Xilinx (изобретатель Field Programmable Gate Array, FPGA) приобрела технологию и наняла сотрудников Algotronix. Более поздние машины позволили впервые продемонстрировать научные принципы, такие как спонтанная пространственная самоорганизация генетического кода с помощью MereGen.
Хпютер Хартенштейна
Компьютерный ученый Райнер Хартенштейн описывает реконфигурируемые вычисления как "анти-машину", которая, по его мнению, представляет собой фундаментальный сдвиг парадигмы от более традиционной машины фон Неймана. Хартенштейн называет это "Парадоксом реконфигурируемых вычислений": переход от программного обеспечения к конфигурируемому (от ПО к FPGA) приводит к увеличению скорости более чем в четыре порядка величины, а также к сокращению энергопотребления почти на четыре порядка величины, хотя технологические параметры FPGA отстают от кривой Гордона Мура примерно на четыре порядка величины, а тактовая частота существенно ниже, чем у микропроцессоров. Этот парадокс частично объясняется "синдромом фон Неймана".
Высокопроизводительные вычисления
Высокопроизводительные переконфигурируемые вычисления (HPRC) – это компьютерная архитектура, объединяющая переконфигурируемые вычислительные ускорители, такие как полевые программируемые вентильные матрицы (FPGA), с процессорами или многоядерными процессорами. Увеличение объема логики в FPGA позволило программировать в них более крупные и сложные алгоритмы. Подключение такой FPGA к современному процессору через высокоскоростную шину, например PCI Express, позволяет конфигурируемой логике функционировать скорее как сопроцессор, чем как периферийное устройство. Это вывело переконфигурируемые вычисления в область высокопроизводительных вычислений. Более того, репликация алгоритма на FPGA или использование множества FPGA позволила создать реконфигурируемые SIMD-системы, в которых несколько вычислительных устройств могут одновременно обрабатывать различные данные, что обеспечивает высокопараллельные вычисления. Этот метод гетерогенных систем применяется в вычислительных исследованиях, особенно в области суперкомпьютеров. В статье 2008 года сообщалось о коэффициентах ускорения более чем в 4 порядка величины и коэффициентах экономии энергии почти в 4 порядка величины. Некоторые компании, занимающиеся разработкой суперкомпьютеров, предлагают гетерогенные процессорные блоки, включающие FPGA в качестве ускорителей. Одной из областей исследований является повышение производительности инструментария программирования, основанного на двойной парадигме, для таких гетерогенных систем. Национальный научный фонд США имеет центр высокопроизводительных переконфигурируемых вычислений (CHREC). В апреле 2011 года в Европе прошла четвертая конференция по многоядерным и реконфигурируемым суперкомпьютерам. Коммерческие высокопроизводительные переконфигурируемые вычислительные системы начинают появляться, о чем свидетельствует заявление IBM об интеграции FPGA с микропроцессорами IBM Power.
Компьютерная эмуляция
С появлением доступных плат FPGA проекты студентов и энтузиастов все чаще направлены на воссоздание старинных компьютеров или реализацию новых архитектур. Эти проекты создаются на базе реконфигурируемого оборудования (FPGA), при этом некоторые устройства поддерживают эмуляцию нескольких старинных компьютеров, используя одно реконфигурируемое устройство (C One).
Копакобана
Полностью построенный на FPGA компьютер – COPACOBANA, «Взломщик кода и анализатор с оптимизированной стоимостью», и его преемник RIVYERA. Компания SciEngines GmbH, выделившаяся из проекта COPACOBANA университетов Бохума и Киля в Германии, продолжает разработку полностью FPGA-основанных компьютеров.
Митрионики
Mitrionics разработала SDK, позволяющий компилировать и выполнять программное обеспечение, написанное на языке единичного присваивания, на компьютерах на базе FPGA. Программный язык Mitrion C и процессор Mitrion дают разработчикам возможность создавать и запускать приложения на компьютерах на базе FPGA так же, как и для других вычислительных технологий, таких как графические процессоры ("GPU"), процессоры с ячеистой архитектурой, параллельные процессоры ("PPU"), многоядерные процессоры и традиционные одноядерные кластеры. (компания прекратила деятельность)
Национальные инструменты
National Instruments разработала гибридную встраиваемую вычислительную систему под названием CompactRIO. Она состоит из реконфигурируемого шасси, содержащего программируемые пользователем ПЛИС (FPGA), модули ввода-вывода с возможностью горячей замены, контроллер реального времени для обеспечения детерминированной связи и обработки данных, а также графическое программное обеспечение LabVIEW для быстрой разработки программного обеспечения для систем реального времени и ПЛИС (FPGA).
Силикс
Xilinx разработала два метода частичной переконфигурации устройств FPGA: модульный и на основе разностей. Модульная частичная переконфигурация позволяет переконфигурировать отдельные модульные части проекта, а частичная переконфигурация на основе разностей может быть использована при внесении небольших изменений в проект.
Информация
Intel поддерживает частичную переконфигурацию своих FPGA на 28-нм устройствах, таких как Stratix V, и на 20-нм устройствах Arria 10. Процесс частичной переконфигурации FPGA Intel для Arria 10 основан на иерархической методологии проектирования в программном обеспечении Quartus Prime Pro, где пользователи создают физические разделы FPGA, которые можно переконфигурировать во время работы, в то время как остальная часть дизайна продолжает функционировать. Программное обеспечение Quartus Prime Pro также поддерживает иерархическую частичную переконфигурацию и моделирование процесса частичной переконфигурации.
Классификация систем
Как развивающаяся область, классификации реконфигурируемых архитектур все еще разрабатываются и уточняются с появлением новых архитектур; единой таксономии пока не предложено. Однако для классификации этих систем можно использовать ряд общих параметров.
Гранулярность
Гранулярность реконфигурируемой логики определяется как размер наименьшей функциональной единицы (конфигурируемый логический блок, CLB), адресуемой инструментами отображения. Высокая гранулярность, также известная как мелкозернистая, часто подразумевает большую гибкость при реализации алгоритмов в аппаратном обеспечении. Однако это связано с увеличением энергопотребления, площади и задержки из-за большего объема требуемой маршрутизации для каждого вычисления. Архитектуры с мелкозернистой структурой работают на уровне манипулирования отдельными битами, в то время как элементы обработки с грубой структурой (реконфигурируемый блок обработки данных, rDPU) лучше оптимизированы для стандартных приложений обработки данных. Одним из недостатков архитектур с грубой структурой является тенденция к снижению эффективности и производительности при выполнении вычислений, меньших по размеру, чем их гранулярность. Например, при добавлении одного бита на четырехбитной функциональной единице три бита будут использованы неэффективно. Эту проблему можно решить, объединив массив с грубой структурой (реконфигурируемый массив обработки данных, rDPA) и FPGA на одном чипе. Архитектуры с грубой структурой (rDPA) предназначены для реализации алгоритмов, требующих путей данных шириной слова (rDPU). Поскольку их функциональные блоки оптимизированы для больших вычислений и обычно включают арифметико-логические устройства (ALU) шириной слова, они выполняют эти вычисления быстрее и с большей энергоэффективностью, чем набор взаимосвязанных меньших функциональных единиц. Это связано с тем, что соединительные проводники короче, что приводит к уменьшению емкости проводников и, следовательно, к более быстрым и энергоэффективным разработкам. Потенциальным нежелательным последствием использования больших вычислительных блоков является неэффективное использование ресурсов, когда размер операндов не соответствует алгоритму. Часто типы приложений, которые будут выполняться, известны заранее, что позволяет адаптировать логические, память и маршрутизационные ресурсы для повышения производительности устройства, сохраняя при этом определенный уровень гибкости для будущей адаптации. Примерами являются специализированные массивы, предназначенные для достижения более высокой производительности с точки зрения энергопотребления, площади и пропускной способности по сравнению с их более универсальными мелкозернистыми аналогами FPGA за счет снижения гибкости.
Скорость перестройки
Конфигурация этих реконфигурируемых систем может выполняться во время развертывания, между фазами исполнения или в процессе исполнения. В типичной реконфигурируемой системе для программирования устройства во время развертывания используется битовый поток. Системы с мелкой гранулярностью по своей природе требуют больше времени на конфигурацию, чем архитектуры с более крупной гранулярностью, из-за большего числа элементов, которые необходимо адресовать и программировать. Следовательно, архитектуры с более крупной гранулярностью выигрывают от потенциально более низких требований к энергопотреблению, поскольку передается и используется меньше информации. Интуитивно понятно, что чем медленнее скорость реконфигурации, тем меньше энергопотребление, поскольку связанные с реконфигурацией энергетические затраты распределяются на более длительный период времени. Частичная реконфигурация позволяет перепрограммировать часть устройства, в то время как другая часть продолжает выполнять активные вычисления. Частичная реконфигурация позволяет использовать меньшие по размеру битовые потоки, что позволяет не тратить энергию на передачу избыточной информации в битовом потоке. Сжатие битового потока возможно, но необходимо провести тщательный анализ, чтобы убедиться, что экономия энергии за счет использования меньших битовых потоков не нивелируется вычислительными затратами на декомпрессию данных.
Соединение хозяина
Часто реконфигурируемый массив используется как ускоритель вычислений, подключенный к центральному процессору. Степень связи между ними определяет тип передачи данных, задержку, энергопотребление, пропускную способность и накладные расходы при использовании реконфигурируемой логики. Некоторые из наиболее понятных схем используют периферийную шину для организации работы реконфигурируемого массива в качестве сопроцессора. Однако существуют и реализации, в которых реконфигурируемая структура находится значительно ближе к процессору, а некоторые даже интегрированы в конвейер обработки данных, используя регистры процессора. Задача центрального процессора заключается в выполнении функций управления, конфигурации логики, планировании данных и обеспечении внешнего взаимодействия.
Маршрутизация/взаимосвязи
Гибкость реконфигурируемых устройств в основном обусловлена их коммутационной сетью маршрутизации. Один из стилей организации этой сети, получивший распространение благодаря компаниям Xilinx и Altera, производителям ПЛИС, – это островная архитектура, в которой функциональные блоки располагаются в виде массива с вертикальной и горизонтальной маршрутизацией. Архитектура с недостаточной маршрутизацией может страдать от низкой гибкости и неэффективного использования ресурсов, что ограничивает производительность. Однако, избыточная коммутационная сеть требует большего количества транзисторов, чем необходимо, что приводит к увеличению площади кристалла, длины соединений и энергопотребления.
Проблемы для операционных систем
Одной из ключевых задач реконфигурируемых вычислений является повышение производительности проектирования и упрощение использования реконфигурируемых вычислительных систем для пользователей, незнакомых с базовыми концепциями. Один из способов достижения этого – стандартизация и абстракция, как правило, поддерживаемые и обеспечиваемые операционной системой. Основная задача операционной системы – скрыть детали аппаратного обеспечения и предоставить программам (и их разработчикам) удобные, понятные, элегантные и согласованные абстракции для работы. Иными словами, две главные задачи операционной системы – это абстракция и управление ресурсами. Абстракция – мощный механизм для обработки сложных и разнообразных (аппаратных) задач единообразным и чётко определённым способом. Одной из самых простых абстракций ОС является процесс. Процесс – это выполняемое приложение, которое, благодаря операционной системе, воспринимает себя как работающее самостоятельно на базовом виртуальном оборудовании. Это ограничение может быть смягчено с помощью потоков, позволяющих различным задачам одновременно выполняться на этом виртуальном оборудовании для использования параллелизма на уровне задач. Для координации работы различных процессов и потоков операционная система должна предоставлять механизмы связи и синхронизации. Помимо абстракции, необходимо управление ресурсами базовых аппаратных компонентов, поскольку виртуальные компьютеры, предоставляемые процессам и потокам операционной системой, должны совместно использовать доступные физические ресурсы (процессоры, память и устройства) как в пространстве, так и во времени.