이동은 25% 줄였는데 313배 느려졌다: 시스톨릭 배열 실험의 역설

데이터 재사용 효과는 이론대로 관측됐다. 그런데 처리 시간은 295~326배 느렸다. 이동 한 번의 비용을 계산해 보니 이유가 나왔다.

2026-08-18 결과 관련 프로젝트: 폰 노이만 병목과 시스톨릭 배열 →

#시스톨릭배열#폰노이만병목#결과분석

시스톨릭 배열은 이론적으로 폰 노이만 구조보다 유리해야 한다. 데이터를 메모리에서 반복해서 읽는 대신 처리 소자(PE)끼리 값을 직접 넘기며 재사용하기 때문이다. 아두이노 다섯 대로 직접 만들어 재 보니, 이 예측은 절반만 맞았다.

맞았던 절반

행렬 원소가 한 곳에서 다른 곳으로 옮겨지는 횟수를 논리적 이동 횟수로 정의하고 두 구조를 같은 기준으로 셌다. 단일 보드는 결과 원소를 계산할 때마다 필요한 값을 새로 읽어 8K회가 필요하다. 격자에서는 한 번 들어온 원소가 여러 PE를 지나며 계속 쓰여서 6K회로 충분했다.

K단일 보드2×2 격자차이
21612−25%
43224−25%
64836−25%
86448−25%

예를 들어 PE(0,0)이 아래로 넘긴 A[1][k]는 PE(1,0)에서 한 번 쓰이고, PE(1,1)로 다시 넘어가 또 한 번 쓰인다. 같은 값을 메모리에서 다시 읽지 않는다. 데이터 재사용이 이론대로 일어났다.

틀렸던 절반

처리 시간은 완전히 반대였다.

K단일 보드 (µs)2×2 격자 (µs)
252.016,972.4
4112.033,070.4
6160.049,216.8
8208.065,464.0

격자가 295~326배 느렸다. 측정값을 K에 대한 최소제곱 직선으로 근사하면 이렇다.

단일 보드: y = 25.8K + 4.0        (R² = 0.9968)
2×2 격자:  y = 8,081.1K + 775.6   (R² = 0.99999)
기울기 비: 8,081.1 ÷ 25.8 = 313.2

두 직선은 K가 아무리 커져도 만나지 않는다. 기울기도 격자가 훨씬 크고 절편도 격자가 더 크기 때문이다. K를 키우면 언젠가 역전되리라 기대했지만, 이 실험 환경에는 손익분기점이 존재하지 않았다.

이론값과도 어긋났다

Raja(2024)의 공식 NC = 2·SR + SC + T − 2에 2×2 격자를 넣으면 NC = K + 4다. K = 2, 4, 6, 8에서 6, 8, 10, 12 사이클이 나와야 한다. 그런데 실측 클럭 수는 271,558~1,047,424로 네다섯 자릿수 이상 컸다. 이 공식은 PE 간 전달을 1클럭으로 가정실제 칩에서는 PE가 인접해 있어 배선 지연이 나노초 이하다. 그래서 전달 한 번이 사실상 한 클럭 안에 끝난다고 볼 수 있다.하는데, 우리 구현에서는 그 전달이 마이크로초 단위의 외부 GPIO 통신이었기 때문이다.

왜 이런 일이 생겼나: 이동 한 번의 값

이동 횟수는 25% 적은데 시간은 300배 넘게 걸리는 모순은, 이동 한 번에 드는 비용을 구하면 풀린다. 회귀식의 기울기를 K당 이동 횟수로 나눴다.

단일 보드: 25.8    ÷ 8 = 약 3.23 µs   / 이동  (칩 내부 변수 접근)
2×2 격자:  8,081.1 ÷ 6 = 약 1,346.9 µs / 이동  (보드 간 GPIO 통신)

이동 한 번의 비용이 약 417배 차이 난다. 격자는 이동 횟수를 25% 줄였지만 한 번 옮길 때마다 417배를 지불하므로 전체로는 313배 손해다. 곱해 보면 0.75 × 417 ≈ 313으로 앞의 기울기 비와 맞아떨어진다.

시간이 어디에 쓰였는지도 뜯어봤다. K가 1 늘 때 추가되는 8,081.1 µs의 구성이다.

통신      4,000 µs   49.5%
스큐 대기 4,000 µs   49.5%
연산 등      81 µs    1.0%

실제 계산에 쓰인 시간은 전체의 1.0%뿐이었다. 스큐 대기는 수신 순서를 보장하려고 넣은 고정 대기인데, 연산이 전혀 없는 순수한 유휴 시간이 임계 경로의 절반을 차지했다.

결론: 원리는 맞았고 전제가 무너졌다

시스톨릭 배열이 비효율적이라는 결론이 아니다. PE 사이 전달 비용이 메모리 접근 비용보다 충분히 낮아야 이점이 성능으로 바뀐다. 이 실험은 그 전제를 핀 통신으로 무너뜨렸을 때 무슨 일이 생기는지 보여줬다. 실제 TPU가 수백×수백 개의 PE를 한 칩 안에 집적하는 이유를 거꾸로 확인한 셈이다.

이 결과를 읽을 때 조심할 것

이 한계 때문에 300배 넘는 격차는 시스톨릭 배열 일반의 성능이 아니라, 이 구현의 성능으로 읽어야 한다. 전체 실험 설계와 원본 데이터, 참고문헌은 프로젝트 페이지에 정리해 뒀다.