9 / 20 · 개념
출력 고정과 다른 데이터 흐름
무엇을 PE에 남기는지에 따라 저장과 전달 비용을 비교합니다.
내용은 무료로 볼 수 있습니다. 수강 신청하면 학습 기록을 저장할 수 있어요.
고정되는 값부터 묻기
시스톨릭 배열은 이웃 사이에서 규칙적으로 데이터를 전달해 여러 PE가 병렬로 계산하는 구조입니다. 'stationary'는 모든 데이터가 멈춘다는 뜻이 아니라 특정 값을 계산하는 동안 가까이 보관해 재사용한다는 뜻입니다. 같은 행렬곱도 어느 값을 남기는지에 따라 PE 내부 레지스터, 부분합 경로와 경계 공급 순서가 달라집니다. 배열 크기만 비교해서 이 차이를 무시하면 필요한 버퍼와 누산기 수를 잘못 추정합니다.
이 과정의 출력 고정(output-stationary, OS) PE(i,j)는 C(i,j)의 부분합을 저장합니다. k가 바뀔 때 A와 B가 흐르지만 acc는 같은 PE에 남습니다. K개 항이 모두 도착한 뒤 결과를 읽고 새 출력 타일을 시작할 때 clear합니다. A의 한 원소는 같은 행의 여러 PE에서, B의 한 원소는 같은 열의 여러 PE에서 재사용됩니다. 2×2 예제에서 A(0,0)=1은 C(0,0)과 C(0,1) 두 계산에 참여합니다.
가중치 고정의 다른 선택
가중치 고정(weight-stationary, WS)은 B 같은 가중치 값을 PE에 미리 넣고 여러 입력에 재사용하는 방식입니다. 고정된 가중치와 여러 A가 곱해지고 부분합은 이동하거나 별도의 누산 저장소에 모입니다. A와 B라는 이름만 바꾸면 이 과정의 OS 제어기가 WS가 되는 것은 아닙니다. PE가 저장하는 값과 결과 경로가 바뀌므로 preload, 누산, 출력 스케줄을 다시 작성해야 합니다.
입력 고정(input-stationary, IS)은 입력 활성값을 가까이 두고 여러 가중치 또는 출력 계산에서 재사용합니다. 어느 방식이 유리한지는 행렬 크기, 반복되는 피연산자, 사용 가능한 저장 공간과 대역폭에 달려 있습니다. 여기서는 완전한 IS 구현을 다루지 않고, 데이터가 머무는 위치를 설명하는 비교 대상으로 사용합니다.
| 방식 | PE 가까이 보관하는 값 | 검토할 주요 비용 |
|---|---|---|
| OS | 출력 부분합 | 각 출력의 넓은 누산기와 결과 읽기 |
| WS | 가중치 | preload와 부분합 전달·저장 |
| IS | 입력 활성값 | 가중치 공급과 출력 합 결합 |
작은 작업으로 비용을 그리기
같은 B로 두 A행렬을 곱하는 작업을 생각해 봅니다. OS 경계 공급 모델을 그대로 두면 두 작업 각각 A 4개와 B 4개, 합계 16개의 피연산자 값을 배열에 공급합니다. B를 경계 근처 버퍼에 남겨 두면 외부 메모리에서의 B 읽기는 두 번째 작업에서 줄일 수 있지만, 배열의 경계 토큰 8개가 필요하다는 사실은 바뀌지 않습니다. WS에서는 가중치 preload를 재사용할 수 있지만 그 대신 부분합 경로와 저장 용량을 설계해야 합니다. '외부 읽기 수', '경계 공급 수', 'PE 간 전달 수'는 서로 다른 측정값입니다.
실제 공개 설계의 비교 출발점으로 UC Berkeley Gemmini README를 확인할 수 있습니다. Gemmini는 OS와 WS를 구성 선택지로 설명하며 데이터 흐름에 따라 저장·누산 구조가 달라짐을 보여 줍니다. 여기의 학습 배열은 Gemmini의 구현이나 명령어 인터페이스를 복제하지 않습니다. 사용한 용어를 확인하고, 우리 배열의 독립적인 계약을 작성하는 참고 자료입니다.
설계 검토에서는 '무엇을 고정하나요?', '어디에서 합하나요?', '어떤 값을 얼마나 공급하나요?'를 각각 한 문장과 표로 답하세요. 데이터 재사용이 많아도 저장 포트가 부족하면 공급이 막힐 수 있습니다. 수치 계산, 전송, 저장의 세 경로를 함께 그려야 데이터 흐름을 실제 RTL로 옮길 수 있습니다.
직접 생각해 보기
두 2×2 작업이 같은 B를 사용하고 B를 로컬 버퍼에 유지합니다. A를 재사용하지 않을 때 외부 피연산자 읽기 수와 OS 경계 공급 수는 각각 얼마인가요?
해설 보기
외부에서는 A를 두 번 4개씩, B를 한 번 4개 읽어 12개입니다. 경계는 작업마다 A 4개+B 4개이므로 16개입니다. 결과 쓰기와 PE 간 전달은 이 계산에 포함하지 않았습니다.