計算機の構造
計算機にはどのような処理ができるか(そしてどのような処理はできないか)を
知っておくことはプログラムを作る上で有益なので,
ここで計算機の構造を簡単に紹介する.
計算機の基本的な構成要素は, CPU と メモリ である.
- 中央処理装置 (CPU)
四則演算などを行なう素子. Pentium などがその例.
内部には演算素子のほかに, 容量は少ないが高速な記憶装置(レジスタ)が
いくつかある.
- メモリ
記憶装置である.
CPU からの指令によって, 値を記憶したり読みだしたりできる.
データは 8ビットを単位としてまとまっており, その単位をバイトという.
バイトにはそれぞれ番地(アドレス)がついていて,
それを手がかりにデータを読み書きする.
最近のPCには, 1億バイト以上のメモリが載っていることも多い.
CPU ができることは比較的単純である:
-
CPU 内部での四則演算
-
CPU と メモリとの間でのデータの転送
こうした操作を指定するのが「命令」である.
命令もメモリの中に納められていて,
CPU はそれを順次読み出しては実行する.
これが計算機の基本動作である.
例:
メモリの100番地のデータと200番地のデータの和を計算して, 300番地に格納する
- 100番地からレジスタ1にデータを読み出す
- 200番地からレジスタ2にデータを読み出す
- レジスタ1 と レジスタ2 の和を計算して, レジスタ3 に格納する
- レジスタ3 から300番地へデータを書き込む
このように手順を直接命令単位に記述する方式を「機械語」という.
大昔のコンピュータはすべてこのようにプログラムを作成していた.
しかし, 機械語によるプログラムは手間がかかる上に間違えやすいので,
「もうすこし簡単にプログラムを作れないか」
ということから, さまざまなプログラム言語が作られるようになった.
C 言語もそうしてできた言語の一つである.
もとになる計算機の構造やできることに違いがあるわけではないから,
モデル(CPUとメモリ)やできることは機械語と本質的には同じである.
しかし, 記述の容易さという点では,
上で述べた例は
z = x + y;
のように簡潔に記述できる.
不思議に思うかも知れないことがら:
- 命令もデータもメモリに格納されているとすると, どうしてそれらが
ごっちゃにならないのだろう?
- データをメモリに格納するには命令の働きだとして, それでは
命令をメモリに格納するのは誰の仕事だろう?
...などいろいろあるだろうね.
prev
index
next