트레이스 스케줄링
Trace scheduling트레이스 스케줄링은 컴퓨터 프로그램의 [1]컴파일러에 사용되는 Josh Fisher에 의해 개발된 최적화 기법입니다.
컴파일러는 생성된 머신 명령어를 재배치하여 프로그램 성능을 향상시킬 수 있습니다.빈번한 실행 경로를 정적으로 예측하여 중요한 실행 경로를 따라 ILP(Instruction Level Parallelism)를 증가시킵니다.트레이스 스케줄링은 이를 [2]위한 많은 알려진 기술 중 하나입니다.
트레이스는 브랜치를 포함하지만 루프를 포함하지 않는 일련의 명령으로 일부 입력 데이터에 대해 실행됩니다.트레이스 스케줄링에서는 기본 블록스케줄링 방식을 사용하여 빈도가 가장 높은 트레이스부터 시작하여 각 트레이스 전체의 명령을 스케줄링합니다.그런 다음 각 트레이스의 시작 및 종료에 보상 코드를 추가하여 순서가 어긋난 실행이 초래했을 수 있는 영향을 보상합니다.
이로 인해 입력에 따라 프로그램 동작이 크게 달라지면 코드 크기가 크게 증가하고 성능이 저하되거나 불규칙해질 수 있습니다.
트레이스 스케줄링은 원래 매우 긴 명령어(VLIW) 머신용으로 개발되었으며 글로벌코드 모션의 한 형태입니다.루프 언롤링 및 정적 분기 예측을 사용하여 루프를 긴 직선 코드 시퀀스로 변환하여 작동합니다.이 프로세스는 "비슷하게" 코드를 분리하고 트레이스에서 종료하기 위한 핸들러를 추가합니다.목표는 가장 일반적인 경우를 분기 없이 순차적인 명령 집합으로 실행하는 것입니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Steven Muchnick; Muchnick and Associates (15 August 1997). Advanced Compiler Design Implementation. Morgan Kaufmann. ISBN 978-1-55860-320-2.
Trace scheduling .
- ^ Fisher, Joseph (7 July 1981). "Trace Scheduling: A Technique for Global Microcode Compaction" (PDF). IEEE Transactions on Computers. c-30 (7): 478–490. doi:10.1109/TC.1981.1675827. S2CID 1650655.
- Fisher, Joseph A. (1981). "Trace Scheduling: A Technique for Global Microcode Compaction". IEEE Transactions on Computers. 30 (7): 478–490. doi:10.1109/TC.1981.1675827. S2CID 1650655.