Представь, что ты купил мощный автомобиль. Огромный двигатель, хорошая трансмиссия, полный бак. Ты давишь педаль в пол, машина разгоняется, но в какой-то момент электроника говорит:
«Хватит. Быстрее тебе нельзя».
Не потому, что двигатель не может. Не потому, что он перегрелся. Просто где-то внутри блока управления стоит ограничитель.
А теперь представь, что спустя несколько лет кто-то добрался до этого блока, изменил несколько защищённых настроек и обнаружил: машина всё это время могла ехать значительно быстрее.
Примерно это сейчас происходит с некоторыми видеокартами NVIDIA.
Исследователи проекта gpu-unlock добрались до защищённой части загрузочной цепочки GPU семейства Ampere и научились менять внутренние регистры, управляющие скоростью выполнения некоторых вычислительных инструкций.
На RTX 3090 и родственных картах прирост в определённых матричных вычислениях достигает десятков процентов. На RTX 4090 в отдельном проекте некоторые FP16/BF16 Tensor-операции вообще показали почти двукратный рост instruction throughput.
И самое интересное:
это не обычный разгон.
Частоту ядра не выкручивали до безумия. Напряжение не заливали ведрами. Штатный драйвер NVIDIA после процедуры продолжал работать.
Исследователи просто нашли дверь, которую раньше нельзя было открыть.
Если вы уже побежали покупать RTX 3090
Остановитесь.
Если вы решили, что теперь Cyberpunk даст +80% FPS, можете закрывать статью и спокойно жить дальше.
Этого не произошло.
RTX 3090 не стала на 80% быстрее во всех задачах. Игры внезапно не получили вторую видеокарту бесплатно. Пропускная способность памяти не удвоилась.
Разблокирован совершенно конкретный механизм, связанный прежде всего со скоростью выдачи некоторых Tensor Core инструкций FP16/BF16 с накоплением FP32.
Поэтому реальные приложения получают разный эффект.
LLM prefill и тяжёлые матричные операции могут ускоряться заметно. В опубликованных результатах для Ampere прирост LLM prefill составляет примерно 14-36%.
А вот LLM decode часто упирается уже в память, поэтому чудес там почти нет.
Если вам достаточно ответа «видеокарта стала быстрее» - вот он.
Дальше будет хуже.
Останутся SEC2, Booter, ROP, PLM и защищённые регистры.
Нормальные люди на этом месте обычно уходят.
Инженеры почему-то продолжают читать.
Хорошо. Закрываем дверь
Внутри GPU NVIDIA находится не только огромная вычислительная машина.
Там существует собственная цепочка доверенной загрузки, микроконтроллеры, защищённая прошивка и отдельные уровни привилегий.
Один из участников этого процесса называется SEC2 - Security Engine 2.
При запуске GPU он выполняет подписанный NVIDIA Booter. Тот участвует в проверке, расшифровке и запуске следующих компонентов прошивки.
То есть это как охранник внутри самой видеокарты.
И именно у охранника обнаружилась проблема.
В используемом Booter исследователи нашли классический buffer overflow, позволяющий повредить стек.
Сам по себе переполненный буфер ещё не означает полный контроль. Но дальше начинается старое доброе искусство эксплуатации памяти.
Исследователи построили ROP-цепочку.
Вместо загрузки собственного неподписанного кода они заставляют процессор последовательно выполнять уже существующие фрагменты легитимной подписанной прошивки NVIDIA.
Получается почти издевательски красивая конструкция:
защищённая прошивка сама выполняет действия, которые защита должна была запрещать.
А что именно было закрыто?
Вот здесь история становится особенно интересной.
В GPU существуют регистры SM Speed Select, определяющие темп выдачи различных вычислительных инструкций.
Для части операций карта работала не на полном доступном темпе.
Проблема исследователя очевидна: просто взять Linux-драйвер и записать новые значения в эти регистры нельзя.
Попытка записи игнорируется.
Потому что перед ними стоит ещё один замок - Privilege Level Mask, PLM.
Обычному хосту туда нельзя.
Зато подписанная прошивка, выполняющаяся внутри защищённого контекста SEC2, необходимыми привилегиями обладает.
И вот зачем понадобилась уязвимость Booter.
ROP-цепочка используется для изменения защищённого PLM. После этого ранее недоступные Speed Select регистры становятся доступными для записи.
Дальше модуль выставляет значения полной скорости, выполняет Function Level Reset и...
уходит со сцены.
После этого загружается обычный, немодифицированный драйвер NVIDIA.
Он видит видеокарту.
CUDA работает.
А изменённое состояние регистров сохраняется.
Никакого постоянно висящего «волшебного драйвера», который каждую секунду обманывает систему, для самого эффекта не требуется.
Ограничитель уже снят.
И сколько там на самом деле?
Вот здесь заканчивается TikTok и начинаются измерения.
Для семейства RTX 30 опубликованные пользовательские тесты показывают различный результат в зависимости от модели и power limit.
RTX 3090 демонстрирует примерно +25-67% BF16 GEMM в опубликованных отчётах.
RTX 3090 Ti показывает до +68-80%.
RTX 3080 - около +70%.
RTX 3070 - до +73-81%.
То есть сама история о громадном приросте не выдумана.
Но превращать её в заголовок «NVIDIA скрывала 80% мощности RTX 3090» нельзя.
Это будет ложью.
Ограничение касается определённых классов инструкций, а итоговое ускорение программы зависит от того, что именно программа делает.
И тут появляется RTX 4090.
Отдельная ветка исследования добралась уже до Ada.
В тестах RTX 4090 FP16 с накоплением FP32 вырос примерно с 165,6 до 331,6 TFLOPS.
BF16/FP32 - примерно с 165,5 до 330,6 TFLOPS.
Практически ровно в два раза.
Позднее независимый прогон получил близкий результат: около 160 → 320 TFLOPS.
При этом INT8 и обычный scalar FP32 практически не изменились.
Вот это последнее предложение особенно важно.
Оно прекрасно показывает, что исследователи не нашли мистическую кнопку «СДЕЛАТЬ ВИДЕОКАРТУ В ДВА РАЗА БЫСТРЕЕ».
Они нашли конкретный аппаратный ограничитель конкретных вычислительных путей.
И вот теперь становится действительно интересно
Эта история вообще не про бесплатный разгон RTX.
Она про границу между железом и программной политикой.
Мы привыкли считать характеристики процессора или видеокарты физическим свойством устройства.
Вот столько ядер.
Вот такая память.
Вот столько TFLOPS.
Вот предел.
Но современный ускоритель давно перестал быть просто куском кремния.
Это кремний плюс микрокод плюс firmware плюс fuse-конфигурация плюс таблицы возможностей плюс защищённые регистры плюс драйвер плюс политика производителя.
И иногда между словами:
«железо не может»
и
«железу не разрешили»
лежит всего несколько битов.
В случае gpu-unlock исследователи не перепаивали RTX 3090.
Они изменили правила, по которым уже существующее железо разрешало использовать собственные вычислительные блоки.
А попасть к этим правилам удалось благодаря уязвимости в защищённой загрузочной цепочке.
Вот почему для меня это прежде всего история о безопасности.
Защита, которая охраняет не только тебя
Secure Boot обычно объясняют просто:
он защищает устройство от запуска чужого кода.
Правильно.
Но доверенная вычислительная среда одновременно защищает и политику производителя от владельца устройства.
Пока цепочка доверия цела, некоторые настройки аппаратуры существуют буквально у тебя на столе, но изменить их ты не можешь.
Ты владеешь видеокартой.
Но не всеми решениями, которые принимает видеокарта.
И достаточно одной ошибки в доверенном компоненте, чтобы граница внезапно сдвинулась.
В данном случае такой ошибкой стал Booter.
Получив возможность действовать внутри привилегированного контекста, исследователи добрались не до «секретных дополнительных Tensor Cores».
Никаких спрятанных ядер там не появилось.
Они получили доступ к уже существующим возможностям кремния.
Что будет дальше
Самое интересное сейчас даже не 3090.
RTX 30 давно стала любимицей домашних AI-серверов именно благодаря сочетанию цены, 24 ГБ памяти у 3090 и огромного количества бывших в употреблении карт.
Если дальнейшие тесты подтвердят стабильность, совместимость и реальный выигрыш в LLM, diffusion, FlashAttention и других матрично-нагруженных задачах, старые Ampere могут получить неожиданную вторую жизнь.
Но пока это исследовательский проект.
Есть разные платы, разные прошивки, разные лимиты мощности и разные нагрузки. Из успешного теста нельзя автоматически делать вывод, что любая RTX завтра станет профессиональным ускорителем.
И уж точно не стоит превращать рабочую видеокарту за серьёзные деньги в лабораторную мышь только потому, что кто-то написал в Reddit «+80%».
Пусть сначала мышами побудут люди, которые умеют читать kernel log.
Стеклянный мост
У этой истории есть прекрасный парадокс.
Инженеры годами строили внутри GPU всё более сложные стены доверия: подписанную прошивку, защищённые области памяти, privilege masks, security processors.
А исследователи не стали ломать стену.
Они нашли ошибку у охранника.
Охранник открыл служебную дверь.
За дверью обнаружился переключатель.
И выяснилось, что часть мощности огромной вычислительной машины всё это время находилась не за физическим пределом кремния.
Она находилась за словом:
«нельзя».
Иногда между «невозможно» и «разблокировано» действительно лежит один бит.
И один человек, которому стало интересно, зачем этот бит вообще существует.