현대 CPU가 바이트코드 인터프리터 루프를 효율적으로 예측하는 방법

2025-07-05

새로운 Python 인터프리터의 성능을 조사하던 중 저자는 현대 CPU가 바이트코드 인터프리터 루프 내의 간접 점프를 효율적으로 예측할 수 있다는 것을 발견했습니다. 이는 TAGE 및 ITTAGE와 같은 고급 분기 예측기 덕분입니다. 이러한 예측기는 프로그램 카운터(PC)와 해당 이력을 과거 실행 동작에 매핑하고 기하급수적으로 증가하는 이력 길이의 여러 테이블을 사용하여 동적으로 최적의 예측을 선택합니다. 저자는 TAGE의 개념을 적용하여 커버리지 기반 퍼징과 프로그램 상태 탐색에 적용하는 것을 고려하고, 이를 통해 인터프리터 등의 프로그램 동작을 더 잘 이해하고 탐색할 수 있는 가능성을 시사합니다.

더 보기

CPython 성능 향상: 예상치 못한 전개와 LLVM 회귀에 대한 이야기

2025-03-10

최근 CPython 통합을 통해 새로운 바이트코드 인터프리터 구현이 도입되었고, 초기에는 다양한 벤치마크에서 10~15%라는 인상적인 성능 향상을 보였습니다. 그러나 이 향상은 LLVM 19의 회귀를 무의식적으로 우회한 결과인 것으로 밝혀졌습니다. 더 적절한 기준(GCC 또는 조정된 LLVM 19 등)과 비교하면 실제 성능 향상은 고작 1~5%로 감소합니다. 수 주간의 컴파일, 벤치마크 테스트, 역어셈블리 결과, LLVM 19의 테일 콜 복제에 대한 제한이 이 회귀의 원인임이 드러났습니다. 테일 콜 인터프리터 자체는 귀중한 개선이지만, 이 사건은 기준선 선택의 어려움이나 컴파일러 최적화의 복잡성에 대한 이해 부족 등 벤치마킹, 성능 엔지니어링, 소프트웨어 엔지니어링의 과제를 부각합니다.

더 보기
개발