학부 GPU 아키텍처 수업, 셰이더 유닛 파이프라인 RTL 프로젝트
학부 GPU 아키텍처 수업 프로젝트에서 간단한 셰이더 유닛 파이프라인을 RTL로 설계해봤습니다. 처음엔 파이프라인 단계 수를 정하는 게 핵심이라고 생각했는데, 실제로는 스톨 처리 로직이 설계 복잡도의 대부분을 차지했습니다. 의존성이 있는 명령어가 연속으로 들어올 때 포워딩 경로를 추가하면서 타이밍 경로가 길어지는 문제가 생겼고, 이를 파이프라인 레지스터 삽입으로 해결했습니다. 시뮬레이션에서 CPI 값이 1.2에서 1.05로 줄었을 때 설계 결정이 수치로 증명되는 느낌이었습니다. GPU 설계는 처리량보다 의존성 관리가 더 어려운 문제라는 걸 배웠습니다. 이후 저는 파이프라인 설계를 볼 때 스톨과 포워딩 조건을 먼저 따지는 습관이 생겼습니다.