Перепрограммировать процессор. Как работают встраиваемые FPGA и где они пригодятся
В мае 2018 года, после четырех лет работы, первые клиенты Intel получили серверные процессоры Xeon со встроенными FPGA — Intel Xeon SP-6138P. Это первая ласточка нового класса продуктов, о котором в Intel говорили с тех самых пор, как корпорация поглотила одного из двух ведущих производителей FPGA — фирму Altera.
Intel Xeon SP-6138P
Главное преимущество FPGA над программной реализацией решения той же задачи — существенно большая скорость. Хардверная реализация в виде специализированного чипа уступает FPGA: последние можно настраивать под нужды конкретного пользователя, даже если ему нужен всего один чип и даже если задача может изменяться в процессе работы микросхемы.
Второе особенно важно, ведь стандарты передачи и обработки информации регулярно обновляются, а покупать новое железо каждый раз крайне накладно. Разумеется, за эти преимущества FPGA расплачиваются высокой стоимостью и некоторыми другими недостатками, но свое место под солнцем они уже завоевали очень давно: самые первые продукты Xilinx и Altera стали хитами в середине восьмидесятых, и рынок программируемой логики, оценивавшийся в 100 миллионов долларов в 1985 году, сейчас составляет семь миллиардов и продолжает расти.
Идея встроенных FPGA достаточно нова, и SP-6138P — первый важный продукт такого рода.
Целевая задача, для которой Intel ставят в серверный процессор FPGA, — аппаратная реализация Open Virtual Switch, одного из ключевых инструментов виртуализации в дата-центрах. По данным Intel, применение FPGA должно вдвое уменьшить задержку, утроить пропускную способность и освободить часть процессорных ядер от программной реализации Open Virtual Switch, таким образом увеличив доступную вычислительную мощность на том же процессоре.
Соединение двух чипов на печатной плате (пусть даже маленькой и находящейся внутри корпуса) требует организации канала передачи данных, который включает в себя схемы ввода-вывода двух кристаллов и соединения между кристаллами и корпусом или платой. Все это — задержки и увеличение потребляемой мощности. В случае встроенной FPGA достаточно напрямую соединить два массива маленьких транзисторов, не теряя время и мощность на преобразование сигнала в удобоваримый для стандартов DDR4/PCIe вид. Внутрикристальная шина может быть любой ширины и конфигурации, что существенно удешевляет систему и позволяет организовать удобный обмен данными между FPGA и процессором и даже, например, обеспечить когерентность кеш-памяти без снижения частоты работы системы.
Изображение с сайта electronicdesign.com хорошо визуализирует: добавление только вычислительного ядра FPGA без интерфейсной обвязки гораздо экономичнее, чем использование чипа standalone
Именно возможность максимально быстрого и удобного обмена данными с другими частями системы — главный драйвер развития встраиваемых FPGA.
Разумеется, продукт Intel — не первый на рынке. С несколько меньшим шумом встраиваемые FPGA уже давно завоевывают сердца производителей самых разных систем на кристаллах. Однако, когда такой шаг совершает один из крупнейших игроков, это может стать началом интересного тренда.
Встраиваемые FPGA
Intel Xeon SP-6138P — это система в корпусе, которая объединяет под одной крышкой чип процессора Xeon SP-6138G и чип FPGA Arria 10 GX 1150. Это намного более удобное решение, чем отдельные корпуса процессора и FPGA на плате, но, в общем-то, все равно полумера. Почему?
TDP (расчетное тепловыделение) SP-6138P составляет 120 Вт, и из них на долю FPGA отведено целых семьдесят. Большое энергопотребление — плата за универсальность, ведь на кристалле FPGA должно быть не только все то, что нужно пользователю прямо сейчас, но и все то, что может понадобиться когда-нибудь. При этом сама логическая матрица потребляет не так много; куда больше уходит на высокоскоростные интерфейсы, конфигурационную память, служебные блоки типа собственной PLL, а также статическое потребление. Частично эта проблема решается отключением питания неиспользуемых блоков, но все же это не всегда удобно. А что, если взять от FPGA только программируемую логическую матрицу и на том же кристалле подключить ее напрямую ко всем ресурсам процессора?
Первые варианты подобных схем появились еще в конце девяностых, но тогда они «не взлетели», в основном из-за неготовности рынка и слабой программной поддержки. Второе рождение технология пережила с 2010 по 2014 год, когда появилось сразу несколько успешных стартапов, в числе которых были такие компании, как Achronix, FlexLogic и NanoXplore. Они развили эту технологию, а рынок ASIC и заказных блоков для них переживал бум. В итоге сейчас, если ты не готов разрабатывать собственный чип, всегда есть неплохой выбор встраиваемых FPGA любого размера для большинства популярных технологий.
Схематичное изображение ядра обычных FPGA и встраиваемых
Ядро встраиваемых FPGA устроено так же, как и у обычных: это матрица из многовходовых конфигурируемых логических элементов (LUT), соединенных коммутируемой матрицей. Конструкция каждого LUT отличается в зависимости от производителя и модели, но в целом похожа на то, что мы можем найти в обычных FPGA.
Важное различие состоит в том, что FPGA на отдельных кристаллах всегда оптимизируются на максимальные производительность и быстродействие и изготавливаются на самых современных доступных технологиях, а вот встраиваемая FPGA может быть, в зависимости от задачи, оптимизирована для минимального энергопотребления в «спящем» режиме или для работы при очень малом напряжении питания.
В этом, собственно, и состоит принципиальное отличие встраиваемых FPGA от аналогов standalone: обеспечивая гибкость в дизайне, они гораздо лучше поддаются оптимизации под нужды конкретной микросхемы.
Обратный подход
Встроенная в процессор FPGA — не единственный возможный вариант их совмещения. С тех пор как появились FPGA, с их помощью стали реализовывать разные процессорные ядра — от вариантов популярных архитектур до специально заточенных под FPGA ядер, таких как PicoBlaze для Xilinx и NIOS для Altera.
Со временем FPGA стали больше, и логичным шагом для их производителей стало разместить на кристалле не только «море вентилей» для пользователя, но и специальные аппаратные блоки для частых задач. Разумеется, в число этих блоков попали и микропроцессорные ядра, так популярные у пользователей.
Например, чипы семейства Xilinx Zynq содержат от одного до четырех процессорных ядер архитектуры ARM и даже GPU, позволяя пользователям создавать достаточно сложные системы на одном кристалле.
Популярность встраиваемых FPGA неразрывно связана с развитием сложных систем на кристалле, выпускаемых для решения специфических задач в разных областях, в том числе таких быстро развивающихся, как интернет вещей, искусственный интеллект и беспроводные сети. Срок разработки заказной микросхемы — несколько лет, и за это время она легко может устареть, ведь разнообразные стандарты постоянно обновляются, а программная реализация важных для функционирования алгоритмов гораздо медленнее и энергозатратнее аппаратной. И именно тут на помощь приходят встраиваемые FPGA, которые позволяют обновлять железо на протяжении всего срока службы.
Где могут применяться встраиваемые FPGA
Казалось бы, логичным ответом на этот вопрос будет «там же, где и обычные», но на самом деле у этих двух типов схем разные применения и рыночные ниши. Встроенные FPGA особенно полезны в быстро развивающихся отраслях, где стандарты постоянно обновляются, а прорывы в алгоритмах и математике случаются чуть ли не еженедельно.
Выводы
В отличие от обычных отдельных FPGA, встраиваемые нельзя просто пойти и купить, они полезны тем, кто задумывается о разработке (или о заказе разработки) собственной микросхемы. Разработка современного чипа — дело довольно дорогое, и речь идет о суммах от миллиона до нескольких десятков миллионов долларов, но и выгода от применения специализированного чипа в серийных устройствах может быть огромной.
В России несколько десятков компаний занимаются разработкой микросхем, и многим из них такой проект вполне по силам. Впрочем, если учесть темпы, которыми развиваются встраиваемые FPGA, уже совсем скоро они могут появиться не только в топовых продуктах Intel, а, скажем, в новом поколении популярных микроконтроллеров. Возможно, стоит начать учить Verilog уже сегодня!
автор: Валерий Шунков, хакер.ру
В мае 2018 года, после четырех лет работы, первые клиенты Intel получили серверные процессоры Xeon со встроенными FPGA — Intel Xeon SP-6138P. Это первая ласточка нового класса продуктов, о котором в Intel говорили с тех самых пор, как корпорация поглотила одного из двух ведущих производителей FPGA — фирму Altera.
Intel Xeon SP-6138P
Главное преимущество FPGA над программной реализацией решения той же задачи — существенно большая скорость. Хардверная реализация в виде специализированного чипа уступает FPGA: последние можно настраивать под нужды конкретного пользователя, даже если ему нужен всего один чип и даже если задача может изменяться в процессе работы микросхемы.
Второе особенно важно, ведь стандарты передачи и обработки информации регулярно обновляются, а покупать новое железо каждый раз крайне накладно. Разумеется, за эти преимущества FPGA расплачиваются высокой стоимостью и некоторыми другими недостатками, но свое место под солнцем они уже завоевали очень давно: самые первые продукты Xilinx и Altera стали хитами в середине восьмидесятых, и рынок программируемой логики, оценивавшийся в 100 миллионов долларов в 1985 году, сейчас составляет семь миллиардов и продолжает расти.
Идея встроенных FPGA достаточно нова, и SP-6138P — первый важный продукт такого рода.
Целевая задача, для которой Intel ставят в серверный процессор FPGA, — аппаратная реализация Open Virtual Switch, одного из ключевых инструментов виртуализации в дата-центрах. По данным Intel, применение FPGA должно вдвое уменьшить задержку, утроить пропускную способность и освободить часть процессорных ядер от программной реализации Open Virtual Switch, таким образом увеличив доступную вычислительную мощность на том же процессоре.
Соединение двух чипов на печатной плате (пусть даже маленькой и находящейся внутри корпуса) требует организации канала передачи данных, который включает в себя схемы ввода-вывода двух кристаллов и соединения между кристаллами и корпусом или платой. Все это — задержки и увеличение потребляемой мощности. В случае встроенной FPGA достаточно напрямую соединить два массива маленьких транзисторов, не теряя время и мощность на преобразование сигнала в удобоваримый для стандартов DDR4/PCIe вид. Внутрикристальная шина может быть любой ширины и конфигурации, что существенно удешевляет систему и позволяет организовать удобный обмен данными между FPGA и процессором и даже, например, обеспечить когерентность кеш-памяти без снижения частоты работы системы.
Изображение с сайта electronicdesign.com хорошо визуализирует: добавление только вычислительного ядра FPGA без интерфейсной обвязки гораздо экономичнее, чем использование чипа standalone
Именно возможность максимально быстрого и удобного обмена данными с другими частями системы — главный драйвер развития встраиваемых FPGA.
Разумеется, продукт Intel — не первый на рынке. С несколько меньшим шумом встраиваемые FPGA уже давно завоевывают сердца производителей самых разных систем на кристаллах. Однако, когда такой шаг совершает один из крупнейших игроков, это может стать началом интересного тренда.
Встраиваемые FPGA
Intel Xeon SP-6138P — это система в корпусе, которая объединяет под одной крышкой чип процессора Xeon SP-6138G и чип FPGA Arria 10 GX 1150. Это намного более удобное решение, чем отдельные корпуса процессора и FPGA на плате, но, в общем-то, все равно полумера. Почему?
TDP (расчетное тепловыделение) SP-6138P составляет 120 Вт, и из них на долю FPGA отведено целых семьдесят. Большое энергопотребление — плата за универсальность, ведь на кристалле FPGA должно быть не только все то, что нужно пользователю прямо сейчас, но и все то, что может понадобиться когда-нибудь. При этом сама логическая матрица потребляет не так много; куда больше уходит на высокоскоростные интерфейсы, конфигурационную память, служебные блоки типа собственной PLL, а также статическое потребление. Частично эта проблема решается отключением питания неиспользуемых блоков, но все же это не всегда удобно. А что, если взять от FPGA только программируемую логическую матрицу и на том же кристалле подключить ее напрямую ко всем ресурсам процессора?
Первые варианты подобных схем появились еще в конце девяностых, но тогда они «не взлетели», в основном из-за неготовности рынка и слабой программной поддержки. Второе рождение технология пережила с 2010 по 2014 год, когда появилось сразу несколько успешных стартапов, в числе которых были такие компании, как Achronix, FlexLogic и NanoXplore. Они развили эту технологию, а рынок ASIC и заказных блоков для них переживал бум. В итоге сейчас, если ты не готов разрабатывать собственный чип, всегда есть неплохой выбор встраиваемых FPGA любого размера для большинства популярных технологий.
Схематичное изображение ядра обычных FPGA и встраиваемых
Ядро встраиваемых FPGA устроено так же, как и у обычных: это матрица из многовходовых конфигурируемых логических элементов (LUT), соединенных коммутируемой матрицей. Конструкция каждого LUT отличается в зависимости от производителя и модели, но в целом похожа на то, что мы можем найти в обычных FPGA.
Важное различие состоит в том, что FPGA на отдельных кристаллах всегда оптимизируются на максимальные производительность и быстродействие и изготавливаются на самых современных доступных технологиях, а вот встраиваемая FPGA может быть, в зависимости от задачи, оптимизирована для минимального энергопотребления в «спящем» режиме или для работы при очень малом напряжении питания.
В этом, собственно, и состоит принципиальное отличие встраиваемых FPGA от аналогов standalone: обеспечивая гибкость в дизайне, они гораздо лучше поддаются оптимизации под нужды конкретной микросхемы.
Обратный подход
Встроенная в процессор FPGA — не единственный возможный вариант их совмещения. С тех пор как появились FPGA, с их помощью стали реализовывать разные процессорные ядра — от вариантов популярных архитектур до специально заточенных под FPGA ядер, таких как PicoBlaze для Xilinx и NIOS для Altera.
Со временем FPGA стали больше, и логичным шагом для их производителей стало разместить на кристалле не только «море вентилей» для пользователя, но и специальные аппаратные блоки для частых задач. Разумеется, в число этих блоков попали и микропроцессорные ядра, так популярные у пользователей.
Например, чипы семейства Xilinx Zynq содержат от одного до четырех процессорных ядер архитектуры ARM и даже GPU, позволяя пользователям создавать достаточно сложные системы на одном кристалле.
Популярность встраиваемых FPGA неразрывно связана с развитием сложных систем на кристалле, выпускаемых для решения специфических задач в разных областях, в том числе таких быстро развивающихся, как интернет вещей, искусственный интеллект и беспроводные сети. Срок разработки заказной микросхемы — несколько лет, и за это время она легко может устареть, ведь разнообразные стандарты постоянно обновляются, а программная реализация важных для функционирования алгоритмов гораздо медленнее и энергозатратнее аппаратной. И именно тут на помощь приходят встраиваемые FPGA, которые позволяют обновлять железо на протяжении всего срока службы.
Где могут применяться встраиваемые FPGA
Казалось бы, логичным ответом на этот вопрос будет «там же, где и обычные», но на самом деле у этих двух типов схем разные применения и рыночные ниши. Встроенные FPGA особенно полезны в быстро развивающихся отраслях, где стандарты постоянно обновляются, а прорывы в алгоритмах и математике случаются чуть ли не еженедельно.
- Беспроводные сети: стандарты 5G постоянно корректируются, а железо для сотовых сетей очень дорогое и должно прослужить долго, чтобы окупиться.
- Искусственный интеллект и машинное обучение: многие алгоритмы нейросетей могут быть существенно ускорены применением встраиваемых FPGA совместно с аппаратными ускорителями DSP.
- Обработка информации, в том числе изображений и видео: все то же самое, что в двух предыдущих пунктах, — алгоритмы и стандарты обновляются, а встраиваемая FPGA позволит организовать поддержку новинок без переделки уже установленного железа (и все это при меньшем энергопотреблении, чем у отдельной FPGA).
- Высокочастотный трейдинг: как упоминалось выше, аппаратная реализация позволяет уменьшить задержки, а на современной фондовой бирже несколько микросекунд могут стоить миллионы долларов.
- Криптография: ты можешь обновлять алгоритмы шифрования при необходимости; сюда же относятся и криптовалюты (куда же без них). Отдельные FPGA перестали быть прибыльными уже давно, а вот у ASIC с перестраиваемыми отдельными блоками есть шансы быть и прибыльными, и пригодными для майнинга разных валют.
Выводы
В отличие от обычных отдельных FPGA, встраиваемые нельзя просто пойти и купить, они полезны тем, кто задумывается о разработке (или о заказе разработки) собственной микросхемы. Разработка современного чипа — дело довольно дорогое, и речь идет о суммах от миллиона до нескольких десятков миллионов долларов, но и выгода от применения специализированного чипа в серийных устройствах может быть огромной.
В России несколько десятков компаний занимаются разработкой микросхем, и многим из них такой проект вполне по силам. Впрочем, если учесть темпы, которыми развиваются встраиваемые FPGA, уже совсем скоро они могут появиться не только в топовых продуктах Intel, а, скажем, в новом поколении популярных микроконтроллеров. Возможно, стоит начать учить Verilog уже сегодня!
автор: Валерий Шунков, хакер.ру