GPU 언락(FP32 누적): 왜 튜링, 암페어, 에이다는 가능한데 블랙웰은 안 되는가, 그리고 오해들
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의 FP32 누적 성능 제한을 해제하는 원리와 세대별 가능 여부, 그리고 관련 오해를 상세히 분석한 글입니다.
- 성능 제한 원리 — 엔비디아는 시장 세분화를 위해 공장 출고 시 퓨즈로 텐서 코어의 FP32 누적 속도를 강제로 낮춤.
- 언락 가능 세대 — 튜링, 암페어, 에이다는 부트로더 취약점을 이용해 펌웨어 수준에서 성능 제한을 해제할 수 있음.
- 블랙웰 제한 이유 — 보안 아키텍처 변경으로 부트로더 취약점이 사라져 현재로서는 언락이 불가능함.
- 실제 성능 영향 — LLM 학습 및 추론 등 연산 집약적 작업에서는 성능이 크게 향상되나 게임 성능에는 영향 없음.
다들 잘 지내고 있지? 글이 좀 길어질 것 같은데, 싹 다 직접 손으로 쓴 거라 꼭 공유하고 싶어서 그래.
요즘 GPU 언락 관련해서 말이 많은데, 그거에 대해 좀 정리해 주려고 글 쓴다.
GPU 언락이 대체 뭘 하는 건데?
엔비디아는 시장 세분화 전략 때문에 FP32 누적 연산을 사용할 때(대부분의 AI/LLM/ML 작업에서 쓰는 FP16, BF16, FP8, TF32 입력값들이 FP32로 누적됨) 텐서 코어 성능을 일부러 반토막 내놨어. 쿠다 코어에서 돌아가는 일반 FP32는 아무 영향 없어.
소비자용이랑 전문가용 GPU는 다이 자체가 똑같거든(5090이랑 6000 PRO는 GB202, 4090이랑 6000 Ada는 AD102, 심지어 3090 Ti랑 A6000은 코어 개수랑 84 SM까지 1:1로 똑같음).
원리는 이래: 각 텐서 연산 속도는 공장에서 구워진 퓨즈로 결정돼. 소비자용 카드는 "FP32 누적을 사용하는 FP16/BF16" 퓨즈가 HALF_SPEED로 설정되어 있고, 전문가용 카드는 FULL_SPEED로 되어 있어. 이 퓨즈가 회로를 끊어버리는 게 아니라, GPU가 부팅할 때 이걸 읽어서 그 속도로 돌리는 거야. GPU에는 이걸 다시 FULL_SPEED로 바꿀 수 있는 오버라이드 레지스터가 있는데, 이게 잠겨 있어서 엔비디아의 최고 권한 펌웨어만 쓸 수 있지, 니 PC에서는 못 건드려.
언락은 그 잠금을 풀고 오버라이드에 FULL_SPEED를 써넣는 거야. 그러면 소비자용 카드도 엔비디아가 막아놨던 성능을 다 뽑아낼 수 있게 되는 거지. SM이나 VRAM이 늘어나는 건 아니야. 4090은 여전히 4090이지만, 전문가용 카드랑 똑같은 속도로 연산을 돌릴 수 있게 되는 거지.
왜 튜링, 암페어, 에이다는 언락이 되고, 뭘 언락하는 건데?
이 세대들은 엔비디아 드라이버가 "부터(Booter)"라고 불리는, 엔비디아 서명이 들어간 작은 펌웨어를 GPU 내부의 보안 마이크로컨트롤러(SEC2, 일명 "Falcon")에 올려서 GSP를 시작해. 부터는 GPU의 최고 권한 모드(Heavy Secure, HS)에서 돌아가는데, 이게 바로 잠금을 풀 수 있는 유일한 권한이야.
2026년 6월에 존 프라이(Jon Pry)가 논문("A Canary in the Crypto Mine")을 냈는데, 최신 드라이버의 부터에 버퍼 오버플로우가 있다는 걸 밝혀냈어. 부터가 자기 "서명" 데이터를 복사할 때 길이를 니 맘대로 조절할 수 있어서, 스택을 오버플로우 시키고(이걸 막으려고 있는 스택 카나리까지 뚫어버림) HS 모드에서 돌아가는 부터의 제어권을 뺏을 수 있는 거야. 엔비디아의 서명된 코드가 돌아가는 거라 서명 체크는 여전히 통과되고, 버그는 그 안에 있는 거지.
이걸로 언락 툴은 엔비디아 부터의 명령어를 재사용해서 잠금을 풀고, 오버라이드에 FULL_SPEED를 쓴 다음, 카드를 재설정해서 일반 엔비디아 드라이버가 로드되게 만들어. 재부팅하거나 드라이버를 다시 깔아도 언락 상태는 유지되는데, 전원을 끄면 날아가. 그래서 엔비디아 드라이버가 로드되기 전에 매번 부팅할 때마다 실행되는 거야.
이건 원래 채굴용 카드(CMP 170HX: FP32 성능을 1/32에서 풀 스피드로, VRAM을 10GB에서 80GB로)에서 처음 성공했고, 나중에 지포스로 넘어왔어:
-
튜링: https://github.com/haohervchb/Turing-unlock (UEFI, 리눅스)
-
암페어: https://github.com/Zagitta/gpu-unlock (리눅스 커널 모듈)
-
에이다: https://github.com/JustAResearcher/gpu-unlock-ada (리눅스 커널 모듈)

