【コンピュータシステム】ベルトコンベアが止まる恐怖の渋滞!「パイプラインハザード」|情報処理問題1000本ノック
CPUを高速化するための強力な仕組み「パイプライン処理」。複数の命令を同時並行で処理していく中で、データの衝突や分岐命令によって処理の連続性が途切れてしまう致命的な現象「パイプラインハザード」を攻略しましょう。
1. 【 問題 】:コンピュータ構成要素(プロセッサの高速化制御・パイプライン)
【 問題 】 CPUの高速化技術である「パイプライン処理」に関する記述です。前の命令と次の命令で同じレジスタやメモリ領域を同時に参照・操作しようとする「データの依存関係」などが原因で、後続の命令を予定通り並行して実行できなくなり、パイプラインの処理効率が低下(または一時停止)してしまう状況や原因のことを何と呼ぶでしょうか?
(ア) パイプラインダメージ
(イ) パイプラインエラー
(ウ) パイプラインフォールト
(エ) パイプラインハザード
2. 正解:
正解: (エ) パイプラインハザード
3. 解説:「前の作業が終わるまで、後ろの人は待機」というロスタイム
パイプラインハザード(Pipeline Hazard)とは、パイプライン処理がスムーズに流れなくなる障害の総称です。
パイプラインは、複数の命令を重ね合わせて同時進行させることで全体の処理速度を上げますが、命令同士が互いに影響し合っている場合、後ろの命令が前の命令の完了を待たなければならず、空き時間(バブル/ストール)が生じてしまいます。設問にある「同一レジスタの利用」によるハザードは、特に「データハザード」と呼ばれます。
| ハザードの種類 | 発生する具体的な原因 | ハザードを防ぐ・軽減する主な対策技術 |
|---|---|---|
| ① データハザード | (設問のケース)前の命令が書き込むレジスタの値を、次の命令がすぐ使おうとしたとき。 | フォワーディング(バイパス)、アウトオブオーダー実行 |
| ② 制御ハザード | 条件分岐命令(IF文など)の際、次に実行すべき命令がどちらになるか確定するまで先読みできないとき。 | 分岐予測(ブランチプレディクション)、遅延分岐 |
| ③ 構造ハザード | メモリや演算器など、同じハードウェア資源(リソース)に複数のステージが同時にアクセスしようとしたとき。 | ハーバードアーキテクチャ(命令用とデータ用のメモリ分離) |
1. 理解のコツ: 「ハンバーガーショップの調理ライン」に例えてみましょう。
・この店は、1人が「パンを焼く」、次の人が「肉を挟む(レジスタ書き込み)」、最後の人が「包装する(読み込み)」という分業パイプラインです。通常なら、次々とハンバーガーが流れるはずです。
・しかし、前の人が「超特製肉(同一レジスタ)」をじっくり焼いて挟むのを完了させる前に、後ろの包装担当が「よし、その超特製肉バーガーを包むぞ!」と手を伸ばしても、そこにはまだ現物がありません。結果として、包装担当は手が空いてぼーっと待つしかなく、後ろのライン全体が詰まってしまいます。この、『前の工程が終わっていない共通パーツを使おうとして、後ろのラインがストップする渋滞現象』がパイプラインハザード(データハザード)です。
2. 試験対策の視点: コンピュータアーキテクチャのプロセッサ高速化分野における定番中の定番問題です。問題文の中に「同一レジスタの利用」「パイプライン処理がうまく機能しない」「並行処理が阻害される」という記述があれば、迷わずパイプラインハザードを選択してください。
さらに応用試験では、上の表にある「ハザードの3つの分類」と「それぞれの対策技術」の組み合わせが非常によく狙われます。「条件分岐による遅延=制御ハザード(対策:分岐予測)」「データの依存関係による遅延=データハザード」といったように、発生原因ごとの専門用語までセットで結びつけておくことが、試験の午後問題や高度な設問をクリアする大きなアドバンテージになります。
4. まとめ
「複数の命令を重ね合わせて実行するパイプライン処理において、同一レジスタへのアクセス競合や条件分岐などによって、処理のスムーズな流れが妨げられてストップしてしまう状況」。これがパイプラインハザードです。CPUをさらに効率よく動かすための様々な技術(分岐予測など)の前提となる重要キーワードですので、しっかりと記憶に定着させておきましょう!