コンピュータの仕組み
最終更新日: 2019年 04月07日
プログラミングを始める前にあらかじめ知っておきたいものがコンピュータの仕組みです。
コンピュータの仕組みというと抽象的すぎて何を学べば良いのかわからないでのすが、
- コンピュータの基本装置(CPU、 メモリ、 補助記憶装置、出力装置、入力装置)
- コンピュータがプログラムを実行する仕組み
の二つがわかっていれば良いと思います。
CPU、メモリは最近はPCやスマホを買い換えたりするときに話題にのぼることもあるので、 聞いたことある方はあると思うのですが、プログラミングする上でこれらの装置がどういう仕事をするのか? は最低限理解しておきたいところです。
コンピュータの基本装置
コンピュータの基本装置
コンピュータの基本の構成要素は下記の5つです。
- 中央処理装置(CPU)
- 主記憶装置(メモリ)
- 補助記憶装置(HDD, SSD)
- 入力装置(キーボード、マウス、タッチパネル、スキャナ)
- 出力装置(ディスプレイ、プリンタ)
プログラミングを行う上では、コンピュータがこの5つの部品からできているということが理解できていればよいです。
あるテキストファイルはデスクトップに保存されており(3. HDD)そのファイルをダブルクリックすると(4.マウス) メモリがそのファイルを表示するプログラムを読み込み(2. メモリ)、メモリから受け取ったデータを元にプログラムを実行し(1. CPU)、 ファイルの中身を画面に表示する(5. ディスプレイ)
という基本的な流れと各装置の役割がわかればよいでしょう。
下記でそれぞれの装置の説明をしていきます。
中央処理装置(CPU)
一般的にはCPUという名前の方が良く聞かれますが、CPUは中央処理装置とも呼ばれ、コンピュータの演算を担当し、 人間に例えるなら脳で人間に脳がないと物事を見たり、聞いたりしても判断したり、筋肉に信号を送って体を動かしたりできないように、 コンピュータにもCPUがないと計算が行えず全く使い物になりません。
CPUというとインテルのCorei i3, i5, i7などの名前を良く聞きますが、コンピュータに必須のCPUメーカーではおそらくインテルが 有名かと思います。CPUといわれてもものがイメージできない、ピンとこないという人は一下記のホームページを参照してみると 良いと思います。
ここのアイキャッチにある四角いチップのようなものがCPUでこれがコンピュータのコアな演算装置となっています。詳しいプログラムを 実行する流れはあとで説明しますが、このCPUがメモリからプログラムを読み出し適宜演算を行うことで、プログラムは実行され、世の中で 動いているWebアプリケーション全てがこの原則にしたがって動いています。
主記憶装置(メモリ)
これもメモリという言葉が一般的かとは思いますが、メモリは主記憶装置とも呼ばれます。
CPUが人間の脳に例えられるので、メモリを身近なモノに例えると作業机です。みなさんが作業に取り掛かるとき、ノート、鉛筆、参考書、パソコン、資料など作業に必要なものを広げて 置いておくと思いますが、メモリも同様にプログラムを実行する際に必要な情報(変数などのデータ)を保持しておく装置です。
よくエンジニア界隈ではメモリ16GBは基本的人権(会社支給のパソコンはメモリ16GBはほしい)というような主張がありますが、メモリの 容量は机のスペースのことで、机の広さ(メモリの容量)が大きければ大きいほど効率よく仕事ができます。
当然、容量が大きくなればなるほど価格も高くなるので、一概に大きければ大きいほど良いとは言わないのですが、メモリはCPUと協調して演算を 行なっていくのでコンピュータの処理速度にはメモリの容量が大きく関係してきます。
補助記憶装置(HDD, SSD, CD, USBメモリ)
補助記憶装置の具体例でいうとHDD(ハードディスク)などがそれにあたります。ストレージなどとも言われますが、補助記憶装置には経験として わかるようにコンピュータ内のファイルなどが保存されています。
記憶装置と言われると、最初HDDを思い浮かべる方も多いかもしれないのですが、プログラムの実行中のデータはメモリが管理し、それ以外の ファイルなどのデータの保存はHDDなどの補助記憶装置が担当します。メモリの場合は、コンピュータの処理速度に関係してきますが、HDDについては 単純にPCにいれておけるデータの容量だと思って頂ければ大丈夫です。
HDDの部品自体を直接見たことのある方は少ないと思うのですが、HDDの中にはCDのようなディスクが入っておりそこにファイルなどのデータが保存されています。 同じ記憶装置であるメモリとHDDの読み書きの速度を比べた時にHDDは低速で、それはHDDがディスクを回転させながらデータの読み書きを行わなければならないからです。
この問題を解消しているのがSSDで最近のPCで搭載しているものが増えてきているのですが、SSDはストーレージにディスクを使わずフラッシュメモリを使っているため HDDより高速です。
補助記憶装置の種類は豊富で他にもPCに内臓されないCDやUSBメモリも補助記憶装置です。
入力装置(マウス、キーボード)
入力装置として代表的なデバイスはマウス、キーボードなどです。スマホが普及すると同時にタッチパネルも一気に普及しましたが、タッチパネルも同様に入力装置です。
コンピュータは計算を行う機械ですが、単に計算を行うだけのものでなく文字や画像を処理したりすることもあり、演算を行うためにはそのためのデータが必要で、それを入力するための装置が入力装置です。 この定義を考えてみるとスキャナやスマホのカメラも入力装置の一つです。
出力装置(ディスプレイ、プリンタ)
出力装置の具体的な例でいうとディスプレイとプリンタ、スピーカーなどがそれにあたります。
ディスプレイは細かい点の集まりでそれぞれのライトの光を調節して画面を表示しています。プリンタは紙にインクヘッドから直接インクを吹きかけて 紙に文字や画像を印字しています。このように出力装置はそれぞれ演算の内容を表示する手段は異なっていますが、コンピュータの演算結果を表示する ものとして出力装置に分類されます。
プログラム実行の流れ
コンピュータの主な装置について説明したところで、コンピュータの仕組みの締めくくりとしてプログラムがどのように実行されるかというところを説明していきたいと思います。
それぞれの5大装置の使われ方の大まかな流れはすでに説明しましたが、プログラムは多くの場合、HDDなどの補助記憶装置に記録してあります。ここでまず最初に プログラムはJava, Ruby, PHPなど人間が読めるプログラミング言語で保存されているのですが、これだとコンピュータはプログラムが理解できません。そこでプログラムをコンピュータが 理解できる機械語に翻訳しないといけないのですが、これをコンパイルと言います。 (コンパイルを行うコンパイラ自体も実はプログラムです。)
コンパイルされたプログラムは機械語に変換されてメモリ上に展開されます。このメモリに保存されたプログラムをCPUが処理していくわけなのですが、 メモリにはアドレスと呼ばれるメモリ上の番地がありそれを元にCPUが必要なデータを取得して演算を行なっていきます。
この時CPUの内部ではプログラムカウンタというカウンタがメモリ上のどのデータを取得するかという情報を保持しており、 このカウンタををもとにメモリからデータを取得して、CPU上の記憶領域であるレジスタに命令を取得します。
命令レジスタには命令部分とデータ部分があり、CPUは取得した命令のデータ部分から演算に必要なデータのメモリアドレスを取得し、 必要なデータが出揃ったところで命令の通りにCPUの演算部分で演算を実施します。CPUの演算部分の演算が終わったらレジスタに結果を格納して
このメモリから命令を取り出し、演算を繰り返し実行していくことでプログラムが実行されています。
- ファイルシステム(HDD)上のプログラムをコンパイルして機械語に翻訳
- コンパイルされたプログラムをメモリに読み込み
- CPUがメモリからプログラムカウンタにしたがって命令を取得
- CPUが演算に必要な情報を取得してCPU内のレジスタに保存
- CPU内で演算を実施、完了次第結果をレジスタに書き込み
- 3から5を繰り返す
以上がプログラムが実行される流れをまとめたものになります。プログラムを書く時にここまでのことを意識する機会はあまりないと思いますが、プログラムの変数がメモリ上に保存されること、プログラムがメモリから CPUに読み込まれて演算が行われること などは最低限知っておきたいことなので、おおまかな流れを抑えつつプログラムをかけると良いと思います。
まとめ
- コンピュータの基本装置はCPU, メモリ、ストレージ、入力装置、出力装置
- CPUは人間の脳に例えられて、コンピュータの中で演算を担当する。
- メモリは作業机に例えられて、コンピュータの中では作業に必要なデータを保存しておく
はじめにでプログラムングとは、コンピュータに作業の指示を出して、代わりに仕事をしてもらうことと書きましたが、 指示を出すのにコンピュータの構造を知らないようでは困るので今回このように記事をまとめました。
- コンピュータの基本装置(CPU、 メモリ、 補助記憶装置、出力装置、入力装置)
- コンピュータがプログラムを実行する仕組み
この2つはぜひとも理解しておいてほしい内容なので、以降プログラミングの勉強を進める際にも少し意識しながらプログラムを書いてみるように してみてください。