スポンサーリンク

【応用情報技術者試験】制御ハザード

制御ハザード(Control Hazard)とは、パイプライン処理において、分岐命令や割り込み処理などによって次に実行する命令が確定するまで、パイプラインへの命令の読込みを停止したり、無駄な処理が発生してしまう状態のことです。

詳細:

  • パイプライン処理:CPUの処理を複数のステージ(命令の取得、解読、実行、書き込みなど)に分割し、各ステージを並行して実行することで処理効率を向上させる技術です。
  • 制御ハザードの原因:分岐命令(if文やfor文など)は、実行結果によって次に実行する命令が変わるため、パイプライン処理において、どの命令を次に実行するかを判断するのに時間がかかります。
  • 影響:制御ハザードが発生すると、パイプラインが停止したり、誤った命令を先に実行してしまったりするため、処理速度が低下します。
  • 対処法:
    • 分岐予測:分岐の方向を予測して、予測が当たればパイプラインを停止せずに処理を継続し、外れた場合は予測を破棄して再実行します。
    • 遅延分岐:分岐命令の後に続く1つの命令を、分岐の決定に関わらず必ず実行することで、パイプラインの停止を最小限に抑えます。
    • 命令スケジューリング:コンパイラが分岐命令を考慮して、パイプラインの停止を避けるように命令の順番を並べ替えます。

例:

例えば、条件分岐で「もし変数Aが0より大きければ、次の命令を実行し、そうでなければ別の命令を実行する」という場合、Aの値が確定するまで、次の命令をパイプラインに投入することができません。この場合、制御ハザードが発生し、パイプラインが停止する可能性があります。

コメント

タイトルとURLをコピーしました