投機的マルチスレッディング
あるスレッドが依存している別のスレッドの処理結果を待たずに投機的に先の命令を実行してしまう手法。
最近ではマイクロプロセッサの機能として実装されていることもある。
プログラム上でスレッドBの実行条件がスレッドAの結果によって確定する場合、BはAに制御依存していると言う。
本来ならBはAの結果を受け取って処理を開始しなければならないが、投機的マルチスレッディングではAの処理が終わるのを待たずにAの結果を予測してBの処理を開始する。
Aの結果によりBの結果は取捨選択され、次の処理に移る。
Aの実行結果の予測が当たっていればAの終了とともに事前に用意されていたBの結果が用いることとなり、処理の高速化が可能となる。 しかし、予想と異なる結果となった場合、あらかじめ取っておいたBの処理結果は破棄され、Bの処理はやり直しとなるため、パフォーマンスは向上しない。