パイプラインハザードとは、パイプライン処理が正常に行えなかったり、やり直しが必要になることです。(※ハザード(hazard)は「危険」などの意味。パイプラインが正常に機能しない危険と考えればいいでしょう。)

パイプラインハザードにはいくつかの種類がありますが、代表的なのは、分岐命令による制御ハザードです。分岐命令の判定が分かる前に先読みしてパイプライン処理で実行したとしても、判定結果によって、やり直しや取り消し処理が必要になります。

応用情報技術者シラバスでは、パイプラインハザードに関して、データハザード,構造ハザード,制御ハザードの3つがキーワードとして掲載されています。試験では、制御ハザードだけを覚えましょう。

H27秋AP午前
問8 CPUのパイプライン処理を有効に機能させるプログラミング方法はどれか。ここで,  CPUは命令の読込みとデータのアクセスを分離したアーキテクチヤとする。
ア CASE文を多くする。
イ 関数の個数をできるだけ多くする。
ウ 分岐命令を少なくする。
エ メモリアクセス命令を少なくする。

⇒ウ

H26秋SM午前2
問19 パイプラインハザード対策に関する記述のうち,アウトオブオーダ実行方式を用いたものはどれか。
ア 演算に必要なデータがそろうまで実行が待たされている命令によって,後続の命令の実行が待たされることを防ぐために,既にデータがそろっている後続の命令があれば,それを先に実行する。
イ 条件分岐命令の判定結果が分かるまで分岐後の命令実行が待たされることを防ぐために,分岐する確率が高い方の命令を先読みして実行する。
ウ 前の命令の演算結果がレジスタに書き込まれるまで次の命令の実行が待たされることを防ぐために,プロセッサ内にバイパス経路を設け,演算結果を演算器に直接入力して次の命令を実行する。
エ レジスタヘのアクセスが競合して後続の命令の実行が待たされることを防ぐために,クロックサイクルを細分化し,サイクル前半を書込み,後半を読出しとすることで競合なく命令を実行する。

⇒ア
アの前半は、データハザードの説明。そのデータが無いと、次が実行できない場合です。
イの前半は、制御ハザードの説明。分岐結果によって、次の動作が変わりますからね。
エの前半は、構造ハザードの説明(たぶん)。アクセスが競合することで、命令の実行がストップします。
  
H26秋AP午前 
問7 パイプライン方式のプロセッサにおいて,パイプラインが分岐先の命令を取得するときに起こるハザードはどれか。
ア 構造ハザード
イ 資源ハザード
ウ 制御ハザード
エ データハザード

⇒ウの制御ハザード(分岐ハザード)

H25春AP午前
問10 CPUのパイプラインハザードのうち,制御ハザードの発生原因として,適切なものはどれか。
ア キヤツシュミス
イ 先行する命令の結果に依存する演算命令
ウ ハードウェア資源の競合
工 分岐命令

⇒エの分岐命令