【ぱいぷらいんあーきてくちゃ】
パイプラインアーキテクチャ とは?
最終更新:
💡 命令の処理を重ねて進める流れ作業
CPUの命令処理を複数の段階に分け、異なる命令の各段階を重ねて進める仕組み。単位時間に処理できる命令数を増やす狙いがあり、1命令の所要時間を短くするとは限らない。
📌 このページのポイント
- 命令の処理を段階に分け、異なる命令を同時に進める
- 取得・解読・実行・メモリアクセス・書き戻しの5段階は説明用のモデル
- 待ち時間のない単純なモデルでは、開始後に毎クロック1命令が完了する
- データの依存や分岐によって、待機や処理のやり直しが生じる
CPUでも流れ作業をするの?
そうだよ。命令Aを解読している間に命令Bを取得する、というように違う命令の処理を重ねるんだ。同じ命令を全部同時に処理するのではなく、それぞれが順に次の段階へ進むよ。
どんな段階に分けるの?
説明によく使う5段階のモデルでは、命令の取得、解読、実行、メモリアクセス、結果の書き戻しだよ。すべてのCPUが5段階とは限らず、メモリを使わない命令もある。図は分担の仕組みを示す単純化した例なんだ。
1命令が1クロックで終わるということ?
違うよ。各段階に1クロックかかる5段階の例では、Aは5クロック目、次のBは6クロック目に完了する。待ち時間がなければ、その後も毎クロック1命令ずつ完了できる。1命令の所要時間と、単位時間の処理量を区別しよう。
途中で待つこともある?
あるよ。たとえばAの計算結果をBが必要とする場合、結果が間に合わなければ待つ必要がある。これがデータハザードの例で、結果を途中の段階から渡すフォワーディングで解消できる場合もあるんだ。
分岐があるとどうなるの?
次に処理する命令が分岐結果で変わるので、先に進めた処理が不要になることがある。これは制御ハザードだよ。分岐予測などで対処する設計もあるけれど、外れた場合のやり直しや待機があるため、常に毎クロック同じ数が完了するわけではないんだ。
まとめ:ざっくりこれだけ覚えればOK!
「パイプラインアーキテクチャ」って出てきたら「命令処理を流れ作業で分担して高速化する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Pipeline Architecture」 = パイプライン構成
💬 Pipelineは配管を表す言葉。処理を段階に分け、次へ次へと流していくイメージで捉えると分かりやすいよ。