시스톨릭 배열 가속기 (Systolic Array Accelerator)
쉽게 풀면
시스톨릭 배열은 심장(systole)이 규칙적으로 박동하며 혈액을 순환시키는 모습에서 이름을 따온 구조로, 데이터가 심장 박동처럼 일정한 리듬으로 배열 안의 처리 요소들 사이를 흐릅니다. 각 처리 요소는 바로 옆에 있는 요소하고만 데이터를 주고받고, 받은 데이터로 곱셈과 덧셈을 수행한 뒤 다음 요소로 넘겨줍니다. 이렇게 하면 메모리에서 데이터를 매번 다시 읽어올 필요 없이 계속 재사용할 수 있어 효율이 크게 높아집니다. 딥러닝의 핵심 연산인 행렬 곱셈을 매우 빠르고 규칙적으로 처리하는 데 적합한 구조입니다.
왜 중요한가
시스톨릭 배열은 데이터 이동을 최소화하면서 병렬 연산을 극대화할 수 있어 딥러닝 전용 가속기(TPU 등)의 핵심 아키텍처로 널리 채택되고 있습니다. 규칙적인 데이터 흐름 덕분에 하드웨어 설계와 확장이 비교적 단순하다는 점도 컴퓨터 구조 연구에서 중요하게 다뤄지는 이유입니다.
논문에서는 이렇게 쓰입니다
시스톨릭 배열 가속기가 데이터 재사용을 극대화하기 위해 처리 요소 격자를 통해 가중치와 활성값을 흘려보낸다는 내용입니다.
행렬 곱셈을 2차원 시스톨릭 배열에 매핑함으로써 메모리 대역폭을 줄이면서도 높은 처리량을 달성했다는 의미입니다.
조금 더 깊게 보면
시스톨릭 배열은 각 처리 요소가 곱셈-누산(MAC) 연산을 담당하며, 가중치나 입력 데이터를 배열 전체에 파이프라인 방식으로 흘려보내는 데이터플로우(weight-stationary, output-stationary 등)에 따라 여러 변형이 존재합니다. 데이터가 인접 셀 간에만 이동하므로 배선 복잡도가 낮고 클럭 주파수를 높이기에도 유리합니다.
주의할 점
시스톨릭 배열은 행렬 곱셈처럼 규칙적인 연산 패턴에는 매우 효율적이지만, 연산 형태가 불규칙하거나 희소(sparse)한 경우에는 배열 활용률이 떨어질 수 있습니다.