コンピュータの基礎
- 以下に示すようなコンピュータの基本設計に関する事項を扱うのが「計算機アーキテクチャ」です.
- 記憶方式: コンピュータでは,文字,整数,小数点をもった数値など,多くのデータを扱います.そのようなデータをどのような形でメモリ上に記憶するかについて検討します.また,演算の高速化のために,読み書きの速度が異なるメモリを適切に配置することも必要です.
- 命令とアドレス方式: どのような命令(機械語レベルの命令)を,どのような形式で用意すべきかといった問題です.命令の数や種類は,計算機アーキテクチャ全体に,また結果として,計算機ハードウェアに強い影響を与えます.各命令は,メモリ上のデータを何らかの形で処理したり,または,次に実行すべき命令を指定するような動作を行います.処理の対象となるデータや命令は,命令やデータが保存されているメモリ上の番地(アドレス)で指定します.このアドレスをどのような形で表現するかを決めるのがアドレス方式です.
- 上の説明だけでは分かりにくいかと思いますので,以下,具体的な例(実際のコンピュータの命令ではない)で説明します.命令は,下の図に示すように,2バイト命令だけから成り立っているものとします.
- 命令: 3ビットで,命令の種類を表します.ここでは,以下のようにします.
- 100 メモリの内容をレジスタに読み込む
- 010 レジスタにメモリの内容を加える
- 001 レジスタの内容をメモリに記憶する
- レジスタ: レジスタを指定します.レジスタとは,中央処理装置内の記憶装置です.
- アドレス修飾: どのようなアドレス表現方法を使用するかを指定しまします.ここでは,常に'000'とし,オペランド部に指定された数値がアドレスを直接表しているものとします.
- これらの命令を使用し,例えば,以下に示すように命令が実行されていきます.なお,ビット列内の空白は,見やすさのために入れたものであり,コンピュータ内に存在するわけではありません.
- 番地 命令またはデータ
- 00000000 100 01 000 00001000 '1000' 番地の内容をレジスタ1に読み込む
- 00000010 010 01 000 00001001 レジスタ 1 に '1001' 番地の内容を加える
- 00000100 001 01 000 00001010 レジスタ 1 の内容を '1010' 番地に記憶する
- ・・・・・
- 00001000 0001
- 00001001 0010
- 00001010 0011 3番目の命令を実行した後の状態
- 制御方式: コンピュータの中央処理装置( CPU )は,演算を実行する部分と,メモリから順番に命令を読み出し,その命令を解読し,必要なら演算実行部にデータを渡すといった処理を行う制御部分からなっています.このような点から,CPU は,コンピュータの心臓部といっても過言ではありません.その制御部分を規定するのが制御方式です.高速化や回路設計の容易さのために,命令の先読み,マイクロプログラムなど,様々な工夫がなされています.
- 入出力方式: コンピュータでは,キーボード,ディスク,プリンタなど,様々な機器との間でデータのやりとりが行われます.しかし,入出力装置との間におけるデータの送受は,コンピュータ内におけるデータの処理に比較して,非常に長い時間がかかります.また,新しい入出力装置への対応も十分考慮しておく必要があります.そのような意味で,入出力方式も計算機アーキテクチャにとって重要な項目です.
- 以上の基本設計を,ハードウェアとして実現する方式を内容とした科目が「計算機ハードウェア」になります.
- ネットワーク上に配置されたコンピュータ間で通信を行うためには,コンピュータ自身が通信を行う機能を持っていると共に,通信を行う際の約束事(通信プロトコル)が必要です.それらの内容を扱うのが,「コンピュータネットワーク」です.又,その際,「情報セキュリティ」も強く係わってきます.
- ここでは,演算装置を例に取り,「計算機ハードウェア」の内容についてもう少し詳しく見てみます.コンピュータ内は,0 と 1 だけからなる「ブール代数」の世界です.ブール代数における基本演算は以下に示すとおりです.なお,X + Y + Z のように,2 つ上の数値の論理和や論理積も可能です.その際,論理和は,すべての数値が 0 の時だけ 0 になり,それ以外は 1 になります.また,論理積は,すべての数値が 1 の時だけ 1 になり,それ以外は 0 になります.
論理和
| 論理積
| 否定
|
X
| Y
| X+Y
| X
| Y
| X・Y
| X
| X
|
0
| 0
| 0
| 0
| 0
| 0
| 0
| 1
|
0
| 1
| 1
| 0
| 1
| 0
| 1
| 0
|
1
| 0
| 1
| 1
| 0
| 0
|
|
|
1
| 1
| 1
| 1
| 1
| 1
|
|
|
- これらの基本演算は,以下に示すような OR 素子,AND 素子,NOT 素子によって実現されます.実際には,回路設計上の問題等から,論理和の否定である NOR 素子,論理積の否定である NAND 素子が基本になることが多いようですが,ここでは,OR 素子と AND 素子で検討していきます.
X
| Y
| S
| C
|
0
| 0
| 0
| 0
|
0
| 1
| 1
| 0
|
1
| 0
| 1
| 0
|
1
| 1
| 0
| 1
|
- コンピュータ内における演算は,基本的に,以上の基本素子を組み合わせて行われます.例として,1ビットの和を考えてみます.和を S,桁上がりを C とすると,それらの値は,X 及び Y の各値に対して右のようになります(真理値表).したがって,S 及び C に対する論理関数,及び,論理回路は以下のようになり,この回路を全加算器と呼びます.
- S = X・Y+X・Y C = X・Y
- しかし,S に対する論理関数は,次のように変形でき,その回路は図に示すようになります.一般に,同じ論理関数を複数の論理回路で表現可能ですが,できるだけ少ない素子で実現することを目指す必要があります.
- S = (X+Y)・(X・Y)
- 演習として,次に示す真理値表に対応する論理関数と論理回路を求めて下さい.なお,OR 素子や AND 素子 に 2 つ以上入力しても構いません.
X
| Y
| f
|
0
| 0
| 1
|
0
| 1
| 0
|
1
| 0
| 1
|
1
| 1
| 1
|