コンピュータの仕組み③

前回

http://abcyosou.hatenablog.com/entry/2018/10/03/221029

今回も、プログラムがどのようにして、実行されるかの解説をしていきたいと思います。

演算サイクル

ALUを使って演算したいのですが、

ALUだけでは、例えば、2+3=5と計算した場合

演算結果5を次の演算の入力として、使うことができません。

以下のようなc言語のプログラムを実行するすることができません。

int a=2+3;//a←2+3

a=a+3;//a←a+3

アセンブラ(arm64)だったら、以下のようなプログラムが実行できません。

mov r2,#2 //r2←2

add r1 ,r2 ,#3 //r1←r2+3

add r1,r1,#3 //r1←r1+3

そこで、ALUとレジスタファイルを接続したいと思います。

f:id:abcyosou:20181005133643p:image

この図のALUが算術論理演算ユニットで演算をするところで、RFというのは、レジスタファイルの略で、演算する値の読み出しと演算結果の書き込みをする場所です。

演算サイクルとは、

①.レジスタファイルから演算の入力を読み出す

②.レジスタファイルから読み出された値をALUで演算する

③.ALUで演算された結果をレジスタファイルに格納する。

以下、1から3を繰り返す。

f:id:abcyosou:20181005141354p:image

これがコンピュータの基本です。

しかし、ALUとレジスタファイルだけでは不十分です。以下の三つの問題があります。

1.記憶容量が足りない

2.制御信号がない

3.条件分岐や繰り返しも実現したい

まとめ

・演算サイクル

・ALUとレジスタだけでは不十分

今回は演算サイクルについて、解説しました。

次回は、メモリと命令実行サイクルの話をします。