ソフトウェア開発平成16年問16
問 題
コンピュータの命令実行順序として、適切なものはどれか。ア オペランドフェッチ→ 命令の解読→ 命令フェッチ→命令の実行
イ オペランドフェッチ→ 命令フェッチ→ 命令の解読→ 命令の実行
ウ 命令の解読→ 命令フェッチ→ オペランドフェッチ→ 命令の実行
エ 命令フェッチ→ 命令の解読→ オペランドフェッチ→ 命令の実行
解 説
難易度 ★★解答
エ 命令フェッチ→ 命令の解読→ オペランドフェッチ→ 命令の実行
長 池「この問題は、CPUアーキテクチャに関する問題だね。」
ユウト「パソコンは持っていますが、CPUがどのような動きをするかまったく
理解していません。」
長 池「そうかぁ。
パソコンを使うのにCPUの動きを意識しながら操作している人は
なかなかいないからね。」
ユウト「そうですよね。」
長 池「でもコンピュータシステムを勉強する場合、コンピュータの脳と
言われるCPUの働きを理解する必要があるんだよ。
当然試験にも毎回出題されるよ。」
ユウト「それじゃ、一生懸命勉強しないと。。。」
長 池「今回は、コンピュータ(CPU)の命令実行順序の問題だよ。
頻出問題だね。
なぜかと言うと、出題者が受験者が知っているか知らないかを
簡単に把握することができるからなんだ。
こういう形式の問題は、今後も出題されるだろうね。
それじゃ、ユウトくん。解いてごらん。」
ユウト「はい。選択肢を見ると最後は、『命令の実行』で終わっていますので、
初めの3つを並べ替えればいいんですね。
フェッチとかオペランドとか意味の分からない用語が出てきて、
どれが正解か見当もつきません。(涙)」
長 池「それじゃ、まず1つ目のヒントをあげよう。
フェッチとは取り出すという意味だよ。
これで、命令のフェッチと命令の解読のどちらが先に行われるか
分かるかな?」
ユウト「取り出してからじゃないと、解読できないので、命令フェッチの方が
命令の解読より先に行われると思います。」
長 池「そうだね。それじゃ、命令の解読とオペランドフェッチのどちらが
先に行われるかが分かれば、解答を導き出せることになるよね。
オペランドフェッチについて説明しておこう。
機械語のオペランド(演算の対象となる値や変数)は、主記憶装置の
変数領域に格納されているんだよ。
それを取り出して、レジスタに格納することを『オペランドフェッチ』
って言うんだ。」
ユウト「ん~、オペランドフェッチについて教えていただきましたが、
どちらが先かよく分かりません。」
長 池「そうだよね。
これが最初にも言ったように、知っているか知らないかということ
なんだ。だから、ここはまず覚えてしまおう。
コンピュータの命令実行順序はこのようになっているよ。
(1)命令フェッチ(主記憶装置から命令を取り出す)
(2)命令の解読(フェッチされた命令の解読を行う)
(3)オペランドのアドレス計算(命令のオペランド部より主記憶装置上の
実行アドレスを計算する)
(4)オペランドフェッチ(主記憶装置からデータを取り出す)
(5)命令の実行(機械語命令の命令コード部の指示により命令を実行する)
(6)演算結果の格納(演算結果を主記憶装置やレジスタへ格納する)
参考書などでは、CPUアーキテクチャの最初の方に説明されているから、
読んでみるといいよ。」
ユウト「知っているか知らないかの問題ですか。。。」
長 池「はじめは取っ付きにくいかもしれないけど、コンピュータの内部構造に
興味が持てるようになると、この分野はすーっと頭に入ってくるように
なるから、がんばってごらん。」