1.パイプライン
パイプライン処理とは、「命令の処理をプロセッサ内で複数のステージに細分化し,複数の命令を並列に実行する(H22秋FE午前問10)」ことです。
パイプラインに関して過去問(H28年秋午前問11)では、「各命令のフェッチ,デコード,実行,演算結果の出力などの各段階を並列に処理する」とあります。
言葉が難しいですね。
覚える必要は全くないのですが、少し説明します。
CPUでは、以下のような手順で命令を実行します。
①Fetch:命令呼出し
記憶装置から命令を呼び出します。プログラムカウンタ(プログラムレジスタ)に記載された命令の番地(アドレス)に従い、メインメモリ上の命令を読み込み、命令レジスタに格納します。
②Decode:解読
命令を解読します。命令デコーダが、①で命令レジスタに格納された命令を解読します。
③Address:実効アドレス計算
主記憶上のどのアドレスに値があるかを計算します。②での命令は、命令部とオペランド部(アドレス部)に分かれる。命令について補足します。
■命令
|-- 命令部 --|-- アドレス部 --|
・命令部:データの処理(加算や減算など)をするのか、読み込みをするのかなどを示します。命令は一つと考えましょう。
・オペランド部(アドレス部):命令の対象となるデータのアドレスが記載されている。
⇒これにより、データをどの場所(レジスタやメモリなど)に、どんな処理するのかがわかる。たとえば、○○番地の値を加算せよ、など。
ですから、命令のオペランド部をそのまま読んでも命令は実行できず、処理するデータが格納されている(レジスタや)メインメモリのアドレス、結果を格納するアドレスを知る必要があります。
実効アドレスの計算方法には、間接アドレス指定などの方式があります。
過去問(H28春FE午前)を見てみましょう。
問9 主記憶のデータを図のように参照するアドレス指定方式はどれか。(★図は省略)
ア 間接アドレス指定
イ 指標アドレス指定
ウ 相対アドレス指定
エ 直接アドレス指定
正解は、アの間接アドレス指定。アドレス部が指し示すメインメモリ上のアドレスに記載された値(アドレスが入っている)を指定する。
種類がたくさんありますね・・・
そうなんです。CPUは、命令の種類ごとに、アドレス指定方式を変えています。
④opeRand:オペランド読み出し
記憶装置から値(オペランド)を読み出します。上記のアドレス計算で求めたアドレス(主はメインメモリ)にある値(オペランド)を読み出し、データレジスタに格納します。
⑤Execute:実行
命令を実行します。演算装置(ALU:Arithmetic and Logic Unit)で、演算を実行します。
2.パイプラインの過去問を解いてみよう
(1)H28秋AP午前
問8 全ての命令が5ステージで完了するように設計された,パイプライン制御のコンピュータがある。20命令を実行するには何サイクル必要となるか。ここで,全ての命令は途中で停止することなく実行でき,パイプラインの各ステージは1サイクルで動作を完了するものとする。 ア 20 イ 21 ウ 24 エ 25 |
↓
↓
↓
↓
↓
【正解】ウ
(2)H25秋NW午前Ⅱ
問22 パイプラインの深さをD,パイプラインピッチをP秒とすると,I個の命令をパイプブラインで実行するのに要する時間を表す式はどれか。ここで,パイプラインは1本だけとし,全ての命令は処理にDステージ分の時間がかかり,各ステージは1ピッチで処理されるものとする。また,パイプラインハザードについては,考慮しなくてよい。 ア (I + D) × P イ (I + D - 1) × P ウ (I × D) + P エ (I × D - 1) + P |
↓
↓
↓
↓
↓
【正解】イ
(3)H22秋FE午前
問10 パイプライン制御の特徴はどれか。 ア 複数の命令を同時に実行するために,コンパイラが目的プログラムを生成する段階で,それぞれの命令がどの演算器を使うかをあらかじめ割り振る。 イ 命令が実行される段階で,どの演算器を使うかを動的に決めながら,複数の命令を同時に実行する。 ウ 命令の処理をプロセッサ内で複数のステージに細分化し,複数の命令を並列に実行する。 エ 命令を更に細かなマイクロ命令の組合せで実行する。 |
↓
↓
↓
↓
↓
【正解】ウ
(4)H18秋午前
問18 次の図のうち,パイプライン制御の説明として適切なものはどれか。ここで,図中の各記号の意味は次のとおりである。 F:命令呼出し, D:解読,A:アドレス計算,R:オペランド呼出し, E:実行 ![]() |
↓
↓
↓
↓
↓
【正解】ウ
ちなみに、エはスーパスカラです。
コメント