SyphonArch / swpp202301-compiler-team1

MIT License
1 stars 0 forks source link

[Sprint 2] 다음 스프린트 진행 관련 논의 #42

Open heatz123 opened 1 year ago

heatz123 commented 1 year ago

Agenda

금일 7시에 회의가 있습니다. 그 전까지 같이 생각해 보면 좋을 부분들은 이슈에 미리 공유하면 좋겠습니다.

1순위 고려 대상은 성능입니다. 일단 생각난 아이디어를 다 적어보겠습니다. 나중에 추리면 좋을 것 같습니다.

Oracle 최적화

Oracle이 프로그램별로 adaptive하게 바뀌도록 개선합니다. 간단하게 설명하면, 프로그램별로 store가 많이 쓰이는 부분을 찾아 oracle에 붙여넣습니다.

Heap to Stack

말 그대로 malloc을 alloca로 바꾸는 기능입니다. 다만 이것을 구현하기 전에 가능한 코스트 감소량의 upper bound를 먼저 계산해야 합니다. 코스트 개선이 유의미한 것 같으면 작업해 봅시다.

Exisitng Pass: Loop Vectorization

기존 계획은 Loop invariant Code Motion을 가져오는 것이었습니다. 대신 Loop vectorization을 가져오게 되면 Oracle과 결합하여 상당한 성능 향상을 볼 수도 있습니다. (loop의 store를 한데 모아주기 때문입니다.) 일부 걱정되는 부분은 레지스터를 과도하게 사용할 수도 있다는 점입니다. 그리고 Loop Vectorization이 어떤 조건에서 발동되는지 확인이 더 필요합니다.

Aload 개선

현재 Aload는 store를 넘어가지 못합니다. 그런데 store과 load의 포인터가 다르다는 것을 컴파일 타임에 알 수 있다면, 넘어가도 안전한 경우가 있습니다. 이 부분을 개선합니다. 예상되는 코스트 개선을 확인하려면 먼저 벤치마크 코드들 확인이 필요합니다.

개선 아이디어가 더 있거나, 피드백 있다면 추가해 주시면 감사하겠습니다.

heatz123 commented 1 year ago

회의 정리

추가적으로, @SyphonArch가 Reduce Register Pressure 관련 pass를 구현 예정.