[基本情報技術者試験]イメージで覚える!PCの命令実行サイクル

命令実行サイクル アルゴリズム
この記事は約5分で読めます。

はじめに

私たちはコンピューターを動かす際、様々な命令を行っています。

例えば、「検索して」や、「メールを送って」などは、よく行いますよね。

今回は、そんな命令がコンピューターの中でどのように行われているかを一緒に学んでいきましょう!

CPUの命令実行サイクル

命令実行サイクルの説明

実際の命令実行サイクルは以下のようになっています。

命令実行サイクル全体の流れの図

以降、①から順番に説明していきますね!

イメージで覚える!

私は、実際に例を出して覚えました。

今回は、「A君へのメールを送信する」という命令で考えてみましょう!

①命令の取り込み

命令アドレスレジスタが主記憶から命令を取ってくる図の説明

まず説明するのは、図の黄色い部分です。

そもそもですが、コンピューターの中では、様々な命令が絶えず実行され続けています。

そのため、「A君へのメールを送信する」という命令も、すぐに実行されるわけではありません。

これらの命令は、自分の番が来るまでは主記憶というメモリの中に格納されています。

なので、命令を実行するためにはまず、主記憶からその命令自体を取り出さなければならないのです。

ここで、命令アドレスレジスタ次の命令(今回は「A君へのメールを送信する」)が主記憶のどこにあるかを知っている人です。

まずは命令アドレスレジスタから命令が格納されている住所を聞いて命令を取り出してくるのです。

この処理を、命令フェッチと言います。

イメージとしては、「命令さん、順番が来たらお呼びしますので、それまで主記憶の中でお待ちください」という感じです。

命令実行レジスタの実行方法のポイント

②命令の分別

命令を命令部とアドレス部に分けて命令レジスタに入れる説明の図

次に、今取り出した命令を、命令レジスタというところに格納します。

ここで、命令レジスタは、今から行う命令を格納する場所と覚えておいてください。

調理するための「まな板」だと覚えてもいいかもしれません。

ただ、命令を格納する際、命令を命令部アドレス部に分ける必要があります。

命令部は、命令の動詞の部分です。

今回の「A君へのメールを送信する」だと、「送信する」があたります。

アドレス部は、命令の目的語の部分です。「○○を」の部分のことですね。

今回の「A君へのメールを送信する」だと、「A君へのメールを」があたります。

なんでそんなことをするの?と疑問に思うと思います。

実はこの先、命令部とアドレス部では処理が変わってくるのですね。

そのため、今まで一つの「A君へのメールを送信する」だったのを、

「送信する」の命令部と「A君へのメールを」のアドレス部に分ける必要があります。

命令を命令部とアドレス部に分けるポイント

③解読

命令部をデコーダで翻訳する流れの図

次に、命令部の処理を行います。

今、「送信する」という命令部がありますが、コンピューターからしたら「送信する」と言われても、何をすればいいのか分からないのです。

なので、この「送信する」というのを具体的に「装置Aさんは○○して」、「装置Bさんは△△して」のような指示に変換しなければなりません。

その処理を行っているのがデコーダという部分です。

つまり、命令を取り出した後、コンピューターが処理しやすいような形に変換しているんですね。

ここで変換された命令は、その後実際に命令を実行する演算装置に送られます。

デコーダが指示を出すポイント

④アドレス生成

アドレス部がアドレスレジスタを通してデータを取る説明の図

その次に行うのが、アドレス部の解析です。

今の命令は「A君へのメールを送信して」というものですが、コンピューターはこの「A君へのメール」がどれのことかだか分からないのです。

そこで、今回は「A君へのメール」を持ってきてあげなければいけません。

ここで、アドレスレジスタというのは、その「A君へのメール」が格納されている住所を知っている人です。

なので、アドレスレジスタで目的のデータの住所を計算してもらい、主記憶の中から目的のデータを取り出します。

今、住所の計算と言いましたが、ここにも複雑な方式がありまして…

詳しくはこちらで解説していますので、是非こちらもご覧ください。

アドレスレジスタがデータを取り出すポイント

⑤ファイル読み出し

データを演算装置で実行する流れの図

次は、ファイル読み出しです。

これは、今取り出したデータを演算装置に送ることです。

実際に命令が実行されるのは演算装置の中なので、処理対象のデータを送って、処理してもらいます。

⑥実行

演算装置で命令を実行する図

いよいよ処理の実行です。長かったですね。

ここでは、デコーダで変換された命令部の「送信する」と、

アドレス部に指定された「A君へのメール」が組み合わされて、メールが送信されます。

⑦結果の格納

演算装置で実行したデータを格納する図

最後に、結果の格納です。

メールなどでは、無事に送信が完了したら「送信済み」BOXに送られますね。

そんな感じで、実行の結果がここで格納されます。

さて、これで命令実行サイクルは完了となりましたが、どうでしたか?

色々分解されて順番を覚えるのが大変だと思いますが、図でイメージすると意外と覚えられる

ので、おすすめです!

命令を実行し、結果を格納するポイント

練習問題

問題1

A,書き込み B,実行とアドレス作成 C,命令でコードとレジスタファイル読み出し、 

D、命令フェッチ E,メモリアクセス を、順番通りに並べてください。

(平成28年度春学期試験より引用)

ポイント、命令実行サイクル、命令アドレスレジスタ、命令フェッチ、解説

正解 D→C→B→E→A

解説 まず、Aの書き込みは、実行結果の書き込みのことです。なので、図のにあたります。

   Bの実行とアドレス生成は、命令の実行のことなので、にあたります。

   Cの命令デコードとレジスタファイル読み出しは、③④にあたります。

   Dの命令フェッチは、命令を取り出して分けることなので、①②にあたります。

   Eのメモリアクセスは、少し悩むかもしれません。今、メモリ(主記憶のところ)にアクセスして

   いるのは、①④⑦です。しかし、①はDの命令フェッチで、④はCのレジスタファイル読み出しで

   すでに出てきているのです。したがって、ここではの部分を指しています。

   なので、Aの書き込む前ということになります。

   したがって、D→C→B→E→A の順番になります。