Chapter 1: 논리 게이트로 곱셈-누산기 만들기 (00:00-16:20)
- [00:07] 이번 대화의 목표는 AI 칩 내부에서 실제로 어떤 일이 일어나는지, 즉 칩이 어떻게 작동하는지 이해하는 것
- [00:42] AI 칩이 계산하려는 핵심 기능은 행렬 곱셈이며, 그 기본 원시 연산은 숫자 쌍의 곱셈-누산이다
- [02:40] 곱셈 단계보다 누산 단계에서 거의 항상 더 높은 정밀도가 필요하다 — j 차원을 따라 반복되며 반올림 오류가 누적되기 때문
- [05:45] 4비트 × 4비트 곱셈에는 AND 게이트 16개가 필요하고, 일반적으로
p × q개가 든다 - [07:06] 전가산기는 세 입력 비트를 두 출력 비트로 압축하므로 3→2 컴프레서라고도 불린다
- [10:16] 전가산기를 반복 적용해 면적 효율적인 승산기를 만드는 표준 방식을 다다(Dadda) 승산기라고 부른다
- [12:00] 곱셈-누산을 선택하는 또 다른 이유는 회로 크기가
p × q라는 깔끔한 대수로 표현되기 때문 - [15:00] 비트 폭에 대한 제곱 스케일링이 핵심 — Nvidia도 B300 이후 FP4를 FP8보다 3배 빠르다고 제시한다(이론적으로는 4배)
- [16:00] 저정밀도 산술이 신경망에서 잘 작동하는 큰 이유는 비트 폭 감소가 회로 면적과 성능에 매우 강하게 영향을 주기 때문
“[00:19] 칩 설계의 가장 작은 기본 단위부터 시작해서, 실제 양산 칩이 무엇이고 그 구성 요소가 무엇인지까지 쌓아 올라가 보겠습니다.” — Reiner Pope
Chapter 2: Mux와 데이터 이동 비용 (16:20-25:59)
- [16:28] Tensor Core 이전 GPU는 CPU와 비슷하게 작동했고, 핵심 질문은 곱셈-누산 유닛을 회로 어디에 배치하느냐였다
- [17:39] 대부분의 프로세서는 레지스터 집합과 ALU 집합으로 구성되며, 분석 대상은 둘 사이의 데이터 이동 비용이다
- [18:04] 여러 레지스터 중 원하는 것을 선택하는 회로가 바로 mux(멀티플렉서)이며, AND로 마스킹 후 OR로 합쳐 구현한다
- [20:30] 곱셈-누산의 세 입력 각각에 mux가 필요해 데이터 이동에는
3 × n × p개의 AND 게이트가 든다 - [21:18] 레지스터 파일에서 로직 유닛으로 데이터를 옮기는 작업이 로직 유닛 자체보다 훨씬 더 비싸다
- [25:11] 비용의 약 8분의 7이 데이터 이동과 레지스터 파일 접근에 쓰이고, 아주 작은 부분만 논리 유닛에 들어간다
- [25:37] 이 문제의식이 Tensor Core 도입으로 이어졌으며, 더 일반적인 개념을 시스톨릭 배열이라 부른다
“[20:11] 그 자체로 꽤 복잡한 회로입니다. 이것이 드러나기 시작하는 모든 숨겨진 데이터 이동 비용의 첫 단계입니다.” — Reiner Pope
Chapter 3: 시스톨릭 배열의 작동 원리 (25:59-39:00)
- [26:11] 시스톨릭 배열의 아이디어는 행렬 곱셈 루프에서 두 단계 위로 올라가 더 바깥쪽 루프 전체를 하드웨어에 구워 넣는 것
- [28:23] 목표는 계산량이 제곱적으로(
x × y) 많아지는 동안 통신량은x배 정도에 그치게 하는 것 - [29:18] 핵심은 AI 맥락에서 가중치 행렬이 오랜 시간 고정되어 있어 시스톨릭 배열 가까이에 로컬로 저장할 수 있다는 점
- [31:55] 행렬에서 열을 따라 내적이 수행되는 방식이 시스톨릭 배열에서 공간적으로 이루어지는 계산과 정확히 대응된다
- [32:56] 가중치 행렬은 데이지 체인으로 아주 천천히 흘려 넣어, 경계를 가로지르는 배선을
xy가 아니라x로 제한한다 - [36:12] 시스톨릭 배열은 결국 행렬 곱셈을 구현하는 데 알려진 가장 효율적인 회로가 된다
- [36:41] 칩 설계 결정의 대부분은 “시스톨릭 배열을 얼마나 크게, 레지스터 파일을 얼마나 크게”라는 크기 결정이다
- [37:42] 더 큰 레지스터 파일은 더 유연하지만 시스톨릭 배열에 쓰일 면적을 빼앗는다
“[36:12] 이것은 결국 행렬 곱셈을 구현하는 데 알려진 가장 효율적인 회로가 됩니다.” — Reiner Pope
Chapter 4: 클록 사이클과 파이프라인 레지스터 (39:00-51:40)
- [39:12] 칩 하나에는 약 1,000억 개의 트랜지스터가 있어 대규모 병렬성이 있고, 핵심 작업은 이들을 동기화하는 것
- [39:39] 칩에서는 약 1나노초마다 모든 회로가 잠시 멈추고 동기화하는데, 이것이 클록 사이클이다
- [41:24] 클록을 빠르게 돌릴수록 논리 구름을 통과하는 지연에 민감해지므로, 지연을 최대한 짧게 만드는 것이 주요 최적화
- [44:13] 큰 논리 구름을 가운데에서 둘로 나누고 레지스터를 끼우면 클록 주파수를 두 배로 맞출 수 있다(면적 비용 발생)
- [45:24] 같은 3나노미터 공정의 두 칩도 제조 편차 때문에 서로 다른 클록 사이클을 가질 수 있다
- [46:08] 더 어려운 경우는 계산이 자기 자신으로 피드백되는 루프 — 클록 사이클을 결정하는 가장 풀기 어려운 제약
- [50:05] 칩의 처리량은 면적 효율에 초당 클록 수를 곱한 값이며, 클록을 너무 높이면 병렬성을 덜 얻는다
“[50:34] 클록 속도를 아주 높이면 병렬성을 덜 얻습니다.” — Reiner Pope
Chapter 5: FPGA vs ASIC (51:40-01:03:14)
- [51:55] 고빈도 트레이딩에서는 처리량보다 지연 시간이 더 중요해, 결정론적으로 클록 사이클을 제어하는 것이 가장 중요하다
- [52:53] ASIC은 FPGA보다 대략 한 자릿수 더 저렴하고 에너지 효율도 좋지만, 표현할 수 있는 것은 서로 같다
- [53:01] 첫 FPGA는 1만 달러지만 첫 ASIC은 전체 테이프아웃이 필요해 3천만 달러가 들 수 있다 — 워크로드가 자주 바뀌면 FPGA가 유리
- [53:54] FPGA의 핵심 구성 요소는 레지스터, 모든 게이트를 제공하는 룩업 테이블(LUT), 그리고 이들을 연결하는 큰 mux 집합
- [57:10] 전통적 FPGA에서 LUT는 4비트 입력·1비트 출력으로, 16개 구성 비트에 진리표를 저장하는 프로그래밍 가능한 게이트
- [01:02:41] ASIC에서 AND 세 개로 구현할 회로를 LUT로는 약 32개의 게이트가 필요 — 가능한 모든 입력 조합을 진리표로 나열하는 오버헤드 때문
“[56:43] 그것을 프로그래밍한다는 것은 이 mux들 각각을 구성하는 것으로 이루어집니다.” — Reiner Pope
Chapter 6: 캐시 vs 스크래치패드 (01:03:14-01:07:16)
- [01:03:46] 어려운 점은 결정적 지연 시간과 높은 속도를 동시에 얻는 것 — Groq나 TPU는 결정적 지연 시간을 장점으로 내세운다
- [01:04:33] CPU 비결정성의 가장 중요한 원천 중 하나는 CPU 캐시 자체다
- [01:05:27] 캐시는 DDR보다 두 자릿수 배 빨라, 캐시가 없으면 거의 모든 프로그램이 약 100배 느려진다
- [01:05:45] 캐시 히트 여부가 다른 실행 중인 프로그램과 캐시 내부 난수 생성기 등 주변 환경에 의존해 비결정성을 만든다
- [01:06:28] TPU는 캐시 대신 “스크래치패드”를 두어, 스크래치패드와 HBM에 대한 명령어를 완전히 분리한다 — 메모리 접근 결정을 소프트웨어에 맡기는 철학
“[01:05:48] 이것이 CPU 실행 시간에서 비결정성의 큰 원천입니다.” — Reiner Pope
Chapter 7: CPU 코어가 GPU 코어보다 훨씬 큰 이유 (01:07:16-01:11:49)
- [01:07:52] CPU의 병렬성은 약 100코어 × 16방향 벡터 유닛 ≈ 1,000방향 수준이며, 폰 노이만 아키텍처로 설명해도 공정하다
- [01:08:37] 코어가 적은데도 CPU 다이가 큰 이유는 단순하다 — CPU 코어들이 훨씬 더 크고 복잡하기 때문
- [01:09:13] CPU 면적을 크게 차지하는 것은 캐시이고, 실제 ALU가 차지하는 면적은 아주 작다
- [01:09:36] GPU에 대응물이 없는 CPU의 큰 구성 요소가 바로 분기 예측기다
- [01:10:06] CPU 대비 GPU의 면적 효율 이점 상당 부분은 분기 예측기 제거와 더 조밀한 레지스터 파일 구성에서 나온다
- [01:11:34] 분기 예측기의 목적은 명령어에 도달하기 전, 약 다섯 사이클 앞서 분기 여부를 예측하는 것
“[01:10:06] 그 많은 부분을 제거하고, 이 레지스터 파일들을 더 조밀하게 만드는 것이 CPU 대비 GPU의 이점 상당 부분을 만들어 냅니다.” — Reiner Pope
Chapter 8: 뇌 vs 칩 (01:11:49-01:15:22)
- [01:11:52] 큰 차이 하나는 가속기가 구조적 희소성을 활용하는 반면, 뇌는 어떤 뉴런이든 다른 뉴런과 연결되는 비정형 희소성을 가진다는 점
- [01:12:30] 또 다른 큰 차이는 뇌의 클록 사이클이 컴퓨터보다 훨씬 느리며, 이는 에너지 보존과 관련된다
- [01:13:26] GPU는 배치 크기 1,000으로 실행되지만 뇌는 단일 인스턴스에 해당한다 — GPU를 메가헤르츠로 낮추면 뇌와 더 비슷해진다
- [01:14:12] 대부분의 에너지는 비트를 0↔1로 토글할 때 소비되며, 이를 동적 전력(스위칭 전력)이라 부른다
- [01:15:08] 칩을 천 클록 사이클마다 한 번만 동작시키면 에너지 소비가 약 1,000배 줄지만, 이는 본질적인 효율 이점은 아니다
“[01:14:12] 대부분의 에너지는 비트를 0에서 1로, 다시 되돌리는 토글 과정에서 소비되기 때문입니다.” — Reiner Pope
Chapter 9: GPU는 작은 TPU들의 집합이다 (01:15:22-01:20:19)
- [01:15:55] GPU 조직은 거의 동일한 유닛(SM)들의 반복으로, 가운데 L2 메모리를 두고 규칙적인 코어 격자를 이룬다
- [01:16:34] TPU는 훨씬 거친 입도로, 큰 시스톨릭 배열로 이루어진 행렬 유닛 몇 개와 가운데 벡터 유닛으로 구성된다
- [01:17:24] GPU의 텐서 코어는 TPU의 MXU와 매우 유사하다
- [01:18:04] 더 큰 시스톨릭 배열은 레지스터 파일 비용을 더 잘 분산하지만, GPU식 설계는 모든 것을 작은 유닛으로 나누는 제약을 가진다
- [01:19:00] TPU는 모든 데이터를 단 두 줄로 옮겨야 하는 반면 GPU는 16줄의 배선으로 옮기는 식으로 데이터 이동 대역폭이 더 크다
- [01:20:05] MatX는 작은 시스톨릭 배열로도 동작할 수 있는 큰 시스톨릭 배열, 즉 “분할 가능한 시스톨릭 배열”을 공개적으로 논의해 왔다
“[01:17:16] 아주 상위 수준의 관점에서 보면, GPU는 칩 전체에 타일처럼 깔린 수많은 작은 TPU를 가지고 있습니다.” — Reiner Pope