RISC-V · RV32IMC · GEMM

RV32IMC와 GEMM: CPU 동작과 가속기 검증을 나눕니다

파이프라인 그림, 명령 집합 지원, 행렬 계산과 합성 보고서는 서로 다른 증거입니다.

다섯 단계 그림이 ISA 지원을 증명하지는 않습니다

fetch·decode·execute·memory·writeback으로 나눈 그림은 구현 구조를 설명합니다. RV32IMC라는 이름은 RV32I 기본 명령과 M의 정수 곱셈·나눗셈, C의 압축 명령 지원을 뜻하며, R형 한 경로가 보인다고 모든 명령과 예외 동작이 검증되는 것은 아닙니다.

M에서 0으로 나눈 결과와 signed overflow 결과는 규격으로 정해져 있습니다. 곱셈 경로만 보이는 구현을 M 전체 지원으로 승격하지 않습니다. 구현한 명령 목록과 테스트한 결과를 따로 남깁니다.

RISC-V M 2.0 규격

PC 증가량은 명령 길이에 맞아야 합니다

일반 JAL과 JALR의 반환 주소는 pc+4지만 RV32C의 C.JAL과 C.JALR은 pc+2를 기록합니다. 모든 분기에 고정 PC+4를 붙인 도식은 압축 명령의 복귀 주소를 설명하지 못합니다. C를 지원하는 fetch·decode·복귀 경로를 별도로 시험해야 합니다.

RISC-V RV32I 2.1: 제어 이동

RISC-V C 2.0: 압축 제어 이동

행렬 크기와 데이터 이동을 먼저 고정합니다

기본 행렬 곱은 A(m×k) × B(k×n) = C(m×n)입니다. B를 n×k로 저장했다면 전치 해석이나 접근 규칙이 추가로 필요합니다. 저장 배치와 수학적 차원을 섞으면 작은 정사각 행렬에서만 우연히 맞는 테스트가 생깁니다.

분기와 관측 지점을 나눈 자체 개념도
  1. CPU 검증: 명령별 결과·분기·메모리 접근

  2. 가속기 계약: 주소·차원·stride·완료 조건

  3. 통합 검증: 기준 계산과 출력·오류를 대조

아래는 특정 설계를 통과시켰다는 주장이 아니라 통합 검토 질문입니다. 정수·부동소수점 형식, 누산 폭, overflow 처리, stride, 입력 소유권과 완료 시점의 출력 가시성을 정의합니다. 직사각 행렬, 경계 크기와 잘못된 요청도 기준 계산과 대조합니다.

설계 계획·합성·실물을 분리합니다

Pratik Landge의 RV32IMC/GEMM 연재 인계를 계기로 검토했습니다. 인계에 기록된 memory-mapped AXI4 연결은 가속기 계획이지 ISA 확장이나 통합 완료의 증거가 아닙니다. RTL·testbench·실행 로그를 확보해 재현하지 않았으므로 연재의 셀 수·주파수·전력 값을 실측 결과로 싣지 않습니다.

합성 보고서를 비교할 때도 라이브러리, 제약, corner와 추정 활동도를 함께 봐야 합니다. 논리 합성의 timing·power 결과를 배치배선 후 결과나 칩 측정, GEMM 처리량과 바꾸어 쓰지 않습니다.