コンパイラのコード最適化に基づいたレジスタとキャッシュメモリの使用の効率化

この論文をさがす

抄録

コンパイラのコード最適化の手法として,命令の実行点を変更することによって不要な実行を除去する,部分冗長除去(partial redundant elimination)や部分無用コード除去(partial dead code elimination) といったコード移動と呼ばれるものがある.これらの手法は,いくつかのプログラムの実行効率を向上させる強力な手法であるが,いくつかの変数の生存期間を伸長させ,レジスタ割付けの際にスピルが生じる回数を増加させる傾向がある.この結果,いくつかのプログラムにおいて,スピル増加による実行効率の低減が不要な命令の除去による向上を上回り,目的コードの実行効率を低減することがある.特に近年のコード移動の手法は,ある命令をコード移動することによってその命令に依存する後続の命令を移動できるようになる副次的効果(second order effect)を,1 回の適用で可能な限り反映する傾向がある.これらの手法は,移動する命令数が特に多くなり,従来法よりもスピルが増加する.本研究では,単に不要な命令を除去するのではなく,副次効果とスピルを考慮しながらコード移動を行う手法を提案する.特に本手法は,不要な命令を除去するのではなく,移動する命令のデータがキャッシュメモリに記録されているとき,その命令の実行がキャッシュのデータを再利用するように移動し,スピル増加を防ぐ.

収録刊行物

詳細情報 詳細情報について

問題の指摘

ページトップへ