【基本情報技術者試験】プロセッサ2~動作原理~
今回は【コンピュータ(ハードウェア)編】CPUの動作原理について紹介します。
CPUの処理の流れは試験にも出やすいので、しっかり学習しましょう。
CPUの内部構造
CPUはハードウェア等から命令を受け、それを処理していくわけですが・・・
では、その命令はどこに保存されて、どこで処理が実行されるのでしょうか?
CPUの処理の流れの中でも、この部分はよく試験でも問われますので、説明したいと思います。
詳しいお話をする前に、まずは『コンピュータが命令を受けてから処理を実行する』という部分について、改めてざっくりと流れを説明すると、
①人間がマウスやキーボード等のハードウェア経由で、命令をする。
②命令は、記憶装置(メインメモリと呼ばれるデバイス)に保存される
③CPUは命令を記憶装置から取り出し、CPU内に保存する
④③で保存した命令を解釈し、演算を実行する
⑤CPUは演算結果を記憶装置に保存する
⑥必要に応じて、④の結果をファイルに保存したり、ディスプレイに表示したりする(CPUの制御により)
というような感じになります。
今回は、上記の③④⑤がメインの話になります。
この部分を詳しく説明するためには、CPU内部がどのようなパーツで構成されているかを知る必要があります。
大きく分けて、『レジスタ』『デコーダ』『演算装置(演算機、ALU)』というパーツが処理に関わってきます。
レジスタ
レジスタとは、CPUに内蔵されている、小容量だけど高速にアクセスできる記憶領域です。
『③CPUは命令を記憶装置から取り出し、CPU内に保存する』の時に記憶装置から命令を取り出すわけですが、その取り出した命令はCPU内のどこかに保存しなくてはいけません。
そこで、このレジスタが活躍します。
記憶装置から取り出した命令は、一時的にこのレジスタに保存されます。
ただ、この『記憶装置から命令を取り出して保存』というのは、実はもう少し詳細なプロセスがあります。
それを説明するために、レジスタをもう少し細かくみていきます。
レジスタは、下記のように細かく種類と用途が分かれています。
・命令レジスタ
記録装置から取り出した命令を保持する領域
※命令を取り出す際には、『命令アドレスレジスタ(下記)』に記載されている記録装置上のアドレス(場所のようなものです)を参照する
・命令アドレスレジスタ(プログラムカウンタ)
『次に実行する命令のアドレス』を保持する領域
・アキュムレータ
演算対象や演算結果を一時的に格納する領域
その他にも『ベースレジスタ』『インデックスレジスタ』『汎用レジスタ』と呼ばれるものもあるのですが、ここでは一旦省略します。
デコーダ
命令レジスタに格納されている命令を、演算装置が理解できる形に解釈して演算装置に渡すのがデコーダです。
命令というのは『0』と『1』の羅列で書かれており、それをこのデコーダで『デコード』という作業を行うことで、演算装置に命令を渡せるようになります。
逆に言うと、このデコーダを介さないと、演算装置では命令内容がまったく理解出来ず、計算等を行うことができません。
CPUは制御装置と演算装置の二つが合わさったものですが、デコーダは制御装置の方に属する形になります。
演算装置(演算機、ALU)
デコーダから受け取った命令を実行するのが演算装置です。
計算処理対象のデータのことを『オペランド』と呼び、オペランドはこの段階で記憶装置から読みだされます。
ここでは加算や減算、論理演算などの計算を行って、結果を記憶装置またはアキュムレータに保存します。
※『次の命令で、前の計算結果を使用する』的な場面ではアキュムレータに保存、そうでない場合には記憶装置に保存します。
以上が主だったCPUの中身になります。
上記の中でなんとなく流れを書いてしまいましたが、改めて流れを見てみましょう。
①命令レジスタは、命令アドレスレジスタに記載されている記録装置上のアドレスを参照し、命令を取得
※次の命令がある場合には、命令アドレスレジスタには次の命令アドレスが入る。
②デコーダは、命令レジスタにある命令を解釈し演算装置に渡す
③演算装置は、デコーダから渡された命令(演算)を実行する。その際に、計算処理対象データであるオペランドを読み出す。
④結果を記憶装置(もしくはアキュムレータ)に格納する
以上がCPUの処理の流れの基本になります。
試験に問われることが多いので、しっかりと覚えておきましょう。
まとめ
・レジスタとは、CPUに内蔵されている記憶領域
・レジスタには、命令レジスタ、命令アドレスレジスタ(プログラムカウンタ)、アキュムレータ等がある
・デコーダは、命令レジスタに格納されている命令を、演算装置が理解できる形に解釈して演算装置に渡す
・演算装置ではデコーダから受け取った命令(演算)を行う