現代のCPUがバイトコードインタープリタのループを効率的に予測する方法

2025-07-05

新しいPythonインタープリタの性能を調査していたところ、著者は、現代のCPUがバイトコードインタープリタのループ内の間接ジャンプを効率的に予測できることを発見しました。これは、TAGEやITTAGEなどの高度な分岐予測器によって実現されています。これらの予測器は、プログラムカウンタ(PC)とその履歴を過去の実行動作にマッピングし、幾何級数的に増加する履歴長の複数のテーブルを使用して、動的に最適な予測を選択します。著者は、ITTAGEの考え方をカバレッジガイド付きファジングとプログラム状態の探索に適用することについても考察し、これにより、インタープリタなどのプログラムの動作をより良く理解し、探索できる可能性を示唆しています。

続きを読む

CPythonのパフォーマンス向上:予期せぬ展開とLLVMの回帰に関する物語

2025-03-10

最近のCPythonの統合により、新しいバイトコードインタープリタの実装が導入され、当初は様々なベンチマークで10~15%という印象的なパフォーマンス向上を示しました。しかし、この向上は、LLVM 19の回帰を無意識のうちに回避した結果であることが判明しました。より適切なベースライン(GCCや調整済みのLLVM 19など)と比較すると、実際のパフォーマンス向上はわずか1~5%に減少します。数週間におよぶコンパイル、ベンチマークテスト、逆アセンブルの結果、LLVM 19におけるテールコールの複製に関する制限が、この回帰の原因であることが明らかになりました。テールコールインタープリタ自体は貴重な改善ですが、この出来事は、ベースラインの選択の難しさやコンパイラの最適化の複雑さの理解不足など、ベンチマーク、パフォーマンスエンジニアリング、ソフトウェアエンジニアリングにおける課題を浮き彫りにしています。

続きを読む
開発