マクロ展開
命令選択の最も単純なアプローチは、マクロ展開[ 3 ]または解釈コード生成[ 4 ] [ 5 ] [ 6 ]として知られています。マクロ展開命令セレクタは、中間レベルの IR 上でテンプレートを照合することによって動作します。一致すると、IR の一致した部分を入力として使用して対応するマクロが実行され、適切なターゲット命令が出力されます。マクロ展開は、中間レベルの IR のテキスト表現に対して直接行うこともできます[ 7 ] [ 8 ]、または IR を最初にグラフィカル表現に変換してから深さ優先で走査することもできます[ 9 ] 。後者の場合、テンプレートはグラフ内の 1 つ以上の隣接するノードに一致します。
ターゲットマシンが非常に単純な場合を除き、マクロ展開を単独で行うと、通常は非効率的なコードが生成されます。この制限を軽減するために、このアプローチを採用するコンパイラは通常、これをピーフホール最適化と組み合わせて、単純な命令の組み合わせを、パフォーマンスを向上させコードサイズを削減するより複雑な同等の命令に置き換えます。これは、Davidson-Fraser アプローチとして知られており、現在GCCで採用されています。[ 10 ]
グラフカバー
別のアプローチとしては、まず中間レベルのIRをグラフに変換し、次にパターンを使用してグラフを覆う方法があります。パターンはグラフの一部に一致するテンプレートであり、ターゲットマシンが提供する単一の命令で実装できます。目標は、選択されたパターンの総コストが最小になるようにグラフを覆うことです。ここで、コストは通常、命令を実行するのに必要なサイクル数を表します。ツリー状のグラフの場合、最小コストのカバーは動的計画法を使用して線形時間で見つけることができますが、[ 11 ] DAGや完全なグラフの場合、問題はNP完全になるため、貪欲アルゴリズムまたは組み合わせ最適化の手法を使用して解決されることがほとんどです。 [ 12 ] [ 13 ] [ 14 ]
参考文献
- ↑ Blindell, Gabriel S. Hjort (2013). 指導選択に関する調査:広範かつ最新の文献レビュー(報告書)。arXiv : 1306.4898 . ISBN 978-91-7501-898-0。
- ↑ Blindell, Gabriel S. Hjort (2016). Instruction Selection: Principles, Methods, & Applications . Springer. doi : 10.1007/978-3-319-34019-7 . ISBN 978-3-319-34017-3. S2CID 13390131 .
- ↑ Brown, P. (1969). "マクロプロセッサの概観". Annual Review in Automatic Programming . 6 (2): 37–88 . doi : 10.1016/0066-4138(69)90001-9 . ISSN 0066-4138 .
- ↑ Cattell, RGG (1979). "コード生成のいくつかのモデルに関する調査と批判" (PDF) .カーネギーメロン大学コンピュータサイエンス学部(技術報告書)。2019年5月23日にオリジナルからアーカイブ(PDF) 。
- ↑ Ganapathi, M.; Fischer, CN; Hennessy, JL (1982). "リターゲット可能なコンパイラコード生成". Computing Surveys . 14 (4): 573–592 . doi : 10.1145/356893.356897 . ISSN 0360-0300 . S2CID 2361347 .
- ↑ Lunell, H. (1983).コード生成ライティングシステム(博士論文)。スウェーデン、リンシェーピング:リンシェーピング大学。
- ↑アメリカ、アンマン。ノリ、KV。ジェンセン、K。ネーゲリ、H. (1974)。 「PASCAL (P) コンパイラ実装ノート」。Instituts für Informatik (技術レポート)。
- ↑ Orgass, RJ; Waite, WM (1969). "モバイルプログラミングシステムのベース" . Communications of the ACM . 12 (9): 507– 510. doi : 10.1145/363219.363226 . S2CID 8164996 .
- ↑ Wilcox, TR (1971).高水準プログラミング言語のための機械語コードの生成(博士論文)。米国ニューヨーク州イサカ:コーネル大学。
- ↑ Davidson, JW; Fraser, CW (1984). "オブジェクトコード最適化によるコード選択". ACM Transactions on Programming Languages and Systems . 6 (4): 505–526 . CiteSeerX 10.1.1.76.3796 . doi : 10.1145/1780.1783 . ISSN 0164-0925 . S2CID 10315537 .
- ↑ Aho, AV; Ganapathi, M.; Tjiang, SWK (1989). "コード生成のためのツリーマッチングと動的計画法". ACM Transactions on Programming Languages and Systems . 11 (4): 491–516 . CiteSeerX 10.1.1.456.9102 . doi : 10.1145/69558.75700 . S2CID 1165995 .
- ↑ Wilson , T.; Grewal, G.; Halley, B.; Banerji, D. (1994). 「リターゲット可能なコード生成への統合的アプローチ」。第7回国際高レベル合成シンポジウム議事録。pp. 70–75。CiteSeerX 10.1.1.521.8288。doi : 10.1109/ISHLS.1994.302339。ISBN 978-0-8186-5785-6. S2CID 14384424 .
- ↑ Bashford, Steven ; Leupers, Rainer (1999). "固定小数点DSPのための制約駆動型コード選択".第36回ACM/IEEE設計自動化会議(DAC '99)議事録、pp . 817–822。CiteSeerX 10.1.1.331.390。doi : 10.1145 / 309847.310076。ISBN 978-1581331097. S2CID 5513238 .
- ↑ Floch, A.; Wolinski, C.; Kuchcinski, K. (2010). "再構成可能なセルファブリックを備えたプロセッサのためのスケジューリングと命令選択の組み合わせ".第21回アプリケーション固有アーキテクチャおよびプロセッサに関する国際会議 (ASAP'10) の議事録: 167–174 .