「分岐予測」の版間の差分
提供: 自作パソコン入門
(ページの作成:「分岐予測 (Branch Prediction) とは、プログラムの条件分岐命令の分岐を予測し、命令パイプラインの効果をできるだけ維持し、...」) |
(相違点なし)
|
2015年5月10日 (日) 16:01時点における最新版
分岐予測 (Branch Prediction) とは、プログラムの条件分岐命令の分岐を予測し、命令パイプラインの効果をできるだけ維持し、性能を高めるためのCPUの機能です。分岐予測を行うことで、投機的実行が行えます。
読み方
- 分岐予測
- ぶんきよそく
- Branch Prediction
- ぶらんち ぷれでぃくしょん
概要
条件分岐命令が分岐するか、しないか、は、分岐条件の計算をして、条件分岐命令が実行ステージを過ぎるまではわかりません。
if ( 条件分岐命令 ) { // ここに来るのか? } else { // ここに来るのか? }
分岐予測を行わない場合、条件分岐命令が実行ステージを過ぎるまで、次にフェッチすべき命令が確定しません。その結果、CPUのパイプラインは、フェッチステージで次の命令が確定するまで、待たなければなりません。
分岐予測では、条件分岐を予測し、次に命令される命令をフェッチし、投機的実行を行います。
分岐予測が間違っていた場合、投機的実行は破棄され、パイプラインは、正しい分岐後の処理を実施します。
分岐予測の的中率
Pentium 4 の分岐予測の的中率は、95%以上です。
分岐予測が外れた場合
分岐予測が外れた場合、正しい分岐先から命令を処理します。 分岐予測ミスによるペナルティは、パイプラインのステージ数が多くなるほど、重くなります。
Intel Core i7の分岐予測
Intel Core i7では
- 2つの分岐ターゲットバッファを持つ
- 2つ以上の分岐予測器を持つ
となっています。
Coreアーキテクチャでは、パイプラインを大幅に減らし、14段になりました。分岐予測ミスのリスクを極力下げるアプローチです。
分岐ターゲットバッファ
分岐ターゲットバッファとは、分岐命令の実行を高速化するためのCPUのバッファです。BTBとも呼ばれます。分岐ターゲットバッファは、プログラムの条件分岐命令の過去の実行結果を記憶しておきます。条件分岐命令に遭遇したら、分岐ターゲットバッファを参照して、分岐命令を行います。
パイプライン数
CPU | パイプライン段数 | パイプライン数 |
---|---|---|
Pentium | 5 | 2 |
Pentium Pro | 12 | - |
Pentium II | 12 | - |
Pentium III | 12 | - |
Pentium M | 10 | - |
Pentium 4 | 20 | - |
Pentium 4 Prescott | 31 | - |
Intel Core, Yonah | 13 | - |
Core2 Merom | 14 | - |
第1世代 Core Nehalem | 16 | - |
第2世代 Core Sandy Bridge | 16 | - |
第3世代 Core Ivy Bridge | 14 | - |
第4世代 Core Haswell | 14 | - |