핵심 인사이트 (3줄 요약)
- 본질: GPU (Graphics Processing Unit)는 복잡한 제어보다 대량의 동일 연산을 한꺼번에 처리하도록 설계된 처리량 중심 병렬 가속기다.
- 가치: 픽셀 렌더링에서 출발한 구조가 행렬 곱셈, 벡터 연산, 딥러닝 추론처럼 데이터 병렬성이 큰 작업과 정확히 맞물리며 CPU보다 훨씬 높은 처리량을 낸다.
- 판단 포인트: GPU는 "무조건 빠른 칩"이 아니라, 메모리 대역폭·스레드 규칙성·분기 복잡도가 맞을 때 진가를 내는 아키텍처다.
Ⅰ. 개요 및 필요성
GPU (Graphics Processing Unit)는 화면을 구성하는 수많은 픽셀과 정점에 대해 비슷한 수학 연산을 반복 수행하기 위해 등장한 전용 병렬 프로세서다. 3차원 그래픽스는 좌표 변환, 조명 계산, 텍스처 샘플링처럼 같은 형태의 연산을 엄청난 개수의 데이터에 적용해야 하므로, 몇 개의 강한 코어보다 많은 수의 연산 유닛이 유리했다.
CPU (Central Processing Unit)는 운영체제 제어, 분기 예측, 캐시 일관성, 예외 처리처럼 복잡한 일을 빠르게 처리하도록 발전했다. 반면 그래픽스는 "같은 공식으로 수백만 개를 계산"하는 문제가 많아서, CPU의 정교한 제어 회로는 오히려 면적과 전력 측면에서 비효율이 되었다. GPU는 이 지점을 파고들어, 복잡한 제어 일부를 줄이고 산술 연산기와 메모리 대역폭을 크게 늘리는 방향으로 진화했다.
특히 고해상도·고주사율 환경에서는 한 프레임 안에 처리해야 할 데이터 양이 폭증한다. 예를 들어 4K 해상도에서 초당 120프레임을 목표로 하면, 픽셀 처리량과 메모리 접근량이 동시에 커지므로 직렬 처리만으로는 실시간 응답을 만들기 어렵다. 그래서 GPU는 "짧은 지연시간 하나"보다 "엄청난 동시 처리량"을 우선하는 철학을 갖게 되었다.
┌──────────────────────────────────────────────────────────────┐
│ GPU가 필요한 이유: 같은 계산을 대량 반복 │
├──────────────────────────────────────────────────────────────┤
│ 장면 데이터 입력 │
│ │ │
│ ▼ │
│ 정점 변환 · 조명 계산 · 픽셀 셰이딩 │
│ │ │
│ ├─ 각 데이터가 서로 거의 독립적임 │
│ ├─ 동일 명령 반복 비중이 큼 │
│ └─ 처리량 부족 시 프레임 저하 발생 │
│ │
│ 결론: 소수 고성능 코어보다 다수 병렬 코어가 유리 │
└──────────────────────────────────────────────────────────────┘
이 그림은 GPU의 출발점이 "그래픽 전용 장치"라기보다 "대량 독립 데이터 처리 장치"였음을 보여준다. 그래서 GPU는 그래픽스를 넘어서 과학 계산, 영상 처리, 인공지능까지 확장될 수 있었다.
📢 섹션 요약 비유: GPU는 한 명의 천재 교사가 학생 백만 명의 같은 문제를 하나씩 검사하는 방식이 아니라, 같은 답안 규칙을 아는 조교 수천 명이 각자 한 줄씩 동시에 채점하는 방식과 같다.
Ⅱ. 아키텍처 및 핵심 원리
GPU 내부는 여러 개의 SM (Streaming Multiprocessor) 또는 이에 준하는 병렬 실행 블록으로 구성된다. 각 블록은 다수의 산술 연산기, 레지스터 파일, 스케줄러, 온칩 공유 메모리를 포함하며, 스레드 묶음 단위로 명령을 발행한다. 제조사마다 용어는 다르지만 핵심은 동일하다. 많은 스레드를 동시에 준비해 두고, 어떤 스레드가 메모리 지연으로 멈추면 다른 스레드 묶음을 즉시 실행해 연산 유닛을 쉬지 않게 만든다.
이 구조는 SIMD (Single Instruction Multiple Data) 철학과 SIMT (Single Instruction Multiple Threads) 실행 모델의 결합으로 이해할 수 있다. 명령은 비슷하게 움직이지만, 프로그래머는 스레드를 개별 단위로 다룰 수 있다. 다만 같은 워프 (Warp) 또는 웨이브프런트 안의 스레드가 서로 다른 분기로 갈라지면, 하드웨어는 경로를 순차적으로 처리해야 하므로 병렬 효율이 급격히 떨어진다.
메모리 계층도 GPU 성능의 핵심이다. HBM (High Bandwidth Memory)이나 GDDR (Graphics Double Data Rate) 기반 외부 메모리는 매우 높은 대역폭을 제공하지만, 접근 지연 자체가 사라지는 것은 아니다. 그래서 GPU는 레지스터, 공유 메모리, 캐시를 적절히 활용해 데이터 재사용도를 높여야 하며, 계산량보다 메모리 이동량이 큰 커널은 기대만큼 빨라지지 않는다.
| 구성 요소 | 역할 | 성능 판단 포인트 |
|---|---|---|
| SM (Streaming Multiprocessor) | 스레드 실행의 기본 병렬 블록 | 동시에 얼마나 많은 스레드를 수용하는가 |
| 워프 (Warp) | 함께 스케줄되는 스레드 묶음 | 분기 발산이 적은가 |
| 레지스터 / 공유 메모리 | 가장 가까운 작업 공간 | 데이터 재사용을 높이는가 |
| VRAM (Video Random Access Memory) | 대용량 데이터 저장 | 대역폭 대비 접근 패턴이 연속적인가 |
| 스케줄러 | 준비된 워프에 명령 발행 | 메모리 지연을 다른 워프로 숨길 수 있는가 |
아래 그림은 GPU가 지연시간을 줄이는 대신, 많은 스레드를 준비해 두어 전체 처리량을 높이는 방식을 요약한다.
┌──────────────────────────────────────────────────────────────┐
│ GPU 처리 원리: 지연을 없애기보다 숨긴다 │
├──────────────────────────────────────────────────────────────┤
│ [Warp A] ── 연산 ── 메모리 대기 ─────────────┐ │
│ │ │
│ [Warp B] ─────────── 연산 ── 메모리 대기 ────┤ │
│ ├─▶ SM 스케줄러 │
│ [Warp C] ── 연산 ── 연산 ── 메모리 대기 ─────┤ │
│ │ │
│ [Warp D] ─────────────── 연산 ── 연산 ───────┘ │
│ │
│ 핵심: 한 워프가 멈추면 다른 워프로 교대해 연산기 공백을 줄임 │
└──────────────────────────────────────────────────────────────┘
따라서 GPU 최적화의 본질은 클럭을 높이는 것이 아니라, 연산기들이 놀지 않게 할 만큼 충분한 병렬 스레드와 규칙적인 메모리 접근을 준비하는 데 있다. 이 점에서 GPU는 "빠른 한 번"보다 "쉬지 않는 반복"에 강한 구조다.
📢 섹션 요약 비유: GPU는 계산을 천천히 기다리지 않도록, 한 줄 서 있는 손님이 계산대 앞에서 멈추면 바로 옆 줄 손님을 먼저 보내는 대형 마트와 같다.
Ⅲ. 비교 및 연결
GPU를 정확히 이해하려면 CPU와의 차이, 그리고 이후 등장한 NPU (Neural Processing Unit)와의 경계를 함께 봐야 한다. CPU는 소수 코어에 큰 캐시와 복잡한 제어를 넣어 지연시간과 범용성을 챙기고, GPU는 많은 연산기를 배치해 처리량과 데이터 병렬성을 끌어올린다. NPU는 여기서 더 나아가 행렬·텐서 연산만 더 공격적으로 특화한 형태라고 볼 수 있다.
| 구분 | CPU | GPU | NPU |
|---|---|---|---|
| 최우선 목표 | 지연시간, 범용 제어 | 처리량, 대량 병렬 | 인공지능 텐서 연산 특화 |
| 잘하는 작업 | 분기 많은 코드, OS, DB 제어 | 렌더링, 벡터/행렬 계산, 병렬 커널 | 추론, 학습 일부, 저정밀 행렬 연산 |
| 약한 지점 | 대규모 동일 연산 반복 | 불규칙 분기, 작은 작업 | 범용성 부족 |
| 대표 병목 | 파이프라인/캐시 미스 | 메모리 대역폭, 워프 발산 | 모델 호환성, 유연성 |
GPU는 또 GPGPU (General-Purpose computing on GPU)라는 흐름을 통해 그래픽스 바깥의 범용 연산으로 확장되었다. 딥러닝이 폭발적으로 성장한 이유 중 하나도, 합성곱과 행렬 곱셈이 GPU의 병렬 연산 모델과 잘 맞았기 때문이다. 이후 텐서 코어 (Tensor Core), 혼합 정밀도, NVLink 같은 기술이 붙으면서 GPU는 단순 그래픽 장치를 넘어 데이터센터 핵심 가속기로 자리 잡았다.
여기서 중요한 경계는 "GPU가 모든 병렬 문제의 정답은 아니다"라는 점이다. 연결 리스트 탐색, 그래프 순회, 작은 배치의 잦은 호출처럼 제어 흐름이 불규칙한 작업은 CPU가 더 낫다. 반대로 대규모 배열, 이미지, 텐서처럼 같은 계산을 반복하는 작업은 GPU가 구조적으로 유리하다.
그래픽 렌더링
│
▼
대량 픽셀 · 정점 병렬 처리
│
▼
GPGPU (General-Purpose computing on GPU)
│
├─ 과학 계산 · 영상 처리
└─ 딥러닝 학습 · 추론
│
▼
텐서 코어 · 고속 인터커넥트 · 데이터센터 GPU
즉 GPU는 "CPU의 대체품"이 아니라, 범용 프로세서와 도메인 특화 가속기 사이를 연결하는 중간 지점이다. 그래서 시스템 전체는 CPU+GPU+전용 가속기의 이기종 컴퓨팅으로 이해하는 편이 맞다.
📢 섹션 요약 비유: CPU가 만능 공구함이라면 GPU는 같은 나사를 한꺼번에 수천 개 조이는 전동 공구 세트이고, NPU는 그중에서도 특정 규격 나사만 최고 속도로 조이도록 더 다듬어진 전용 공구다.
Ⅳ. 실무 적용 및 기술사 판단
실무에서 GPU 도입 여부는 "연산량이 큰가"보다 "병렬성이 규칙적인가"와 "데이터 이동 비용을 상쇄할 수 있는가"로 판단해야 한다. 예를 들어 대규모 이미지 배치 추론, 과학 시뮬레이션, 행렬 중심 추천 모델은 GPU에 잘 맞는다. 반면 문자열 파싱, 복잡한 트리 탐색, 작은 요청을 매우 자주 처리하는 온라인 서비스는 GPU를 붙여도 오히려 오버헤드가 커질 수 있다.
특히 호스트와 디바이스 사이의 데이터 이동은 대표적인 함정이다. CPU 메모리에서 GPU 메모리로 복사하고, 다시 결과를 가져오는 과정이 연산 시간보다 길어지면 전체 성능은 나빠진다. 그래서 실무에서는 배치 크기 확대, 비동기 전송, 커널 퓨전, 데이터 상주 전략으로 복사 횟수를 줄이는 것이 중요하다.
또 하나의 핵심 판단 포인트는 점유율보다 활용률이다. GPU 메모리를 꽉 채웠다고 성능이 좋은 것이 아니다. 워프 발산이 심하거나 메모리 접근이 흩어져 있으면 계산 유닛이 놀게 되고, 이때는 이론상 코어 수와 실제 성능 사이에 큰 차이가 생긴다.
실무 체크리스트
- 데이터가 배열·텐서처럼 연속적이고 대량인가?
- 스레드마다 수행하는 명령 흐름이 대체로 같은가?
- CPU↔GPU 복사 시간을 감안해도 전체 이득이 남는가?
- 메모리 대역폭 병목인지, 연산 병목인지 프로파일링으로 확인했는가?
- GPU가 필요한 구간만 오프로딩하고 나머지는 CPU에 남겼는가?
대표 안티패턴
- 작은 연산을 자주 GPU에 보내며 호출 오버헤드를 반복하는 설계
- 조건 분기가 많은 커널을 억지로 병렬화하는 설계
- 메모리 접근을 흩어지게 만들어 대역폭 효율을 잃는 설계
- "GPU 사용률 숫자"만 보고 병목 원인을 단정하는 운영 방식
┌──────────────────────────────────────────────────────────────┐
│ GPU 적용 판단의 실무 분기점 │
├──────────────────────────────────────────────────────────────┤
│ 데이터가 크고 규칙적임 ──┬─ Yes ── 메모리 이동 이득 검토 ─┬─ Yes ─▶ GPU 적합 │
│ │ │ │
│ │ └─ No ─▶ CPU 유지 │
│ │ │
│ └─ No ───────────────────────────────────────▶ CPU 우선 │
└──────────────────────────────────────────────────────────────┘
기술사 관점에서 기억할 점은 단순하다. GPU는 병렬 구조를 하드웨어로 실현한 강력한 선택지이지만, 알고리즘 구조와 데이터 흐름이 맞지 않으면 비싼 자원을 놀리는 결과를 낳는다. 따라서 도입 판단은 코어 수가 아니라 워크로드의 모양을 보고 내려야 한다.
📢 섹션 요약 비유: GPU는 대형 화물 엘리베이터와 같아서 상자를 한꺼번에 실어 올릴 때는 압도적으로 효율적이지만, 문서 한 장씩 여러 층에 계속 옮기는 일에는 오히려 불편하다.
Ⅴ. 기대효과 및 결론
GPU는 컴퓨터 아키텍처가 "더 높은 클럭"에서 "더 많은 병렬성"으로 중심축을 옮기는 데 결정적 역할을 했다. 이 덕분에 실시간 그래픽스, 대규모 과학 계산, 인공지능 학습과 추론이 현실적인 시간 안에 가능해졌다. 특히 데이터센터에서는 GPU가 단순 주변장치가 아니라, 시스템 성능과 서비스 경쟁력을 좌우하는 핵심 자원으로 자리 잡았다.
다만 GPU의 효과는 전제조건 위에서만 성립한다. 충분한 병렬 데이터, 높은 연산 밀도, 적절한 메모리 계층 활용, CPU와의 역할 분담이 갖춰지지 않으면 GPU는 비용만 높은 장치가 될 수 있다. 그래서 GPU를 기억할 때는 "많은 코어"보다 "처리량 중심 설계"라는 관점이 더 중요하다.
앞으로는 GPU가 그래픽스와 인공지능을 함께 담당하는 범용 가속기로 남는 영역과, NPU·TPU (Tensor Processing Unit)처럼 더 좁게 특화된 가속기로 분화되는 영역이 동시에 커질 가능성이 높다. 그럼에도 GPU는 병렬 컴퓨팅의 표준적 사고방식을 대중화한 대표 아키텍처라는 점에서 계속 기준점이 된다.
📢 섹션 요약 비유: GPU는 자동차 엔진 출력만 키운 부품이 아니라, 많은 짐을 한 번에 실어 나르도록 설계 철학 자체를 바꾼 대형 운송차라고 기억하면 된다.
📌 관련 개념 맵
| 개념 | 연결 포인트 |
|---|---|
| GPGPU (General-Purpose computing on GPU) | 그래픽 전용 구조를 일반 계산으로 확장한 활용 방식 |
| SIMT (Single Instruction Multiple Threads) | GPU 스레드 실행 모델의 핵심 개념 |
| 워프 발산 (Warp Divergence) | 같은 스레드 묶음의 분기 차이로 효율이 떨어지는 현상 |
| HBM (High Bandwidth Memory) | GPU 처리량을 뒷받침하는 고대역폭 메모리 |
| 텐서 코어 (Tensor Core) | 딥러닝 행렬 연산을 더 빠르게 처리하도록 확장된 GPU 내부 연산기 |
| 이기종 컴퓨팅 (Heterogeneous Computing) | CPU와 GPU를 역할 분담해 함께 쓰는 시스템 설계 방식 |
📈 관련 키워드 및 발전 흐름도
고정 기능 그래픽 가속기
│
▼
프로그래머블 셰이더 (Programmable Shader)
│
▼
GPU (Graphics Processing Unit)
│
▼
GPGPU (General-Purpose computing on GPU)
│
├─ CUDA (Compute Unified Device Architecture)
├─ OpenCL (Open Computing Language)
└─ 대규모 병렬 과학 계산
│
▼
텐서 코어 · 데이터센터 GPU · AI 가속기와의 분화
이 흐름은 GPU가 "그래픽 전용 회로"에서 시작해 "범용 병렬 컴퓨팅의 중심"으로 확장되고, 다시 인공지능 특화 가속기로 세분화되는 과정을 보여준다.
👶 어린이를 위한 3줄 비유 설명
- GPU는 어려운 일을 혼자 다 하는 똑똑한 한 사람보다, 같은 계산을 동시에 하는 많은 사람을 모아 놓은 팀이에요.
- 그래서 똑같은 색칠이나 숫자 계산을 엄청 많이 해야 할 때 아주 빠르게 끝낼 수 있어요.
- 하지만 사람마다 다른 규칙으로 움직여야 하는 복잡한 일은 오히려 CPU가 더 잘할 수 있답니다.