HackerNews

LLVMのマシンスケジューラ - パート II

Machine Scheduler in LLVM – Part II

https://myhsu.xyz/llvm-machine-scheduler-2/


この記事では、LLVMにおけるマシンスケジューラの「利益性チェック」フェーズについて深く掘り下げています。この記事の前半では、マシンスケジューラが指令のスケジュールを決定するために経る三つのフェーズ—合法性チェック、実現可能性チェック、利益性チェック—について説明されました。特に、利益性チェックは、レジスタの圧力を軽減し、命令レベルの並列性(ILP)を向上させるために最適な候補を選定することを目指しています。選択は簡単ではなく、マシンスケジューラは速度と維持性を重視し、完全最適解の発見よりも効率的な選択を行います。レジスタ圧力はプログラム内の同時に使用されるアクティブなレジスタの数を示し、レジスタスピルの発生頻度を測る指標として役立ちます。LLVMはレジスタを特性に基づきグループ分けし、圧力値を管理します。最終的に、スケジューリング中に指令が全体の圧力に与える影響を推定する手法についても説明されています。