summaryrefslogtreecommitdiff
path: root/docs/appendices/optimizer-tuning.ja.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/appendices/optimizer-tuning.ja.md')
-rw-r--r--docs/appendices/optimizer-tuning.ja.md26
1 files changed, 26 insertions, 0 deletions
diff --git a/docs/appendices/optimizer-tuning.ja.md b/docs/appendices/optimizer-tuning.ja.md
new file mode 100644
index 00000000..c3bbd2fa
--- /dev/null
+++ b/docs/appendices/optimizer-tuning.ja.md
@@ -0,0 +1,26 @@
+# 最適化とバックエンドの調整
+
+These measurements are from the numbered snapshots before the 2026-10 split.
+In this historical table, Ch 24 means the retired combined SCCP snapshot and
+Ch 25 means the retired combined modules/constructor/import snapshot.
+They are not new measurements of the extracted chapters. The implementation
+continues in [Separate Compilation](../chapter28b/README.md).
+
+## RegAlloc の改良: 生存区間の面積と分割コスト
+
+第24章はループ Phi の高頻度辺を分割する前に、低頻度のコピーを試しました。この章ではさらに、スピルがスケジュール済みコードのどれだけをレジスタ圧力から解放するかを推定し、新しいコピーの推定コストで割ります。callee-save 区間は関数全体を覆います。複製可能な定数は使用の近くで再構築できます。ループ内のコピーは高コストなので、`8^loopDepth` で重み付けします。特に多数の使用を持つ値については、低コストな近似です。
+
+複数の固定レジスタ使用を直接分割する規則や、一部の複数定義区間をより深く分割する規則など、第25章のほかの衝突処理はここに残します。サイズのしきい値はヒューリスティックであり、最初の割り当て器へバックポートすべき一般的不変条件ではありません。共有される合法性修正は、引き続き最も早い該当章から始めます。最終監査は第20〜25章の固定隣接ノードの色バイアス、第20〜21章の狭いストアマスク、第21〜25章の ARM レジスタバンク/浮動小数点メモリエンコーディングを修正しました。
+
+第21章の隣接コピー転送も引き継ぎます。次の命令だけで使うコピーは、オペランドがコピー元レジスタを受け入れ、命令の結果に結び付けられていなければ除去します。
+
+現在の比較は、固定したテスト群を行、コンパイラの章を列にした
+[英語版の測定表](optimizer-tuning.md#regalloc-improvements-live-range-area-and-split-cost) を参照してください。
+各セルは ARM/RISC-V の実行命令数、そのうち割り当て器が生成したコピーなどの命令数、
+x86 のループ重み付き移動数を示します。これらは異なる指標です。
+対象、入力、除外項目は [測定方法](../regalloc-spills.md) にあります。
+古い測定群の集計値と混ぜて比較しないでください。
+
+クラス初期化、インライン化、エスケープ解析、ライブラリの変更もグラフを変えます。
+章をまたぐ差を割り当て器だけの品質差と解釈せず、同じ入力とコンパイラで
+ヒューリスティックを比較してください。