11 / 20 · 개념
N×N으로 확장하고 완료 에지 세기
공간 크기 N과 축약 길이 K를 따로 매개변수화합니다.
내용은 무료로 볼 수 있습니다. 수강 신청하면 학습 기록을 저장할 수 있어요.
크기와 축약 길이는 다른 매개변수
N×N PE 배열은 N개의 행과 N개의 열을 한 출력 타일에 매핑합니다. 축약 길이 K는 A의 열과 B의 행이며 N과 같을 필요가 없습니다. 예를 들어 N=3, K=5이면 A는 3×5, B는 5×3이고 C는 3×3입니다. 배열 PE는 9개이고 각 PE가 5번 유효 MAC을 하므로 전체는 45 MAC입니다. N을 바꿀 때는 배선과 스큐 지연 수가, K를 바꿀 때는 누산 폭과 카운터·입력 구간이 바뀝니다.
앞 실습과 같은 시간 기준을 사용합니다. clear는 E0 이전에 완료하고, E_t 입력을 에지 전 안정화하며, MAC과 등록 전달은 같은 에지에서 수행합니다. multiplier 추가 파이프라인은 없습니다. A(i,k)는 k+i에 공급되어 j에지 더 이동하고, B(k,j)는 k+j에 공급되어 i에지 더 이동합니다. 따라서 PE(i,j)의 k항은 E_(k+i+j) 직후 누산됩니다.
가장 늦은 PE는 (N−1,N−1)이므로 마지막 결과는 E_(K+2N−3) 직후 완성됩니다. E0도 한 번의 advance 에지로 세기 때문에 총 계산 에지는 K+2N−2개입니다. 에지 번호와 에지 개수 사이의 1 차이가 자주 발생하는 오류입니다. N=K=2는 마지막 번호 3, 총 4개이고, N=3·K=5는 마지막 번호 8, 총 9개입니다.
배선 규칙과 정적 제약
PE(i,j)의 A 입력은 j=0이면 왼쪽 경계 i번, 그 외에는 PE(i,j−1)의 등록 A 출력입니다. B 입력은 i=0이면 위 경계 j번, 그 외에는 PE(i−1,j)의 등록 B 출력입니다. generate 이중 반복문으로 이 규칙을 표현할 수 있습니다. 하나의 데이터 버스만 연결하는 대신 valid와 job·k 태그도 같은 링크로 연결합니다. 모든 PE는 같은 clear와 advance를 받습니다.
N≥1, K≥1, AW≥2W 같은 제약을 정적으로 확인합니다. K카운터가 0..K를 저장하려면 폭은 max(1,ceil(log2(K+1)))입니다. k 태그는 0..K−1만 저장하므로 max(1,ceil(log2 K))입니다. K=1에서 폭이 0이 되는 선언을 피하고, count를 k 태그와 같은 폭으로 무심코 선언하지 않습니다. K가 2의 거듭제곱이면 그 폭의 k 태그는 K를 담지 못합니다.
계산·입력·출력 시간을 따로 보고하기
마지막 경계 입력은 E_(K+N−2)에 공급됩니다. 이후 마지막 결과까지 N−1개의 advance 에지를 더 진행해야 합니다. N=3·K=5이면 마지막 경계 입력 번호는 6이고, 최종 결과 번호는 8이므로 drain은 2에지입니다. 각 PE의 결과는 서로 다른 에지에서 완성되지만, 단순 래퍼는 전체 완료 후 N²개를 결과 버퍼에 복사합니다.
계산 에지 공식에는 reset·clear·메모리 로드·결과 복사와 소비자의 대기가 없습니다. pause가 P번 발생하면 첫 데이터 에지부터 마지막 결과까지 물리 에지는 K+2N−2+P개입니다. 출력 한 개씩 직렬 전송하는 인터페이스라면 출력 지연도 추가됩니다. 이 구분 없이 'N×N 행렬곱은 몇 클록'이라고 단정하지 말고 무엇을 시작·끝으로 측정했는지 적으세요. 더 깊은 파이프라인은 새 계약으로 분석해야 하며 이 식을 그대로 인용할 수 없습니다.
직접 생각해 보기
N=4, K=3인 배열에서 PE(2,1)의 첫·마지막 MAC 에지 번호, 전체 마지막 에지 번호와 계산 에지 수를 구하세요. pause 두 번이면 물리 에지는?
해설 보기
PE(2,1)은 E3에서 k0, E5에서 k2를 계산합니다. 전체 마지막은 E(3+8−3)=E8이며 E0..E8의 9개 advance 에지입니다. pause 2개를 더하면 11개 물리 에지입니다. 초기화·출력 전송은 제외입니다.