英語のCentral Processing Unitの頭文字を取ったものです。 日本語では中央処理装置または中央演算処理装置と呼ばれます。
1.概要
CPUは情報の加算・減算・乗算などの演算処理を行う演算機器であり、主記憶装置などからデータを読み出したり書き込んだりする制御装置です。
一般的なCPUの内部は、実行する命令の解釈や他の周辺回路への動作の指示などを行う制御ユニット、論理演算や算術演算を行う演算ユニット(ALU:Arithmetic and Logic Unit)、演算処理に必要なデータの一時的な記憶を行うレジスタ、外部との通信を行うインターフェース回路などで構成されています。
以前はマザーボード上のチップセットや単体のICチップとして提供されていました。メモリコントローラやI/Oコントローラ、グラフィックス処理(GPU)などの機能が統合された製品も数多く登場しております。コンピュータに必要な機能のほとんどをCPUの内部に統合した製品の事をSoC(System-on-a-Chip)と呼ばれています。
2.構造
基本的なCPUの構造(内部)は
・制御ユニット
・演算ユニット
・レジスタ群
・クロック回路
で構成されます。
2-1制御ユニット
制御ユニット(Control Unit)の基本的な役割は
・CPU内の演算ユニットやレジスタの動作
・メモリ(主記憶装置:以降、メモリと呼ぶ)の読み書き・入出力 等を制御する事です。
制御ユニットの中のデコーダは命令レジスタの命令部をデコード(解読)し演算ユニットの中の演算回路の
選択を行います。
2-2演算ユニット
演算ユニット(Arithmetic Logic Unit)の基本的な役割は
・論理演算
・加算や減算
等の演算を行います。
演算結果はアキュムレータに格納されます。
コンピュータの世界は我々人間の世界とは違い2進数で
・数字
・文字(映像)
を扱うため、CPUでの演算処理は
・0や1
で実行されます。
実際の演算処理の大まかな流れは
②ベースレジスタ
ベースレジスタ(Base Register)はメモリに記憶されたプログラム・データを読み書きする上で、基準となるアドレス(一般には、プログラムの先頭アドレス)を保持するためのレジスタになります。
③指標レジスタ
指標レジスタ(Index Register)はアクセスしたいメモリ上の番地(アドレス)の、基準値からの相対的な値を格納するためのレジスタになります。
④命令レジスタ
命令レジスタ(Instruction Register)は、実行する命令の内容を格納ためのレジスタになります。命令デコーダによりその内容が解析(デコード)されます。解析された命令の内容に応じて必要なデータなどをレジスタやメインメモリから取り出し、処理を実行します。
⑤汎用レジスタ
汎用レジスタ(General Register)は状況に応じて様々な用途に用いることができるもの。一般的なプロセッサでは十個程度用意されていることが多いレジスタです。
⑥アキュムレータ
アキュムレータ(Accumulator)は、演算ユニットによって利用されるレジスタで、演算対象・演算結果を格納します。
あるデータに対していくつかの演算を連続して行うという状況は非常に多く発生しますが、このとき前の命令の演算結果を次の命令が引き続き受け取るのにいちいちメモリにアクセスするのは非効率なため、プロセッサ内部で高速にデータの受け渡しができるように設けられたレジスタです。
2-4クロック回路
コンピュータ内にあるCPUを含めた主要な部品は、コンピュータ内部の主要部品との動作の同期をとるために、一定の間隔でパルス(クロック信号)を発生させるクロックジェネレータと呼ばれる電子部品を使用しています。
このパルスの速さはクロック周波数(*1)と呼ばれています。
(*1):周波数:電気的振動の現象を言います、単位時間(Hzヘルツ:1秒)当たりに繰り返される回数を言います。 この数値が大きい(早い)ほどCPUの処理は早くなります。
例えば;
・1Hz:1秒当たり1回
・1kHz:1秒当たり1000回
・1MHz:1秒当たり1000000回(100万回)
・1GHz:1秒当たり1000000000回(10憶回)
です。
CPUの処理能力はクロック周波数を早くすれば上がりますが、ひと昔前までは kHz・M Hz・GHz と1000倍単位ぐらいで早くなってきていますが、近年CPUのクロック周波数は以前ほどに早くなっていないそうです。 原因はクロック周波数を上げることによる発熱が原因の様です。
では、最近のCPUはどのようにしているか見ていきましょう。
・単純に言いますと、一人で仕事をするよりは、二人で処理をすれば二倍になるという考え方です。CPUの内部のコアを複数搭載して性能アップを実現しています。いわゆる「マルチコア化」と呼ばれているものです。
・少ないクロック周波数で同じ処理性能を行わせる為に、CPUの処理を効率よる行う方法も採用されている様です。「拡張機能」とか「命令セット」といわれるものだそうです。
・マルチコア化を実現するために、いわゆるプロセスルールを細かくし同じ面積に多くのチップを載せる事を実現しているそうです。
3 CPUの動作
パソコンを例に説明しましょう。
パソコンを使う際、色々なアプリケーションを利用すると思います。
例えば、オフィスワークなら 文章作成アプリ・表計算アプリなど、これらアプリケーションが起動する際には、CPUがアプリケーションのプログラムファイルを読み込み・処理しています。 CPUがプログラムファイルを読み込み・処理するまでの一連の流れは次の様になります。
3-1 補助記憶装置からメモリへ格納
プログラムファイルは、CPUに処理・実行させる「命令」の集合体です。
一般的に実行しようとするプログラムは補助記憶装置である HDD(Hard Disk Drive:ハードディスクドライブ)や
SSD(Solid State Drive:ソリッド・ステート・ドライブ) 等に保存されているプログラムファイルをメモリ上に格納(転送)します。
3-2 フェッチ・デコード
CPUは、メモリに格納されたプログラムファイルの「命令」を、順番に読み込んで実行しています。メモリに格納されている「命令」を
・外部バスインタフェースを通して制御ユニットに読み込みます(フェッチをする)
・制御ユニットにあるデコーダー(Decoder)で「命令」をデコードし
演算情報なのか
情報処理なのか
具体的な情報に解読し処理され「制御情報」となります。
3-3 実行
演算ユニットでは、制御ユニットからの「制御情報」とメモリから外部バスインタフェースを通して読み込まれた演算対象となるデータを利用し処理を行います。
演算ユニットの中では
・レジスタ・・・演算対象となるデータを格納(レジスタは複数存在)
・演算器・・・実際に演算を処理
が存在します、演算ユニットの演算器は「制御情報」の指示に従い、レジスタにあるデータに対し演算を行い、演算結果をレジスタに書き込みます。
3-4 結果出力
レジスタに書き込まれた演算結果は「結果」としてメモリに出力(書き込まれます)されます。
これらを繰り返すことで、表計算アプリの表計算(AとBのセルの内容を足し算してCに結果を表示する)などを行っています。