CPUとは? パソコンやスマホの中で何をしているのか
CPU(中央処理装置)は、プログラムに書かれた命令を1つずつ取り出し、そのとおりに計算やデータの読み書きをする部品です。1つの命令は「足す」「比べる」のような単純なものですが、これを1秒間に数十億回という速さでくり返します。パソコンやスマホのアプリも、車や家電の制御も、この単純なくり返しの積み重ねで動いています。
この記事でわかること
- CPUが実際にしていること(命令を取り出して実行する、のくり返し)
- 「3GHz」「8コア」などの数字の意味と、数字だけで速さが決まらない理由
- CPUとメモリ・ストレージ・GPUの役割の違い
- パソコン用のアプリがスマホでそのまま動かない理由(命令セットの違い)
前提知識: 特にありません。トランジスタを「電気で切り替わる小さなスイッチ」と知っていると、後半が読みやすくなります。
身近なところでは
スマホで写真をタップして拡大する。表計算ソフトで合計を出す。エアコンが部屋の温度に合わせて風を弱める。こうした動作の裏では、どれもCPUが働いています。
パソコンやスマホの仕様表には、「最大3.5GHz」「8コア」のような数字が並びます。ニュースでは「x86」「Arm」という言葉も出てきます。この記事では、CPUが実際に何をしているかを順に見ながら、これらの数字や言葉の意味を説明します。
CPUの仕事は「命令」を実行すること
CPUの仕事を一言でいうと、プログラムを実行することです。プログラムとは、コンピュータにさせたい作業を、ごく小さな手順に分けて並べたものです。この1つ1つの手順を「命令」と呼びます。
CPUが直接こなせる命令は、意外なほど単純です。代表的なのは次のような種類です。
- 読み込む・書き込む: メモリから数を持ってくる。メモリへ数をしまう
- 計算する: 2つの数を足す、引く など
- 比べる: 2つの数のどちらが大きいか、等しいかを調べる
- 飛ぶ: 比べた結果に応じて、次に実行する命令の場所を変える
例えば「ボタンが押されたら、画面の数字を1増やす」という作業を考えます。CPUの中では、これが「数を読み込む」「1を足す」「書き戻す」という命令の列になります。「押されたかどうか」の判断は、「比べる」と「飛ぶ」の組み合わせで作ります。写真の加工もゲームも、元をたどればこうした命令の膨大な組み合わせです。
CPUが受け取る命令は、文字ではなく0と1の並びで書かれています。この形のプログラムを「機械語」と呼びます。人が書いたプログラムは、機械語に変換してからCPUに実行させます。なお、ここでは話を簡単にするため、命令の種類は代表的なものだけを挙げました。
「取り出す→解読する→実行する」のくり返し
命令の列は、メモリという部品に置かれています。メモリは、たくさんの数を、番地(場所の番号)をつけて記憶しておく部品です。CPUは番地を指定して、メモリの中身を読んだり書いたりします。
プログラムの命令も、計算に使うデータも、同じメモリに並べて置きます。プログラムを入れ替えるだけで、同じ機械がまったく別の仕事をできるのは、このためです。この方式をノイマン型と呼び、今のほとんどのコンピュータがこの考え方で作られています。
CPUは、次の3つの段階をひたすらくり返します。
- 取り出す(フェッチ): 次に実行する命令を、メモリから持ってくる
- 解読する(デコード): その0と1の並びが、何をせよという命令なのかを読み解く
- 実行する: 計算や比較をする。必要ならメモリのデータを読み書きする
次にどの番地の命令を取り出すかは、CPUの中の小さな記憶場所が覚えています。これを「プログラムカウンタ」と呼びます。ふだんは1つ実行するごとに次の番地へ進み、「飛ぶ」命令のときだけ別の番地に書き換わります。くり返しや、条件による分かれ道は、このしくみで作られています。
実際のCPUは、この3段階を1命令ずつ待つのではなく、流れ作業のように重ねて進めます。これをパイプライン処理と呼びます。さらに、複数の命令を同時に進めるCPUも普通です。それでも結果は、プログラムの順番どおりに1つずつ実行したときと同じになるように作られています。
クロック周波数: 「3GHz」は何の数字?
CPUの中の回路は、一定の間隔で来る合図に合わせて、少しずつ処理を進めます。この合図を「クロック」と呼びます。オンとオフを規則正しくくり返す電気の信号です。
クロック周波数は、この合図が1秒間に何回来るかを表します。単位のHz(ヘルツ)は「1秒あたりの回数」で、G(ギガ)は10億です。つまり3GHzは、1秒間に30億回の合図が来るという意味です。合図の間隔は、約0.33ナノ秒(1ナノ秒は10億分の1秒)しかありません。
ただし、合図1回でいくつの命令を終えられるかは、CPUの設計によって違います。この「1クロックあたりに実行できる命令の数」をIPC(Instructions Per Cycleの略)と呼びます。1秒間に実行できる命令の数は、大まかに言えば「クロック周波数 × IPC」です。周波数が同じでも、IPCが2倍なら、同じ時間に2倍の命令を実行できます。
また、今のCPUは、仕事の量や温度に応じて周波数を細かく上げ下げしています。仕様表の「最大〇GHz」は条件がよいときの上限で、いつもその速さで動くわけではありません。
コア: 命令を実行する部分が、いくつもある
命令を取り出して実行する、ひとそろいの回路を「コア」と呼びます。昔のCPUは、1つのチップ(シリコンの小さな板に回路を作り込んだ部品)にコアが1つでした。今は、ほとんどのCPUが複数のコアを持っています。8コアのCPUなら、8つの作業(命令の列)を同時に進められます。
コアが増えたのは、クロック周波数を上げ続けることが難しくなったからです。周波数を上げるには電圧も上げる必要があり、消費電力と発熱が急に増えます。2000年代の半ばには、パソコン用CPUの周波数は数GHzで伸び悩みました。そこで各社は、周波数を上げる代わりにコアを増やす方向へ進みました。
スマホのCPUには、性能の高い大きなコアと、電力の少ない小さなコアを組み合わせたものが多くあります。例えばiPhone 15 Pro(2023年)のCPUは6コアです。Appleの仕様では、高性能コア2つと高効率コア4つです。メールの受信のような軽い仕事は小さなコアに任せ、電池の減りを抑えます。
CPU・メモリ・ストレージの役割の違い
CPUの中にも記憶する場所はありますが、量はごくわずかです。CPUが作業する間、プログラムとデータは主にメモリ(メインメモリ)に置かれます。仕様表で「メモリ 8GB」などと書かれているのが、これです。今のメモリはふつうDRAMという部品で、速く読み書きできますが、電源を切ると中身が消えます。
一方、写真やアプリを、電源を切っても残しておく場所が「ストレージ」です。スマホの「256GB」や、パソコンのSSDがこれにあたります。アプリを起動すると、その中身がストレージからメモリへ読み込まれ、CPUはメモリ上の命令を実行します。
CPUから見ると、メモリでさえ遠く、読み出しを待つ時間がかかります。そこでCPUは、よく使うデータの写しを、自分のすぐそばの小さく速い記憶場所に置いています。これをキャッシュと呼びます。メモリとストレージの違いは「メモリとストレージの違いは?」でくわしく説明しています。
CPUはどこにある?
パソコンでは、CPUが独立した1つのチップとして作られていることがよくあります。ただし、最近はスマホと同じ作り方のパソコンも増えています。
スマホでは、CPUは単独の部品ではありません。CPU、画像を描く回路、通信の回路などを1つのチップにまとめたSoCの一部として入っています。1つにまとめると、小さく、電力も少なくできます。Appleが2020年からMacに使っているM1などのチップも、このSoCです。
車や家電の中にもCPUがあります。多くは、CPUに小さなメモリや入出力の回路を足して1チップにしたマイコンという形です。炊飯器の火加減、エアコンの風量、車のエンジンやブレーキの制御などを受け持ちます。技術誌IEEE Spectrum(2021年)によると、高級車では、こうした制御用のコンピュータが150個以上のものもあります。
マイコンとパソコン用のCPUの違いは「MCUとMPUの違い」で表にまとめています。
CPUとGPUの違い
パソコンやスマホには、CPUのほかにGPUという計算用の部品もあります。GPUは、もともと画面の絵を描くために作られました。画面の何百万個もの点の色を、同じ手順でいっせいに計算する仕事です。
CPUとGPUの違いは、得意な仕事の形にあります。CPUは比較的少ない数の高性能なコアで、分かれ道の多いさまざまな仕事を、1つずつ素早く片付けるのが得意です。GPUは単純な計算の回路を数千個も並べ、同じ計算を大量のデータにまとめて行うのが得意です。AIの計算にGPUがよく使われるのは、その多くが「同じ計算の大量のくり返し」だからです。
どちらが上というわけではなく、役割分担です。ふつうはCPUが全体の段取りをして、向いた計算をGPUに任せます。違いは「CPUとGPUの違い」で表にまとめています。
CPUはトランジスタでできている
CPUの回路は、トランジスタという、電気で切り替わる小さなスイッチを大量につないで作られています。スイッチを組み合わせると、「2つの入力がどちらも1なら1を出す」のような簡単な判断をする回路ができます。これを「論理回路」と呼びます。
論理回路をさらに組み合わせると、0と1で表した数(2進数)を足す回路や、数を覚えておく回路ができます。それらを何段にも組み合わせたものが、命令を取り出し、解読し、実行するCPUです。トランジスタのしくみは「トランジスタとは?」で説明しています。論理回路は「論理回路シミュレーター」で、実際に組んで試せます。
CPUに使われるトランジスタの数は、時代とともに大きく増えました。1971年に発売されたIntelの4004は、1つのチップに収めた最初期のCPU(マイクロプロセッサ)です。そのトランジスタは約2,300個でした。2020年に発表されたAppleのM1は、約160億個です。ただし、M1の数はCPUの部分だけでなく、GPUなどを含むチップ全体の数です。
命令セット: x86とArmの違い
CPUがどんな命令を持ち、それぞれを0と1のどんな並びで表すか。この取り決めを命令セットと呼びます。正式には「命令セットアーキテクチャ(ISA)」といいます。命令セットは、ソフトウェアとCPUの間の約束ごとです。同じ命令セットのCPUなら、中の回路の作りや速さが違っても、同じ機械語のプログラムを実行できます。
広く使われている命令セットの代表は2つです。1つは、Intelが1978年に発表した8086から続く「x86」です。多くのWindowsパソコンやサーバーで使われています。もう1つは「Arm」です。Arm社の2024年3月期の年次報告によると、スマホ向けのCPUでのArmの割合は、長年99%を超えています。
パソコン用のアプリがスマホでそのまま動かない理由の1つが、この違いです。人が書いたプログラムは、変換用のソフトで機械語にしてから配るのが一般的です。このとき、どの命令セット用の機械語にするかを決めます。x86用の機械語は、ArmのCPUにとっては意味の通らない0と1の並びです。
ただし、これは話を単純にした説明です。実際には、コンピュータ全体を管理する基本ソフト(OS)の違いもあります。同じCPUでも、WindowsのアプリはそのままではAndroidで動きません。逆に、変換の仕組みを使えば、別の命令セット用のアプリを動かすこともできます。
例えばAppleは2020年から、MacのCPUをIntel製からArm系の自社チップに切り替えました。その際、Intel用のアプリを変換して動かす「Rosetta 2」という仕組みを用意しました。また、1つのアプリに両方の機械語を入れて配る方法もあり、Appleはアプリの作り手にこちらを勧めています。
よくある誤解
誤解: CPUはコンピュータの「脳」で、自分で考えている
実際は、CPUは命令の意味を理解せず、書かれた命令を書かれたとおりに実行するだけです。アプリが賢く見えるのは、人が作ったプログラムがよくできているからです。AIの場合も、大量のデータから作られた計算の手順を、CPUやGPUが実行しています。また、プログラムやデータの大部分は、CPUの外のメモリやストレージにあります。「脳」というたとえは、考えたり覚えたりしているという誤解を生みやすいので、この記事では使っていません。
誤解: GHzの数字が大きいCPUほど速い
実際は、速さはクロック周波数だけでは決まりません。1クロックで終えられる命令の数(IPC)、コアの数、メモリを待つ時間などが大きく影響します。設計の違うCPUどうしでは、周波数の低いほうが速いこともよくあります。同じシリーズの製品どうしなら、周波数も目安になります。メーカーや世代が違うときは、用途に近いプログラムで実際に測った結果(ベンチマーク)で比べるのが確実です。
誤解: コアが2倍になれば、何でも2倍速くなる
実際は、速くなるのは、同時に進められる形に分けられる部分だけです。前の計算の結果を待たないと次に進めない部分は、コアを増やしても速くなりません。この限界をアムダールの法則と呼びます。「アムダールの法則の計算ツール」で、分けられる割合とコア数を変えて確かめられます。
数字で見る
| 項目 | 数字 | くらべると |
|---|---|---|
| 3GHzのクロック1回の間隔 | 約0.33ナノ秒 | 光でも約10cmしか進めない時間 |
| Intel 4004のクロック(1971年) | 最大740kHz(1秒に74万回) | 今の数GHzのCPUは、その数千倍 |
| トランジスタの数 | 4004は約2,300個、M1(2020年)は約160億個 | 約50年で約700万倍 |
| iPhone 15 Pro(2023年)のCPUのコア | 6コア | 高性能2つ+高効率4つ |
| スマホ向けのCPUでのArmの割合 | 99%超 | Arm社の2024年3月期の年次報告 |
光は1秒に約30万km進みます。それを30億回に分けると、1回あたり約10cmです。CPUの中の信号は、この短い時間のうちに回路を通り抜けなければなりません。
表を見ると、クロックが数千倍になった間に、トランジスタの数は約700万倍になっています。CPUが速くなった理由は、周波数だけではありません。増えたトランジスタを使って、コアやキャッシュを増やし、1クロックでこなせる命令を増やしてきたことが大きいのです。
もっと詳しく学ぶ
- 違いを表で見る: RISCとCISCの違い(命令セットの設計の考え方)、ASIC・FPGA・SoCの違い
- 次の一歩の用語: 分岐予測、スーパースカラ(CPUが速く動くための工夫)
- 図で見る: 命令を重ねて進めるパイプラインやメモリの階層は、図解の一覧にあります
- 土台から読む: 「半導体とは?」