スポンサーリンク

【応用情報技術者試験】パイプラインハザード

パイプラインハザード|構造・データ・制御の違い コンピュータ構成要素

パイプラインハザードは、命令を重ねて実行するとき、予定どおり処理を進められなくなる要因です。この記事では3種類の見分け方を短く整理します。

何が足りない・決まらないのかで分類

種類 原因 典型例 代表的な対策
構造 必要な資源が同時利用に対応できない 単一ポートの共用メモリで命令取出しとデータアクセスが重なる 資源の分離・複数化、待機
データ 先行命令とのデータ依存 直前の演算結果がまだ利用できない フォワーディング、ストール、命令の適切な並べ替え
制御 次に実行する命令の位置が未確定 条件分岐の結果を待つ 分岐予測、早期判定、必要な待機・取消し

「同じメモリを使う」「同じレジスタを使う」というだけで必ず待ちが発生するとは限りません。資源構成や値を使う時点を確認します。

データ依存のRAW・WAR・WAW

  • RAW(Read After Write):後続命令が、先行命令の書く値を読む。新しい値が必要です。
  • WAR(Write After Read):後続命令の書込みが、先行命令の読出しより先に行われると問題になります。
  • WAW(Write After Write):同じ対象への書込み順序が逆転すると、最終結果が変わる場合があります。

これらが問題になる条件はCPUの構成次第です。典型的な単純な順序実行パイプラインでは、WAR・WAWは発生しない構成があります。全てのCPUで3種類が必ず起きるとは覚えません。

ストール・フォワーディング・フラッシュ

  • ストール:安全に進められるまで、関連する処理を待たせること。
  • フォワーディング:レジスタへの書戻しを待たず、生成された結果を必要な段階へ直接渡すこと。
  • フラッシュ:分岐予測が外れた場合などに、不要になった経路の命令を取り消すこと。

フォワーディングだけで、ロード直後の利用などの待ちが全てなくなるとは限りません。分岐予測も必ず当たるわけではありません。ハザード1回当たりの遅延は、段構成や予測・転送の仕組みによって変わります。

確認問題

条件分岐の結果が決まっておらず、次に取り出すべき命令を確定できない問題は、どのハザードでしょうか。

解答・解説を見る

制御ハザードです。資源の不足なら構造、データの利用タイミングならデータ、進む先の未確定なら制御、と整理します。

具体例と計算へ進む

ハザードの具体例・対策と処理時間の計算を読む

パイプラインの仕組みから処理時間まで復習したい方へ。

関連noteでは、スループット、段数・命令数を使う計算、ストール、3種類のハザードを扱っています。

パイプライン処理のnote教材を見る →

教材の公開範囲・価格などはリンク先でご確認ください。

参考:Cornell:命令スケジューリング/CS 61C:データハザード

コメント