Содержание
Самодельный GPU на RISC-V у Matthias Balwierz, известного как Bitluni, уже использует 8192 микроконтроллера и тянет 2161 Вт. Формально это не только видеокарта, но и монитор: к каждому чипу он припаял RGB-светодиод.
Идея звучит как шутка из эпохи DOS, но проект вполне реальный. Balwierz хотел собрать дисплей, а в итоге пришел к конструкции, где каждый микроконтроллер отвечает за один светящийся пиксель. Так он убрал отдельную матрицу и упростил часть схемы.
8192 ядра вместо CUDA: как устроена сборка
Balwierz сначала планировал отдельный экран, но быстро уперся в цену и сложность разводки. Поэтому он выбрал прямую схему: каждый QingKe CH570 считает свой пиксель и сразу зажигает припаянный к нему RGB-светодиод.
Полноценный вариант должен получить разрешение 320 x 200. Это 64 000 пикселей, то есть 64 000 микроконтроллеров. Цифры знакомые тем, кто помнит старые DOS-игры. Для Full HD потребовалось бы уже больше двух миллионов чипов, и тут домашняя сборка быстро превращается в склад электроники.
Текущая версия ограничилась 8192 чипами. Balwierz разбил конструкцию на платы по 16 x 32 «пикселя» и собрал их в круговую компоновку. Внешне она напоминает суперкомпьютер Cray-1, только вместо классических индикаторов тут целая россыпь RGB-точек.
- Чип: QingKe CH570 с 32-битным RISC-V CPU
- Частота: до 100 МГц
- Связь: USB-контроллер, 2,4 ГГц-трансивер и Bluetooth 5.0 LE
- Цена: $0,13 за микроконтроллер, около 10 рублей
- Управление: каждые 32 MCU контролирует более мощный CH32V
Для одного чипа $0,13 выглядит смешно. Но для массива 320 x 200 только микроконтроллеры потянут больше чем на $8000, около 620 000 рублей. И это без плат, питания, сборки, брака и времени за паяльником.
2161 Вт и 655 А: питание тут сложнее графики
Самая жесткая цифра проекта — не количество ядер, а питание. Каждый MCU потребляет около 10 мА, но при 8192 штуках выходит 2161 Вт, или примерно 655 А при 3,3 В. На бумаге один чип скромный, в сумме получается небольшой обогреватель.
Balwierz взял блок питания Corsair WS3000 ATX и добавил собственные преобразователи с 12 В на 3,3 В. Такой ток нельзя просто прогнать через пару дорожек на плате. Тут уже начинается инженерия уровня серверного железа, только собранная из доступных компонентов.
Он сам спроектировал печатные платы, силовые цепи, интерфейсные и тестовые платы. Для него это первый опыт с шестислойной PCB. По ходу работы он уперся в ограничения сервиса JLCPCB по проектированию таких плат.
Изначально Balwierz хотел залить всю конструкцию в иммерсионное охлаждение. Он даже просчитал подходящий акриловый контейнер. Потом отказался от этой идеи из-за цены и экологических соображений.
Прошивка через 3D-принтер выглядит почти разумно
Самый красивый хак в проекте связан не с графикой, а с программированием тысяч одинаковых чипов. Balwierz напечатал на 3D-принтере трехконтактную вилку, закрепил ее на каретке принтера и написал Python-скрипт для прямой подачи G-code.
Принтер стал координатным станком. Он подводит контакты к нужному микроконтроллеру на плате, а скрипт последовательно прошивает MCU. Руками повторять эту операцию тысячи раз — надежный способ возненавидеть собственный проект к вечеру.
До конкуренции с Nvidia тут, конечно, дистанция космическая. Но ценность проекта не в FPS и не в трассировке лучей. Мы видим редкий случай, когда человек дома собирает видеоподсистему снизу вверх: от питания и PCB до прошивки каждого «пикселя».
Текущая версия использует 8192 микроконтроллера, а полная матрица 320 x 200 потребует 64 000 QingKe CH570; только чипы для нее стоят больше $8000, около 620 000 рублей.