Code Morphing Software とは

Code Morphing Software(CMS)は、Transmetaマイクロプロセッサがx86命令を実行するために使用するテクノロジです。広い視野で、CMSはx86命令を読み込み、独自のVLIWプロセッサ用の命令をShadeのスタイルで生成します。 CMSの翻訳はShadeの翻訳よりはるかに高価ですが、はるかに高い品質のコードを生成します。 CMSにはインタプリタも含まれており、ユーザモードとシステムモードの両方の動作をシミュレートします。

Adaptive optimization とは

適応最適化は、現在の実行プロファイルに基づいてプログラムの部分を動的に再コンパイルするコンピュータサイエンスの技術です。簡単な実装では、適応オプティマイザは、ジャストインタイムコンパイルと命令の解釈とのトレードオフを単純に行う場合があります。別のレベルでは、適応最適化は、ローカルデータ条件を利用して分岐を最適化し、インライン展開を使用してプロシージャコールのコストを削減することができる。
次々とトランザクションを処理する仮想的な銀行業務アプリケーションを考えてみましょう。これらの取引は、小切手、預金、および多数のより曖昧な取引である可能性があります。プログラムが実行されると、実際のデータは、単一のデポジットを処理することなく、不正な口座番号で単一の小切手を処理することなく、何万件もの小切手をクリアすることから成っている可能性があります。適応オプティマイザは、この一般的なケースを最適化するためにアセンブリコードをコンパイルします。代わりにシステムが数万のデポジットの処理を開始した場合、適応オプティマイザはアセンブリコードを再コンパイルして新しい共通のケースを最適化します。この最適化には、コードのインライン化が含まれる場合があります。
適応最適化の例には、HotSpotとHPのDynamoシステムがあります。
いくつかのシステム、特にJava仮想マシンでは、一連のバイトコード命令に対する実行を、明らかに逆転させることができる。これにより、適応オプティマイザはコードに関する危険な仮定を立てることができます。上記の例では、オプティマイザはすべてのトランザクションがチェックであり、すべてのアカウント番号が有効であると仮定しています。これらの前提が正しくないとわかると、適応オプティマイザは有効な状態に「巻き戻す」ことができ、バイトコード命令を正しく解釈できます。

Frameworks supporting the polyhedral model とは

コンパイラ内で多面体モデルを使用するには、このフレームワークのオブジェクト(様々な空間の領域内の整数値点の集合)を表現し、その上で演算を実行する必要があります(例えば、集合が空であるかどうかをテストする)。
このモデルのオブジェクトと操作の詳細と、モデルをコンパイルするプログラムに関連付ける例については、多面体モデルのページを参照してください。
多面体モデルをサポートする多くのフレームワークがあります。これらのフレームワークの中には、多面体演算を実行するために1つ以上のライブラリを使用するものがあります。他のもの、特にオメガは、すべてを1つのパッケージにまとめました。一般的に使用されるライブラリの中には、オメガライブラリ(および最近のフォーク)、piplib、PolyLib、PPL、isl、多面体コードジェネレータ、barvinokライブラリなどがあります。これらのライブラリのうち、PolyLibとPPLは主に有理値に重点を置いていますが、他のライブラリは整数値に重点を置いています。 gccの多面体の枠組みはGraphiteと呼ばれています。 PollyはLLVMに多面体の最適化を提供し、R-Streamはca. 2006。

Redundant code とは

コンピュータプログラミングにおいて、冗長コードは、ソースコードまたはコンピュータプログラム内のコンパイルされたコードであり、以下のように不必要である。
 (例えば、プログラムによって生成された出力を変更しない、死んだとして知られている)コード)。
NOP命令は、明示的に命令ストリームをパディングするために挿入された冗長コード、または例えば時間を無駄にしてタイミングループを作成するために時間遅延を導入すると考えられます。宣言されているが決して参照されていない識別子は、重複宣言と呼ばれます。

Enabling transformation とは

コンピュータサイエンスでは、有効化変換は、他のコンパイラ最適化の有効性を高めるコンパイラの最適化です。このような最適化は、プログラムの性能を単独で改善することもあれば改善しないこともありますが、他の最適化が優れた結果を生むような方法でプログラムの構造を変更します。典型的な有効化変換には、
 インライン展開:コールサイトの代わりに関数の本体を挿入することで、デッドコードの消去、ループ不変のコードの動き、誘導の変数の消去などの手技内最適化の大規模なコレクションが、呼び出し元と呼び出し先の両方からの情報を利用できます。ループのスキュー:配列の論理形状を「歪ませる」ことによって、このループの最適化(ループ交換と組み合わされた場合)により、ループ内の依存関係が排除され、内部ループを並列化することができます。

Use-define chain とは

Use-Definition Chain(UD Chain)は、他の介在する定義なしでその使用に達することができる、変数の使用Uとその変数のすべての定義Dからなるデータ構造です。定義には多くの形式がありますが、一般的には変数にある値を割り当てることを意味しています(これは、データ型を含む言語構造を参照して記憶域を割り当てる用語とは異なります)。
UDチェーンの対応物は、変数の定義Dと、他の介在する定義なしでその定義から到達可能なすべての用途Uとからなる定義使用チェーン(DUチェーン)である。
UDチェーンとDUチェーンの両方は、データフロー分析と呼ばれる静的コード分析の形式を使用して作成されます。プログラムやサブプログラムのuse-defおよびdef-useチェーンを知ることは、定数の伝播や共通部分式の削除を含む多くのコンパイラの最適化の前提条件です。

Peephole optimization とは

コンパイラ理論では、ピープホール最適化は、生成されたコードのセグメント内の非常に小さなセットの命令に対して実行される一種の最適化です。このセットは、「穴」または「窓」と呼ばれます。これは、より短いまたはより速い命令セットに置き換えることができる命令セットを認識することによって機能する。

Polytope model とは

多面体モデル(ポリトープ法とも呼ばれる)は、明示的に列挙するには大きすぎる多数の操作を実行するプログラムのための数学的枠組みであり、コンパクトな表現が要求されます。ネストされたループプログラムは典型的な例ですが、唯一の例ではありません。このモデルの最も一般的な使用法は、プログラム最適化におけるループネストの最適化です。多面体法は、ネストされたループ内の各ループ反復を多面体と呼ばれる数学的オブジェクト内の格子点として扱い、アフィン変換またはポリトープのタイル張りなどのより一般的な非アフィン変換を実行し、変換されたポリトープを同等目標を絞った最適化目標)、多面体スキャンによるループネスト

Loop interchange とは

コンパイラ理論では、ループ交換は、ネストされたループで使用される2つの反復変数の順序を交換するプロセスです。内部ループで使用される変数は外部ループに切り替えられ、その逆もあります。多次元配列の要素がメモリ内に存在する順序で確実にアクセスされ、参照の局所性が向上することがよくあります。
たとえば、コード・フラグメントでは次のようになります。
 0から20までのiについてiから0まで10 a [i、j] = i + j
ループ交換は次のようになります。
 j = 0〜20 i = 0〜10 a [i、j] = i + j
場合によっては、そのような変換は、配列割り当ての自動ベクトル化など、さらに最適化する機会を作り出すことがあります。