命令実行のサイクルとは?ゆるーくわかりやすく解説

はるか
はるか
命令実行のサイクル、覚えるのが大変。
ふゅか
ふゅか
段階ごとに役割と意味を理解していこう!

1. 命令実行のサイクルとは?

コンピュータがプログラムを実行するとき、命令(インストラクション)を一つずつ処理していきます。この処理は「命令実行のサイクル」と呼ばれる一連のステップで進められます。このサイクルは、基本的に次の6つのステップに分けられます。

1.1. 取り出し(フェッチ)

最初のステップでは、コンピュータの中央処理装置(CPU)主記憶装置(メモリ)から次に実行すべき命令を取り出します。この動作を「フェッチ」といいます。具体的には、プログラムカウンタ(Program Counter, PC)と呼ばれる特別なレジスタに記録されている「次の命令が保存されているメモリのアドレス」を参照し、そのアドレスから命令を取得します。このプログラムカウンタは命令を取得するたびに更新され、次に実行すべき命令の準備をします。

はるか
はるか
まず「フェッチ」。命令をメモリから取ってくる。

1.2.  解読(デコード)

取り出した命令は、CPU内部のデコーダで解読されます。解読とは、「この命令が何を指示しているのか」を理解するプロセスです。命令は一般的に「何をするか」と「どのデータを使うか」という情報を含んでおり、これを細かく分解して次のステップに進みます。

ふゅか
ふゅか
次の「デコード」、ここで命令の意味を解読するんだよね。これがないとCPUは命令が何を意味するか分からないもんね。
はるか
はるか
うん、命令は基本的に操作内容とデータの場所を含む。デコーダがそれを分解する感じ。

1.3. 実行アドレスの計算

解読された命令の中には、操作対象のデータが保存されているメモリ位置(アドレス)を計算する必要がある場合があります。たとえば、「変数Aに保存された値を取り出し、それを変数Bに足す」といった命令では、AとBの具体的な保存場所を特定しなければなりません。

このステップでは、命令に含まれる情報をもとに、必要なデータが保存されているメモリやレジスタのアドレスを計算します。

1.4. オペランドの取り出し

「オペランド」とは、命令が操作対象とするデータを指します。このステップでは、先ほど計算したアドレスをもとに、実際のデータをメモリやレジスタから取り出します。たとえば、「A + B」という命令であれば、このステップで変数AとBの値を取得します。この取り出したデータが次の実行ステップで使用されます。

ふゅか
ふゅか
次に「オペランドの取り出し」。操作するデータを実際に取り出すステップだよ!
はるか
はるか
そう、メモリやレジスタからデータを取る。これが実行の準備になる。

1.5. 命令の実行

ここでいよいよ、命令に記載された操作が実行されます。たとえば、「AにBを足す」という命令の場合、このステップではAとBの値が加算されます。この加算処理はALU(算術論理演算装置)という部品で行われます。ALUは、加算や減算だけでなく、論理演算や比較なども担当します。

1.6. 演算結果の保存

命令の処理が完了すると、その結果を保存します。

2. 命令実行のサイクルを繰り返す

これらのステップは1回で終わるわけではありません。コンピュータはプログラムの命令を一つずつ処理するため、次の命令に進むためにこのサイクルを何度も繰り返します。速いコンピュータほど、このサイクルを短い時間で実行できます。

PR