命令語からみるキャッシュとレジスタの違い!

 

こんにちは!

 

 

今回は、

機械語の命令について説明します。 

 

 

 

プログラムは複数の命令から出来ており、

 

難しいプログラムほど、たくさんの命令が

 

複雑に絡み合っています。

 

 

 

機械語を知っていると、

 

 

CPUの基本動作の

 

断然イメージが

 

しやすくなります!

 

 

 

 また、最後まで読んでいただければ、

 

キャッシュとレジスタの違い

 

がはっきりします!

 

 

 

f:id:network-123:20180228220210j:plain

 

 

では説明していきます! 

 

 

 

機械語の命令は、

 

 

命令部(オペコード

アドレス部(オペランド

 

 

に分かれます。

 

 

オペコードは命令の内容

オペランドデータがある場所

レジスタ番号やキャッシュ上のアドレス)

 

 

を示しています。

 

 

 

CPU が計算するには、

 

データがCPUの手元(レジスタ)に

存在する必要があります。

  

 

f:id:network-123:20180226193034p:plain

 

上の機械語の命令は、

"ADD"という足し算の命令です。

 

 

レジスタBとレジスタCを足し算して、

 

その結果をレジスタAに保存します。

 

 

 

 

命令部は、ADDになっていますが、

 

もしこれがSUBなら、

減算(引き算)になります。

 

もしこれがLOADという命令ならば、

下のようになります。 

 

 

f:id:network-123:20180226195814p:plain

データをキャッシュから、

レジスタまで転送するときに使われます。

 

 

 

 

ここで、あなたは

お気づきになられましたでしょうか?

 

 

 

 

ADD(足し算)をするには、

LOADをする必要があります。 

 

※キャッシュからレジスタにデータを転送させて、

手元(レジスタ)に置かないと計算できない

 

 

 

つまり、

 

α=β+γを行うには、

 

 

LOAD  β  B

LOAD  γ  C

ADD    α  β  γ

 

 

という命令を処理しなければなりません。

 

 

 

アドレスB(キャッシュ)にある

データをレジスタβに格納

 

アドレスC(キャッシュ)にある

データをレジスタγに格納

 

レジスタβとレジスタγに格納された

データを足してレジスタαに格納

 

 

という意味になります。

 

 

 

 

今回はここまでです。

 

読んでいただいてありがとうございました。

 

次回もよろしくお願いします。