導入
コンピューティングでは、投機的実行は、命令の予期された起動に相当します。つまり、命令が実際に実行される必要があるかどうかを確認せずに実行されることです。

種類
一般に、プログラム内の命令と宣言は次の 3 種類に区別できます。
- 義務的に実行しなければならないもの。
- 関連性がないため実行する必要がないもの。
- 前の 2 つのグループのどちらにも明確に属さないもの。
最初のグループは、どのような場合でもメンバーを実行する必要があるため、投機的実行の恩恵を受けることはできません。
2 番目のグループは、遅延評価と同様に簡単に無視できます。
3 番目のグループは確かに投機的実行の対象であり、実際、そのメンバーは、それらが有用であるかどうか、または 2 番目のグループに配置する必要があるかどうかを判断できるまで、最初のグループの指示と競合して実行される可能性があります。この同時実行性は、投機的実行を並列化できることを意味します。

即時実行
そのように言及されることはほとんどありませんが、即時実行も投機的実行の一種です (ただし、副作用が存在するため状況は複雑になります。計算に必要な値はほとんどの場合スタック上で見つかり、実行されるため、実行のコストが低くなることがよくあります)ヒープに保存してから取得する必要はありません。
vdm | |||||
|---|---|---|---|---|---|
| 建築 | ハーバード アーキテクチャ·フォン ノイマン アーキテクチャ·フリン分類法( SISD · SIMD · MISD · MIMD) | ||||
| 種類 | デジタルシグナルプロセッサ・マイクロコントローラ・システムオンチップ・ベクトルプロセッサ | ||||
| 命令セット | ISA: CISC · EDGE · EPIC · MISC · OISC · RISC · VLIW · ZISC · 8 ビット· 16 ビット· 32 ビット· 64 ビット· 128 ビット | ||||
| 平行度 |
| ||||
| タイミング | クロック信号· クロック ゲーティング·同期プロセッサ·非同期·自動同期· 動的周波数調整· オーバークロック | ||||
| マイクロアーキテクチャ | UAL · バレル シフタ· FPU ·バックサイド バス·マルチプレクサ·デマルチプレクサ·レジスタ· MMU · 変換索引バッファ(TLB) ·キャッシュ·レジスタ バンク·マイクロコード·コントロールユニット | ||||
| 電源管理 | APM・ACPI(状態)・動的電圧調整 | ||||

ユーティリティ
投機的実行は、命令の早期実行が通常の実行よりも時間とスペースが少ない場合にのみ有用なパフォーマンスの最適化であり、これは、この命令が最終的に使用されない結果をもたらした可能性を補うのに十分です。 。
最新のパイプライン マイクロプロセッサは、条件付き分岐命令のコストを削減するために投機的実行を使用します。条件付き分岐命令が発生すると、プロセッサはプログラムがどの分岐パスをたどる可能性が高いかを推測し (これを分岐予測と呼びます)、実行を開始します。対応する指示。推測が間違っていることが判明した場合、接続後に行われたすべての計算は拒否されます。早期実行がなければ、分岐結果が判明するまで計算に関与するパイプライン ステージが非アクティブのままになるため、早期実行は比較的低コストです。ただし、無駄な命令はクロック サイクルを使用し、たとえばラップトップではこれらのサイクルが電力を消費します。したがって、誤って予測された接続ごとに常にペナルティが発生します。条件付き移動命令を備えたプロセッサ (Intel Pentium II やその後継プロセッサなど) が増えています。このタイプの命令を使用すると、条件が満たされた場合にのみ、たとえばレジスタとメモリの間でデータを移動できます。したがって、これ以上の接続はなく、間違った予測によるペナルティも少なくなります。

