학부 컴퓨터 아키텍처 수업, CPU 설계 시뮬레이터 프로젝트
학부 컴퓨터 아키텍처 수업에서 5단계 파이프라인 CPU를 시뮬레이션으로 구현하면서, 고성능 설계가 왜 복잡한지를 이해했습니다. 파이프라인 해저드를 처리하면서 데이터 해저드·제어 해저드·구조 해저드가 각각 다른 방식으로 처리량에 영향을 준다는 걸 배웠습니다. 분기 예측 정확도를 올리면 파이프라인 플러시 빈도가 줄어 실효 CPI가 낮아진다는 관계를 실험으로 확인했습니다.
L1/L2 캐시 계층을 추가하면서 히트율과 접근 레이턴시 트레이드오프가 처리량에 얼마나 영향을 주는지도 봤습니다. 실행 단위 수를 늘리는 것보다 데이터 의존성을 줄이는 것이 처리량 향상에 더 효과적인 경우가 많다는 걸 배웠습니다. 이후 저는 성능 병목을 볼 때 파이프라인 스테이지별 활용률을 먼저 보는 습관이 생겼습니다.
병목은 자원 부족보다 의존성 때문에 생기는 경우가 많다는 걸 그때 알았습니다.