あなた
普段使い慣れているパソコンですが、プログラムが実行されるときに、どんな処理が行われているのか、パソコンの中に何が入っているのか、知っている人は少ないと思います。
これらを知っておくことは、プログラムやパソコン関係の仕事をしている人にとっては、重要なことです。なぜなら、パソコンが動作する原理原則を知ることで、作業の応用ができるようになるからです。
そこで今回から全12回に分けて、プログラムが動作する根本的な仕組みを見ていきたいと思います。参考にさせていただく書籍は「プログラムはなぜ動くのか」です。
プログラムがなぜ動くか理解するためには
まずはなぜプログラムが動作するのか理解するために、知っておいた方がいいプロセスの全体像を示しておきます。下の図を見て下さい。
プログラムが動作するのをしっかり理解するのに、12コのステップを理解する必要があります。それぞれのステップについてこれから12回に分けて、説明していきたいと思います。今回は第1回目の「CPUとはなにか」についてです。
プログラマにとってのCPUとは
CPUとはCentral Processing Unitの略称で、コンピュータの頭脳に当たる部分です。プログラムを書く人にとって必要なCPUの知識とは「CPUがどんな働きをするか理解すること」です。
CPUを理解するには命令やデータを格納するレジスタの仕組みを知ることが必要です。レジスタがわかると、プログラム実行の仕組みが見えてきます。
CPUの中身をのぞいてみよう
まずCPUの中身をのぞく前に、プログラムの処理の流れについて確認しておきたいと思います。大まかな流れは以下の通りです。
ではコンピュータの頭脳であるCPUの中身をのぞいてみようと思います。CPUは大きく4つの要素で作られています。
- 制御装置は、メモリー上の命令やデータをレジスタに読み出し、命令の実行結果に応じてコンピュータ全体を制御します。
- 演算装置はメモリーからレジスタに読み出されたデータを演算する役目を持ちます。
- クロックはCPUが動作するタイミングを決める働きがあります。
- レジスタは処理対象となる命令やデータを格納する領域で、一種のメモリーのようなものです。
プログラムが動き出すと、クロック信号に合わせて、制御装置がメモリーから命令やデータを読み出します。その命令を解釈・実行することで演算装置でデータが演算されます。
CPUはレジスタの集合体
ちょっと難しくなってしまいましたが、実はプログラマとして意識する必要があるのはレジスタだけです。
プログラムというのはこのレジスタの挙動を決めているものなのです。つまり皆さんが高水準言語で作成したプログラムがコンパイルされて、マシン語になり、CPUの内部でレジスタを使った処理になるというイメージです。
レジスタにもいくつかの種類があります。一覧を表にまとめておきます。これらのレジスタに格納される値には「命令」を表している場合と、「データ」を表している場合があります。
これらのレジスタの役割を完璧に理解する必要は全くありません。むしろ大切なのはプログラマーにとってのCPUのイメージは、レジスタの集合体だということです。さまざま役割を持ったレジスタの集合体がCPUなのです。
CPUにできることはシンプル
確かにマシン語の命令の種類についてしらなければ、CPUの動作をイメージできないこともわかります。そんなあなたのためにマシン語の命令の種類を説明します。CPUで実行できるマシン語命令を大きく分類したのが下の表です。
この表にあるようにCPUが行っている処理は、大きく分けて4種類ほどしかありません。つまりCPUが行っていることは、いたってシンプルなのです。
まとめ
私もコンピューターは複雑というイメージを持っていましたが、フタを開けてみると結構シンプルにできています。
プログラムを書くことで、CPU内のレジスタの動きを制御しているということが今回の大切なポイントです。プログラミング言語が人間の言葉に近づいているためにレジスタの処理をプラグラムで行っていることが理解しづらくなっています。
低水準なアセンブリ言語だと、レジスタを指定して、そこにデータを格納していることがよくわかります。
次回はコンピューターの内部でデータがどのような形式で表され、どのような方法で演算されているかについてみていきます。なぜデータを2進数で扱うのかを見ていきます。