Chapter 18

SoC 설계실

이제 당신이 아키텍트다. 마케팅팀은 "게임이 끊기지 않는 폰"을, 카메라팀은 "밤에도 선명한 사진"을, AI팀은 "인터넷 없이 돌아가는 비서"를 원한다. 재무팀은 원가표를 들고 서 있다. 다이 면적은 한정되어 있고, 휴대폰은 5 W 남짓한 열밖에 내보내지 못한다. 이 장은 지금까지 배운 블록을 한 자리에 모아 놓은 놀이터다. 슬라이더 몇 개로 칩을 짜면 평면도가 그려지고, 원가와 전력, 다섯 가지 작업의 성적표가 바로 나온다. 정답은 없다. 무엇을 얻으려면 무엇을 내줘야 하는지가 있을 뿐이다.

설계실 사용법

아래 시뮬레이터는 17장에서 본 설계 흐름 중 아키텍처 단계의 장난감판이다. 실제 회사에서는 이 단계에서 수백 개의 앱 트레이스를 정밀한 성능 모델로 돌려 보며 몇 달을 보낸다. 여기서는 그 계산을 한 줄짜리 공식 몇 개로 줄였다. 숫자의 절대값보다 방향과 크기의 감각을 얻는 것이 목적이다.

교육용 모델이다

모든 수치는 기준 칩 SB-1(3 nm급, 약 105 mm²)을 기준점으로 맞춘 대략적인 모델이다. 실제 칩의 성능은 마이크로아키텍처, 소프트웨어, 열 설계, 메모리 칩에 따라 크게 달라진다. 모델이 어떤 식으로 계산하는지는 시뮬레이터 바로 아래 '모델 속' 설명과 이 장 뒤쪽의 작은 그림들에 모두 공개했다.

쓰는 법은 간단하다. ① 위쪽 단추로 출발점(프리셋)을 고른다. ② 슬라이더로 블록을 바꾼다. ③ 오른쪽 성적표와 아래 숫자를 본다. 성적표의 세로 눈금선은 SB-1의 값이다. ④ 마음에 드는 설계는 "비교용으로 고정"을 눌러 두 설계 겨루기에서 다른 설계와 나란히 놓거나, "링크 복사"로 주소에 담아 친구에게 보낸다.

나만의 SoC 짜기

SANDBOX

SoC 설계실

공정 노드
다이 면적—
트랜지스터 (대략)—
수율 · 웨이퍼당 양품—
원가 (패키지·테스트 $4 포함)—
CPU 전 코어 최대 전력—
게임 지속 전력 (한계 5 W)—
모델 속. 면적: 블록마다 로직·SRAM·아날로그 면적을 따로 두고 공정별 축소율을 곱한 뒤 NoC 6%와 배치 여유(사용률 75%)를 더했다. 원가: 300 mm 웨이퍼 가격 ÷ (웨이퍼당 다이 수 × 음이항 수율)(17장). CPU: 코어 성능 = 클럭 ÷ CPI, CPI = 기본 CPI + (캐시 크기의 거듭제곱으로 줄어드는 미스율) × DRAM 지연 100 ns(5장). 웹 = 70% 단일 스레드 + 30% 병렬. 게임: 프레임당 40 GFLOP과 DRAM 트래픽 0.9 GB(SLC가 최대 60% 흡수) 중 느린 쪽, 전력 5 W를 넘으면 GPU 클럭을 낮춘다(12장, 13장). 카메라: 야간 사진 한 장 처리 시간(ISP 단계 + NPU 6 TOP). LLM: 70억 파라미터 4비트 모델(3.5 GB), 토큰마다 가중치를 한 번씩 읽는다. 배터리: 19.25 Wh, 웹 45%·게임 15%·카메라 10%·동영상 20%·대기 10% 혼합, 화면 1 W 포함.
큰 코어를 4개에서 2개로 줄이면 웹 점수는 얼마나 떨어질까?

SB-1 프리셋에서 큰 코어를 하나씩 줄이며 성적표의 "웹"을 보기 전에 먼저 예상해 보자.

답 보기

거의 떨어지지 않는다. 웹 작업의 70%는 한 스레드(가장 빠른 코어 하나)가 처리하기 때문에, 큰 코어 수보다 큰 코어 하나의 클럭과 캐시가 점수를 정한다. 큰 코어를 0개로 만들면 그제야 점수가 반 토막 난다. 이것이 암달의 법칙이고, 최근 스마트폰 칩이 "아주 빠른 코어 한두 개 + 중간 코어 + 작은 코어"로 짜이는 이유다(4장).

도전 과제

아래 과제는 위 설계실의 현재 설계로 실시간 판정된다. 조건을 모두 만족하면 동그라미가 초록 체크로 바뀐다. 한 번 달성한 과제는 이 브라우저에 기억된다. 어떤 과제는 서로 반대 방향을 요구한다. 과제를 풀다 보면 "왜 실제 칩이 그렇게 생겼는지"가 보일 것이다.

CHALLENGE

도전 과제 6개

힌트가 필요하면: 전력 한계에 막힌 게임은 GPU 코어를 늘리고(클럭은 모델이 알아서 낮춘다) 대역폭을 확보한다. 원가는 다이 면적과 공정이 정한다. LLM 토큰 속도는 메모리 채널 수가 정한다. 첫 토큰 시간은 NPU가 정한다.

두 설계 겨루기

성적표 하나로는 설계의 성격이 잘 안 보인다. 두 설계를 골라 레이더 차트에 겹쳐 보자. 축마다 SB-1을 1로 둔 상대값이고, 바깥으로 갈수록 좋다(원가 축은 싼 쪽이 바깥). "현재 설계"는 위 설계실의 설계, "고정한 설계"는 "비교용으로 고정"을 눌러 둔 설계다.

COMPARE

설계 A vs 설계 B

프리셋끼리 겹쳐 보면 성격이 드러난다. 플래그십은 모든 축이 고르게 크지만 원가 축이 안쪽으로 움푹 들어간다. 보급형은 원가 축만 튀어나온 별 모양이다. AI 특화는 LLM과 카메라 축으로 길게 뻗는 대신 게임을 내줬다. 실제 칩 회사들이 한 세대에 등급별로 칩을 여러 개 내놓는 이유가 이 그림에 있다. 한 다이로 모든 축을 다 키울 수는 없다.

CPU: 코어를 늘려도 빨라지지 않는 이유

설계실의 웹 점수는 암달의 법칙(Amdahl's law)을 따른다. 작업 중 병렬화할 수 있는 비율이 \(p\)라면, 코어 \(N\)개로 얻는 최대 속도 향상은 다음과 같다.

$$S(N) = \frac{1}{(1-p) + p/N}$$
\(N \to \infty\)이어도 \(S \le 1/(1-p)\). 웹 브라우징처럼 \(p \approx 0.3\)이면 코어를 아무리 늘려도 1.43배를 넘지 못한다. 남은 70%를 빠르게 하는 길은 코어 하나를 빠르게(클럭·IPC·캐시) 하는 것뿐이다.
속도 향상—
코어당 효율—
상한 (N → ∞)—
그림 18-1. 만져 보기점선은 이상적인 선형 증가. 회색 곡선은 p = 0.5, 0.9, 0.99일 때다. 영상 인코딩·렌더링처럼 p가 0.95 이상인 작업에서만 코어 8개가 제값을 한다. 휴대폰 앱 대부분은 p가 0.2~0.5 사이라서, 큰 코어 수를 늘리는 것보다 단일 코어 성능을 높이는 편이 체감이 크다.

게임: 연산, 대역폭, 열이라는 세 개의 벽

3D 게임의 초당 프레임 수(fps)는 세 가지 중 가장 낮은 것으로 정해진다. GPU가 한 프레임의 셰이더 연산을 끝내는 속도, 메모리가 한 프레임의 텍스처·프레임 버퍼 트래픽을 나르는 속도, 그리고 그 둘을 5 W 안에서 할 수 있느냐다. 아래 그림은 SB-1에서 GPU 코어 수만 바꿨을 때 세 벽이 어디 있는지 보여 준다.

최대 fps—
지속 fps (5 W)—
병목—
그림 18-2. 만져 보기초록 선은 GPU 연산 한계(코어 수에 비례), 파란 선은 메모리 대역폭 한계, 빨간 선은 전력 5 W 안에서 낼 수 있는 지속 fps다. 코어가 아주 적으면 연산 한계가 먼저 막는다. 코어가 8개 남짓을 넘으면 최고 클럭으로 돌릴 전력이 모자라 열 한계가 fps를 정한다. 코어를 늘리면 같은 fps를 낮은 클럭·낮은 전압으로 낼 수 있어서 지속 fps가 오른다. 전압이 클럭과 함께 내려가므로 전력은 클럭의 세제곱 가까이 준다. 대신 다이 면적, 즉 원가가 오른다. 그리고 어느 순간 대역폭 벽에 막힌다.

"넓고 느리게"는 GPU 설계의 오래된 지혜다. 휴대폰 GPU가 데스크톱 GPU보다 클럭이 훨씬 낮은 것(약 1 GHz 안팎 대 2 GHz 이상)도 이 때문이다. 하지만 넓히는 데는 면적이 들고, 넓힌 만큼 메모리가 데이터를 더 빨리 날라야 한다. 시스템 캐시(SLC)는 그 트래픽 일부를 칩 안에서 흡수해 대역폭 벽을 밀어 올린다(9장의 타일 기반 렌더링도 같은 목적이다).

열 한계는 순간이 아니라 시간의 문제다. 칩과 휴대폰 몸체에는 열 용량이 있어서, 처음 몇십 초 동안은 5 W를 훌쩍 넘는 전력을 써도 온도가 천천히 오른다. 벤치마크 점수가 처음 1분과 20분 뒤에 다른 이유다. 아래 그림에서 요구 전력을 바꾸고 시간을 흘려 보자.

경과 시간—
현재 온도—
현재 성능 (최대 = 100%)—
그림 18-3. 만져 보기열 저항 8 K/W(칩에서 주변 공기까지), 열 용량 12 J/K, 주변 25 °C인 단순 RC 열 모델이다(13장). 온도가 한계에 닿으면 조절기가 전력을 낮추고, 성능은 전력의 세제곱근에 비례해 줄어든다. 시간은 실제의 약 20배 빠르게 흐른다. 5 W 남짓이 지속 가능한 상한이라는 이 장의 가정이 여기서 나온다: (80 − 25) ÷ 8 ≈ 6.9 W에서 휴대폰 표면 온도 제약을 고려하면 그보다 낮다.

온디바이스 LLM: 대역폭이 왕이다

대형 언어 모델이 글자 하나(토큰)를 만들 때마다 모델의 가중치 전부를 한 번씩 읽어야 한다. 70억 파라미터 모델을 4비트로 양자화해도 3.5 GB다. 그런데 계산은 파라미터 하나당 곱셈-덧셈 한 번(2연산)뿐이다. 읽어 온 1바이트로 고작 4번 계산하는 셈이다. 이 비율, 즉 바이트당 연산 수를 연산 강도(Arithmetic intensity)라 하고, 연산 강도에 따라 성능 상한이 연산과 대역폭 중 어느 쪽에 걸리는지 보여 주는 그림이 루프라인(Roofline)이다(10장).

가중치 크기—
토큰 생성 속도—
프롬프트 500토큰 처리—
그림 18-4. 만져 보기가로축은 연산 강도(연산/바이트), 세로축은 낼 수 있는 연산 성능이다(양 축 로그). 지붕은 NPU 최고 성능의 30%(실효), 비탈은 메모리 대역폭(채널당 17 GB/s의 80%)이다. 토큰 생성(디코드)은 비탈 위에, 프롬프트를 한꺼번에 처리하는 프리필은 토큰 500개가 가중치를 함께 쓰므로 연산 강도가 500배 높아져 지붕 아래에 놓인다. 8채널은 휴대폰에는 없는 구성으로, 노트북급 칩을 상상해 보라고 넣었다.
NPU를 40 TOPS에서 100 TOPS로 키우면 토큰 생성 속도는 몇 배가 될까?

위 그림에서 NPU 슬라이더를 움직이기 전에 예상해 보자. 첫 토큰이 나오기까지의 시간(프리필)은 어떻게 될까?

답 보기

토큰 생성 속도는 그대로다. "토큰 생성" 점은 지붕이 아니라 비탈, 즉 대역폭 한계 위에 있으므로 지붕을 올려도 움직이지 않는다. 반면 "프리필" 점은 지붕 아래에 있어서 NPU에 비례해 빨라진다. 500토큰 프롬프트 처리 시간이 약 0.58초에서 0.23초로 준다. "TOPS 숫자가 큰 칩이 챗봇을 더 빨리 돌린다"는 말은 절반만 맞는 셈이다.

그래서 휴대폰에서 LLM을 돌릴 때 NPU의 TOPS 숫자는 생각보다 중요하지 않다. 토큰 생성 속도는 거의 정확히 메모리 대역폭 ÷ 모델 크기다. 모델을 더 작게 양자화하거나(4비트, 그 이하), 더 작은 모델을 쓰거나, 메모리 채널을 늘리는 수밖에 없다. NPU는 첫 토큰이 나오기까지의 시간(프리필)과 전력 효율에서 제값을 한다. 설계실의 "AI 특화" 프리셋이 NPU뿐 아니라 메모리 채널과 SLC를 최대로 둔 이유다.

공정 노드 고르기: 작아지지 않는 SRAM

설계실에서 공정 노드를 바꾸면 블록마다 줄어드는 비율이 다르다. 로직은 세대마다 꽤 줄지만, SRAM과 아날로그(PHY, PLL)는 훨씬 덜 준다. 특히 5 nm급에서 3 nm급으로 넘어갈 때 SRAM 셀 면적은 거의 그대로였다. 캐시를 많이 넣은 설계일수록 최신 공정의 면적 이득이 작고, 비싼 웨이퍼 값만 고스란히 낸다.

그림 18-5. 만져 보기같은 설계를 네 공정으로 만들었을 때의 다이 면적(막대: 로직·SRAM·아날로그, 배치 여유 포함)과 원가(점). 공정별 축소율·웨이퍼 가격·결함 밀도는 아래 표의 교육용 값이다. 2 nm급은 양산 초기라 결함 밀도와 웨이퍼 값이 높게 잡혀 있어서, 면적이 줄어도 원가는 오히려 오르기 쉽다.
공정 (모델값)로직 면적SRAM 면적아날로그 면적같은 일의 전력최고 클럭웨이퍼 (대략)D₀ (/cm²)
7 nm급2.6×1.35×1.2×1.8×3.7 GHz약 $9,5000.07
5 nm급1.5×1.05×1.1×1.3×4.1 GHz약 $16,0000.08
3 nm급 (기준)1×1×1×1×4.4 GHz약 $19,0000.10
2 nm급0.85×0.9×1×0.82×4.7 GHz약 $30,0000.15

표의 축소율은 파운드리들이 발표한 세대별 로직 밀도 향상(대략 1.3~1.8배)과 SRAM 비트셀 크기 추이(5 nm급과 3 nm급 모두 약 0.021 µm²)를 단순화한 값이고, 웨이퍼 가격은 2024~2025년 보도의 대략값이다. 같은 일을 할 때 전력은 세대마다 약 20~30%씩 준다고 두었다. 실제로 어느 공정을 쓸지는 원가만이 아니라 17장의 개발비(NRE)와 판매량, 그리고 전력 이득이 함께 정한다.

설계실 밖으로

이 장의 모델은 의도적으로 단순하다. 실제 아키텍처 탐색에는 gem5 같은 사이클 수준 시뮬레이터, McPAT 같은 전력·면적 모델, 그리고 무엇보다 실제 앱의 트레이스가 쓰인다. 블록 내부를 더 알고 싶다면 각 장으로 돌아가자: CPU는 3장·4장, 캐시는 5장, DRAM은 7장, GPU는 9장, NPU는 10장, 전력과 열은 12장·13장.

핵심 정리

  1. SoC 아키텍처는 면적(원가)·전력(열)·성능의 예산을 블록 사이에 나누는 일이다. 한 다이로 모든 축을 최대로 만들 수는 없다.
  2. 작업마다 병목이 다르다: 웹은 단일 코어 성능, 게임은 GPU 연산·대역폭·열, 카메라는 ISP·NPU, LLM 토큰 생성은 메모리 대역폭.
  3. 암달의 법칙 때문에 병렬화 비율이 낮은 작업에서는 코어 수보다 코어 하나의 성능이 중요하다.
  4. 전력 한계 아래에서는 넓고 느린 설계(코어 많이, 클럭 낮게)가 더 높은 지속 성능을 낸다. 대가는 면적과 원가다.
  5. 최신 공정은 로직을 크게 줄이지만 SRAM·아날로그는 덜 줄고 웨이퍼는 비싸다. 공정 선택은 설계의 구성과 판매량에 따라 달라진다.

확인 퀴즈

Q1. 병렬화 비율 p = 0.4인 작업을 코어 4개로 돌릴 때 암달의 법칙이 주는 속도 향상은?

\(S = 1/(0.6 + 0.4/4) = 1/0.7 \approx 1.43\). 코어를 무한히 늘려도 \(1/0.6 \approx 1.67\)배가 상한이다.

Q2. 70억 파라미터 모델을 4비트로 양자화해 LPDDR5X 4채널(약 68 GB/s, 실효 80%)에서 돌릴 때 토큰 생성 속도의 상한에 가장 가까운 것은?

토큰마다 가중치 3.5 GB를 읽어야 하므로 약 54.6 GB/s ÷ 3.5 GB ≈ 15.6 토큰/초. 연산은 충분히 남으므로 NPU를 키워도 이 값은 그대로다.

Q3. 지속 전력 5 W로 묶인 게임에서 GPU 코어를 12개에서 20개로 늘렸더니 지속 fps가 올랐다. 가장 알맞은 설명은?

동적 전력은 \(V^2 f\)에 비례하고 전압은 클럭과 함께 내려가므로, 일을 코어 여러 개에 나눠 느리게 하면 일당 에너지가 준다. 대신 다이가 커지고, 결국 대역폭 벽에 막힌다.

Q4. 캐시를 아주 많이 넣은 설계를 5 nm급에서 3 nm급으로 옮겼더니 면적은 조금밖에 안 줄고 원가는 올랐다. 주된 이유는?

로직은 세대마다 크게 줄지만 SRAM 비트셀은 5 nm급과 3 nm급이 거의 같다. 다이 대부분이 SRAM이면 면적 이득이 작고, 비싸진 웨이퍼 값만 고스란히 낸다.

Q5. 설계실에서 ISP를 끄면 카메라 점수가 크게 떨어지고 배터리도 줄어든다. 이 결과가 보여 주는 원리는?

ISP의 노이즈 제거·디모자이크·색 보정은 고정 회로라서 명령어 처리 같은 관리 비용이 없다(1장의 효율 사다리, 11장). GPU로 대신하면 시간과 에너지가 몇 배~몇십 배 든다.