@article{oai:ipsj.ixsq.nii.ac.jp:00073763,
 author = {坂本, 諒 and 千葉, 雄司 and 久保田, 光一 and 土居, 範久 and Ryo, Sakamoto and Yuji, Chiba and Koichi, Kubota and Norihisa, Doi},
 issue = {2},
 journal = {情報処理学会論文誌プログラミング(PRO)},
 month = {Mar},
 note = {本論文では SH4A 向けコンパイラにおいて浮動小数点演算の演算精度を指定する命令を選択し,挿入先を定める手段として,0-1 整数計画法を利用する手法を提案し,その実用性を評価した結果を示す.SH4A は浮動小数点演算命令の実行時にどの精度で演算を行うか指定するための命令を 2 種類提供するが,それぞれ挿入可能な箇所と実行コストが異なる.このため SH4A 向けコンパイラでは,どこでどの命令を使って精度の指定を行うべきか判断する必要があるが,提案技法ではこの判断に 0-1 整数計画法を利用する.また,0-1 整数計画法がコンパイル時間に与える悪影響を軽減するために,挿入箇所を求める問題を分割,簡約化する技法も提案する.分割や簡約化を適用しても最適解の探索に膨大な時間がかかる場合はあるが,そのような場合には最適解を求めることを諦め,探索を中断してヒューリスティックにより解を求める.組み込み機器向けベンチマーク EEMBC benchmark suite および組み込みプロセッサ向けベンチマーク CoreMark を使って評価したところ,提案技法でコードサイズを最適化すると,コードサイズを 1.2% 小さくできることが分かり,このときコンパイル時間の増加率は相乗平均で 13.5% になり,最適解を求ることができた問題の比率は 99.9% 以上になることが分かった.また,CoreMark を使って評価したところ,提案技法で実行サイクル数を最適化すると,最適化しない場合と比べ,精度指定にかかる実行サイクル数と,アプリケーション全体の実行サイクル数をそれぞれ 64.1% と 3.1% 削減できることが分かった., This paper presents compilation techniques that optimally select and insert SH4A floating point operation precision setting instructions using 0-1 integer linear programming (ILP) solver. Because SH4A provides two kinds of such instructions whose execution cost and available sites differ, the compiler should choose where and which instruction to be inserted. Our solution make this decision using 0-1 ILP solver. In order to reduce compilation speed slowdown by 0-1 ILP solution overhead, we also propose problem dividing and simplification techniques. Despite these techniques, the slowdown sometimes become unbearable, then we refrain from using 0-1 ILP solver and use heuristics instead. We developed two optimizations using our techniqnue, one for the code size and the other for execution cycles. Evaluation using EEMBC benchmark suite and CoreMark showed the code size optimization reduced code size by 1.2% and then the compilation slowdown was 13.5% in geometrical mean, while it found the optimal solution for at least 99.9% of the whole problems. For execution cycle optimization, evaluation using CoreMark showed it reduces precision setting instructions' execution cycles and the whole application execution cycles by 64.1% and 3.1%.},
 pages = {48--66},
 title = {SH4A向けコンパイラにおける0-1整数計画法を使った浮動小数点演算精度指定命令の選択と挿入},
 volume = {4},
 year = {2011}
}