クリックから画面表示まで、CPUが命令をつなぐ
アプリのボタンを押すと、見た目には一つの操作でも、内部では条件の判定、数値の計算、データの移動など、多くの処理が続きます。CPUは、主記憶装置に置かれたプログラムから命令を取り出し、その内容に従って処理を進めます。プログラムと処理対象のデータを置いておく場所がメモリで、命令を実行する場所がCPUです。この役割分担により、同じCPUでも読み込むプログラムを替えれば、文書作成、画像処理、ゲームなど異なる仕事を実行できます。
キーボード、マウス、ディスプレイ、ストレージなどは、それぞれ入力、出力、保存を担当します。CPUはこれらを直接同じ方法で動かすのではなく、装置を制御する回路やソフトウェアを通じて情報を受け渡します。つまり、CPUだけでコンピュータの仕事が完結するのではありません。入力装置と出力装置やメモリと連携し、全体の処理を進める中心に位置しています。
「取り出す・解読する・実行する」の短い循環
CPUの基本動作は、命令を取り出す「フェッチ」、命令の意味を読み分ける「デコード」、指定された処理を行う「実行」という流れで捉えられます。次に実行する命令の位置は、プログラムカウンタと呼ばれるレジスタで管理します。レジスタは、CPU内部にある小容量で高速な記憶領域です。計算途中の値、命令の位置、処理結果の状態など、すぐ使う情報を一時的に保持します。
命令を解読して各部分へ動作の合図を出すのが制御装置です。加算や減算、値の比較、ANDやORなどの論理演算は、主に算術論理演算装置(ALU)が担います。たとえば「二つの値を足し、その結果が一定の条件を満たせば別の場所へ進む」という処理も、値をレジスタへ用意し、演算し、結果に応じて次の命令を選ぶ動作に分けられます。
命令や数値は、CPUが扱える二進法のビット列で表現されます。ただし、同じビット列がどの命令を表すかはCPUの命令セットによって異なります。命令セットは、そのCPUが理解できる機械語の命令と規則の集まりです。異なる命令セット向けに作られた機械語のプログラムは、そのままでは実行できない場合があります。
GHzだけでは決まらないCPUの速さ
動作周波数は、CPUの動作をそろえるクロックが1秒間に何回繰り返されるかを表し、Hz(ヘルツ)で示します。数値が大きいほど常に実際の処理が速い、と単純には判断できません。一つの命令に必要な処理、同時に進められる命令の数、命令の種類、CPUの設計なども違うためです。異なる世代や設計のCPUを動作周波数だけで比べることはできません。
一つのCPU内に、命令を実行する中心部分である「コア」を複数備えたものも一般的です。複数の仕事を並行して進めやすくなりますが、プログラム側の処理が適切に分割できなければ、コアの数に比例して速くなるわけではありません。また、CPUはメモリから情報が届くまで待つことがあります。この待ち時間を減らすため、よく使う命令やデータを一時的に置く高速なキャッシュメモリがCPUの近くに設けられています。
処理時間はCPUだけでなく、メモリやストレージの速度、扱うデータ量にも左右されます。同じ機器でも、手順の異なるプログラムなら必要な処理回数が変わります。その違いを考える手掛かりが計算量とアルゴリズムの効率です。製品の性能を考えるときは、一つの仕様値ではなく、実際に行う処理と部品全体の組み合わせを見る必要があります。
OSは一つのCPUを複数の処理に振り分ける
Webブラウザで音楽を再生しながら文書を編集するように、コンピュータは複数の処理を同時に進めているように見えます。オペレーティングシステムは、実行する処理へCPUを割り当て、必要に応じて切り替えます。切り替えがすばやく行われることで、一つのコアでも複数の処理が少しずつ進みます。複数のコアがあれば、実際に並行して実行できる処理も増やせます。
外部装置で操作や通信の受信などの出来事が起きると、CPUへ「対応が必要だ」と知らせる仕組みがあります。これを割り込みといいます。CPUは実行中の処理の状態を保ち、必要な処理へ移り、終わったら元の処理へ戻れます。CPUが装置の状態を絶えず確認し続けなくても、必要なタイミングで対応できる仕組みです。ただし、どの処理を優先するかや、どれだけCPUを割り当てるかは、OSの管理やプログラムの動きにも左右されます。
CPUと「プロセッサ」は同じ範囲とは限らない
CPUは英語の Central Processing Unit の頭文字で、日本語では中央処理装置と呼びます。「プロセッサ」もCPUの意味で使われることが多い言葉ですが、本来は情報を処理する装置を広く指せます。画像処理を得意とするGPUなどもプロセッサの一種なので、文脈によって指す範囲を確かめることが大切です。
また、CPUは役割を示す名前であり、必ず一つの部品だけを意味するとは限りません。CPUの機能を一つの集積回路にまとめたものはマイクロプロセッサと呼ばれます。一方、スマートフォンなどで使われるSoC(System on a Chip)は、CPUのコアだけでなく、画像処理や入出力など複数の機能を一つのチップにまとめたものです。外からは一枚の小さなチップに見えても、その内部では異なる役割の回路が分担しています。この違いを知ると、「CPUがチップ全体なのか、その中の処理部分なのか」を説明するときに混同しにくくなります。