ScholarGate
アシスタント

パイプライン処理とハザード

パイプライン処理は、命令処理を複数のステージに分割することで、連続する命令の実行をオーバーラップさせ、スループットを向上させます。ハザードとは、リソースの競合、データ依存性、分岐といった状況により、次の命令が次のサイクルで進行できない状態を指します。

PaperMindでテーマを探す近日公開Find papers & topics
Tools & resources
スライドをダウンロード
Learn & explore
動画近日公開

Definition

パイプライン処理とは、複数の命令の処理を順次的なステージに分割することで、それらの実行をオーバーラップさせる技術であり、ハザードとは、次のクロックサイクルで正しく進行できないためにステージがストールすることを余儀なくされるあらゆる条件を指します。

Scope

このトピックでは、古典的な命令パイプラインと、それを制限する3つのハザードクラス(構造ハザード(リソース競合)、データハザード(命令間の依存性)、制御ハザード(分岐))について扱います。また、標準的な解決策(フォワーディング/バイパス、ストール、分岐処理)も含まれます。高度な並列発行(命令レベル並列性)、分岐方向予測の詳細(分岐予測)、動的再順序付け(アウトオブオーダー実行)は対象外とします。

Core questions

  • 命令実行をステージに分割することで、レイテンシを削減せずにスループットを向上させるにはどうすればよいですか?
  • 構造ハザード、データハザード、制御ハザードとは何ですか、またそれぞれ何が原因で発生しますか?
  • フォワーディングは、ストールなしで多くのデータハザードをどのように解決しますか?
  • パイプラインにおける分岐のコストはどのくらいですか、またどのように軽減されますか?

Key concepts

  • パイプラインステージ(フェッチ、デコード、実行、メモリ、ライトバック)
  • スループット対レイテンシ
  • 構造ハザード
  • データハザード
  • 制御ハザード
  • フォワーディングとバイパス
  • パイプラインストールとバブル
  • 分岐ペナルティ

Key theories

パイプラインのスループットとハザード
kステージパイプラインは、理想的には充填後に1サイクルあたり1命令を完了しますが、構造ハザード、データハザード、制御ハザードは、理想を下回るスループットをもたらすストールを引き起こします。パイプライン設計は、これらのストールを最小限に抑えることに重点を置いています。

Mechanisms

命令処理はステージに分割され、ある命令が実行されている間に、他の命令がフェッチされ、デコードされます。構造ハザードは、2つの命令が同じリソースを必要とするときに発生し、データハザードは、命令がまだ生成されていない結果を必要とするときに発生し、制御ハザードは、次の命令が未解決の分岐に依存するときに発生します。フォワーディングは、結果をステージ間で直接ルーティングし、ストールは、フォワーディングが不十分な場合にバブルを挿入し、分岐処理は、制御ハザードのペナルティを軽減します。

Clinical relevance

パイプライン処理は、事実上すべてのプロセッサにおける基本的な性能向上技術であり、ハザードを理解することで、命令の順序付けや分岐の挙動が速度に影響を与える理由が説明されます。コンパイラによる命令スケジューリングや、プログラマによる依存性および分岐パターンの認識は、パイプライン化されたハードウェア上での性能を大幅に向上させることがあります。

History

パイプライン処理は、1960年代初頭のIBM StretchやCDC 6600といった初期の高性能マシンに登場しました。単純な5ステージパイプラインは、1980年代のRISCプロセッサとともに標準的な教育および設計モデルとなり、ハザードとその解決策の体系的な分類は、ヘネシーとパターソンの教科書で体系化されました。

Key figures

  • John L. Hennessy
  • David A. Patterson
  • Seymour Cray

Related topics

Seminal works

  • hennessy2019
  • patterson2020

Frequently asked questions

パイプライン処理によって、単一の命令の実行は速くなりますか?
いいえ。パイプライン処理は、単一の命令を完了する時間(レイテンシ)を短縮するものではありません。組み立てラインが個々の品目の速度を上げずに生産量を増やすのと同様に、命令の実行をオーバーラップさせることで、単位時間あたりに完了する命令数(スループット)を増加させます。
フォワーディングとは何ですか?
フォワーディング、またはバイパスとは、新しく計算された結果を、それが生成されたステージから、それを必要とする後続のステージに直接ルーティングするものです。これにより、レジスタファイルに書き戻されるのを待つことなく、多くのデータハザードをパイプラインをストールさせることなく解決します。

Methods for this concept

Related concepts