seegongsik
構造

わかりやすく CPU どうやって 動く

計算を受け持つALUと、何をするかを決める命令。この二つは、どうやって一体となって動くのでしょうか。CPUが命令を一つずつ処理する流れをたどれば、答えが見えてきます。

01

CPUは三つの拍子を繰り返す

CPUがしていることは、じつは単純です。
命令を一つ取り込み、それが何の命令かを読み解き、実行します。
そしてまた次の命令を取り込みます。
この三つの拍子を、休まず繰り返しているのです。

1
取り込み
命令を持ってきます
→
2
解読
何の命令かを読み解きます
→
3
実行
ALUが働きます
↻
この三つの拍子が1秒間に数十億回まわります。だからコンピュータは速いのです。

取り込み → 解読 → 実行、そして繰り返し。

取り込み・解読・実行を一周とすると、CPUは1秒間にこれを数十億回も回します。
一つひとつは単純でも、とても速いので複雑な仕事をこなせるのです。

02

次の命令を指す指

では、CPUはいま何番目の命令をする番なのか、どうやってわかるのでしょうか。
メモリのどこかに命令がずらりと並んでいて、その中の「次にするもの」を指す装置があります。
名前はPC、プログラムカウンタです。

PC
0
次のアドレス
0命令 A←
1命令 B←
2命令 C←
3命令 D←

PCが次の命令を指します。

命令を一つ取り込むたびに、PCは一つ増えます。
0番をしたら1番、1番をしたら2番という具合です。
この指のおかげで、CPUは順番を見失わずに命令を次々とこなせます。

03

部品が集まってCPUになる

ここで部品が一か所に集まります。
次の命令を指すPC、命令を読み解く解読器、計算するALU、値を少しのあいだ握っておく小さなマスであるレジスタです。
一つずつ見れば小さくても、集まれば命令を処理する一つのCPUになります。

CPU
PC
次の命令を指します
解読器
命令を読み解きます
ALU
計算します (第11回)
レジスタ
値を少しのあいだ握ります
第11回のALUは、この中の「計算」担当でした。CPUはこれらの部品のチームです。

一体としてのCPU。

PCが次を指し、解読器が命令を読み解き、ALUが計算し、レジスタが値を握ります。
それぞれが自分の仕事をしながら同じ拍子を回していく、これがCPUの働く姿です。

04

3行の命令を実行する

短いプログラムがあります。
「3を入れて」「4を足して」「結果を見せて」の3行です。
「進む」ボタンを押すたびに一拍ずつ進み、PCが動いて値が積み上がっていく様子が見えます。

03を入れて
14を足して
2結果を見せて
PC
0
値 (レジスタ)
0
「一拍進む」を押すと始まります

PCに沿って1行ずつ実行します。

PCが0、1、2と増えながら、命令が一つずつ実行されました。
値は3になってから7になり、最後に画面に表示されました。
プログラムが動くとは、こういうことなのです。

05

PCが別の場所へ飛ぶと

PCはふつう一つずつ進みますが、ときどき別の場所へ飛びます。
「5番の命令へ行け」のような命令に出会うと、PCがそのアドレスに変わるのです。
この飛び越しが、前のレッスンで見た比較の真偽と出会うと、「もし」という分かれ道になります。

0命令
1命令
25番へ行け
3(飛ばす)
4(飛ばす)
5ここへジャンプ
PCを変えると、命令の順番を変えられます。「もし」も「繰り返し」も、すべてこれで作られています。

PCが2番から5番へ飛びます。

一つずつ進む代わりにPCを別の値に変えると、プログラムの流れが変わります。
先へ飛ぶことも、後ろへ戻ることもできます。
このジャンプがどうやって「もし」と「繰り返し」になるのかは、プログラミングの分野でくわしく扱います。

一言でいうとCPUは取り込み・解読・実行を休まず繰り返し、PCという指が次にする命令を指します。PCを一つずつ増やせば順番どおりに、別の値に変えれば飛び越しになり、この単純な繰り返しがあらゆるプログラムの土台なのです。
← 構造
このページがお役に立ったなら支援する