pipeline: パイプライン
上智大学 伊藤 潔
2009年7月1日
命令語の実行をpipeline
「パイプライン」の方式で行って実行速度を上げる方策があります.1つの命令語は,instruction fetch 「取り出し」,instruction
decode 「解読」, instruction execution 「実行」から成る命令実行サイクルで実行されます.instruction
executionは,対象オペランドのfetch,
演算,結果の書き込みなどに分けられます.これらは,命令実行サイクルを構成するステージと呼ばれます.
ステージを順次A, B, C, D,
Eと記します.パイプライン方式でなければ,ある命令を実行する際に,例えば,ステージCまで進んでいた場合,AやBは終わっているので,また,DやEはまだ使われていないので,Cは稼働状態で,A,
B, D, Eは不稼働状態です.本来は,この5つのステージは,独立に稼働できる装置です.
下記の図のように,プログラムを構成する命令語を,直列に並んでいる,すなわち,パイプライン状に並んでいる,ステージに順番に入れると,5つのステージが並列に稼働し,最大5個の命令語が同時に実行できることになります.
石油や天然ガスのパイプラインは石油や天然ガスがパイプラインの中を流れていきますが,命令語のパイプライン方式では,このように,命令語を実行するステージを直列に,パイプライン的に並べておき,この中を,プログラムを構成する命令語群が流れていきます.
下記の表は,パイプライン方式を説明する際によく使われますが,横軸に時刻を明記しています.時刻i+1では,命令語1のみ実行されています.時刻i+3では,命令語1,命令語2,命令語3が実行されています.時刻i+5では,5つの命令語が実行されています.時刻i+6では,既に,命令語1が実行を終わっていますので,新たに,命令語6がステージAに入っています.
時刻 i+1 |
時刻 i+2 |
時刻 i+3 |
時刻 i+4 |
時刻 i+5 |
時刻 i+6 |
|
instsruction-1 | stage-A | stage-B | stage-C | stage-D | stage-E | |
instsruction-2 | stage-A | stage-B | stage-C | stage-D | stage-E | |
instsruction-3 | stage-A | stage-B | stage-C | stage-D | ||
nstsruction-4 | stage-A | stage-B | stage-C | |||
instsruction-5 | stage-A | stage-B | ||||
instsruction-6 | stage-A | |||||
pipeline | パイプライン | ||
instruction fetch | 命令取り出し | ||
instruction decode | 命令解読 | ||
instruction execution | 命令実行 | ||