Разработчик Адам Маджмудар совершил то, что многие считали невозможным для новичка: всего за несколько недель он с нуля спроектировал собственный графический процессор в рамках проекта TinyGPU. В интервью для подкаста The Cognitive Revolution он подробно рассказал, как современные ИИ-инструменты позволяют ускорить обучение сложнейшим инженерным дисциплинам в сто раз. Этот эксперимент не только демистифицирует устройство современных чипов, на которых обучаются передовые нейросети, но и указывает на тектонические сдвиги в самой индустрии полупроводников.
💡 Прорывной эксперимент: от нулевого опыта до архитектуры чипа 4:34
До запуска проекта TinyGPU Адам Маджмудар в течение трех лет развивал технологическую компанию Thirdweb. Отойдя от операционного управления, он решил посвятить себя интенсивным образовательным марафонам на стыке ключевых технологий будущего, стремясь максимально быстро обресить техническую уверенность и глубокое понимание индустрии. Его целью стала проверка радикальной гипотезы: традиционное университетское образование в сфере микроэлектроники, занимающее годы, можно сократить примерно в 100 раз за счет жесткой фокусировки на базовых принципах.
По мнению Маджмудара, для освоения комплексной темы нет необходимости изучать абсолютно все нюансы, поскольку работает условное правило «99/1», где всего один процент фундаментальных знаний обеспечивает основную практическую ценность. В рамках первого двухнедельного спринта исследователь поставил перед собой задачу изучить полный цикл проектирования микросхем — от автоматизации электронного дизайна (EDA) до физического производства на фабриках.
Успешное завершение теоретического этапа подтолкнуло разработчика к созданию осязаемого и полезного проекта. На фоне глобального бума искусственного интеллекта и появления специализированных тензорных процессоров (TPU), Маджмудар остановил свой выбор на создании собственного графического сопроцессора. По задумке автора, TinyGPU должен был стать открытым и понятным учебным пособием, обнажающим внутреннее устройство сложнейших вычислительных систем современности.
🛠️ Преодоление закрытости индустрии и стек открытых инструментов 7:40
Одной из главных трудностей при входе в индустрию проектирования чипов является катастрофическая нехватка качественных образовательных материалов. В отличие от центральных процессоров (CPU), принципы работы которых детально описаны в любом вузовском учебнике, архитектура современных GPU остается закрытой коммерческой тайной. Такие гиганты, как Nvidia, принципиально не публикуют низкоуровневые схемы управления своими кристаллами, из-за чего независимые инженеры до сих пор спорят о точных механизмах функционирования передовых ускорителей.
Ситуация усугубляется баснословной стоимостью профессионального программного обеспечения. Лицензии на проприетарные платформы автоматизации проектирования (EDA) от лидеров рынка, таких как Synopsys или Cadence, обходятся компаниям в сотни тысяч и миллионы долларов за одно рабочее место, что полностью отсекает независимых энтузиастов.
Возрождение хобби-разработки в этой сфере стало возможным благодаря цепочке технологических компромиссов и инициатив, запущенных в последнее десятилетие. Ключевыми факторами демократизации полупроводникового дизайна стали:
- Проект OpenRoad — созданный при поддержке оборонного агентства DARPA открытый программный стек EDA, позволяющий бесплатно трансформировать архитектурные чертежи в физическую топологию кристалла.
- Инициатива компании SkyWater — коммерческая кремниевая фабрика открыла доступ к технологической документации своего техпроцесса на узле 130 нанометров.
- Платформа eFabless — предоставила разработчикам возможность кооперации, позволяя выкупать общее место на кремниевых пластинах для тестового производства чипов за относительно небольшие деньги.
- Проект Tiny Tapeout — краудфандинговая площадка, которая делит стандартный слот стоимостью 10 тысяч долларов между сотней участников, снижая цену входа для конкретного инженера до минимума.
Благодаря этой инфраструктуре Адам Маджмудар получил возможность не просто симулировать логику, но и подготовить полноценный проект чипа, который физически может быть произведен на фабрике бок о бок с проектами других энтузиастов. По мнению гостя, такой подход способен привлечь в полупроводниковую отрасль новое поколение молодых специалистов, что критически важно в эпоху глобального геополитического противостояния вокруг цепочек поставок микросхем.
🧠 Параллелизация против памяти: главные уроки GPU-архитектуры 19:35
Приступая к проектированию, автор выделил три кита, на которых держится любая графическая архитектура: общая логика, механизмы параллелизации и подсистема памяти. Концепция параллельных вычислений в GPU фундаментально отличается от последовательного исполнения команд в классических CPU. Графические чипы созданы для обработки гигантских массивов данных, таких как матрицы в алгоритмах машинного обучения, где операции над отдельными элементами независимы друг от друга и могут выполняться одновременно.
В программировании эта концепция известна как паттерн SIMD (одна инструкция — множество данных), а на аппаратном уровне она трансформируется в SIMT (одна инструкция — множество потоков). Разработчику необходимо написать код для обработки всего одного условного элемента, а аппаратная часть берет на себя задачу размножения этого кода по сотням и тысячам вычислительных ядер.
Однако ключевым озарением в процессе работы для Адама Маджмудара стала критическая роль подсистемы памяти, на которую ему указал известный разработчик Джордж Хотц. Новички часто ошибочно полагают, что производительность GPU упирается в количество математических блоков (ALU) для сложения и умножения. В реальности главным бутылочным горлышком выступает пропускная способность магистралей передачи данных.
Как процитировал Хотца гость программы, проектирование GPU — это по большей части бесконечная борьба с задержками памяти и попытки скрыть эти задержки на разных архитектурных уровнях. Если тысячи ядер одновременно запрашивают аргументы из глобальной динамической памяти (DRAM), они мгновенно исчерпывают доступную полосу пропускания и простаивают в ожидании ответов. Именно поэтому львиную долю площади кристалла современного GPU занимают сложные контроллеры памяти и многоуровневые кэши.
📝 Архитектура набора инструкций (ISA) и логика ядра 26:50
Для реализации математической логики Адаму потребовалось создать собственную архитектуру набора инструкций (ISA), сделав ее настолько минималистичной, насколько это возможно. В качестве базового примера в проекте рассматривается операция поклеточного сложения двух матриц размером 1 на 8 элементов. Традиционная программа для CPU содержала бы цикл, последовательно перебирающий индексы от 0 до 7, что заняло бы как минимум восемь тактов процессора.
В TinyGPU эта задача решается через запуск параллельного программного ядра (kernel), написанного на кастомном ассемблере. Чтобы одинаковые инструкции, одновременно исполняемые разными потоками, обрабатывали разные ячейки памяти, Маджмудар заложил в аппаратный дизайн специальные неизменяемые регистры контекста. В этих ячейках сам процессор на аппаратном уровне публикует уникальные координаты потока:
- Индекс вычислительного блока (Block Index).
- Размерность блока потоков (Block Dimension).
- Внутриблочный индекс текущего потока (Thread Index).
Перемножая и складывая эти аппаратные маркеры, каждый изолированный поток вычисляет собственный уникальный сдвиг адреса в глобальной памяти, загружает нужные элементы матриц A и B, суммирует их и отправляет результат в результирующую матрицу C.
Жесткие ограничения учебного техпроцесса продиктовали предельную компактность ISA TinyGPU. Каждая инструкция имеет строго фиксированную длину 16 бит. Первые 4 бита зарезервированы под код операции (Opcode), что жестко лимитирует систему максимум 16 возможными командами. На адресацию регистров выделено по 4 бита, из-за чего каждому потоку доступно ровно 16 регистров, причем последние три из них (13, 14 и 15) заблокированы под нужды аппаратного контекста.
Для реализации условных переходов и циклов в системе используются спаренные инструкции сравнения (CMP) и условного ветвления (BRnzp). Команда сравнения вычитает значения двух регистров и выставляет флаги в специальном регистре состояния (положительный результат, ноль или отрицательное значение). Следующая за ней инструкция ветвления анализирует эти флаги и, в случае совпадения условий, принудительно меняет значение счетчика команд (Program Counter), заставляя поток прыгать на нужную строчку кода.
🏗️ Физический уровень: диспетчер, ядра и логические вентили 58:36
На верхнем аппаратном уровне TinyGPU разделен на внешнюю интерфейсную часть и внутренний вычислительный массив. Хост-машина (внешний CPU) загружает скомпилированные бинарные инструкции в программную память, исходные массивы данных — в память данных, а общее количество потоков прописывает в регистр управления устройством. После подачи физического сигнала старта управление переходит к аппаратному диспетчеру чипа.
Диспетчер является одним из самых сложных блоков процессора. Его задача — разбивать массив потоков на группы (блоки) по 4 штуки и распределять их по четырем доступным физическим ядрам чипа, отслеживая их готовность по алгоритму Round-Robin. Получив блок, ядро сбрасывает свое внутреннее состояние и запускает конвейер из трех общих узлов:
- Выборщик (Fetcher) — запрашивает актуальную инструкцию из программной памяти.
- Декодер (Decoder) — преобразует бинарный код команды в россыпь аналоговых управляющих сигналов, распределяемых по потокам.
- Шедулер (Scheduler) — координирует тактовую последовательность исполнения.
Внутри каждого ядра TinyGPU параллельно функционируют четыре изолированных процессорных потока. Каждый такой поток обладает собственным счетчиком команд (PC), блоком регистров, арифметико-логическим устройством (ALU) и узлом загрузки-выгрузки (LSU). На уровне ALU логические операции сложения, вычитания, умножения и деления физически происходят одновременно на выделенных микросхемах в каждом такте. Итоговый результат просто отсекается на выходе с помощью мультиплексоров, управляемых декодером инструкции.
Процесс перевода этого логического описания в физический чертеж (харденинг) Маджмудар осуществлял на своем ноутбуке Apple M2 с помощью открытого пакета OpenLane. Программа выполняет сложнейшую цепочку из 50 шагов оптимизации, синтезируя код SystemVerilog в топологию логических вентилей, расставляя элементы по площади виртуального кристалла, разводя дорожки межсоединений и просчитывая паразитные емкости проводов. По признанию автора, ему пришлось пройти через 35 изнурительных циклов отладки из-за запутанных и недокументированных ошибок таймингов, прежде чем утилита сгенерировала финальный файл GDSII для отправки на производство.
🚀 Эволюция полупроводников: ИИ-ассистенты и революция микрочипов 1:41:08
Успех столь стремительного проектирования Адам напрямую связывает с использованием больших языковых моделей. Не имея профильного бэкграунда, он превратил ChatGPT и Claude в интерактивных наставников. Вместо пассивного чтения документации инженер формулировал гипотезы о работе аппаратных блоков и заставлял ИИ валидировать его идеи. По оценке Маджмудара, современные нейросети обладают удивительной инженерной интуицией, выходящей за рамки простого копирования текстов из интернета, что позволяет радикально ускорять освоение сложнейших профессий.
Эксперимент с TinyGPU хорошо иллюстрирует глобальные тренды полупроводниковой индустрии. Спикеры обсудили появление революционных стартапов вроде Atomic Semi, основанных энтузиастами, которые пытаются разрушить монополию гигантских фабрик стоимостью в 10 миллиардов долларов. Подобные проекты создают компактные модульные мини-фабрики, способные за несколько сотен тысяч долларов развернуть локальное производство специализированных чипов прямо в офисе заказчика.
Параллельно меняется и сама архитектура вычислений под нужды ИИ. Ведущий подкаста Нейтан Ленс обратил внимание на недавнее исследование Microsoft, посвященное 1.58-битным нейросетям, где веса моделей принимают всего три значения: -1, 0 и 1. По мнению Маджмудара, переход на тернарную логику сулит колоссальное упрощение чипов будущего. Исчезнет необходимость в громоздких блоках вычислений с плавающей запятой (FLOPS), а размерность регистров и ALU сожмется до минимума, многократно снижая энергопотребление и тепловыделение чипов. Индустрия уже движется в этом направлении: к примеру, в новейшей архитектуре Blackwell компания Nvidia умышленно снижает разрядность типов данных ради кратного роста эффективной скорости ИИ-вычислений.