CPU

CPUの役割

CPU(Central Processing Unit:シーピーユー)は、コンピュータなどにおいて中心的な処理装置として働く電子回路のことです。 CPUはプログラムによって様々な数値計算や情報処理、機器制御などを行います。 コンピュータのプログラムを実行させる部分こそが、このCPUなのです。

通常、コンピュータのプログラムは、マシン語(機械語)としてメモリ上に展開されています。そのメモリ上に展開されているプログラムを実行するのが、このCPUなのです。つまり、マシン語とはCPUが直接理解できるプログラミング言語なのです。

CPUの動作する仕組み

クロックとクロック周波数

CPUはどのようにして動くのでしょうか?コンピュータは、クロックジェネレータと呼ばれる電子部品から発せられる、クロックと呼ばれる回路が処理の歩調をあわせるために用いるデジタルの波の信号によって動いています。

クロックとは、一定の間隔で変動するデジタル信号の波で、一秒間にこの波が発生する数をクロック周波数と言います。クロック周波数の単位はHz(ヘルツ)で、例えば1秒間にクロックが1000個あれば動作周波数は1kHzとなり、このとき1クロックは1000分の1秒間で発生したことになります。これによってCPUやメモリが同期をとりながら動くことになります。(図2-1./図2-2.)

図2-1.CPUとクロック図2-2.クロックと処理

マシン語の命令の処理時間はこのクロック数によって決まるため、原則的にこのクロック周波数が大きい方が、小さいよりも処理が早くできるようになります。(※)

※:現在のCPUの処理スピードは、内部構造が複雑になり単純にクロック周波数の違いで測ることはできません。

CPUのビット数

クロック周波数以外にCPUの性能を表す指標にはいくつかありますが、次に大事なのがビット数と呼ばれるものです。CPUが内部演算回路やデータパスで扱うビット数を「ビット幅」あるいは「データパス幅」と呼びます。これはCPUが1度の処理によって扱えるデータのビット数で、4ビット、8ビット、16ビット、32ビット、64ビットと5種ほどある幅の違いに大別されます。

CPUのビット数が多ければ多いほど一度に扱えるデータの量が多くなることから、ビット数が高いほどコンピュータの性能は高いと言えます。

CPUがプログラムを実行する仕組み

CPUはメモリを実行するためのものであり、そのプログラムはメモリに記録されています。CPUはメモリのデータを読み出し、それを解釈してプログラムを実行します。その結果メモリを書き換えるなどの処理を行います。(図2-3.)たとえば、「1+2」という足し算の計算をする場合、メモリから足し算の命令と、「1」という数字と「2」という数字を読み出し、その結果である「3」をメモリに書き込みます。

規模の大きなプログラムになっても、この構造は変わりません。

図2-3.CPUがプログラムを実行する仕組み

CPUが命令を実行する仕組み

続いて、CPUが内部で機械語の命令を実行する手順について説明します。CPUは、内部で機械語を実行する際には、以下のような手順で実行します。

(1) メモリからの読み込み(フェッチ)
(2) 命令の解読(デコード)
(3) 命令の実行(エグゼキュート)
(4) 結果を出力させる(ライトバック)

これらの処理はそれぞれ、CPU内部に実行を担当する部分が存在し、それぞれが独立して実行しています。このうち、エグゼキュート部分は、実際に命令を実行する部分であるALU(Arithmetic and Logic Unit)と、データを一時的に記憶しておくレジスタに分かれています。CPUが実行する命令は、いったんこのレジスタに記憶されてから実行されます。

CPUとメモリ

CPUのメモリアクセス

CPUがメモリに命令やデータを読み書きを行うことを、CPUがメモリにアクセスすると言います。

CPUには、メモリのアドレスを指定するのに利用するアドレスバスと呼ばれるバスと、指定したアドレスのデータにアクセスするためのデータバスと呼ばれるバスがあります。一般にそれぞれのバスのビット数は、CPUのビット数に一致します。つまり、32ビットCPUはデータバスおよびアドレスバスはそれぞれ最大32ビットまでの値を扱えることになります。

つまり、CPUが管理できるメモリの容量はアドレスのビット数に比例するのです。一般にCPUのビット数に対するアクセスできるメモリの容量は、以下のようになります。(表2-1.)

表2-1:CPUのビット数とアクセスできるメモリの容量(インテルのPC用のCPUの場合)
CPUの種類 アドレスバス メモリの容量
8ビットCPU 16ビット 64kバイト
16ビットCPU 20ビット 1Mバイト
32ビットCPU 32ビット 4Gバイト
64ビットCPU 64ビット 16Eバイト

64ビットCPUの「16Eバイト」の「E」は「エクサ」と読みます。ただ、現状では16EBものメモリを必要とするような状況が想定できないため、回路量を節約するために多くの最近の64ビットPCでは、最大32GBまでといったように搭載可能なメモリ量がより小さく制限されています。

CPU内部のメモリ

CPUは、外部にメモリを持つだけではなく、内部にキャッシュメモリ(Cache Memory)と呼ばれるメモリを持っています。通常メインメモリの処理スピードは、CPUが命令を実行するスピードは、はるかに遅いため、メモリから読み込んだ命令を直接実行していては、コンピュータは高速な演算処理が行えません。

そこで、CPUの内部に、キャッシュ、もしくはキャッシュメモリと呼ばれる領域を持ち、一旦ある程度の量のデータを子のメモリ領域にメインメモリからデータをコピーし、処理を実行します。処理を実行する部分を、キャッシュに対して、コア(Core)と言います。(図2-4.)

図2-4.CPUのキャッシュの仕組み

CPUが高速に動く仕組み内部構造

CPU内部構造

現在のCPUは、処理を高速化させるために様々な工夫がなされています。その中で近年最も注目されている手法が、マルチコア(Multi Core)と呼ばれるものです。マルチコアとは、その名の通り、一つのCPU内に複数のコアを持つCPUのことです。

マルチコアのコアの数が二つのCPUが、デュアルコア(Dual Core)CPU、4つのものをクアッドコア(Quad Core)CPUと言います。コアが複数あることにより、同時に複数の命令が実行できるため、その分処理能力は向上します。(図2-5.)

図2-5.マルチコア

かつてコンピュータを高速化する手段は、クロック周波数を上げることと、ビット数をあげることでした。しかし、現在はこの方法では限界があるため、マルチコアを用いて処理を並列化する方法が主流になっています。