피드로 돌아가기
V.E.L.O.C.I.T.Y.-OS: Classic Compiler Optimization Passes in JIT (Part 7)
Dev.toDev.to
Infrastructure

AST 최적화 패스로 JIT 오버헤드 1.5배 감소 및 3회 실행 내 비용 회수

V.E.L.O.C.I.T.Y.-OS: Classic Compiler Optimization Passes in JIT (Part 7)

UnitBuilds2026년 6월 28일6advanced

Context

JIT 컴파일러의 x86-64 머신 코드 생성 전 단계에서 모델이 생성한 중복 연산과 미사용 변수로 인한 실행 효율 저하 발생. 런타임 오버헤드를 최소화하고 핸드라이팅 어셈블리 수준의 정제된 머신 코드 생성이 필요한 상황.

Technical Solution

  • Constant Folding 및 Propagation 적용을 통해 런타임 연산을 컴파일 타임 상수로 대체하여 메모리 읽기 및 연산 비용 제거
  • 4회 이하의 정적 반복 루프에 Loop Unrolling을 적용하여 점프 레이턴시와 분기 오버헤드를 제거한 Straight Pipeline 구조 설계
  • 후방 탐색 기반의 Inter-procedural Dead Code Elimination(DCE)을 통해 부수 효과 없는 미사용 변수 할당 노드 제거
  • Threaded Live Variable Set 도입으로 루프 내 의존성(Loop-carried dependencies) 유실 문제를 해결하고 변수 생존 주기 정밀 추적
  • Flow-sensitive Constant Invalidation 로직을 구현하여 동적 루프나 조건문 내 변수 변경 시 상수로 간주된 데이터를 무효화하여 정밀도 보장

- 단순 반복문 내 분기 비용이 높을 경우 static count 기반의 Loop Unrolling 검토 - DCE 구현 시 루프 간 의존성 파악을 위한 Live Variable 분석 로직 포함 여부 확인 - Constant Propagation 적용 시 상태 변경이 발생하는 분기점에서 데이터 무효화 전략 수립

원문 읽기