SMT 기반 최적 소프트웨어 파이프라이닝
초록
본 논문은 VLIW 프로세서를 위한 소프트웨어 파이프라이닝을 최적화하기 위해 SMT(Satisfiability Modulo Theories) 솔버를 활용한 새로운 알고리즘을 제안한다. 기존의 휴리스틱 방식보다 높은 성능을 보이며, 불가능한 II(Initiation Interval) 경우에 대한 불만족 핵(unsat‑core) 정보를 제공해 설계자와 프로그래머에게 유용한 피드백을 제공한다.
상세 분석
이 논문은 VLIW 아키텍처의 특성—컴파일 타임에 모든 스케줄링을 수행해야 한다는 점—을 출발점으로 삼아, 소프트웨어 파이프라이닝 문제를 NP‑complete 수준의 최적화 문제로 모델링한다. 기존에 사용되던 Iterative Modulo Scheduling(IMS)이나 Swing Modulo Scheduling 같은 휴리스틱은 근사해를 제공하지만, 최적 해를 보장하지 못한다. 저자는 이를 극복하기 위해 SMT 솔버에 적합한 제약식 집합을 정의한다. 주요 변수는 각 연산의 사이클 위치(Cycle_o), 연산이 할당되는 이슈 슬롯(Slot_o,s), 그리고 사이클‑버스‑레지스터 포트 연결을 나타내는 Boolean 변수들(Connected…)이다.
제약식은 크게 네 종류로 나뉜다. 첫째, 연산은 허용된 사이클 범위 내에 배치되어야 한다. 둘째, 각 연산은 정확히 하나의 이슈 슬롯에만 매핑돼야 하며, 동일 사이클(mod II) 내에서 슬롯 충돌이 없어야 한다. 셋째, 모든 데이터·제어 의존성을 만족해야 하는데, 이는 사이클 차이와 거리(distance)를 이용한 선형 부등식으로 표현된다. 넷째, 버스와 레지스터 포트의 연결 제한을 통해 자원 과부하를 방지한다.
특히 저자는 불만족 핵(unsat‑core) 추출 기능을 활용해, 특정 II가 불가능한 원인을 인간이 이해할 수 있는 형태로 출력한다. 예를 들어, 특정 레지스터 파일의 쓰기 포트가 과부하된 경우를 식별하고, 설계 변경이나 코드 변형을 제안한다.
알고리즘 흐름은 II의 하한값을 계산한 뒤, 단계 수(NumStages)의 하·상한을 추정하고, 해당 파라미터로 SMT 문제를 생성한다. 솔버가 SAT을 반환하면 스케줄을 추출하고, UNSAT이면 단계 수를 조정하거나 II를 증가시켜 재시도한다. 이 과정은 완전 탐색(exhaustive) 방식이지만, 현대 SMT 솔버의 효율성 덕분에 실험에 사용된 400여 개 루프에 대해 실용적인 시간 안에 최적 해를 찾았다.
실험 결과는 히스토리컬 휴리스틱과 수작업 최적화에 비해 평균 8 %의 속도 향상, 최대 22 %의 향상을 기록한다. 또한 코드 크기 증가가 최소화되어, 풀 언롤링 대비 1 % 미만의 증가율을 보인다. 이러한 결과는 SMT 기반 접근법이 VLIW 컴파일러에 실질적인 가치를 제공함을 입증한다.
댓글 및 학술 토론
Loading comments...
의견 남기기