SyphonArch / swpp202301-compiler-team1

MIT License
1 stars 0 forks source link

[Sprint 2] Register Pressure Analysis Pass 추가 논의 #32

Open heatz123 opened 1 year ago

heatz123 commented 1 year ago

착안점

Add to Sum이나 Function Inlining을 구현하다 보면, Register Pressure에 따라 최적화를 해야 할지 결정하는 편이 좋아 보입니다. 여기서 register pressure는 한 프로그램의 특정 시점에서 관리하고 있는 변수 개수의 최댓값을 의미합니다.

그런데 Register Pressure를 IR 레벨에서 계산하는 것이 생각보다 매우 까다로운 것 같습니다. (Interference graph를 만들고, greedy coloring을 수행.) 이를 따로 Analysis Pass로 구현하여 사용하는 것은 어떨까요?

만약 괜찮으면 이번 Sprint에 작업해보겠습니다. 한다면 실제 백엔드에서 하고 있는 것처럼 그래프 만들어서 분석하지는 않고, 약간 부정확하더라도 사용되는 instruction 각각에 대한 dependency를 고려해서 휴리스틱으로 계산하는 식으로 하려 합니다.

예시 unsigned getAnalysis(Function F) input: Function F output: register pressure calculated with heuristics

pzmaus commented 1 year ago

좋은 아이디어인 것 같습니다! 나중에 완료되신다면 제 구현에 참고할 만한 사항들도 많을 것 같아(dependency찾기 등) 보고 배우겠습니다.

heatz123 commented 1 year ago

넵 그럼 진행해보겠습니다!