병목 구간을 프로파일링으로 찾고 아키텍처 수준에서 최적화하는 결
SoC 설계 수업에서 성능 최적화 과제를 받았을 때 처음에는 전체 클록을 높이는 방향으로 접근했습니다. 클록을 높이면 전력이 급증하고 타이밍 위반도 생겨 결과적으로 성능 목표를 맞추지 못했습니다. 프로파일링을 실행했더니 전체 실행 시간의 60%를 특정 메모리 인터페이스가 차지하고 있었습니다.
메모리 접근 패턴을 분석해 캐시 미스가 많은 구간을 찾고 프리페치 로직을 추가했습니다. 전체 클록은 그대로 유지하면서 유효 대역폭이 늘어 성능 목표를 달성했습니다. 최적화는 전체를 건드리는 것보다 병목 하나를 정확히 찾아 아키텍처 수준에서 개선하는 게 효과적이라는 걸 그때 배웠습니다. 지금도 성능 최적화는 프로파일링부터 시작합니다.