コンピュータのCPUはプログラムをどのように動かしているのか

CPU(Central Processing Unit)とはコンピュータの制御・演算処理を実行する装置です。

CPU

CPUは数千億ものトランジスタから構成されていて、集積させることで主に3つの機能を持った要素に分けることができます。

  • レジスタ
    処理対象となるデータや命令を格納する一種のメモリのようなもの
  • 制御装置
    メモリ上のデータや命令をレジスタに読み出し、命令に応じてコンピュータを制御
  • 演算装置
    メモリからレジスタに読み出されたデータを演算

プログラムの実行におけるCPUの働き

プログラムを実行するにあたってCPUが果たす役割は、メモリに格納されたプログラムを解釈して実行することです。

私たちがコンピュータ上で書いたプログラムは実行(コンパイル)されるとコンピュータが理解できるような言葉に翻訳され、そのコピーがメモリに作成されます。

CPUはメモリに作成されたプログラムの命令を順番に取り出して一つずつ解釈しながら実行します。その際に重要な役割を果たすのがCPU内のレジスタという記憶装置です。

レジスタの種類

レジスタとは非常に容量の小さな記憶装置ですが非常に高速に情報の読み書きが可能となっています。レジスタはそれぞれの役割ごとに種類が分かれています。

プログラムカウンタ次に実行する命令のアドレスを格納
命令レジスタ取り出した命令そのものを一時的に格納
ベースレジスタデータ用のメモリ領域の先頭アドレスを格納
インデックスレジスタベースレジスタからの相対アドレスを格納
アキュムレータ演算対象のデータや演算結果を格納
汎用レジスタ特に機能の決まっていないレジスタ

CPUのプログラム処理

CPUはメモリに格納されたプログラムの処理を次のような順番で処理を行います。

プログラムの処理

まずは命令の取り出し(フェッチ)を行います。
プログラムカウンタには取り出すべき命令のアドレスが書かれています。メモリから命令を取り出して命令レジスタに記憶させてプログラムカウンタの値を1つ増加させます。

フェッチ

続いて命令の解読を行います。命令レジスタに取り出した命令は二つの要素で構成されています。

  • 命令部:実行したい命令の種類が格納
  • オペランド部:処理対象のデータが格納されたメモリのアドレスが格納

命令部は命令デコーダに渡されて必要な装置に制御信号を送ります。オペランド部からは処理の対象となるデータがわかるので、対象となるデータを汎用レジスタに格納します。

命令の解読

最後は命令を実行します。汎用レジスタから対象のデータを取り出して演算を行い、演算結果を書き戻して終了です。

CPUの性能

プロセッサの性能を表す指標として主に3つの指標値が存在します。

  • クロック周波数1秒間のクロック数
  • CPI(Clock cycles Per Instruction):1処理に必要なクロック数
  • MIPS(Million Instructions Per Second):1秒間に可能な処理数

いずれの指標もどれだけ効率よく処理をできるかを表すので、それぞれの意味を抑えれば自力で求めることができます。

プロセッサ内部では情報を0/1のビットに変換して処理しているため、プロセッサの性能は0/1を切り替える速さに依存します。0/1の切り替え周期をクロックといい、クロックの同期信号に合わせてコンピューターは動作します。

試しにそれぞれ求めてみましょう。

1命令の実行に8クロック要する命令をクロック周波数1GHzのプロセッサで処理

クロック周波数 = 1 GHz

命令実行時間 = CPI × 命令実行に必要なクロック数 = 10^{-9} \times 8 = 8 ns

MIPS = \frac{1}{8\times10^{-9}}= 125 \times 10^6 = 125 MIPS

クロック周波数が大きいほど高速なプロセッサとなりますが、高速化は近年頭打ちとなっていてプロセッサ単体の性能向上よりも並列処理による高速化が行われています。

コメント

タイトルとURLをコピーしました