風邪は残ってはいるが、だいぶ治ってきた。最近は「輪るピングドラム」を見ている。今のところわからない部分も多いが、面白くなりそうな予感がする。
それは置いといて、今回はCPUについてだ。
①レジスタと命令の実行
レジスタとは、CPUが命令を実行する際に用いる記憶装置のことである。プログラムカウンタや命令レジスタなど様々な種類がある。
命令実行の順番は、命令の取り出し(フェッチ)→命令の解読→オペランド(処理対象のデータ)の読み出し→命令の実行である。
取り出された命令は命令部(命令の内容を示す)とオペランド部に分かれており、命令の種類によってはオペランドがない場合もある。また、プログラムの実行中に別の処理の割り込みがあった場合、そこで中断された処理のアドレスはプログラムカウンタに保存されていて、後に再開できる。
②アドレス指定方式
命令実行の際、オペランド部には直接処理対象となるデータがあったり、参照するメモリのアドレスがあったりと様々な形式がある。このように、対象となるデータの位置を指定する方法をアドレス指定方式という。
オペランド部に直接データが入っている「即値アドレス指定方式」、対象データのあるメモリのアドレスが入っている「直接アドレス指定方式」、さらに(対象データのあるメモリのアドレス)のアドレスが入っている「間接アドレス指定方式」などがある。ほかにも、以下のような指定されたレジスタの値とオペランド部の値を足すことで実効アドレスを求める方式がある。
・インデックス(指標)アドレス指定方式
オペランド部にインデックスレジスタ番号があり、それを参照したインデックスレジスタの値とオペランド部の値を足す。
・ベースアドレス指定方式
ベースレジスタ(プログラムをロードしたときの先頭アドレスを記憶しているレジスタ)の値とオペランド部の値を足す。
・相対アドレス指定方式
プログラムカウンタの値とオペランド部の値を足す。
③CPIとMIPS
CPI(Clock cycles Per Instruction)・・・1命令あたり何クロック必要か
MIPS(Million Instructions Per Second)・・・1秒あたりに実行できる命令数(100万単位)
④パイプライン処理
1つのプロセッサで、複数の命令を段階をずらしながら同時に処理する方式をパイプライン処理という。また、パイプラインをさらに細分化して高速化を図る「スーパーパイプライン」や、複数のパイプラインを用いることで高速化を図る「スーパースカラ」と呼ばれる手法もある。