スポンサーリンク

【応用情報技術者試験】パイプラインを5分で理解!

パイプライン処理は、命令の処理を複数の工程に分け、違う命令の工程を重ねて進める方式です。工場の流れ作業のように、単位時間当たりに完了する命令を増やします。

この記事では工程の重なり・スループット・ハザードを整理します。具体的な処理時間や高速化率の計算は、最後の無料noteで練習できます。

1.違う命令の工程を重ねる

4工程の3命令を1クロックずつずらして重ね、6クロックで完了する学習用モデル
4工程の3命令を1クロックずつずらして重ね、6クロックで完了する学習用モデル

取得 → 解読 → 実行 → 書込みの4工程で考えます。工程を重ねない場合は命令Aの全工程を終えてからBを始めます。パイプラインではAが解読へ進む間にBを取得できます。実際の工程数や構成はCPUにより異なります。

2.増えるのはスループット

レイテンシは1命令が開始してから完了するまでの時間、スループットは単位時間当たりの完了数です。パイプラインは工程を重ねてスループットを高めます。1命令の時間まで必ず短くなるとは限りません。

単純なモデルでは、パイプラインが満たされた後は次々に命令が完了します。図の4工程・3命令では、工程を重ねない12クロックに対し、停止なしなら全体6クロックです。

3.ハザードで工程が止まることがある

種類原因
データハザード前の命令の結果が必要
制御ハザード分岐先がまだ確定していない
構造ハザード同じ資源を同時に使おうとする

フォワーディングは結果を後続の処理へ渡し、分岐予測は分岐先を予測して先へ進むための工夫です。予測が外れた場合などは、処理のやり直しが必要になります。

4.並列処理との関係

パイプラインも処理を重ねる技法の一つです。複数コアで別の仕事を同時に処理する方式とは、重ねる対象が異なります。「並列処理は必ずCPUを分割する」とは限定せず、工程の重なりと複数の実行資源を区別しましょう。

理解を確かめる確認問題

パイプライン処理の主な目的はどれでしょうか。
ア:主記憶容量を増やす イ:命令処理のスループットを高める ウ:データを圧縮する エ:通信速度を上げる

解答・解説を見る

正解はイです。工程を重ねて、一定時間に完了する命令数を増やします。

まとめ:工程の重なりから、全体の時間を考える

パイプラインは工程を分けて重ねる仕組みです。単一命令のレイテンシと、命令全体の完了時間を分けて確認しましょう。

参考:Arm:命令パイプライン

コメント