最適化の概念と用語

用語

定義

あ - お

 

アライメント

スタックの適切な境界でデータを格納すること。

インライン関数の展開

各関数呼び出しを、拡張された関数に置換する最適化。

か - こ

 

キャッシュヒット

プロセッサーが必要とする情報がキャッシュ内にある状況。

共通部分式の排除

冗長な計算を検出して結合する最適化。

コピーの伝播

変数を使用する代わりに、割り当てられた値を使用して不必要な割り当てを排除する最適化。

さ - そ

 

条件文

特定の条件が真 (true) であるかどうかによって行う操作。

スカラーのプライベート化

スカラー変数のプライベート化は、並列化を有効にするために、スタティックまたは上位スタック領域からスレッドのローカルスタックにスカラー変数の割り当てを変更することです。この操作には、書き込み許可が必要で、通常同時に実行しているスレッド間のデータ依存を削除します。

スタティック・リンク

プログラムで使用している関数を含むオブジェクト・ファイルのコピーをリンク時に実行ファイルに組込むプロセス。

ストリップマイニング

キャッシュの中に保持できるベクトルで内部ループ演算を可能にするために入れ子のレベルを追加する最適化。この最適化により内部ループのサイズが減るため、内部ループで必要なすべてのデータがキャッシュに格納できるようになります。

ストレングス・レダクション

追加分のみを使用して、複雑な配列インデックス計算処理を減らす最適化。

た - と

 

代替ループ変換

ループのコピーを生成し、境界のサイズに応じて新しいループを実行する最適化。

ダイナミック・リンク

ランタイム時に、共有オブジェクトがプログラムの仮想アドレス空間にマップされるプロセス。

データフロー

システム内のデータの流れ。

定数の畳込み

プログラムを実行する場合に、演算のために数と演算子を格納する代わりに、定数式を評価して結果を使用する最適化。

定数の伝播

ルーチンの引数を実際の定数値に置換する最適化。その後、コンパイラーは実際の引数として使用される定数値を伝播します。

デノーマル値

最小の正規化された浮動小数点数よりも絶対値が小さい計算した浮動小数点値。

トークンペースト

コメントで分離された 2 つのトークンを 1 つとして扱うプロセス (例えば、a/**/b は ab になる)。

は - ほ

 

ハイパースレッディング・テクノロジー

ハイパースレッディング・テクノロジーは、複数の論理プロセッサーを起動して、各物理プロセッサー・パッケージの実行リソースを共有可能にします。これにより、マルチスレッド・アプリケーションの実行時および複数のタスクが同時に実行されているときなどのシステムのスループットを向上します。

ハイパースレッディング・テクノロジーにより、IA-32 アーキテクチャーをベースとしたシステム上で同時マルチスレッド化を使用することができます。このテクノロジーにより、1 つの物理プロセッサーを 2 つの論理プロセッサーとして利用できます。各論理プロセッサーは 1 つのソフトウェア・スレッドを実行できるため、各物理プロセッサーは同時に最大 2 つのソフトウェア・スレッドを実行できることになります。これらの 2 つのソフトウェア・スレッドは、実行エンジンによって同時に実行されます。

パディング

サイズおよびアライメント条件に一致するように、各データ型の最後にバイトまたはワードを追加すること。

負荷のバランス

スレッド間における作業の等分割。負荷のバランスが良くなると、稼働率が上がり、プロセッサーはほとんどの場合ビジーとなります。 負荷のバランスが悪いと、一部のスレッドは他よりも著しく速く完了し、プロセッサーのリソースがアイドル状態のまま、最良のパフォーマンスが発揮されません。

副作用

コードサイズや処理時間を増加させる可能性がある最適化プロセスの結果。

不変分岐

常に同じ分岐が行われる条件文。

不要コードの排除

未使用値を生成するコードやプログラム中で実行されないコードを排除する最適化。

プリロード

ベクトルを一度に 1 つのキャッシュでロードする最適化。ループの演算中に外部バスのターンアラウンドの数が減ります。

プロファイリング

(PGO) プログラムの実行に関する詳細情報を生成するプロセス。

分岐確率データベース

分岐カウント・プロファイラーによって生成されるデータベース。データベースには各分岐が実行された回数も含まれます。

変換

コードの再配置。対照的に、最適化とはランタイム・パフォーマンスの向上が保証されているコードの再配置です。

変数名の変更

別の要素を参照する変数のインスタンス名を変更する最適化。

ま - も

 

未使用コード

プログラム中で使用されない結果を生成する命令。

未到達コード

コンパイラーで決して実行されない命令。

命令スケジューリング

複数の命令を並列に実行できるように、生成された機械語命令を並べ替える最適化。

命令のシーケンス化

効率的でない命令を、特定のプロセッサーの機能を利用する命令シーケンスに置換する最適化。

や - よ

 

誘導変数の排除

追加分のみを使用して、複雑な配列インデックス計算処理を減らす最適化。

呼び出しサイト

呼び出しサイトは、呼び出し命令の直前の命令と呼び出し命令から成る。

ら - ろ

 

ループのアンロール

ループの反復数を減らすために、ループ内で実行された文を複製する最適化。

ループ不変コードの移動

ループ内で変更されない演算の複数のインスタンスを検出する最適化。

ループ・ブロッキング

内部ループの反復をすべて完了する前に、外部ループの反復を実行できるように命令の実行順を並べ替える最適化。

レジスター変数の検出

メモリーに格納する必要がない変数を検出して、レジスター変数に配置する最適化。

英数字

 

HLO

高レベルな最適化。

IPO

プロシージャー間の最適化。ライブラリー・ルーチンを除くプログラム全体に適用される最適化です。

PGO

プロファイルに基づく最適化。「プロファイリング」を参照してください。

PMU

パフォーマンス・モニター・ユニット。

SIMD

Single Instruction Multiple Data。データの並列化に使用される方法です。

SSE

ストリーミング SIMD 拡張命令。IA-32 アーキテクチャー・ベースのプロセッサー用の命令セット。

SSE2

ストリーミング SIMD 拡張命令 2。SSE を拡張する IA-32 アーキテクチャー・ベースのプロセッサー用の命令セット。

SSE3

ストリーミング SIMD 拡張命令 3。SSE と SSE2 を拡張する IA-32 アーキテクチャー・ベースのプロセッサー用の命令セット。

SSSE3

ストリーミング SIMD 拡張命令 3 補足命令。SSE、SSE2、SSE3 を拡張する IA-32 アーキテクチャー・ベースのプロセッサー用の命令セット。

SWP

ソフトウェアのパイプライン化。