Chip design from the bottom up – Reiner Pope

В этом видео Дваркеш Патель беседует с Райнером Поупом, генеральным директором компании MatX, разрабатывающей ИИ-чипы. Разговор посвящен глубокому техническому разбору того, как функционируют процессоры для искусственного интеллекта на самом фундаментальном уровне — от базовых логических вентилей до архитектуры целых вычислительных систем.
Главная мысль видео заключается в том, что архитектура ИИ-чипов (таких как TPU и GPU) продиктована необходимостью минимизировать затраты энергии на перемещение данных. В отличие от классических процессоров (CPU), где большая часть площади и энергии уходит на кэширование и предсказание ветвлений, ИИ-чипы жертвуют гибкостью ради размещения гигантских систолических массивов, которые выполняют матричные умножения с максимальной энергоэффективностью.
Базовые принципы вычислений на чипе
Фундаментальные примитивы и операция MAC 00:20: На самом базовом уровне любой чип состоит из логических вентилей (И, ИЛИ, НЕ), соединенных металлическими проводниками. Для ИИ-чипов главной математической операцией является перемножение матриц, которое сводится к базовому примитиву — операции умножения с накоплением (Multiply-Accumulate, MAC). Эта операция берет пару чисел, перемножает их и прибавляет результат к уже существующему значению аккумулятора.
Разница в точности вычислений 01:08: В ИИ-чипах точность аккумулятора почти всегда выше, чем точность самих перемножаемых чисел. Например, чип может умножать 4-битные числа, но складывать результат в 8-битный аккумулятор. Это связано с тем, что при перемножении матриц происходит сложение огромного количества чисел (сотен или тысяч), и если использовать низкую точность для накопления, ошибки округления будут накапливаться слишком быстро, разрушая полезный сигнал.
От логических вентилей к умножителям
Создание частичных произведений 03:42: Чтобы перемножить два 4-битных числа на аппаратном уровне, чип использует логические вентили «И» (AND). Поскольку умножение одного бита на другой дает 1 только в том случае, если оба бита равны 1, вентиль «И» идеально выполняет эту функцию. Для перемножения двух 4-битных чисел требуется сгенерировать 16 частичных произведений, что требует ровно 16 вентилей «И». В общем случае для умножения P-битного числа на Q-битное требуется P*Q вентилей «И».
Полные сумматоры (Full Adders) 06:15: Для сложения полученных частичных произведений используется логический блок, называемый полным сумматором. Он принимает на вход 3 однобитных числа (два слагаемых и бит переноса из предыдущего разряда) и выдает 2-битный результат (сумму и новый бит переноса). По сути, полный сумматор работает как «компрессор 3-в-2», сокращая количество битов, которые нужно сложить на следующем этапе.
Умножитель Дадда (Dadda multiplier) 08:13: Чтобы эффективно сложить все частичные произведения, полные сумматоры объединяются в древовидную структуру. Чип берет столбцы битов и постоянно применяет к ним компрессоры 3-в-2, пока в каждом столбце не останется всего по два бита. После этого применяется финальное сложение. Для создания такого умножителя P на Q битов требуется не только P*Q вентилей «И», но и примерно P*Q полных сумматоров.
Проблема перемещения данных и мультиплексоры
Затраты на выбор данных 16:31: В классической архитектуре данные хранятся в регистровом файле. Чтобы передать нужные числа в арифметико-логическое устройство (ALU), используются мультиплексоры (MUX). Мультиплексор — это схема, которая выбирает один из N входов на основе управляющего сигнала. Например, чтобы выбрать одно из 8 чисел, мультиплексору требуется 16 вентилей «И» и 7 вентилей «ИЛИ» на каждый бит данных.
Энергоэффективность вычислений против перемещения 20:18: Физическое перемещение данных из регистрового файла через мультиплексоры в ALU стоит невероятно дорого с точки зрения энергии. Около 7/8 всей потребляемой энергии уходит на зарядку и разрядку емкости металлических проводов и работу мультиплексоров, и лишь 1/8 энергии тратится на саму полезную математику (умножение и сложение) внутри ALU.
Архитектура систолических массивов
Матрично-векторное умножение 12:18: При умножении матрицы на вектор чип использует сетку из MAC-устройств. Каждое устройство умножает элемент матрицы на элемент вектора и прибавляет результат к сумме, которая передается по столбцу сверху вниз. В наивной реализации матрицу пришлось бы каждый такт заново загружать из памяти, что привело бы к колоссальным затратам энергии на перемещение данных.
Принцип работы систолического массива 15:53: Чтобы решить проблему энергозатрат, ИИ-чипы (например, TPU) используют систолические массивы. В этой архитектуре веса (элементы матрицы) загружаются в вычислительные блоки один раз и остаются там неподвижными (stationary). Входные данные (векторы) текут через массив по горизонтали, а частичные суммы текут по вертикали. Это устраняет необходимость в постоянном чтении из регистрового файла и использовании огромных мультиплексоров.
Квадратичное масштабирование площади 28:24: Площадь, занимаемая умножителем на кристалле, растет квадратично в зависимости от разрядности (P*Q). Именно поэтому переход от точности FP8 к FP4 дает такую огромную выгоду: площадь умножителя сокращается в 4 раза, что позволяет разместить на том же кристалле в 4 раза больше вычислительных блоков при тех же затратах энергии.
Тактовая частота и конвейеризация
Синхронизация и тактовый сигнал 25:23: Чип состоит из миллиардов транзисторов, работающих параллельно. Для их синхронизации используется глобальный тактовый сигнал (clock). В начале такта данные выходят из регистров, проходят через «облако» логических вентилей, и к следующему такту результат должен успеть записаться в следующий регистр. Максимальная тактовая частота чипа строго ограничена самым длинным путем (задержкой), который сигнал должен пройти через логику.
Конвейеризация (Pipelining) 26:44: Если разработчики хотят увеличить тактовую частоту (например, с 1 ГГц до 2 ГГц), они разрезают логическое «облако» пополам и вставляют посередине дополнительный конвейерный регистр. Теперь сигналу нужно пройти в два раза меньшее расстояние за один такт. Это удваивает пропускную способность чипа, но требует дополнительных затрат площади и энергии на новые регистры. Это классический компромисс между скоростью и площадью кристалла.
Сравнение архитектур: CPU, GPU, TPU и FPGA
Почему FPGA неэффективны для ИИ 30:13: FPGA (ПЛИС) используют таблицы поиска (LUT) вместо жестко заданных логических вентилей. LUT с 4 входами — это, по сути, 16-битная память SRAM и 16-входовый мультиплексор, который может симулировать любой логический вентиль. Из-за этой универсальности реализация одной и той же логики на FPGA требует в 10-100 раз больше площади и энергии, чем на специализированном ASIC (каким является TPU).
CPU против GPU/TPU 32:28: Центральные процессоры (CPU) созданы для непредсказуемых задач. Огромная часть их кристалла занята кэшами, предсказателями ветвлений и сложной логикой управления, чтобы справляться с недетерминированными задержками (например, промахами кэша). В ИИ-задачах поток управления предельно предсказуем (простые циклы `for`), поэтому GPU и TPU избавляются от этой логики управления, отдавая освободившуюся площадь под тысячи вычислительных блоков (ALU).
Разница между GPU и TPU 34:24: GPU все еще сохраняют некоторую гибкость: они разбиты на множество мелких потоковых мультипроцессоров (SM) с аппаратными планировщиками потоков. TPU идут еще дальше в сторону специализации: они используют гигантские монолитные систолические массивы (например, 128x128) и программно-управляемую память (scratchpad) вместо аппаратных кэшей. Это делает TPU сложнее в программировании, но обеспечивает максимальную плотность вычислений на квадратный миллиметр кремния.
🔍 Анализ: фактчек и польза
ФАКТЧЕК
В ИИ-чипах точность аккумулятора почти всегда выше, чем точность самих перемножаемых чисел (например, умножение 4-битных, сложение в 8-битный или выше) — ✅ подтверждается: В современных ИИ-ускорителях (например, Nvidia Tensor Cores или Google TPU) при умножении чисел низкой разрядности (INT4, FP4, FP8) результат накапливается в регистрах более высокой точности (FP16, FP32 или INT32). Это критически важно, так как при сложении тысяч частичных произведений в матрицах низкая разрядность аккумулятора привела бы к быстрому накоплению ошибки округления и разрушению полезного сигнала.
Около 7/8 всей потребляемой энергии уходит на перемещение данных и работу мультиплексоров, и лишь 1/8 — на саму полезную математику — ✅ подтверждается: В архитектуре процессоров перемещение данных (из SRAM или регистров в ALU) действительно потребляет на порядки больше энергии, чем вычисления. По классическим исследованиям в области архитектуры чипов, чтение 32-битного числа из кэша стоит в десятки раз больше пикоджоулей, чем сама операция сложения, что делает проблему энергозатрат на шины и мультиплексоры главным узким местом ИИ-ускорителей.
Переход от точности FP8 к FP4 сокращает площадь умножителя в 4 раза из-за квадратичного масштабирования — ✅ подтверждается: На аппаратном уровне площадь умножителя растет пропорционально квадрату разрядности операндов ($O(N^2)$). Уменьшение количества бит в 2 раза (с 8 до 4) сокращает количество необходимых логических вентилей «И» и сумматоров примерно в 4 раза, что позволяет разместить на кристалле кратно больше вычислительных блоков при тех же затратах кремния.
Реализация логики на FPGA требует в 10-100 раз больше площади и энергии, чем на специализированном ASIC (TPU), из-за использования LUT — ✅ подтверждается: Согласно фундаментальным исследованиям (например, Kuon & Rose), FPGA в среднем занимают в 20-40 раз больше площади на кристалле и потребляют в 10-12 раз больше динамической энергии по сравнению с жестко заданной логикой ASIC. Универсальность программируемых таблиц поиска (LUT) и гибкой маршрутизации обходится огромной ценой в транзисторном бюджете и энергоэффективности.
TPU используют монолитные систолические массивы (128x128) и программно-управляемую память (scratchpad) вместо аппаратных кэшей — ✅ подтверждается: Ядром Google TPU является Matrix Multiply Unit (MXU) — систолический массив размерностью 128x128 (в новых поколениях 256x256). В отличие от CPU и GPU, где кэшированием управляет сложная аппаратная логика, в TPU используется scratchpad-память, куда данные загружаются явными инструкциями компилятора, что обеспечивает детерминированность вычислений и экономит площадь кристалла.
ЛИЧНО ДЛЯ ТЕБЯ
Физический предел удешевления API: Квадратичная экономия площади чипа при снижении разрядности (с FP8 до FP4) объясняет, почему инференс LLM сейчас стремительно дешевеет. Однако этот процесс имеет жесткий предел: ниже 2-4 бит квантовать модели без разрушения логики почти невозможно, а значит, в ближайшие годы стоимость генерации токенов в ChatGPT или Claude стабилизируется, и строить юнит-экономику проектов на ожидании «бесконечного удешевления AI» опасно.
Стоимость контекста в LLM: Инсайт о том, что перемещение данных сжирает львиную долю энергии чипа, объясняет, почему обработка огромных контекстов (RAG, длинные истории переписок в ботах) всегда будет дорогой. Для твоих Telegram-ботов архитектурно выгоднее жестко фильтровать контекст и передавать в API только релевантные куски, так как провайдеры всегда будут закладывать в прайс физические затраты на перенос гигабайтов весов и кэша внимания (KV-cache) внутри GPU/TPU.
Почему Apple и стартапы делают ставку на NPU: Понимание разницы между CPU (гибкость) и TPU (систолические массивы) объясняет тренд на внедрение AI-чипов в потребительскую электронику. В перспективе 1-2 лет локальный инференс небольших моделей на устройствах пользователей станет нормой, что позволит тебе перенести часть вычислений из облака прямо на смартфоны клиентов, снизив затраты на серверную инфраструктуру.