検索
連載

マイコンの中枢「CPU」とはマイコン入門!! 必携用語集(3)(2/2 ページ)

お待たせしました。いよいよCPUの話です。CPUはマイコンの中枢部分に相当します。30年くらい前のマイコンはCPUだけで構成されていました。メモリや周辺機能は別のICとしてプリント基板上でマイコンの周辺装置として接続されていました。それほどマイコンにとって大切な部分です。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

演算の流れ

 では、図3を使ってCPUの演算の流れ(汎用レジスタ方式)を説明します。



【図3】CPUの演算の流れ(汎用レジスタ方式)

(1)メモリから命令コードを読み込む

 メモリ(ROM)の中にはマイコンが実行する命令が入っています。算術演算なら、足し算、引き算などがあります。論理演算ならAND、OR、XORなどです。

 例えば、足し算を行う場合、足し算という命令を二進数の番号で定義します。番号をいくつにするかは、マイコンの開発者が自由に決めることができます。ここでは「足し算をしろ」という番号(命令コード)を「00000001b」と決めます。次に何と何を足すかを定義します。ここでは足し算の命令コードの次に来る8bitコードの最初の4bitと後半の4bitが汎用レジスタの数字を表すことにします。そして汎用レジスタのレジスタ1とレジスタ2を計算することにします。そして演算結果をどこに入れるかを定義します。さらに次の8bitが演算結果を入れるレジスタの番号を表わすように定義します。ここでは、説明を簡単にするために、これも汎用レジスタにして、レジスタ3に入れることにします。

 すなわち、メモリの中には次のような順番で二進数の番号(命令コード)が入ります。

足し算の命令コード        : 0000 0001 b

計算する数字が入っているレジスタ : 0001 0010 b

演算結果を入れるレジスタ     : 0000 0011 b


 これらは、最初にメモリから読み出されてFIFO/プリフェッチバッファに格納されます。

(2)命令コードを解読(デコード)する

(1)で決めたルールに従って、FIFO/プリフェッチバッファに入っている2進数のデータを解読(デコード)します。

0000 0001 b → 足し算をしろ

0001 0010 b → レジスタ1とレジスタ2からデータを読み出せ

0000 0011 b → レジスタ3に演算結果を入れろ


(3)演算装置に演算命令を出す

 命令に基づき演算装置は次の動作を行います。

足し算をしろ ⇒ ALUをXOR(足し算モード)にする

レジスタ1とレジスタ2からデータを読み出せ ⇒ レジスタ1とレジスタ2の出口を開けて、データをバスに乗せる

レジスタ3に演算結果を入れろ ⇒ レジスタ3の入り口を開けてデータをバスから取り込む


(4)演算するデータを内部バスに乗せる

 レジスタ1の値を緑色のバスに乗せます。

 レジスタ2の値を青色のバスに乗せます。

(5)演算を行う

 ALUは足し算モード(XOR)になって青色のバスの値と緑色のバスの値を足します。

(6)演算結果を内部バスに乗せる

 ALUは足し算した結果を紫色のバスに乗せます。

(7)演算結果を汎用レジスタかメモリに格納する

 レジスタ3の入り口が開いて、紫色のバスのデータを取り込みます。

 これで、レジスタ1とレジスタ2を足し算して、レジスタ3に入れる演算が完了です。

 アキュムレータ方式の場合は、レジスタが1個なので、レジスタ1がアキュムレータだと考えてください。基本動作は汎用レジスタ方式と同じですが、レジスタ1とメモリの値を演算してレジスタ1に入れると考えてください。

CPUのその他の仕事

 今回は、CPUの主な仕事である演算に着目しましたが、この他にアドレス計算、割り込み処理、演算結果(キャリー、ボローなど)の処理といった、その他の仕事も担っています。それらの詳細は、回をあらためて説明していきます。

Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る