Немецкий разработчик с ником bitluni потратил около полугода на создание одной из самых необычных DIY-систем. Вместо того чтобы использовать готовый графический процессор или FPGA, он решил построить аналог графического ускорителя из 8 192 недорогих RISC-V микроконтроллеров. Их он объединил в единую иерархическую структуру.

Энтузиаст хотел показать, насколько далеко можно зайти, используя самые простые и доступные компоненты. По пути нашему герою пришлось решать задачи синхронизации тысяч микроконтроллеров, организации питания, автоматической прошивки и обмена данными между всеми узлами системы. Именно этим проект и интересен. Давайте посмотрим, что здесь и как работает.

Как все начиналось

За последние несколько лет автор проекта собрал несколько крупных кластеров из недорогих RISC-V микроконтроллеров, постепенно увеличивая их масштаб и усложняя архитектуру. В предыдущих экспериментах он отрабатывал способы объединения десятков и сотен простых чипов в единую вычислительную систему, изучал нюансы синхронизации, обмена данными и распределения нагрузки. Каждый новый проект становился для него своеобразным полигоном, где проверялись идеи, которые затем переходили в следующую версию.

Источник

После публикации одного из роликов о самодельном GPU с героем статьи связалась компания Altium, разрабатывающая программное обеспечение для проектирования печатных плат. Она предложила поддержку проекта, что позволило автору отказаться от сравнительно небольших экспериментов и взяться за гораздо более амбициозную конструкцию. Наш гик решил, что не будет искать легких путей, поэтому стартовал с проектирования системы, насчитывающей 8 192 отдельных вычислительных узла.

В это же время он начал работать с новым микроконтроллером WCH CH570. Чип стоил около 13 центов, работал на частоте до 100 МГц, имел 12 КБ SRAM, аппаратный USB и оказался достаточно производительным, чтобы в одном из предыдущих проектов самостоятельно формировать телевизионный видеосигнал. Именно тогда у автора возникла мысль использовать эти микроконтроллеры не просто как вычислительные узлы, а попытаться построить из них некое подобие графического процессора.

Идея была одновременно простой и безумной: выделить отдельный микроконтроллер для каждого пикселя изображения. Для современных разрешений такой подход потребовал бы сотни тысяч или даже миллионы чипов, поэтому в качестве отправной точки он выбрал старое разрешение QVGA — 320×240 пикселей. Даже в этом случае требовалось более 65 000 микроконтроллеров. Это делало проект крайне дорогим. А еще все упиралось в ограничения по питанию. Поэтому количество вычислительных узлов пришлось сократить до 8192, сохранив общую архитектуру и проверив ее на практике.

Выбор железа и архитектура

Самой сложной задачей оказалось заставить все работать как единую систему. И тут главный нюанс. Если соединить такое количество чипов напрямую, система быстро упрется в обмен данными: процессоры будут тратить больше времени на передачу команд друг другу, чем на сами вычисления. Поэтому разработчик сразу отказался от плоской архитектуры и разбил проект на несколько уровней.

В основании системы 8 192 микроконтроллера CH570, они выполняют основные вычисления. Над ними расположены 256 более производительных CH32V с аппаратным блоком вычислений с плавающей точкой. Каждый такой контроллер отвечает за группу из 32 CH570: отправляет им команды, собирает результаты и координирует их работу. Благодаря этому нет необходимости организовывать обмен данными сразу между тысячами устройств — каждый уровень работает только со своей группой.

Для связи между микроконтроллерами внутри таких групп автор полностью перешел на аппаратный интерфейс SPI. В предыдущих проектах именно обмен данными чаще всего становился источником проблем, поэтому на этот раз архитектуру изначально строили так, чтобы максимально снизить нагрузку на сами процессоры. Каждый управляющий контроллер получил отдельные линии выбора для всех 32 подчиненных микроконтроллеров и мог обращаться к любому из них напрямую.

Источник

Правда, одна из самых серьезных сложностей обнаружилась там, где ее почти не ждали. Сначала bitluni рассчитывал использовать один внешний генератор тактового сигнала для всей группы из 32 микроконтроллеров. Но тут ничего не вышло: сигнал быстро искажался из-за нагрузки, а часть чипов вообще отказывалась запускаться. Разбираясь в причинах, автор выяснил, что CH570 не поддерживает тот режим внешнего тактирования, на который он рассчитывал. Ошибка обошлась дорого — проект пришлось откатить на несколько недель назад, заново переработать схему и заказать новые платы.

В итоге каждому из 8 192 микроконтроллеров пришлось установить собственный кварцевый резонатор. Количество компонентов резко выросло, разводка печатных плат стала намного сложнее, зато система наконец заработала стабильно. Именно после этого удалось перейти от небольших тестовых модулей к полноценным вычислительным платам.

NVIDIA L4 в облаке Selectel от 37,38 ₽/час

Для запуска современных языковых и мультимодальных моделей.

Подробнее →

Сборка плат и механика

Плотность монтажа оказалась настолько высокой, что для разводки пришлось использовать шестислойные печатные платы. Два внутренних слоя полностью отвели под сплошные полигоны земли, сигнальные дорожки разместили между ними. Кроме того, между многими линиями добавили дополнительные заземленные проводники. Такой подход заметно усложнил проектирование, но помог снизить уровень помех и сохранить целостность сигналов при работе тысяч микроконтроллеров.

Вскоре выяснилось, что планы слишком грандиозны. Готовый проект одной из плат содержал более 5 000 компонентов и свыше 10 000 переходных отверстий. Компания-партнер просто не могла обработать такой объем данных, поэтому конструкцию пришлось переработать. Вместо одной большой платы разработчик разделил каждый вычислительный модуль на две части, пожертвовав изначальной компоновкой ради упрощения и запуска производства.

В результате вся система получила модульную конструкцию. Основными строительными блоками стали так называемые «лопасти» — платы, содержащие вычислительные узлы и управляющие контроллеры. Они подключаются к общей базовой плате через PCIe, что позволяет постепенно наращивать систему, заменять отдельные модули и тестировать их независимо друг от друга. Эту версию автор собрал из 16 таких модулей.

После получения тестовых плат стало ясно, что основная работа только начинается. Одни ошибки обнаруживались сразу при включении, другие проявлялись лишь после длительного тестирования. Где-то пришлось исправлять перепутанные линии SPI, где-то искать причины нестабильной работы отдельных узлов, а где-то заново заказывать платы после изменений в разводке. По сути, проект развивался через постоянные итерации: каждая новая сборка выявляла вещи, которые невозможно было предсказать на этапе проектирования.

Питание и охлаждение

Еще на этапе проектирования стало понятно, что главным ограничением окажется вовсе не вычислительная мощность, а энергопотребление. Каждый микроконтроллер потребляет около 10 мА, поэтому для системы из 65 000 чипов ток достигал бы примерно 650 А при напряжении 3,3 В. Это уже около 2 кВт только на сами микроконтроллеры, без учета светодиодов и потерь в системе питания. По сути, разработчик практически уперся в максимальную мощность, которую можно получить от обычной розетки.

Именно поэтому все и сократили до 8 192 вычислительных узлов, о чем говорилось выше. Правда, даже в таком виде система потребляет более 2 кВт. Источником питания стал компьютерный блок Corsair мощностью 3 кВт, а напряжение 12 В преобразовывалось в 3,3 В с помощью 20 высокоэффективных понижающих модулей Murata, каждый из которых способен отдавать до 30 А. По словам bitluni, он выбрал их не только из-за высокой эффективности, но и потому, что по соотношению цены и допустимого тока они оказались одним из лучших вариантов.

Источник

Не меньше внимания пришлось уделить разводке питания. При токах в сотни ампер даже небольшое сопротивление дорожек способно вызвать заметное падение напряжения. Поэтому силовые цепи проектировали отдельно, используя утолщенные медные слои платы. Вычислительные модули подключались через разъемы XT60, которые обычно применяют в моделизме и другой мощной электронике.

Почти вся потребляемая энергия в итоге превращается в тепло, поэтому сначала планировалось использовать иммерсионное охлаждение. Автор даже спроектировал конструкцию корпуса под такой вариант. Однако подходящую охлаждающую жидкость оказалось непросто найти — многие составы исчезли с рынка из-за экологических ограничений, а полноценная система с насосами и радиаторами заметно увеличивала стоимость проекта. В результате оставили «воздушку» с мощными вентиляторами, а к идее иммерсионной системы автор вернется в следующих версиях.

Как программировать тысячи чипов

Когда дело дошло до прошивки микроконтроллеров, выяснилось, что привычные способы здесь уже не работают. Даже если на прошивку одного чипа уходит всего несколько секунд, вручную повторить эту процедуру тысячи раз практически нереально. Процесс пришлось автоматизировать.

В качестве основы автор использовал обычный 3D-принтер Bambu. На его печатающей головке закрепил небольшой держатель с подпружиненными контактами, а для самой платы напечатал специальную рамку. После калибровки принтер автоматически перемещался от одного микроконтроллера к другому, прижимал контакты к площадкам программирования и запускал запись прошивки.

За работу отвечал набор самописных скриптов на Python. Они управляли перемещением принтера, вызывали OpenOCD для записи прошивки и проверяли результат. Если какой-то микроконтроллер не удавалось прошить с первой попытки, программа немного смещала головку и повторяла операцию. По мере работы этот инструмент постоянно дорабатывался, пока не удалось добиться практически безошибочной прошивки всех плат.

Во время испытаний обнаружилась еще одна неприятная ошибка. При разводке были перепутаны линии MOSI и MISO, из-за чего микроконтроллеры не могли нормально обмениваться данными по SPI. К счастью, все это удалось устранить без выпуска новой партии плат: заранее предусмотренные последовательные резисторы позволили исправить ошибку несколькими проводными перемычками. Только после этого инженер смог проверить работу системы на полной скорости и отправить в производство остальные модули.

Результат и планы на будущее

Спустя полгода работы автору удалось довести систему до рабочего состояния. Первая версия объединяет 8 192 микроконтроллера и способна выводить изображение в разрешении QVGA. Каждый чип управляет собственным RGB-светодиодом, поэтому вся конструкция одновременно служит вычислительным кластером и большой светодиодной матрицей.

Разумеется, конкурировать с современными видеокартами такая разработка не может. Возможности отдельных микроконтроллеров слишком скромны, а значительная часть времени уходит на обмен данными между тысячами узлов. Однако сама идея оказалась вполне работоспособной: автору удалось объединить несколько тысяч независимых чипов в единую вычислительную архитектуру, которая действительно выполняет поставленные задачи.

Разработчик не строит иллюзий по поводу своего детища. Конструкция получилась огромной, потребляет более двух киловатт электроэнергии и потребовала шести месяцев разработки. Но именно ради этого все и затевалось. Целью было не создать дешевую замену современному GPU, а выяснить, насколько далеко можно зайти, если строить вычислительную систему из тысяч самых обычных микроконтроллеров.

И на этом история не заканчивается. Компоненты для следующей версии уже закуплены, а количество микроконтроллеров планируется увеличить до 32 000. Кроме того, автор обещает выпустить отдельное видео, посвященное программной части проекта, и опубликовать материалы разработки. Если нынешняя версия доказала, что сама идея вполне жизнеспособна, то планы для следующей — найти предел возможностей такой конструкции.

Комментарии (16)


  1. VelocidadAbsurda
    20.07.2026 08:19

    Здорово, но интересна и архитектура программной/логической стороны: что именно делает каждый из 8192 МК? Просто выводит присланное ему RGB на один светодиод? Или что-то знает и о соседних пикселях и отрабатывает какой-нибудь пиксельный шейдер?


    1. TemArtem
      20.07.2026 08:19

      Скорее всего тупо дергает ШИМ для светодиода по прерыванию от SPI. Для шейдеров там банально памяти не хватит


      1. VelocidadAbsurda
        20.07.2026 08:19

        Ну вот тоже подумалось, что никакой это не GPU, а «драйвер матрицы»


  1. danyagolubev
    20.07.2026 08:19

    Вот это уровень инженерного безумия в хорошем смысле. Не ради рекордов, а ради понимания, где пределы технологий. Такие проекты и двигают прогресс.


    1. DrGluck07
      20.07.2026 08:19

      А я этсамое, чисто плюшками баловался, в рамках освоения контроллера.


  1. cahbeua
    20.07.2026 08:19

    А кто знает куда делись монструозные сборки из пс2 которые каким то образом умудрялись делать вычислительными серверами?


    1. Yamazaki123
      20.07.2026 08:19

      Безнадёжно устарели. Жрёт электричество как кластер, по производительности уступает смартфону.


    1. blind_oracle
      20.07.2026 08:19

      Из PS3, наверное? Которые были на процессорал Cell


  1. JoshMil
    20.07.2026 08:19

    Любопытно какие задачи можно выполнять над одним пикселем целым контроллером? Почему такое решение?


    1. DrGluck07
      20.07.2026 08:19

      Может там выполняются шейдеры? Но тогда должна быть информация о соседних пикселях. Было бы логично, если бы эта штука обрабатывала массив 2х2 (или 4х4) пикселей, например. Хотя тогда непонятно как ими управлять, пинов не хватит.


  1. TemArtem
    20.07.2026 08:19

    Затраты на текстолит и компоненты тут явно превысили стоимость rtx 4090, но ради хайпа на ютубе и спонсорства от Altium оно того стоило


  1. Moog_Prodigy
    20.07.2026 08:19

    У того же bitluni есть хорошие примеры для 8266 и ESP32 - формирование и вывод изображения на vga мониторы, я сам повторял их. Одного чипа хватает, чтобы выводить графику как в первой Элите (а то и сложнее) на хорошей скорости. Чего тут делают 8 тысяч чипов, пусть более простых, я не до конца понял.


  1. DungeonLords
    20.07.2026 08:19

    Тем временем A new open-source “soft” GPU project called GlandaGPU has submitted an RFC (Request for Comments) patch series to be included as a mainline Linux kernel graphics driver.


  1. Daddy_Cool
    20.07.2026 08:19

    Ну не знаю... По моему это арт-объект в пространстве вычислительной техники. Там где-то рядом Doom в окне с загрузкой ядер суперкомпьютера... разгон процессора Celeron при помощи криогенной системы... и прочие красоты.


  1. punhin
    20.07.2026 08:19

    я вот о чём подумал... в какой-то момент окажется, что такой системе понадобится двухфазная система жидкостного охлаждения (на чипе хладагент закипает и испаряется, в верхней части герметичной ёмкости, в которую упакованы все тысячи чипов, снова конденсируется, отдавая тепло наружу).


  1. qwe101
    20.07.2026 08:19

    Как насчёт ИИ на всём этом?