V.E.L.O.C.I.T.Y.-OS: JIT 컴파일러 코어 – AST에서 네이티브 클로저까지 (4부)
저자는 CPU의 L3 캐시 내에서 실행되도록 설계된 새로운 베어메탈 운영체제인 V.E.L.O.C.I.T.Y.-OS를 개발 중입니다. 이 프로젝트의 일환으로, 그들은 신경 문서 아키텍처(NDA) 프로그램의 표준 인터프리터에서 과도한 디스패치 오버헤드로 인해 성능 문제를 겪었습니다. 이를 해결하기 위해 추상 구문 트리(AST)를 네이티브 머신 코드로 변환하는 Just-In-Time(JIT) 컴파일러가 구현되었습니다.이 JIT 컴파일러는 Tier-1 Closure-Based JIT라고 불리며, 직접 기계 명령어 대신 중첩된 Rust 클로저를 생성합니다. 이 방법은 컴파일 시점에 오퍼코드 매치, 범위 검사, 제어 흐름 분기를 해결하여, 런타임 실행이 미리 컴파일된 함수 포인터 체인을 단순히 통과할 수 있게 합니다. 변수 조회는 해시 맵 쿼리에서 메모리 오프셋을 직접 할당하여 슬롯을 미리 할당하고 클로저에 삽입함으로써 최적화됩니다.특히 Rus의 차입 검사기를 관리하는 것이 큰 도전이었는데, 특히 Merkle 데이터베이스와 같은 외부 데이터 구조에 접근해야 하는 클로저가 필요할 때 더욱 그랬습니다. 초기에는 Arc를 통한 고비용 참조 카운팅이 필요했으나, 폐쇄가 모든 수명의 상태를 수용할 수 있도록 하기 위해 상위 랭크드 특성 경계(HRTB)를 사용해 문제가 해결되었습니다. JIT 엔진은 안전한 컴파일 및 실행을 위해 맞춤형 샌드박스에 추가로 포함되었습니다.이 클로저 기반 JIT 컴파일은 직렬화 병목 현상을 우회하여 모델 출력의 속도를 높일 수 있습니다. 하지만 저자는 힙 할당과 정수 연산에 대해 추가적인 최적화가 필요하다고 지적합니다. 다음 편에서는 나눗셈이 없는 루프를 포함한 JIT 수학 최적화에 대해 자세히 다룰 예정입니다.