twopercenz.dev
SAVANT

What is SAVANT?

We will understand about SAVANT Project.

SAVANT

폰 노이만 병목의 답으로서의 시스톨릭 배열

아두이노 나노 보드로 구현한 폰 노이만 구조와 2×2 시스톨릭 배열 아키텍처를 비교한 고등학교 연구 프로젝트입니다.

What?

SAVANT는 두 가지 컴퓨팅 패러다임을 물리적으로 구성하고 측정하는 실습 실험입니다:

  • 대조군 — 공유 배열에 순차적으로 접근하는 단일 아두이노 나노로 폰 노이만 스타일의 메모리 병목 현상을 모델링
  • 실험군 — 2×2 그리드로 연결된 네 개의 아두이노 나노로, 각 보드는 소형 시스톨릭 배열의 처리 요소(PE)로 동작

시스톨릭 배열에서는 두 가지 데이터 흐름 모드인 Output Stationary(OS)와 Weight Stationary(WS)를 테스트합니다.

저장소 구조

SAVANT/
├── single_board.ino   # 대조군 (순차)
├── OS_PE00.ino        # Output Stationary — 왼쪽 위
├── OS_PE01.ino        # Output Stationary — 오른쪽 위
├── OS_PE10.ino        # Output Stationary — 왼쪽 아래
├── OS_PE11.ino        # Output Stationary — 오른쪽 아래
├── WS_PE00.ino        # Weight Stationary — 왼쪽 위
├── WS_PE01.ino        # Weight Stationary — 오른쪽 위
├── WS_PE10.ino        # Weight Stationary — 왼쪽 아래
├── WS_PE11.ino        # Weight Stationary — 오른쪽 아래
└── README.md

실행 방법

  1. PE(1,1) → PE(0,1) → PE(1,0) → 마지막으로 PE(0,0) 업로드
  2. PE(0,0)과 PE(1,1)에서 시리얼 모니터를 9600 baud로 열기
  3. 시작하려면 PE(0,0)의 리셋 버튼을 누르기
  4. 시리얼 모니터에서 처리 시간(µs)과 통신 횟수 기록
  5. 조건별로 ≥5회 반복

측정 변수

유형변수
독립 변수처리 구조, 데이터 흐름(OS/WS), 행렬 크기 (M×N×P)
종속 변수처리 시간(µs), 메모리/통신 접근 횟수

이론적 사이클 수는 Raja(2024)의 공식을 사용하여 계산됩니다:

NC=2SR+SC+T2N_C = 2·S_R + S_C + T − 2

참고문헌

Tejas Raja, "Systolic Array Data Flows for Efficient Matrix Multiplication in Deep Neural Networks", arXiv:2410.22595, 2024.

On this page