📜 プログラムとは何か
🎯 CPUが命令を1つずつ取り出して実行する繰り返しで動いていることを理解する
CPUは何億個ものトランジスタでできた複雑な部品ですが、やっていることは驚くほど単純です。次の3つを、ひたすら繰り返しているだけです。
そして4番目に「次の命令へ進む」があり、また1に戻ります。この輪をぐるぐる回し続けるのがCPUの一生です。
具体例で見る
「3番地の値と4番地の値を足して、5番地にしまう」という処理は、実際には機械語の命令いくつかに分かれます。
C言語で書けばたった1行の c = a + b; が、機械のレベルではこれだけの手数に分解されています。1つの命令はとても小さい——これがCPUの世界観です。
次にどこを実行するか、を覚えている
CPUの中には「次に実行する命令が何番地にあるか」を覚えている専用の置き場があります(プログラムカウンタと呼びます)。命令を1つ実行するたびに、この番号が1つ進みます。
すると、「if文で条件によって処理が分かれる」「ループで前に戻る」といった動きの正体も見えてきます。プログラムカウンタの中身を書き換えて、別の番地へ飛ぶ——ただそれだけのことなのです。
なぜこんなに細かく分けるのか、と思うかもしれません。理由は、部品が単純なほど速く正確に作れるからです。「足す」「比べる」「移す」といった数十種類の単純な命令だけを、極限まで速く実行できるように回路を作る。その代わり、複雑なことは命令をたくさん並べて実現する。この割り切りが、1秒間に何十億回という速度を生んでいます。
大原則: 一度に1つ、順番に
ここから、この先ずっと使う大原則が出てきます。CPUは一度に1つの命令しか実行しない(実際の最新CPUは工夫で同時実行しますが、結果は順番に実行したのと同じになるよう作られています)。
つまりプログラムの動きは、原理的に人間が紙の上で追いかけられるということです。速度でCPUに勝てなくても、正しさは同じように確かめられます。この「紙の上でCPUになる」訓練を、第3トラックで本格的にやります。
クロック周波数3GHzとは、この輪を1秒間に約30億回まわす速さ、という意味です。人間が1歩ずつ追えるのは、せいぜい1秒に1回でしょう。速さでは30億倍の差があります。それでも、追えるかどうかは速さの問題ではありません。時間さえかければ、あなたはCPUとまったく同じ結果にたどり着けます。この事実が、第3トラックの訓練の土台になります。
コンピュータの頭脳にあたる部品。メモリから命令とデータを取り出し、計算や判断を行って結果をまた書き戻す仕事を、目にも止まらぬ速さで繰り返している。現代のCPUは1秒間に数十億回もこのサイクルを繰り返している。
プログラムやデータを一時的に保管しておく場所。番地(アドレス)のついた小さな箱がずらりと並んだ、巨大なロッカーのような構造をしている。電源を切ると中身が消えてしまう、いわば一時的な記憶場所にあたる。
0と1の並びだけで書かれた、CPUが直接理解できる命令の集まり。人間には読みにくいが、コンピュータが実行できる唯一の言葉にあたる。同じソースコードでも、CPUの種類が変われば生成される機械語も変わってくる。
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。