파이프라인형 프로세서에서의 코드 최적화

파이프라인형 프로세서에서 응용 프로그램 실행시 발생하는 파이프라인 지연을 소프트웨어적으로 최소화시켜 응용 프로그램의 수행 시간을 최대한 줄이기 위해서 컴파일러의 최적화 단계에서 명령어를 스케쥴링하는 것이다. 파이프라인형 구조에서 어떤 명령어 수행 사이클동안 또 다른 명령어를 수행한다. 이때 만약 두 명령어가 상호 의존적인 경우, 한 명령어가 앞선 명령어의 수행 결과를 사용할 때 앞선 명령어의 수행이 완료하기를 기다려야 한다. 명령어를 잘 배치하면 메모리 데이터 적재나 저장, 분기 지연을 최소화시킬 수 있다. 본 논문에서는 파이프라인형 프로세서의 수행 특성과 Pentium 프로세서가 채용하는 수퍼스칼라(superscalar)구조를 소개하고, 코드 재배치를 위한 명령어 스케쥴링 기법에 대하여 설명하고, gcc를 기반으로 한 명령어 스케쥴링 최적화 기법을 인텔 Pentium 프로세서에 구현한 내용을 기술한다.