基本情報技術者〜CPU[2]〜
こんにちは!ポテトヘッド(@potato_head0809)です!
今回はCPUの命令実行手順について触れていこうと思います!
前回の記事をまだ読んでいない方はこちらから!
CPUの命令実行手順
前回にもCPUが命令を実行する順序について触れましたが、
今回はもう少し詳細を見ていこうと思います。
まずは以下の図を見てください。
前回は、CPUが実行するまでの順序を見ましたが、
今回は、そのCPUが実行している中身を見ていきます!
CPUが命令を実行するためには、主記憶装置にプログラムを移し、
そこから、1つずつ取り出して実行しましたよね?
しかし、この「取り出した」命令というのはどこにあるのでしょうか。
そして「次はどの命令を取り出すのか」というのはどうやって覚えているのか。
そこで、必要になるのが「レジスタ」というものです!
レジスタはCPU内部にある記憶装置です。
レジスタの種類と役割
このような感じで、それぞれに役割があります。
そしてCPUの中身を表したものが以下の図になります。
ここで注意が必要なことは、あるレジスタで他のレジスタの代用をすることがあるので、
必ずしも、先程説明したレジスタが全てあるというわけではありません。
それでは、レジスタについて触れたところで、
一番始めに説明したCPUの実行する中身について順番に見ていきましょう!
①命令の取り出し
まずは1番目です。
ここで使用するレジスタは「命令レジスタ」と「プログラムカウンタ」です。
この最初に行われる命令の取り出しのことを「フェッチ」と言います。
その手順がこちらです。
図にも書いてありますが、簡単に説明すると、
取り出すべき命令はプログラムカウンタが知っており、
そのプログラムカウンタが示すアドレスを参照して命令を取り出します。
その取り出した命令を命令レジスタに記憶させて、
次に備えてプログラムカウンタの値を1つ増加させるというものです。
②命令の解読
早速ですが、まずは図を見てみましょう。
ここで、「命令部」と「オペランド部」というワードが出てきました。
簡単に説明します。
「命令部」
実行させたい命令の種類を示すコード番号が入っているところ。
取り出してきた命令を命令部から命令デコーダに送り、
命令デコーダがそれを解読して、必要な装置に制御信号を送るというものです。
③対象データの読み出し
3番目になります。
もし、命令が演算処理だった場合その演算を行うための数字が必要ですよね?
それを読み取るための作業になります。
読み取る作業はこのようにして行われています。
オペランド部が処理の対象となるデータの場所を知っているということです。
しかし、図でも書きましたが、アドレスの指定方法は様々です。
ですので、オペランド部に直接メモリのアドレスそのものが記載されているとは限りません。
④命令実行
さぁ、最後です。
ここまできたら後は実行するだけです。
ここで使うのは「汎用レジスタ」と「ALU」です。
そして、実行は以下のようになります。
一周すれば終了ではありませんよ!
④まで終了したら、次の命令を取り出すので①に戻ります!
最後に。
どうだったでしょうか。
前回は大まかな流れを見ましたが、
今回は実行するまでのCPUの動作の中身を見ました。
始めての方には難しい内容かもしれませんねー。
私も理解出来ているのか...。
しかし、頑張るしかありません。
慣れてくればきっとイメージが持てて理解もしやすいと思います!
一緒に頑張っていきましょう!
最後までご覧頂きありがとうございました。