人間は無機物の物質を、うまく設計し組立生活を潤す為に人間は頭を使う。
コンピューターは現在、どの人達にも普及している。携帯電話(スマホ)も一種のコンピューターである。コンデンサーや抵抗、各部品に線が回らされ、電気をうまく調節し電気機器をうまくコントロールしている。
ここで簡単なコンピューターの仕組みを書きたい。
コンピュータの仕組み
さて、我々が日常使っている電卓の中でデータがどのように処理されているのかを見てきましたが、次にコンピュータはどのような流れに従ってデータを処理していくのかを見ていきます。ここでは、主な機能が実際にどのような役割をになっているかを詳しく学びます。
1-1 コンピュータの機能
コンピュータの心臓部を構成するのは、中央処理装置(CPU)と主記憶(一次記憶)装置です。これらの装置は、半導体素子を高密度に集めた集積回路の組み合わせです。コンピュータは命令を解釈し、それにしたがって演算を実行することでデータ処理を行っています。コンピュータはデータ処理のために、主な機能として制御、演算、記憶、入力、出力の機能を持っています。電卓と比べると、制御という機能が増えていることが分かります。コンピュータの制御機能とは、命令の流れやコンピュータを構成する装置の動作を管理する機能のことです。演算機能は命令を解釈して演算を実行する機能のことであり、中央処理装置は、この制御機能と演算機能をもっています。
コンピュータは、実行する命令やデータを中央処理装置に近いところに全て蓄え、これらを命令に応じて読み出して処理を行います。このために、コンピュータには記憶機能が必要です。主記憶装置は一時的にプログラムやデータを記憶し、中央処理装置にそれらを直接提供します。
パーソナルコンピュータなどではプログラムやデータを保管するために補助記憶(二次記憶)装置を使用します。補助記憶装置は普通主記憶装置よりも大容量で、多くは周辺機器として設けられます。そのため、外部記憶装置とも呼ばれます。しかし、主記憶装置と比較すると読み書きの速度は遅いという特徴があります。
また、パーソナルコンピュータなどでは人間とコンピュータがコミュニケーションを行うために入力装置と出力装置を設けます。入力装置は人間の意図を伝えるために使われ、キーボードやマウスなどの装置があります。出力装置はコンピュータのデータ処理の結果を表示するもので、ディスプレイやプリンタなどの装置が使われます。
1-2 コンピュータはどのように動くか
では、それぞれの装置について動作の仕組みを見てみましょう。まず、キーボードやマウスなどの入力装置を使ってソフトウェアを実行する指示を行うと、ソフトウェアがハードディスクなどの補助記憶装置から主記憶装置に読み込まれます。文書処理ソフトウェアや表計算ソフトウェアは、文書データや表計算データを作成、編集し、これらのデータも主記憶装置に置かれます。
キーボードからデータを作成、編集するための命令を打ち込むと、ソフトウェアがこの命令を中央処理装置に伝え、必要なデータの一部が取り出されて、中央処理装置がデータに処理を加えます。データに処理を加えた途中経過や結果は、ディスプレイ上に表示され、作成した文書や表、計算結果はプリンタなどに出力することもできます。
コンピュータの電源が切れると主記憶装置で記憶した内容は消えてしまいます。そのため、作成、編集が済んだデータを保存する場合は、主記憶装置から補助記憶装置に移し、そこに保存します。
1-3 基本的な機能を実現するハードウェア
コンピュータの制御・演算・記憶・入力・出力の基本的な機能はどのようなハードウェアで実現されているのでしょうか。
・中央処理装置(CPU)
中央処理装置は、演算機能と制御機能を担い、主記憶装置上のプログラムから一つ一つ命令を読み出して実行する装置です。その性能は、一つの命令で処理できるデータのビット数や動作速度で表されます。
一つの命令で処理できるデータのビット数に応じて32ビットCPUや64ビットCPUなどがあり、データ処理の速度や規模に対応しています。また、中央処理装置の各部分の基本動作のタイミングを合わせるために、一定の時間間隔でクロックと呼ばれるパルス信号を発生させており、このクロック信号の間隔が短ければ短いほど中央処理装置の各部分の動作は速くなります。クロックが1秒間に何回あるかを示す数値としてクロック周波数が使われます。一般にその周波数が高ければ中央処理装置の動作速度も速いということができます。
・記憶装置
記憶装置には、主記憶装置(メモリ)と補助記憶装置があります。主記憶装置は高密度の半導体記憶素子で構成されることが多く、その容量はコンピュータの性能を示すものの一つです。補助記憶装置には、ハードディスクのほかに、フロッピーディスクドライブやMO(光磁気ディスク)ドライブなどが使用されます。
DVDドライブやCD-ROMドライブは、映画やゲームなどの大容量のソフトウェアの読み出し専用の補助記憶装置ですが、パーソナルコンピュータからDVDやCD-ROMを作成することができる装置でもあります。
記憶装置の性能はその記憶容量や読み書きの速度で測られますが、容量や速度の組み合わせは様々で、用途・目的によって使い分けられています。
2-4 コンピュータとプログラム
データやプログラムは、ハードディスク装置などの補助記憶装置にファイルとして保存されていたり、キーボードなどの入力装置から直接入力されたりします。これらのデータやプログラムは、そのまま中央処理装置が処理するのではなく、主記憶装置に送られ、そこに蓄えられます。
中央処理装置は主記憶装置に蓄えられたプログラムやデータを読み込んで処理を行い、結果を再度主記憶装置に書き出します。そのため、データをハードディスク装置などにファイルとして保存するためには、保存操作を別に行う必要があります。主記憶装置は、一般にバイトという単位でデータを扱っています。1バイトは一般的に8ビットです。データを読み書きするために、このバイト単位のデータを収める小さな区画が論理的に設けられています。主記憶装置上のそれぞれの区画には、場所を示す数が割り当てられており、それぞれの区画の場所を示すそのような数を、アドレス(番地)と呼びます。
中央処理装置や出力装置は、指定したアドレスから命令やデータを読み込んで処理を加えたり出力を行います。また、中央処理装置の処理結果や入力装置からの入力は指定されたアドレスに書き込まれます。コンピュータはどのように命令を実行するか
プログラムはたくさんの命令が順番に並んだ集まりです。それを一つずつ「取り出し」、「解読し」、「実行する」という動作が繰り返し行われます。コンピュータは、基本的にこの命令を一つずつ実行していきます。そのため、命令を実行する順序は非常に重要です。
命令は一般に処理の種類を表す命令部と処理するデータのアドレスを示すアドレス部の二つの要素から構成されます。制御装置には「次に実行する命令のアドレス」を記憶している場所があって、これにしたがって命令を取り出す仕組みになっています。
コンピュータが命令を実行し、データ処理を行う仕組みはこうです。命令は次のような手順で実行されていきます。
1 制御装置はプログラムによって設定された実行開始アドレスを「次に実行する命令のアドレス」として指定し、以下の2~6を繰り返します。
2 「次に実行する命令のアドレス」にある命令を制御装置に読み込む。
3 制御装置に設定された「次に実行する命令のアドレス」を一つ進める。
4 制御装置は命令部を取り出して解読する。
5 制御装置はアドレス部からデータのアドレスを決める。
6 解読された命令とデータのアドレスにしたがって処理を行う。命令が実行順序を変更する命令のときは「次に実行する命令のアドレス」を変更する。
このように、コンピュータは主記憶装置に蓄えられた命令を順序だてて一つずつ取り出しては実行し、その流れは停止命令が実行されるまで続きます(実際には、プログラムは「それを管理している上位のプログラムに制御をゆだねる」という形で終了します)。複数の命令があっても、それぞれの命令を同時に行うのではなく、一つずつ実行することに注意しましょう。このようなデータ処理を逐次処理といいます。
1-6 コンピュータのモデル
では、実際にコンピュータの仕組みや機能、効率を理解するために、一つの仮想的なコンピュータのモデルを考え、その各部分がどのように機能しているかを見てみましょう。このコンピュータのモデルなっているとします。
◎用語
・制御装置
中央処理装置の一部であり、コンピュータの各部分に支持を出す役割を持ちます。
・演算装置
中央処理装置の一部であり、計算を担当し、計算結果をレジスタに渡します。
・主記憶装置
プログラムやデータを記憶します。
・入力装置
主に、キーボードです。操作する人間が入力するデータを受け取ります。
・出力装置
ディスプレイです。出力を担当し、中央処理装置から送られたデータを表示します。
・バス
中央処理装置と主記憶装置の間でプログラムやデータをやり取りをします。
・プログラムカウンタ
「次に実行する命令のアドレス」を記憶している場所です。
・レジスタ
中央処理装置の一部で、記憶装置から読み込んだデータや演算の結果を一時的に記憶する場所です。
このコンピュータのモデルでは、表2-1のような命令を実行することができます。一つ一つの命令は図2-3のように16ビットで構成され、上位の1バイトが命令部、下位1バイトがアドレス部となっています。データもまた16ビットで一つのデータとして扱われます。
命令部 | アドレス部 | |
2進表示 | 01000000 | 00000101 |
16進表示 | 40 | 05 |
図2-3 命令の構成
命令部 | アドレス部 | 説明 |
00 | 無視 | Halt: 停止する |
10 | ×× | Jump: ××番地にジャンプする |
11 | ×× | JumpZ: レジスタの内容がゼロであれば、××番地にジャンプする |
12 | ×× | JumpP: レジスタの内容がゼロより大きければ、××番地にジャンプする |
13 | ×× | JumpN: レジスタの内容がゼロより小さければ、××番地にジャンプする |
20 | 無視 | Read: キーボードからデータを読み込みレジスタに入れる |
30 | 無視 | Write: レジスタの内容をディスプレイに表示する |
40 | ×× | Load: ××番地の内容をレジスタに読み込む |
50 | ×× | Store: レジスタの内容を××番地に書き込む |
60 | ×× | Add: レジスタの内容と××番地の内容を加算してその結果をレジスタに入れる |
70 | ×× | Subtract: レジスタの内容から××番地の内容を減算してその結果をレジスタに入れる |
表2-1 命令表
基本的な作業の流れは、以下の1~5のステップの繰り返しです。
1 制御装置は、プログラムカウンタの内容をアドレスとして、主記憶装置から命令を取り出すように、バスに指示します。
2 バスは、主記憶装置の指定されたアドレスから命令を取り出し、制御装置に渡します。
3 制御装置はプログラムカウンタの内容に1を加えます。
4 制御装置は、読み込んだ命令を解読し、アドレスを計算します。
5 制御装置は、解読した命令と計算したアドレスにしたがって、実行します。
図2-4のプログラムは、主記憶装置の05番地の内容と06番地の内容を足して、07番地に格納し、さらにディスプレイに表示するというものです。このプログラムの最初の命令は次のようにして実行します。
アドレス 内容 00 4005 01 6006 02 5007 03 3000 04 0000 05 0001 06 0002 07 0000 |
図2-4 プログラム
1 あらかじめ主記憶装置の00番地から07番地の内容を、図2-4のようにセットします。また、プログラムカウンタの内容を00にセットします。
2 制御装置は、プログラムカウンタの内容(00)をアドレスとして、主記憶装置から命令を取り出すように、バスに指示します。
3 バスは、主記憶装置の00番地からその内容(4005)を取り出し、制御装置に渡します。
4 プログラムカウンタの内容に1を加えます(00→01)。
5 制御装置は、読み込んだ命令(4005)を解読(命令部は40なのでLoad命令)し、アドレスを計算する(アドレス部は05なので05番地)。
6 制御装置は、解読した命令(Load命令)とアドレス(05番地)にしたがって実行します(即ち、次の(a)から(c)によって、05番地の内容をレジスタに入れます)。
(a) 制御装置は、バスに、05番地の内容をもってくるように指示します。
(b) バスは、05番地の内容(0001)を呼んで制御装置に渡します。
(c) 制御装置はバスから渡されたデータ(0001)を呼んで制御装置に渡します。
7 制御装置は、プログラムカウンタの内容(01)をアドレスとして、主記憶装置から命令を取り出すように、バスに指示します。
人間社会には、不可欠な無機物。しかし自然をうまく利用し(資源節約、鉱物の過剰摂取、有機物の破壊)後世に残してこそ、頭が高度に進化した人間である。私は、昼間はあまり電気を使わない。仕事で忙しい事もあるが、待機電力カットや空調を出かける際には必ず切る。
今、電力不足で電気代が跳ね上がる時期ですから、考えて後世にもこの電気(これも無機物と捉えると自然)の恩恵を残して行こうではないか。
無機物が走る無機物の道・・・・
月がいつも人間の行動を見ています。良い行いをして行きましょう。