「CPU」とは
CPU(Central Processing Unit:中央処理装置)は、コンピュータの中でプログラムの命令を読み取り、その命令に従って計算や各装置の制御を行う装置です。
コンピュータ全体の処理の中心となるため、「コンピュータの頭脳」にたとえられることがあります。
コンピュータの基本的な構成は、役割によって入力装置・出力装置・記憶装置・演算装置・制御装置の五つに分けて考えることができます。これをコンピュータの五大装置といいます。このうちCPUは、主に制御装置と演算装置の働きを担っています。
CPUの二つの中心的な働き
制御装置は、プログラムの命令を読み取り、その内容を解釈して、「このデータを読み出す」「この計算をする」「結果を記憶する」といった指示をコンピュータの各部分に出します。
一方、演算装置は、制御装置からの指示に従って実際の計算を行います。加算や減算などの算術演算だけでなく、「二つの値が等しいか」「どちらが大きいか」といった比較や、AND・OR・NOTなどの論理演算も行います。
したがって、
- 制御装置 → 何をするかを判断して指示する
- 演算装置 → 指示された計算や比較を実行する
と区別できます。
CPUの内部には、処理中のデータや命令などを一時的に保持するレジスタがあります。
CPUは主記憶装置の命令を順番に実行する
CPUが実行するプログラムは、実行時には基本的に主記憶装置(メインメモリ)に置かれています。CPUはそこから命令を一つずつ取り出して処理します。
基本的な流れは、
命令の取出し → 命令の解読 → 命令の実行
です。
それぞれ、
- 取出し(フェッチ)
主記憶装置から次に実行する命令を取り出す。
- 解読(デコード)
その命令が「加算せよ」「データを移動せよ」など、何を意味するのかを調べる。
- 実行
命令に従って演算やデータの移動などを行う。
という処理です。
CPUは、この取出し→解読→実行というサイクルを高速に繰り返すことでプログラムを実行しています。
クロック周波数とCPUの処理
CPU内部の処理は、一定の周期で刻まれるクロックに合わせて進められます。このクロックが1秒間に何回繰り返されるかを表したものがクロック周波数です。単位にはHz(ヘルツ)を使います。
たとえば、
1.6 GHz = 1.6×109Hz = 1秒間に16億クロック
という意味です。
ここで、あるCPUが1命令の実行に平均4クロック必要だとすると、
16億 ÷ 4 = 4億
となり、平均的に、1秒間に4億命令を実行できます。
CPUと主記憶装置の速度差を補うキャッシュメモリ
CPUは非常に高速に処理できますが、主記憶装置から毎回データを読み出していると、その待ち時間によってCPUの処理が止まってしまうことがあります。
そこで使われるのがキャッシュメモリです。
キャッシュメモリは、CPUが近いうちに使いそうな命令やデータを一時的に保存しておく、小容量で高速な記憶装置です。主記憶装置よりCPUに近く、高速にアクセスできるため、CPUと主記憶装置の速度差を緩和します。
記憶装置は、大まかには、
レジスタ → キャッシュメモリ → 主記憶装置 → SSD・HDDなどの補助記憶装置
の順に、一般には容量が大きくなる一方、CPUからのアクセスには時間がかかるようになります。
SSDやHDDなどの補助記憶装置は、電源を切った後もデータを保存するために使われます。
複数のプログラムはどうやってCPUを使うのか
コンピュータでは、Webブラウザを開きながら音楽を再生し、さらに別のアプリを使うなど、複数の処理を同時に行っているように見えます。
一つのCPUコアがある瞬間に実行できる処理には限りがありますが、OS(オペレーティングシステム)がCPUを使う処理を短い時間ごとに次々と切り替えることで、複数の処理が並行して進んでいるように見せることができます。
このときOSは、各処理に
「一定時間だけCPUを使わせ、時間が来たら別の処理へ切り替える」
という形でCPUの時間を配分します。
切り替えるときには、その処理がどこまで進んでいたかなどの状態を保存しておき、次にCPUが割り当てられたときに続きを実行します。そのため、処理を切り替えるたびに最初からやり直すわけではありません。
なお、現在のCPUには複数のコアをもつものも多く、複数の処理を実際に並行して実行できる場合もあります。
CPUについて整理すると
CPUについては、次の関係を押さえておくことが重要です。
- CPU:命令を解釈し、各装置を制御して演算を行う
- 制御装置:命令を解読し、各部分へ指示を出す
- 演算装置:算術演算や論理演算を行う
- 記憶装置
- 主記憶装置:実行中のプログラムやデータを置く
- キャッシュメモリ:CPUと主記憶装置の速度差を緩和する
- レジスタ:CPUの内部にあり、処理中のデータや命令などを一時的に保持する
- 命令実行サイクル:取出し(フェッチ)→解読(デコード)→実行
- クロック周波数:CPUの動作の基準となるクロックが1秒間に何回あるかを表す
- OS:複数の処理にCPU時間を割り当て、処理を切り替える