시스톨릭 배열(Systolic Array)은 다수의 연산 유닛을 규칙적인 격자 형태로 배치하고, 데이터가 유닛 사이를 흐르듯 전달되면서 연산이 이루어지는 병렬 하드웨어 구조이다. 특히 행렬 곱셈과 같은 대규모 MAC(Multiply-Accumulate) 연산이 필요한 딥러닝 계산에 널리 사용된다.
개요
시스톨릭 배열(systolic array)은 동일한 구조의 연산 셀을 1차원 또는 2차원 격자로 구성하고, 데이터가 일정한 방향으로 이동하면서 각 셀이 입력을 받아 연산을 수행하는 방식의 아키텍처이다. "Systolic"이라는 용어는 데이터가 심장의 수축(systole)처럼 리듬 있게 이동하는 특성에서 유래하였다.
특징
- 높은 병렬성: 많은 MAC 유닛이 동시에 연산을 수행한다.
- 데이터 재사용 최적화: weight와 activation을 칩 내부에서 전달하며 재사용한다.
- 단순한 하드웨어 구조: 규칙적 배열이므로 설계와 배치가 쉽다.
- 파이프라인 처리: 데이터가 흐르는 즉시 연산이 이루어져 처리율이 높다.
구조
시스톨릭 배열은 일반적으로 다음 요소로 구성된다:
- 시스톨릭 셀(Systolic Cell): weight를 저장하고, 입력 데이터를 이용해 z = w·x + y 형태의 MAC 연산을 수행한다.
- 데이터 흐름(Dataflow): 입력 x는 한 방향으로, partial sum y는 다른 방향으로 전달된다.
- 2D 격자 구성: 여러 셀을 2D 배열로 배치해 행렬 곱 전체를 병렬로 계산한다.
동작 방식
행렬 곱셈 C = A × B를 계산할 때:
- A의 행(row)은 한 방향으로, B의 열(column)은 다른 방향으로 배열 내부를 통과한다.
- 각 셀은 A[i,k]와 B[k,j]를 곱해 partial sum을 누적하여 C[i,j]를 점차 완성한다.
- 최종 결과는 배열의 특정 경로를 통해 출력된다.
변형 (Dataflow 종류)
데이터 재사용 전략에 따라 여러 종류의 dataflow를 사용할 수 있다.
- Weight Stationary: weight를 셀 내부에 고정하고 activation을 이동시킨다.
- Output Stationary: partial sum이 셀 내부에 머물고 입력이 이동한다.
- Input Stationary: 입력 activation이 고정되고 weight가 이동한다.
응용 분야
시스톨릭 배열 또는 그 변형 구조는 다양한 가속기에서 사용된다:
- Google TPU
- NPU(Neural Processing Unit) 기반 모바일/엣지 칩
- Apple Neural Engine(ANE)
- Habana Gaudi / Intel NNP
- Graphcore IPU
- 삼성/퀄컴 SoC의 딥러닝 가속기
- FPGA 기반 CNN/Transformer 가속기
장점
- 외부 메모리 접근 감소 → 에너지 효율 향상
- 고정된 데이터 흐름 → 파이프라이닝 용이
- 대규모 병렬 처리로 높은 처리량 확보
단점
- 연산 패턴이 고정적이라 범용 GPU보다 유연성이 낮음
- 데이터 흐름이 규칙적이지 않은 연산에는 부적합
같이 보기
- 딥러닝 가속기
- 행렬 곱셈
- MAC(Multiply-Accumulate)
