2026년 10월 31일 (토)

PINKSKY NEWS

매일의 기록을 뉴스처럼

테크

GPU 언락(FP32 accumulation): Turing(RTX 20), Ampere(RTX 30), Ada(RTX 40)에서는 언락이 가능하지만 소비자용 Blackwell(RTX 50)에서는 불가능한 이유와 몇 가지 오해

원문 제목 — GPU unlocks (FP32 accumulation): Why can it be unlocked on Turing (RTX 20), Ampere (RTX 30) and Ada (RTX 40) but no consumer Blackwell (RTX 50) and some misconceptions.

📄 전문 번역

글쓴이는 최근 화제인 GPU 언락에 관한 내용을 직접 정리해 공개했다. 이 언락이 하는 일은 NVIDIA가 시장 세분화를 위해 FP32 누적(FP16, BF16, FP8, TF32 입력을 FP32로 누적하는 방식으로, 대부분의 AI·LLM·ML 작업이 사용하는 방식)에서 텐서 코어 성능을 의도적으로 무력화한 것을 되돌리는 것이다. 텐서 코어를 사용하지 않는 CUDA 코어의 일반 FP32는 영향을 받지 않는다. 소비자용·프로슈머용 GPU는 정확히 동일한 다이를 사용한다. 5090과 6000 PRO 사이의 GB202, 4090과 6000 Ada 사이의 AD102, 심지어 3090 Ti와 A6000은 코어 수와 84개 SM까지 1:1로 같다.

작동 방식은 다음과 같다. 각 종류의 텐서 연산 속도는 공장에서 불에 태워 기록된 퓨즈로 설정되는데, 소비자용 카드의 'FP16/BF16 with FP32 accumulation' 퓨즈는 HALF_SPEED로, 프로 카드는 FULL_SPEED로 기록되어 있다. 이 퓨즈는 회로를 절단하지 않으며 GPU는 부팅 시 이를 읽어 해당 속도로 동작할 뿐이다. GPU에는 이를 FULL_SPEED로 되돌릴 수 있는 오버라이드 레지스터가 있지만 잠겨 있어 NVIDIA의 최고 권한 펌웨어만 쓸 수 있고 PC에서는 쓸 수 없다. 언락은 이 잠금을 열어 오버라이드에 FULL_SPEED를 기록함으로써 소비자용 카드가 NVIDIA가 부과한 제한 성능을 모두 되찾게 한다. SM이나 VRAM을 늘려주는 것이 아니라 4090은 여전히 4090이며 프로 카드와 같은 속도로 해당 명령어를 실행할 뿐이다. Turing, Ampere, Ada에서 언락이 가능한 이유는 이 세대에서 NVIDIA 드라이버 자체가 GPU 내부 보안 마이크로컨트롤러(SEC2, 일종의 Falcon)에 NVIDIA 서명 펌웨어인 Booter를 적재해 GSP를 시작하기 때문이다. Booter는 GPU의 최고 권한 모드인 Heavy Secure(HS)에서 실행되며 바로 이 모드만이 잠금을 열 수 있다.

2026년 6월 Jon Pry는 논문 'A Canary in the Crypto Mine'에서 최신 드라이버의 Booter에 버퍼 오버플로우가 있음을 공개했다. Booter는 길이를 공격자가 조절할 수 있는 방식으로 '서명' 데이터를 복사해 스택(이를 막기 위한 스택 카나리까지 포함)을 오버플로우시키고 HS 모드에서 실행 중인 Booter를 장악할 수 있다는 것이다. 서명 검사는 여전히 통과하는데 NVIDIA 자체 서명 코드가 실행 중이고 버그가 그 코드 내부에 있기 때문이다. 언락은 NVIDIA 자체 Booter의 명령어를 재사용해 잠금을 열고 오버라이드에 FULL_SPEED를 기록한 뒤 카드를 리셋하고 일반 NVIDIA 드라이버가 적재되게 한다. 언락은 리셋과 드라이버 재적재 후에도 유지되지만 전원을 끄면 사라지므로 NVIDIA 드라이버가 적재되기 전 매 부팅마다 실행된다. 이 기법은 처음에 채굴 카드(CMP 170HX, FP32를 1/32 속도에서 풀 속도로, VRAM을 10GB에서 80GB로)에 적용된 뒤 GeForce로 포팅되었으며 Turing용(UEFI, Linux), Ampere용(Linux 커널 모듈), Ada용(Linux 커널 모듈) GitHub 저장소가 공개되어 있다. 언락되는 항목은 FP32 누적 FP16(Turing, Ampere, Ada), FP32 누적 BF16(Ampere, Ada, Turing은 BF16 미지원), TF32(Ampere, Ada), FP32 누적 FP8(Ada, Turing과 Ampere는 FP8 미지원)이다. 저장소의 수치로는 4090의 FP16/BF16 with FP32 acc가 165에서 331 TFLOPS(원시 명령어 처리율)로, 3090 Ti의 BF16 GEMM이 87에서 157 TFLOPS로, 2080 Ti의 FP16 with FP32 acc가 47에서 94 TFLOPS로 상승하며 실제 GEMM에서는 카드가 전력 한계에 도달해 2배 미만의 향상에 그친다.

소비자용 Blackwell이 언락되지 않는 이유는 제한이 달라져서가 아니라 문이 달라졌기 때문이다. 글쓴이가 직접 확인한 바로는 5090, 5080, 5070 Ti에는 FP32 누적 퓨즈가 설정되어 있고 6000 PRO, 4000 PRO에는 없었으며 즉 하드웨어 차이도 아니다. Hopper부터 그리고 소비자용 Blackwell에서도 GPU의 신뢰 근원은 자체 ROM에서 부팅하는 RISC-V 코어인 FSP(Foundation Security Processor)로, 드라이버가 적재되기 전 GPU에 전원이 들어오는 즉시 부팅된다. Blackwell에는 악용할 Booter가 없다. 드라이버는 다음 펌웨어의 해시와 RSA-3K 서명이 담긴 메시지를 FSP에 보내고 FSP가 검증해 부팅한다. Linux 커널 문서는 'SEC2 개입이 없고 Booter ucode가 없으며 FWSEC-FRTS 단계도 없다'고 명시한다. NVIDIA 615 드라이버 소스에서 Booter는 Turing, Ampere, Ada(TU102, TU116, GA100, GA102, AD102)에만 존재하며 RTX 50 VBIOS에는 구형 카드가 담고 있던 Falcon 펌웨어(FWSEC)가 없다는 사실도 직접 확인됐다. 드라이버가 제공하는 Blackwell용 펌웨어는 암호화되어 있고 디버그 이미지와 프로덕션 이미지가 정확히 동일한 암호화 바이트이며, Ada 페이로드는 복호화된 디버그 Booter 분석에서 나왔지만 Blackwell에는 그런 지름길이 없다.

NVIDIA는 SPARK(형식적으로 검증 가능한 프로그래밍 언어)를 사용해 자사의 가장 핵심적인 부분을 증명한다고 밝힌 바 있다.

💬 주요 댓글 번역 (5)

1 익명1

이 글에 감사한다. 5090 소유자로서 내 GPU의 실리콘이 약 15% 더 많은 연산 능력을 낼 수 있는데 NVIDIA가 의도적으로 꺼 두었다는 말인가 👍

2 익명2

15%? 적어도 15%다. 15%에서 90% 사이의 범위다.

3 익명3

내가 말하려던 것은 5090이 약 21000개의 컴퓨트 유닛(CUDA 코어?)을 가지는 반면 6000은 24k를 가진다는 사실 때문이었다. 그래서 게이밍에서는 6000이 보통 15% 더 빠르다. LLM에서는 어떻게 될지 모르지만 곧 공개되면 알게 되겠다 😊

4 익명4

아 그렇다, 게이밍에서는 언락이 아무 효과가 없다. 게시물에서 언급했듯 NVIDIA가 게이밍에는 정확히 그 이유 때문에 FP32 누적 기술을 쓰지 않고 FP16 누적을 대신 쓴다고 본다.

5 익명5

'Fuck Nvidia'라고 말하기에는 매우 긴 게시물이군. 그것이 독점이 하는 일이다.

🔍 루키 분석

NVIDIA가 시장 세분화를 위해 소비자용 GPU의 텐서 코어 FP32 누적 성능을 공장 퓨즈로 절반 수준으로 제한하며, Turing·Ampere·Ada 세대는 드라이버가 적재하는 Booter 펌웨어의 버퍼 오버플로우 취약점을 통해 이를 해제할 수 있음을 설명하는 글이다. 4090의 FP16/BF16 FP32 누적 처리율이 165에서 331 TFLOPS로 오르는 등의 수치가 제시됐다. Hopper 이후 Blackwell은 FSP 기반 신뢰 근원으로 전환되어 Booter가 존재하지 않아 같은 방법이 통하지 않는다고 밝혔다. 원문 게시물은 SPARK 관련 문장 중간에서 잘려 있다.

— 루키 · glm-5.3-flash:cloud