TPU 아키텍처와 Systolic Array 기반 딥러닝 가속
TPU의 전용 ASIC 구조, Matrix Multiply Unit과 Systolic Array, 세대별 발전 및 GPU·CPU와의 차이를 정리한다.
2026-08-14 · 최초 발행 2026-01-03
행렬 곱셈에 맞춘 전용 프로세서
TPU(Tensor Processing Unit)는 Google이 개발한 딥러닝 연산 전용 ASIC(Application-Specific Integrated Circuit)이다. 신경망에서 반복되는 행렬 곱셈을 Matrix Multiply Unit으로 처리하도록 구성했으며, 대규모 AI 모델의 학습과 추론을 가속한다.
Google 검색과 번역 같은 AI 서비스의 연산 부하가 늘어나면서, 범용 GPU만으로는 비용과 전력 효율에 한계가 있었다. TPU는 데이터센터와 클라우드 인프라에서 딥러닝 작업을 수행할 전용 하드웨어로 설계됐고, Tensor 연산에 집중해 GPU보다 높은 성능/전력 비율을 제공한다.
데이터가 지나가는 TPU 내부 경로
TPU는 호스트 CPU와 PCIe로 연결되며, 호스트에서 명령과 데이터를 받아 연산 결과를 다시 반환한다. 가중치는 DDR2 DRAM에 보관하고 Weight FIFO를 거쳐 연산 유닛으로 전달한다. 입력 및 중간 활성화 값은 24MB 온칩 SRAM인 Unified Buffer에 둔다.
Matrix Multiply Unit은 256x256 PE(Processing Element) 배열을 사용하며, 사이클당 65536번의 곱셈-누산 연산, 즉 64K MACs/cycle을 수행한다. 연산 결과의 부분 합은 4MB Accumulators에 저장되고, Activation Unit에서 ReLU·Sigmoid·Tanh 등의 비선형 함수를 적용한 뒤 Normalize/Pool 단계로 넘어간다. 이 단계에서는 Batch Normalization, Max Pooling, Average Pooling을 수행해 중간 또는 최종 출력을 준비한다.
고수준 명령으로 신경망 연산을 제어하는 방식
TPU는 복잡한 명령어가 고수준 연산을 수행하는 CISC 설계를 채택한다. 딥러닝 워크로드에는 5개 주요 명령어가 사용되며, 적은 명령어로 전체 연산을 제어한다.
Read_Host_Memory는 호스트 메인 메모리의 이미지·텍스트 같은 입력 활성화 데이터를 PCIe DMA로 Unified Buffer에 옮긴다.Read_Weights는 TPU의 DDR3 메모리에서 가중치를 읽어 Weight FIFO를 통해 Matrix Multiply Unit으로 스트리밍한다.Matrix Multiply/Convolve는 256x256 멀티플라이 어큐뮬레이트 연산을 수행하고, 결과를 Accumulator에 저장한다. Fully Connected Layer와 Convolutional Layer가 대상이다.Activate는 Accumulator 결과에 활성화 함수를 적용해 Unified Buffer에 저장한다.Write_Host_Memory는 Unified Buffer의 추론 결과나 중간 레이어 출력을 PCIe DMA로 호스트 주메모리에 기록한다.
Systolic Array가 데이터 이동을 줄이는 방법
Systolic Array는 PE를 격자형으로 배치하고, 데이터를 인접한 PE로 순차 전달하는 구조다. 상단에서 가중치를 각 열로 넣고 좌측에서 활성화 값을 각 행으로 공급한다. 각 PE는 곱셈과 부분 합 누적을 수행한 뒤 데이터를 다음 PE로 전달하며, 결과는 우측과 하단으로 나온다.
한 번 로드한 데이터를 여러 PE에서 재사용하므로 메모리 접근 요구량을 낮출 수 있다. 65536번의 MAC 연산을 사이클마다 처리하고, 데이터 이동을 줄여 전력 소비도 낮춘다. 배열 크기를 확장해 성능을 높일 수 있다는 점도 이 구조의 특징이다.
CPU·GPU와 다른 선택 기준
| 특성 | CPU | GPU | TPU |
|---|---|---|---|
| 설계 목적 | 범용 연산 | 병렬 연산, 그래픽 | 딥러닝 전용 |
| 코어 수 | 수십 개 | 수천 개 | 65536 MACs |
| 제어 로직 | 복잡 | 중간 | 단순 |
| 메모리 계층 | 다층 캐시 | 다층 캐시 | 단순 버퍼 |
| 정밀도 | FP64, FP32 | FP32, FP16 | INT8, BF16 |
| 프로그래밍 | C/C++, 범용 언어 | CUDA, OpenCL | TensorFlow 최적화 |
| 에너지 효율 | 낮음 | 중간 | 높음 |
CPU는 복잡한 제어 흐름과 순차 처리, 범용 작업에 맞는다. GPU는 병렬 가능한 범용 연산, 그래픽, 과학 계산에 적합하다. TPU는 대규모 딥러닝 학습과 추론, 특히 행렬 연산에 초점을 둔다.
세대가 확장해 온 학습과 연결성
TPU v1은 2015년에 발표된 추론 전용 세대로, INT8 정밀도와 92 TOPS를 제공하며 Google 내부 데이터센터에서 사용됐다.
2017년 TPU v2는 BF16(Bfloat16), HBM, 180 TFLOPS를 지원하며 학습과 추론을 모두 처리했고, Cloud TPU로 Google Cloud에 제공됐다. TPU v3는 2018년에 420 TFLOPS와 수냉식 냉각을 도입했으며 최대 1024개 TPU를 Pod로 연결해 대규모 학습을 지원했다.
TPU v4는 2021년 275 TFLOPS를 제공하고, 세대당 2배 이상 성능 향상과 Optical Circuit Switch 기반 Pod 연결을 내세웠다. 4096개 이상 TPU로 Pod를 구성할 수 있다. 2023년의 TPU v5는 Transformer와 LLM 워크로드, 희소 행렬 연산, 여러 사용자의 동시 사용을 대상으로 성능과 효율을 개선한 최신 세대다.
서비스와 개발 환경에서의 활용
Google은 TPU를 검색 결과 랭킹과 추천, 신경망 기계 번역(NMT), Google Photos의 이미지 인식 및 분류, Gmail의 스팸 필터링과 스마트 회신, YouTube 비디오 추천에 사용한다. Google Cloud에서는 Cloud TPU, AI Platform, AutoML, Vertex AI를 통해 TPU 리소스와 모델 학습·배포 환경을 제공한다.
연구와 개발에서는 AlphaGo, BERT, GPT, ViT, Stable Diffusion의 학습에 활용된다. 프로그래밍 환경은 TensorFlow의 tf.distribute.TPUStrategy, TPU Estimator, XLA(Accelerated Linear Algebra)를 포함한다. JAX에서는 jax.devices('tpu'), pmap, vmap, 자동 미분을 사용할 수 있고, PyTorch는 torch_xla과 XLA 백엔드, torch.distributed 통합으로 TPU를 지원한다.
전용 가속기를 선택할 때 남는 제약
TPU는 딥러닝 워크로드에서 GPU 대비 우수한 성능, 성능 대비 낮은 전력 소비, Google Cloud에서의 GPU 대비 저렴한 비용을 장점으로 한다. TPU Pod를 통해 수천 개를 연결할 수 있고 TensorFlow와 통합된 환경도 제공한다.
반면 딥러닝 외 작업에는 적합하지 않으며 Google 생태계에 종속된다. TensorFlow와 JAX 중심의 프로그래밍 제약, 클라우드를 통한 하드웨어 접근, 전용 ASIC에 따른 제한적인 디버깅 도구도 함께 고려해야 한다.
향후에는 희소 행렬 최적화, FP8·INT4 같은 혼합 정밀도, HBM 용량 및 대역폭 확대, Attention과 Transformer 전용 연산 유닛이 발전 방향으로 제시된다. 초대형 언어 모델, 텍스트·이미지·비디오를 결합한 멀티모달 AI, 저전력 엣지 디바이스용 TPU, 특정 워크로드에 최적화한 변형, TPU 설계 일부의 공개 가능성도 응용 범위에 포함된다.