본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
시스톨릭 아키텍처

시스톨릭 배열(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보다 유연성이 낮음
  • 데이터 흐름이 규칙적이지 않은 연산에는 부적합