본문으로 건너뛰기
김신건의 로그

Systolic Array

· 수정 · 📖 약 1분 · 480자/단어 #hardware #tpu #architecture #matrix-multiply
systolic array, 시스톨릭 어레이, MXU, Matrix Multiply Unit

정의

Systolic Array 는 격자 형태로 배치된 다수의 Processing Element (PE) 가, 입력 데이터가 박동(systolic)처럼 격자를 가로질러 흐르는 동안 각 PE 가 곱셈+누적(MAC) 을 수행하는 하드웨어 구조다.

H.T. Kung 이 1978년 제안한 개념이며, TPU 의 핵심 컴퓨팅 단위로 부활했다. TPU 에서는 MXU (Matrix Multiply Unit) 으로 불린다.

핵심 아이디어

행렬 곱셈 C = A × B 를 수행할 때:

  • 가중치 정주(Weight Stationary): 가중치는 각 PE 에 미리 적재되어 움직이지 않음
  • 활성화 흐름(Activation Flow): 입력 활성화는 격자를 가로질러 흐름 (좌→우)
  • 부분합 누적: 각 PE 가 받은 입력 × 가중치 결과를 다음 PE 로 전달, 마지막 PE 가 누적합 출력

이 구조의 우아함:

  1. 메모리 접근 최소화: 각 가중치는 PE 에 1번 적재 → 수많은 곱셈에 재사용
  2. 완벽한 데이터 재사용: 한 활성화 값이 여러 PE 를 지나며 여러 곱셈에 참여
  3. 간단한 제어: 모든 PE 가 같은 동작 (clock 동기) → 제어 회로 거의 없음

CPU/GPU 와의 차이

CPUGPUSystolic Array (TPU)
제어 회로 비중매우 높음중간매우 낮음
메모리 접근빈번 (캐시 의존)빈번 (HBM)최소 (정주)
행렬 곱 효율낮음높음최고
다양한 워크로드모두대부분행렬 위주만

한계

  • 유연성 부족: 행렬 곱셈에 최적화. element-wise 연산, 비선형 함수 등은 별도 vector unit 으로 처리
  • fixed shape: MXU 크기 (예: 256x256) 보다 작은 행렬을 곱하면 활용률이 낮아짐. 모델을 큰 행렬로 합치는 패딩/타일링 필요
  • 희소(sparse) 비효율: 대부분의 element 가 0인 sparse matrix 에서는 비효율. TPU v4+ 에서 SparseCore 별도 추가

관련 위키

이 개념을 다룬 위키 페이지 (2)

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기