CPUとは|演算・制御装置
- 著者:YAMANJO
- 公開日:2008年7月25日
- 最終更新日:2025年1月11日
コンピュータの5大装置のうち、演算装置と制御装置を兼ねるCPUとはどのような装置なのか学習していきましょう。
CPUとは
前項で学習のとおり、コンピュータの5大装置のうち、2進数の四則演算を行う「演算装置」と、各装置を制御する「制御装置」は、同じ装置が兼ねています。
この装置のことを、
CPU(シーピーユー)
と言います。
CPUは「Central Processing Unit」の略で、文字どおり「中央処理装置」を意味します。まさにコンピュータの頭脳であり、中心的な装置になります。
具体的には、複数の電子部品をひとつの小さな基盤にまとめたICチップになります。ICチップというのは、集積回路(Integrated Circuit)を意味し、集積回路とは、集約した部品が相互に作用して、所定の動作を行うためのものです。
マイクロプロセッサと呼ばれることもありますが、マイクロプロセッサは集積回路を指して言うことが多いため、コンピュータに対して使われる場合は、CPUとほぼ同義になります。
後述しますが、CPUのチップの中には、演算装置と制御装置以外にもいくつかの装置(部品)があります。CPUの主な役割は、演算と制御になりますが、演算装置と制御装置だけがあるわけではありません。
2つの役割を実現するために、演算装置や制御装置以外にもいくつかの重要な部品が組み込まれており、それらが全体としてCPUの動作を支えています。
では、CPUの役割である演算と制御が、どのような仕組みで行われているのか学習していきましょう。
制御ユニット(CU)
CPUの制御装置は、
制御ユニット(CU)
と呼ばれています。
CUは「Control Unit」の略で、コントローラーの役割を担います。制御とは、簡単に言えば「司令塔」の意味です。
入力装置から指示された命令や処理を、どの装置を使って、どの順番で処理を行い、最終的に結果をどのように出力するかを指示する役目です。
前項では「印刷」を例にしましたが、ここでは「足し算」を例にしてみます。
入力装置であるテンキーから、ユーザーが「3 + 5」と入力すると、それがCPUに伝わります。制御装置は「3 + 5」という計算式を受け取り、何をするべきかを決めます。
まず「3」という数を演算装置に渡して、次に「5」を加えるよう指示し、また演算装置が計算を始めるように制御装置が指示します。演算装置は「3」と「5」を加算して「8」を算出します。この演算が実際の計算です。
制御装置は計算結果の「8」を出力装置に送ります。そして、出力装置であるディスプレイに「8」と表示するように指示を出します。実際には、直接制御するのはCPU内の装置で、出力装置などの他の装置は、直接制御するわけではなく、指示を出して調整します。
このように、制御ユニットは命令を理解し、他の演算装置や主記憶装置などに、どのように動作させるかを指示する司令塔の役割を担います。非常に重要な装置で、まさにこの装置がなければコンピュータは成り立ちません。
ただし、これまでコンピュータの司令塔はOSであると学習してきました。
どちらも司令塔で間違いはありませんが、簡単に言えば、OSが総理大臣で制御ユニットが国務大臣といったところです。総理大臣は全体を調整し、様々な指示を出しますが、実質的な実務は所管する大臣が行います。
OSはソフトウェアの側面から、各アプリケーションソフトが適切にハードウェアを利用できるように、ファームウェアやデバイスドライバと連携してハードウェアの調整をします。
制御ユニットはハードウェアの一部であり、ひとつの処理が実行される際の具体的な操作を具体化し、装置に指示を送ります。
つまり、全体の大きな方針はOSが出し、方針にもとづいた実務処理を制御ユニットが担当します。OSはプログラムの実行環境を整える役割を担い、その後の具体的な処理手順は制御ユニットに委ねられるということです。
これ以上の具体的な説明は、かなり専門的になるので割愛しますが、イメージとして制御装置の概要が理解できていれば以降の学習にも支障はありません。
演算ユニット(ALU)
CPUの主な演算装置は2つあります。
そのうちのひとつが、
演算ユニット(ALU)
と呼ばれる装置です。
ALUは「Arithmetic Logic Unit」の略で、直訳すると「算術論理装置」になります。算術論理とは「算術演算」と「論理演算」を意味しています。
算術演算は、加算(足し算)、減算(引き算)、乗算(掛け算)、除算(割り算)の四則演算のことです。つまり、基本的な数値計算で、整数の演算が主になります。
前項で少し触れましたが、2進数では加算のみで減算、乗算、除算が可能になるため、計算としては加算のみが行われます。
例えば、数字の「5」と「3」を2進数に変換すると「5=0101」で「3=0011」になります。(2進数への変換については、2進数と10進数と16進数 で詳しく学習します)
減算の場合、補数という手法を用いて減算を加算として処理することができます。詳しくは割愛しますが、数字の「3」を2進数の補数で表現すると「1101」となり、「0101+0011」によって「2」が求められます。(「10010」となり最上位を無視する)
乗算の場合、例えば「2×3」とすると「2+2+2」となり同様に加算で計算できます。除算の場合は、例えば「10÷2」とすると何回「2」が引けるかを求めることになり「10-2-2-2-2-2」となります。
つまり、減算は補数を使った加算、乗算は加算の繰り返し、除算は減算(補数を使った加算)の繰り返しで計算することができます。CPUの算術計算は、加算を超高速で行っています。
論理演算は、AND(論理積)、OR(論理和)、NOT(論理否定)、XOR(排他的論理和)といった条件によって値が異なる計算を行います。
こちらも詳しくは割愛しますが、「A AND B」は「AとBが真ならば真」、「A OR B」は「AとBのどちらかが真ならば真」、「A NOT B」は「Aが真ならば偽、Aが偽ならば真」、「A XOR B」は「AとBが異なれば真、同じならば偽」となります。
なぜ、論理演算が重要になるのかと言うと、AND、OR、NOTなどの論理を組み合わせて、複雑な回路や演算を実現できるからです。これによって、様々な状況や条件に対応できるようになります。
例えば「雨が降っていてかつ気温が低い場合は傘をさす」といった判断が可能になります。コンピュータが動くためには、こうしたルールを使って「どうするか」を決める必要があります。そのため、論理演算はとても重要になります。
ただし、こうした条件判断もOSの役割だと思われるかもしれません。
CPUは、論理演算を非常に高速で処理し、短時間で結果を出します。例えば、マウスのクリックを認識して処理する、キーボードの入力を認識して処理するなどの操作は、ほぼリアルタイムで行われます。
そのため、条件に基づいて瞬時に判断して結果を出す必要がある場合は、判断をCPUに任せています。この場合は「クリックされた場合は特定の処理を実行する」という判断をしています。
つまり、OSの論理的判断は、どのタスクを効率よく処理するか、どの保存領域を使用するかといった高レベルなシステム全体の管理・調整に関するもので、瞬時の判断が必要な論理的判断はCPUに任せているということです。
浮動小数点ユニット(FPU)
もうひとつの演算装置として、
浮動小数点ユニット(FPU)
があります。
FPUは「Floating Point Unit」の略で、直訳すると「浮動小数点装置」になります。つまり、浮動小数点演算を専門に行う装置で、非常に大きな数や非常に小さな数を専門的に計算する装置です。
浮動小数点というのは、小数点の位置を固定せず、数値の桁数に応じて柔軟に変えられるという意味です。詳細は割愛しますが、浮動小数点数では数値「12345」を「1.2345×104」のように2つの部分に分けて表現します。
なぜ分けるのかと言うと、固定小数点では小数点の位置が固定されるため、非常に大きな数や小さな数を表現する際に範囲が不足してしまうからです。例えば、整数部8ビット+小数部8ビットと固定されている場合、整数部が8ビットの上限「255」を超える数を表現することができません。
小数点の位置を浮動にすると、非常に大きな数でも「1.2345×109」で「1,234,500,000」や小さな数でも「1.2345×10-9」で「0.0000000012345」のように表現することが可能になります。
実際には2進数の計算になり、2進数は10進数の「2」で桁が繰り上って、10進数の「0、1、2、3」は「0、1、10、11」として表現されます。10進数の大きな桁の数値になると、2進数ではさらに膨大な桁数になります。
浮動小数点演算を使うことで、限られたビット数の範囲内で、非常に大きな数値や非常に小さな数値を効率的に表現し、計算することが可能になります。
こうして通常の整数演算は、演算ユニット(ALU)が担当し、少数を含む大きな数や小さな数は、浮動小数点ユニット(FPU)が専門的に処理しています。
浮動小数点ユニット(FPU)の性能は、1秒間に処理できる浮動小数点演算の回数を指す「FLOPS(フロップス)」という単位で表現されます。FLOPSは、スーパーコンピュータの性能の指標のひとつとしても用いられています。(詳しくは、コンピュータの種類 で学習します)
メモリ領域
メモリとは、次項で学習する主記憶装置を意味します。
なぜ、CPUにメモリが登場するのかと言うと、主記憶装置としてのメインメモリはCPUとは別に設置されていますが、CPU内部にも少量のメモリ領域があるからです。
このメモリは、
レジスタ
と呼ばれています。
レジスタは、CPUの処理動作において非常に重要な役割を果たしています。
簡単に言えば、処理に必要な2進数を一時的に記憶しておく装置です。ALUやFPUは、渡された2進数を計算するだけですが、その2進数を記憶しておいて、必要な時に演算装置に渡す役がレジスタになります。
レジスタは容量が小さいため、読み込まれたデータは一時的に記憶され、計算後は次のデータに置き換えられます。しかし、高速で動作するため、超高速で計算する演算装置のスピードに合わせて、次の情報を渡していくことができます。
したがって、レジスタがなければ計算処理そのものを実行することができなくなるか、速度の遅いメインメモリから情報を受け取ることになり、処理速度が非常に遅くなります。
演算装置が効率的に処理を実行するためには、処理に必要なデータをレジスタに読み込み、適宜レジスタからデータを渡してもらう必要があります。
そのため、メモリはCPUの演算装置に近づくほど高速で動作するようになっています。レジスタとメインメモリの中間で両者の橋渡しをする「キャッシュメモリ」というメモリ領域もあります。つまり、いかに高速なメモリと効率的にデータのやり取りを行うかが、処理速度に大きく影響するということです。
詳しくは、次項で学習しますので、命令を処理するためには、メモリにデータを読み込む必要があることを知っておきましょう。
クロック
クロックは装置や部品ではありませんが、CPU内部の動作を決定する重要な要素であるため、CPUの内部構造に関連付けて説明されることが多いものです。
クロックとは、
クロック信号
と呼ばれるパルス信号の一種になります。
パルス信号とは、一定の時間内に電圧が急激に変化する電気信号のことで、例えば、電圧が高から低に急激に変わるパルス信号がよく使われます。この変化が一瞬の間に発生し、すぐ元に戻るため「オンとオフの変化」が形成されます。
この1回の周期をパルスと言い、クロック信号は、一定の間隔で繰り返される周期的なパルスになります。常に規則的に同じ間隔で繰り返されるというのが特徴です。
この特徴を利用して、CPUがデータを処理するタイミングや、メモリにアクセスするタイミングなどを合わせ、システム内の複数の装置を同期させています。
つまり、クロック信号を利用することで、複数の装置を同じタイミングで同時に動かせるというわけです。クロック信号がなければ、各装置がランダムに動作してしまい、処理速度が低下したり、動作が不安定になります。
したがって、クロック信号は、CPUが命令を処理するタイミングの基準となるリズムを提供します。このリズムが速ければ高速に処理できることになります。
デジタルデータと2進数 で「電流のONとOFFに2進数の0と1を対応させている」と学習しましたが、クロック信号と電流(実際には電圧の高低)は密接に関係しているものの、また別の概念になります。
あくまでクロック信号は、タイミングを提供するだけのものです。一方、電圧信号はクロック信号に従って生成・変化します。重要なのは、両方の信号が同じタイミング基準で動作することです。クロック信号によって電圧が正しいタイミングで変化するように管理されています。
このタイミングの速度を示す指標として、パルスが1回発生する間隔を周期、パルスの繰り返し速度を周波数で表現します。
クロック信号が1秒間に繰り返される回数を、
クロック周波数
と言います。
単位は「Hz(ヘルツ)」です。ヘルツは同様に「1秒間に繰り返される周期的な現象」のことです。
例えば、クロック周波数が「1GHz(ギガヘルツ)」の場合、1秒間に10億回のパルスが繰り返されるという意味になります。(ギガは、デジタルデータの単位と容量 で学習のとおり「10億」を意味します)
1秒間に「億」を超えるタイミングが発生し、それに合わせて処理が行われるということです。とてつもない速度で計算されていることがわかると思います。
当然、周波数が高くなるにつれて高速で処理されることになります。現在のスタンダードなパソコンのCPUは、概ね3~4GHz程度の性能となっています。
ただし、クロック信号はCPUが発生させているわけではなく、また別の装置が担当していますが、クロック周波数などの性能はCPUに合わせて設計され、CPUの限界を超えないように設計されています。
コア・スレッド
クロック周波数はCPUの性能の指標であり、周波数が高ければ性能が高いと言えますが、現在では、単純に周波数が高いほど高性能というわけではなくなりました。
確かに一昔前のIntel社製「Pentium(ペンティアム)」や「Celeron(セレロン)」といったCPUは、周波数が高いほど高性能でした。しかし、Pentiumの後継「Core2(コアツー)」などは、周波数がPentiumのそれより小さくても、高速で高性能になっています。
その理由は、クロック周波数以外の要素があるからです。
クロック周波数を向上させると熱を放出するため、クロック周波数の向上には限界がありました。もうこれ以上クロック周波数を向上させることができない放熱の限界のところまで開発されてしまったため、方向転換を余儀なくされたのです。
その結果、CPU内に2つの集積回路を搭載して、1つのCPUでありながら、2個のCPUを搭載しているかの様に動作する仕組みが開発されました。
この集積回路を、
コア
と言います。
コアは「Core(中核)」を意味しており、CPUの中核となる装置によって構成されています。
具体的な装置は、演算ユニット、制御ユニット、レジスタの3つですが、現在の多くのCPUでは、浮動小数点ユニットもコアに含まれることが一般的です。
逆に、含まれない装置としては、キャッシュメモリや出入力コントローラ、データの伝送経路となるシステムバスといった足回りの装置で、これらはコア同士で共有されます。
つまり、実質的にCPUが2つあるのと同じです。こうして、1つのCPU内に複数のコアを持つ「マルチコア」が主流になりました。
以前のクロック周波数の向上のみに努めていた頃のCPUは「シングルコア」と呼ばれていました。マルチコアのCPUでは、コアの数だけ並行して処理をすることができます。
したがって、コア数もCPUの性能を示す指標のひとつになっています。パソコンの購入時には製品の明細でコア数を確認できますが、Windowsの機能から現在使用しているCPUのコア数を確認することができます。
タスクバー上で右クリック →「タスクマネージャー」より、同画面の「パフォーマンス」タブを開いてみましょう。この画面でCPUの状態を確認することができます。
また、スタートメニューの「Windows管理者ツール」→「システム情報」画面からも確認することもできます。
上図の場合はコア「2」、論理プロセッサ数(ロジカルプロセッサ)「4」となっています。この部分がコアの数を示しています。
コア「2」なので、コア数は2です。これだけでシングルコアの2倍の処理能力を持つ可能性があります。次に「論理プロセッサ数」というのがあり、これは「4」となっています。
論理プロセッサとは、処理を並列して実行するために仮想的に分割されたコアのことです。簡単に言えば、コアの機能を効率化して、同時に複数の処理を割り当てるイメージです。つまり、仮想的に回路が増えたように動作します。
論理プロセッサ数が4ということは、1つのコアを仮想的に2つの論理プロセッサに分割できることを意味しています。上図の場合、2つのコアで4つの論理プロセッサを有しており、1度に4つの処理を並列に実行できるという意味になります。
ただし、4つの処理を同時に実行することができますが、シングルコアの処理能力が単純に4倍になるのかというと、論理プロセッサは仮想化技術であり、実際にはコアの資源を共有するため、必ずしも4倍の性能が得られるわけではありません。
また、注意しておくべき点として、この論理プロセッサと同じような意味で、
スレッド
という用語が使われることです。
実際には、製品の仕様書などにも「スレッド」が使用されるケースが圧倒的に多く、上図の場合、一般的に「2コア4スレッド」と表現されます。この場合、論理プロセッサとスレッドの数が同じになり、同じ意味で使われているように思えます。
実際、多くのサイトでも下図のように論理プロセッサ数ではなく、スレッドを用いて説明されています。
しかし、論理プロセッサとスレッドは意味が異なります。
スレッドとは、CPUが実行する最小の実行単位のことです。単位と言ってもデータサイズを意味するものではなく、簡単に言えば、それ以上細かくできない処理の単位になります。
OSの役割 で学習した「タスク」と同じような意味で、タスクも同様に処理の単位を表しています。プログラム(ソフトウェア)を実行する際、OSはプログラムごにプロセスを確保し、そのプロセス内でタスクが定義されて処理されていきます。
スレッドは、そのタスクをさらに細かく分割した単位です。
例えば「印刷」や「保存」といった抽象的な処理単位がタスクになりますが、保存の場合「データの読み込み」、「保存先へデータの書き込み」、「保存の進行状況を表示」といった具体的な処理単位がスレッドになります。
したがって、スレッドは論理プロセッサと同義ではなく、タスクに近い意味になります。なぜ、同じ意味で使われているのかというと、CPUが1度に処理できるスレッドの数を表現しているからです。
つまり、製品などの仕様書では、論理プロセッサ数を重視するのではなく、1度に処理できるスレッド数を強調するためにスレッドを用いているわけです。
同じ画面の図になりますが、厳密に言えば、論理プロセッサ数が4で一度に処理できるスレッド数も4ですが、スレッドの総量は刻々と変化していきます。下図の場合、スレッドの総数は「2689」となっています。
実際のところ、論理プロセッサ数と一度に処理できるスレッド数は同じになる場合がほとんどで、同じ意味の用語と思いがちですが、概念がまったく異なることを理解しておきましょう。
もう少しスレッドについて説明すると、この画面では、プロセス数「227」でスレッド数「2689」となっています。プロセス数がこれだけあるのは、ユーザーが起動させているアプリケーションソフト以外に、バックグラウンドで起動しているプログラムがいくつもあることを示しています。
プロセスとは、簡単に言えば実行中のプログラムの数です。それらがスレッドを含んでおり、総数として「千」を超えています。これを処理する論理プロセッサは4つしかありません。1度に処理できるスレッドは4つです。
どのように処理していくのかと言うと、OSがスレッドの優先度や負荷などを考慮しながら、処理のスケジューリングをします。そして、4つの論理プロセッサごとに、ミリ秒単位でスレッドを割り得て、高速で切り替えながら処理していきます。これは、単純にスレッドを順番に処理するのではなく、実行順序を工夫することで、全体の効率化をはかっています。
OSの役割 では、プログラムの実行に必要なハードウェア資源(CPU、メモリ、入出力デバイスなど)が確保された状態が「プロセス」であると学習しましたが、このハードウェア資源に論理プロセッサは含まれません。
プロセスごとに論理プロセッサが割り当てられるのではなく、スレッドごとに空いている論理プロセッサがOSによって割り当てられます。つまり、同じプロセス内のスレッドでも異なる論理プロセッサで処理される場合があるということです。これによって柔軟で効率的な処理が可能になっています。
最近のCPUでは、8コアや10コアのものが当たり前になり、スレッド数もどんどん伸びてきています。
ビット数
最後に、CPUの性能を判断できるもうひとつの指標として、何ビットのCPUなのかという見方があります。
これは1回の計算にどのくらいのビット幅を使うのか、つまり、何ビットを計算単位をしているかという意味になります。
最近の主流のCPUは「64ビット」です。
1回の計算に64ビットの2進数を扱う
ということです。
長らく32ビットCPUが主流で、64ビットCPUのパソコンは、高度な処理を必要とする業務用やサーバコンピュータなどに限られていましたが、技術の進歩と価格の低下により、2010年頃から一般向けに広く普及してきました。
また、CPUはパソコンだけでなく家電製品やゲーム機にも搭載されており、用途の違うパソコンと単純に比較はできませんが、初期のファミコンは8ビット、スーパーファミコンは16ビットCPUが搭載されていました。
1990年代に発売されたニンテンドウ64というゲーム機は、その名のとおり64ビットCPU、プレイステーション2は、なんと128ビットCPUが搭載されていました。ゲーム機の高性能さと価格の安さに驚きますし、当時の石原東京都知事も絶賛していました。
以上が、おおまかなCPUの装置と仕組みになります。
性能を示す指標はいくつもあり、どれが重要というわけではありません。コア数やスレッド数の多い高性能CPUを搭載していたとしても、特定のアプリケーションソフトしか使用しなのであれば、無用の長物になるかもしれません。
また、レジスタやキャッシュメモリといったメモリ領域の性能も影響します。当然ながら、高性能なCPUは高額になるので、使用する目的に合ったCPUを搭載したパソコンを選ぶようにしましょう。
以下は、一般的なパソコンに搭載されている製品の例です。これを読み取ってみましょう。
Intel社製 CPU Core i5-7200U 2.5GHz
まず「Core i5」で、コアが5つありそうな感じですが、コア数を示しているのではなく、製品規格の名称で「アイ ファイブ」になります。
Core iシリーズは「i5」の他にも「i3」や「i7」といったグレードがあり、一般的に「i3」→「i5」→「i7」→「i9」と高性能になっています。ただし、コア数は同じ「i5」や「i7」であっても異なる場合があります。
次に「7200U」というのは、この製品(Core iシリーズ)の「世代」を表しています。世代というのは、いつ頃の製品なのかという意味で、7000番台は「第7世代」となり、2017年頃の製品ということになります。「U」はモバイル製品という意味です。
最後の「2.5GHz」はクロック周波数です。先述のとおり、1秒間に「25億回」の計算ができる周波数です。
また、Intel社製以外にもAMD社製のCPUがあります。どちらも世界的にシェアを分けており、一般的にはこのどちらかの社の製品になっています。
更新履歴
- 2008年7月25日
- ページを公開。
- 2009年11月7日
- ページをXHTML1.0とCSS2.1で、Web標準化。レイアウト変更。
- 2018年1月25日
- ページをSSL化によりHTTPSに対応。
- 2025年1月11日
- 内容修正。
著者プロフィール
YAMANJO(やまんじょ)
- 経歴
- 岡山県出身、1980年生まれ(申年)の♂です。現在、総合病院で電子カルテなどの情報システム担当SEとして勤務。医療情報学が専門ですが、ネットワーク保守からプリンタの紙詰まり、救急車の運転手までこなしています。
- 医療情報技師、日本DMAT隊員。ITパスポート、シスアドなど、資格もろもろ。
- 趣味は近所の大衆居酒屋で飲むこと、作曲(ボカロP)、ダイビング。
- 関連リンク
- 詳細なプロフィールはこちら
- 作成したボカロ曲などはYoutubeへ
- X(Twitter)
