メディア
連載
» 2013年05月27日 10時00分 公開

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

[菅井 賢,STマイクロエレクトロニクス]
前のページへ 1|2       

演算の流れ

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

前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.