์ ํ๋ ์ปดํจํ ์์ GPU๊ฐ ์ค์ํ๊ฐ?
๊ณผ๊ฑฐ์ GPU(Graphics Processing Unit)๋ ๋จ์ํ ๋ชจ๋ํฐ์ ์์์ ์ถ๋ ฅํ๊ธฐ ์ํ ๋ณด์กฐ ์ฅ์น์ ๋ถ๊ณผํ์ต๋๋ค. ํ์ง๋ง ๋ฅ๋ฌ๋, ์ํธํํ ์ฑ๊ตด, ๊ณ ์ฌ์ ๊ฒ์ ๋ฑ ๋ฐฉ๋ํ ๋ฐ์ดํฐ๋ฅผ ๋์์ ์ฒ๋ฆฌํด์ผ ํ๋ ๋ถ์ผ๊ฐ ๊ธ์ฑ์ฅํ๋ฉด์ GPU๋ ์ปดํจํ ์์คํ ์ ์ฃผ์ญ์ผ๋ก ๋ ์ฌ๋์ต๋๋ค.
CPU๊ฐ ๋ณต์กํ ๋ ผ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง '์ฒ์ฌ ์ํ์'๋ผ๋ฉด, GPU๋ ๋จ์ํ ์ฐ์ฐ์ ์์ฒ ๊ฐ์ฉ ๋์์ ์ํํ๋ '์์ฒ ๋ช ์ ๊ณ์ฐ์'๊ณผ ๊ฐ์ต๋๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ GPU์ ๋ด๋ถ ๊ตฌ์กฐ์ ๋์ ์๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ์ AI ์ฐ์ฐ์์ GPU๊ฐ ํ์์ ์ธ์ง ์ฌ์ธต์ ์ผ๋ก ๋ถ์ํด ๋ณด๊ฒ ์ต๋๋ค.
1. GPU์ ๋ด๋ถ ๊ตฌ์กฐ: ์ฒ๋ฆฌ ์ฅ์น์ ์งํฉ์ฒด
GPU์ ๊ฐ์ฅ ํฐ ํน์ง์ ์์ฒ ๊ฐ์ ์ฝ์ด๊ฐ ์งํฉ๋์ด ์๋ค๋ ์ ์ ๋๋ค. CPU์ ์ฝ์ด๊ฐ ์ ๊ฐ์์ ์์ญ ๊ฐ์ ๋ถ๊ณผํ ๊ฒ๊ณผ ๊ทน๋ช ํ๊ฒ ๋๋น๋ฉ๋๋ค.
1.1. ALU(์ฐ์ ๋ ผ๋ฆฌ์ฐ์ฐ์ฅ์น)์ ๋ฌผ๋ ๊ณต์ธ
GPU ๋ด๋ถ์๋ ์์ฃผ ๋จ์ํ ํํ์ ALU๊ฐ ์์ฒ ๊ฐ ๋ฐฐ์น๋์ด ์์ต๋๋ค. CPU์ ALU๋ ๋ณต์กํ ๋ถ๊ธฐ ์์ธก์ด๋ ์ ๊ตํ ๋ช ๋ น์ด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋น๋ํ๊ฒ ์ค๊ณ๋์ด ์์ง๋ง, GPU์ ALU๋ ์ค์ง '๋จ์ ๋ฐ๋ณต ์ฐ์ฐ'์ ์ต์ ํ๋์ด ํฌ๊ธฐ๊ฐ ์์ต๋๋ค. ์ด ์์ ALU๋ค์ ๋ฌถ์ด ํ๋์ SM(Streaming Multiprocessor) ๋จ์๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
1.2. ์ ์ด ์ฅ์น์ ์บ์์ ๋จ์ํ
CPU๋ ์ฒ๋ฆฌ ํจ์จ์ ๋์ด๊ธฐ ์ํด ๊ฑฐ๋ํ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ณต์กํ ์ ์ด ์ฅ์น(Control Unit)๋ฅผ ๋ฐฐ์นํฉ๋๋ค. ๋ฐ๋ฉด, GPU๋ ์ ์ด ์ฅ์น์ ๋น์ค์ ์ค์ด๊ณ ๊ทธ ๊ณต๊ฐ์ ์ฐ์ฐ ์ฅ์น(ALU)๋ก ๊ฐ๋ ์ฑ์๋๋ค. ์ด๋ GPU์ ๋ชฉ์ ์ด '๋ณต์กํ ๋ ผ๋ฆฌ ํ๋ฆ ์ ์ด'๊ฐ ์๋ '๋ฐ์ดํฐ ์ฒ๋ฆฌ๋(Throughput) ๊ทน๋ํ'์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
2. GPU์ ๋์ ์๋ฆฌ: SIMT (Single Instruction, Multiple Threads)
GPU๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํต์ฌ ๋ฉ์ปค๋์ฆ์ SIMT ๋ฐฉ์์ ๋๋ค. ์ด๋ CPU์ SIMD(Single Instruction, Multiple Data)๋ฅผ ํ์ฅํ ๊ฐ๋ ์ ๋๋ค.
- ๋์ ๋ฐฉ์: ํ๋์ ๋ช ๋ น์ด๋ฅผ ์๋ง์ ์ค๋ ๋(Thread)์ ๋์์ ์ ๋ฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด, 1,000๊ฐ์ ์ซ์์ ๊ฐ๊ฐ 2๋ฅผ ๋ํด์ผ ํ๋ค๋ฉด, GPU๋ 1,000๊ฐ์ ์ฝ์ด์ "2๋ฅผ ๋ํ๋ผ"๋ ๋ช ๋ น ํ๋๋ฅผ ๋์์ ๋ด๋ ค ํ ๋ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ฐ์ถํฉ๋๋ค.
- ์ค๋ ๋ ๊ณ์ธต ๊ตฌ์กฐ: GPU๋ ์๋ง ๊ฐ์ ์ค๋ ๋๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด '๊ทธ๋ฆฌ๋(Grid) - ๋ธ๋ก(Block) - ์ค๋ ๋(Thread)'์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ค. ๊ฐ๋ฐ์๋ ์ด ๊ตฌ์กฐ๋ฅผ ํตํด ํ๋์จ์ด ์์์ ํจ์จ์ ์ผ๋ก ์ ์ดํ ์ ์์ต๋๋ค.
3. CPU vs GPU: ์ง์ฐ ์๊ฐ(Latency) vs ์ฒ๋ฆฌ๋(Throughput)
๋ ์ฅ์น์ ๊ฒฐ์ ์ ์ธ ์ฐจ์ด๋ ์ค๊ณ ์ฒ ํ์ ์์ต๋๋ค.
| ๊ตฌ๋ถ | CPU (Central Processing Unit) | GPU (Graphics Processing Unit) |
| ์ค๊ณ ๋ชฉํ | ์ง์ฐ ์๊ฐ ์ต์ํ (Latency) | ์ฒ๋ฆฌ๋ ์ต๋ํ (Throughput) |
| ์ฝ์ด ์ | ์ ๊ฐ ~ ์์ญ ๊ฐ์ ๊ณ ์ฑ๋ฅ ์ฝ์ด | ์์ฒ ๊ฐ์ ๋จ์ ์ฝ์ด |
| ๊ฐ์ | ๋ณต์กํ ์กฐ๊ฑด๋ฌธ, ์์ฐจ์ ์ธ ๋ ผ๋ฆฌ ์ฒ๋ฆฌ | ๋๋์ ๋ฐ์ดํฐ์ ๋ํ ๋ฐ๋ณต ์ฐ์ฐ |
| ๋น์ | ์์์ ์ ์ ํน์๋ถ๋ | ๋๊ท๋ชจ ๋ณด๋ณ ์ฌ๋จ |
CPU๋ ๋ช ๋ น ํ๋๋ฅผ ์ต๋ํ ๋นจ๋ฆฌ ๋๋ด๋ ๊ฒ์ด ๋ชฉ์ ์ด์ง๋ง, GPU๋ ์กฐ๊ธ ๋ฆ๋๋ผ๋ ํ ๋ฒ์ ์์ฒ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ํฉ๋๋ค. ๊ทธ๋ํฝ ๋๋๋ง์ด๋ ํ๋ ฌ ์ฐ์ฐ์ฒ๋ผ ๋ฐ์ดํฐ ๊ฐ ์์กด์ฑ์ด ๋ฎ์ ์์ ์์ GPU์ ์ฑ๋ฅ์ด ์๋์ ์ธ ์ด์ ์ ๋๋ค.
4. GPGPU์ ํ๋์ ํ์ฉ: CUDA์ OpenCL
์ด์ GPU๋ ๊ทธ๋ํฝ ์ฒ๋ฆฌ์๋ง ๋จธ๋ฌผ์ง ์์ต๋๋ค. ์ด๋ฅผ GPGPU(General-Purpose computing on GPU)๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
- CUDA (NVIDIA): NVIDIA๊ฐ ๋ง๋ ๋ณ๋ ฌ ์ปดํจํ ํ๋ซํผ์ผ๋ก, C/C++ ์ธ์ด๋ฅผ ์ฌ์ฉํด GPU ์์์ ๋ฒ์ฉ ์ฐ์ฐ์ ์ธ ์ ์๊ฒ ํด์ค๋๋ค. ํ๋ AI ๋ชจ๋ธ(PyTorch, TensorFlow ๋ฑ)์ ๋๋ถ๋ถ ์ด CUDA๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ํฉ๋๋ค.
- AI ์ฐ์ฐ์ ํต์ฌ: ๋ฅ๋ฌ๋์ ํต์ฌ์ ๊ฑฐ๋ํ ํ๋ ฌ ๊ณฑ์ ์ ๋๋ค. GPU์ ์์ฒ ๊ฐ ์ฝ์ด๋ ํ๋ ฌ์ ๊ฐ ์์ ์ฐ์ฐ์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ์ฌ CPU ๋๋น ์์ญ ๋ฐฐ ์ด์์ ์๋ ํฅ์์ ๊ฐ์ ธ์ต๋๋ค.
5. GPU ๋์์ ๋ณ๋ชฉ ํ์: ๋ฐ์ดํฐ ์ ์ก ์๋
GPU์ ์ฐ์ฐ ์๋๋ ๋งค์ฐ ๋น ๋ฅด์ง๋ง, ์น๋ช ์ ์ธ ์ฝ์ ์ด ์์ต๋๋ค. ๋ฐ๋ก PCIe ์ฌ๋กฏ์ ํตํ ๋ฐ์ดํฐ ์ ์ก์ ๋๋ค. ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ(RAM)์ ์๋ ๋ฐ์ดํฐ๋ฅผ GPU ์ ์ฉ ๋ฉ๋ชจ๋ฆฌ(VRAM)๋ก ๋ณต์ฌํ๋ ๊ณผ์ ์์ ์๊ฐ์ด ์์๋๋๋ฐ, ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ต๊ทผ์๋ 'NVLink'๋ 'HBM(๊ณ ๋์ญํญ ๋ฉ๋ชจ๋ฆฌ)' ๊ฐ์ ๊ธฐ์ ์ด ๋์ ๋๊ณ ์์ต๋๋ค.
ํ๋์จ์ด ์ดํด๊ฐ ๊ณ ์ฑ๋ฅ ์ํํธ์จ์ด๋ฅผ ๋ง๋ ๋ค
์ปดํจํฐ๊ณตํ ์ ๊ณต์์๊ฒ GPU์ ๋์ ์๋ฆฌ๋ฅผ ์ดํดํ๋ ๊ฒ์ ์ด์ ํ์ ์ญ๋์ ๋๋ค. ์ฐ์ฐ์ ํน์ฑ์ ๋ฐ๋ผ CPU์ ๋งก๊ธธ ์์ ๊ณผ GPU์ ๋๊ธธ ์์ ์ ๊ตฌ๋ถํ๋ ๋ฅ๋ ฅ์ด ๊ณง ์ํํธ์จ์ด์ ์ฑ๋ฅ์ ๊ฒฐ์ ์ง๊ธฐ ๋๋ฌธ์ ๋๋ค.
'๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Embedded ํ์จ์ด ๊ฐ๋ฐ์ ํต์ฌ, ์ธํฐ๋ฝํธ(Interrupt) ๋์ ์๋ฆฌ (0) | 2026.05.15 |
|---|---|
| Git Branch์ ๋์ ์๋ฆฌ์ ํจ์จ์ ์ธ ํ์ ์ ๋ต (Git-flow) (1) | 2026.05.06 |
| CPU์ ๋์ ์๋ฆฌ (0) | 2026.05.06 |
| ๋ฐ๋์ฒด ์๋ฆฌ์ 8๋ ๊ณต์ (0) | 2026.05.02 |