前回は、CPUの実行手順のうち、命令の取り出しから解読までの流れをまとめました。
今回は、その続きから命令実行までの流れを見ていこうと思います!
その3 オペランド読み出し
オペランドとは、式に出てくる数値や変数を指します。たとえば、
1 + 3
という式があったとします。このとき、1とか3がオペランドです。逆に、「+」のことを演算子と呼びます。
実行する命令が、仮に演算だったとします。このとき、演算に用いる数値が必要になります。この数値を読み出す作業が、オペランド読み出しです。 オペランド読み出しには、命令レジスタと汎用レジスタが関与します。
オペランドのありかは、命令レジスタのオペランド部を見ればわかります。しかし、オペランド部に「オペランドが格納されているメモリのアドレス」そのものが入っているとは限りません。
アドレスの指定方式の種類はいろいろあります。オペランド部にオペランドのアドレスが直接記載されている場合もあれば、オペランドのアドレスが格納されているアドレスが記載されている場合もあります(ややこしい(笑))
宝がそのまま入ってるか、宝の地図が入ってるかといった違いでしょうか。
兎にも角にも、最終的にはオペランド部を参照することで、欲しいデータにたどり着くことができます。そうして読み出したデータ(オペランド)は、汎用レジスタに書き出されます。
その4 命令実行
さて、必要な材料は揃い、後は命令を実行するのみです。命令が演算だった場合、ALUが演算して終わりです。
実行時のデータの流れはシンプルです。汎用レジスタから対象データを取り出し、結果を再び汎用レジスタに書き戻します。
この処理が終わると、命令実行手順の最初に戻り、次の命令の処理に取り掛かります。
まとめ
CPUは、これら一連の処理を慌ただしく実行しています。これを1秒間に1000万~1億回単位で実行していると考えると、CPUってすげーってなりませんか?笑
今回で、CPUがどんなことをしているのかについてはある程度理解できたかと思います。
CPUのトピックとしては、性能指標や、処理高速化技術などがあるので、今度まとめてみようと思います!
ではでは👋