Sphery vs. shapes — это открытая 3D-игра с трассировкой лучей, написанная на C и преобразованная в битстрим для FPGA, которая работает в 50 раз эффективнее на FPGA, чем на процессоре AMD Ryzen.
Языки Verilog и VHDL, традиционно используемые для FPGA, плохо подходят для разработки игр или других сложных приложений, поэтому Victor Suarez Rovere и Julian Kemmerer использовали язык описания аппаратуры (HDL), похожий на C, под названием PipelineC от Julian, а также инструмент CflexHDL от Victor, включающий парсер/генератор и библиотеку математических типов. Это позволило запускать один и тот же код на ПК с помощью стандартной компиляции и на FPGA через пользовательский транслятор C в VHDL.
Подробности разработки игры и результаты представлены в техническом документе .
Для реализации потребовались математические функции, включая операции с плавающей запятой: сложение, вычитание, умножение, деление, обратные значения, квадратный корень, обратный квадратный корень, скалярное произведение векторов, нормализация векторов и т.д. Также использовались операции с фиксированной запятой для повышения производительности и упрощения размещения проекта в целевой FPGA, с соответствующими преобразованиями между типами (целые числа и числа с плавающей запятой).
Игра была скомпилирована дважды: для запуска на 8-ядерном/16-поточном процессоре Ryzen 4900H (7 нм) с частотой до 4,4 ГГц (TDP 45 Вт) под Linux и для оптимизированной работы на FPGA — плате Digilent Arty A7-100T с FPGA на 101 тыс. LUT (Xilinx Artix-7 XC7A100TCSG324-1).
Обе платформы обеспечивали плавную работу игры, а FPGA-решение выводило изображение с частотой 60 кадров/с в разрешении 1920×1080. Однако основное отличие заключалось в энергопотреблении: плата FPGA потребляла всего 660 мВт, тогда как ПК — 35 Вт. Стоит отметить, что игра не использует GPU в процессоре Ryzen, но для ускорения применялись SIMD-инструкции. Аналогичная игра с использованием GPU для 3D-графики могла бы потреблять меньше, но всё равно значительно больше, чем FPGA-плата. С другой стороны, использованная FPGA изготовлена по 28-нм техпроцессу, и при переходе на 7-нм техпроцесс (как у Ryzen) можно ожидать до 6-кратного роста энергоэффективности.
В видео ниже представлены объяснение архитектуры и демонстрация игры Sphery vs. shapes с трассировкой лучей, работающей на CPU и плате Arty-7 FPGA.
Дополнительные детали доступны в репозитории PipelineC-Graphics на GitHub . Хотя графическая демонстрация впечатляет, в техническом документе также поясняется, что PipelineC может применяться в других проектах или продуктах с жёсткими требованиями к реальному времени и/или низкому энергопотреблению. Среди них — аэрокосмические приложения (где критичны вес и энергопотребление), промышленные системы управления (требующие высокой надёжности и обработки в реальном времени), более лёгкие гарнитуры виртуальной/дополненной реальности, фильтрация пакетов в сетевых приложениях, а также решения для безопасности и криптографии.
В будущем планируется реализовать примеры для всех упомянутых приложений вместе с RISC-V CPU и симулятором. Также есть планы по разработке ASIC с открытыми silicon IP и инструментами, включая tape out.
Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.