雑学コンピュータ
いまさらCPUがどうの、メモリがどうのと書いてもしかたありませんので、雑学的に書かせていただきます。
■ENIAC
1946年、ペンシルバニア大学で現在のコンピュータの原型ともいうべき電子計算機が立ち上がりました。2年間、のべ20万人、490万ドルの開発費の結晶でした。使われた真空管(当時はまだトランジスタの時代ではありませんでした)は18000本、消費電力140KW、重量30トン。
計算速度は10桁の計算が3秒という、当時としては画期的な速度だったのです。
この計算機はENIAC(Electronic
Numerical Integrator and Computer)と呼ばれ、ミサイルの弾道軌道計算、暗号解読といった軍事目的で研究・開発されてきたものでした。
それと、なにぶん20000本近い真空管を使っていますので、毎週2〜3本はどこかの真空管が切れて交換しなければならなかったといいます。
ENIAC | ただ今プログラミング中 | 真空管を交換 |
■パーソナルコンピュータの登場
一気にパソコンの話になります。
|
●TK80(1976年) 私の知るかぎりでは日本で最初のコンピュータブームは1976年、NECがワンボード・マイコンTK80を発売したときです。 これはパソコンというよりは、CPU(8ビット8080)に若干の周辺機器を取り付けただけにすぎませんでした。 周辺機器といいましても、現在のようにディスプレイやハードディスクではなく、写真の右下にあるような機械語(アセンブラ)によるプログラミング用キーボードと、右上にあるメモリのアドレスの内容を表示するLEDだけだったのです。(IO関係のインターフェースはありましたので、外部機器を制御することはできました。) マイコンブームに飛びついても、プログラミングやインターフェース等、高度な専門知識が必要でS、その難しさから挫折した人も大勢いました。 私も挫折した一人です(笑) 《注意》 現在もなお、CPUは実際には機械語で動作しています。私たちはWindowsやMacのおかげで機械語を意識せずにいられるのです。 |
●PC8001(1979年) 本格的パソコンブームを引き起こしたのはやはりNECからPC8001が発売されてからです。 ディスプレイは普通のテレビをディスプレイの代わりとして、フロッピードライブはまだ高価(30万円?)だったので、普通のカセットテープレコーダーにカセットテープで代用していました。パソコン教室が生まれたのもこのころです。 (TK80、PC8001共にNECのカタログより) |
BASIC(Beginners All
purpose Symbolic Instruction Code)言語は1960年ごろ、アメリカのダートマス大学で開発されたものです。
例えば、1+2+3+・・・という具合に、1からキーボードから入力した数、Xまでを加算するプログラムは次のようになります。
10 Input X
20 For A = 1 To X
30 S = S + A
40 Next A
50 Print S
60 End
この程度ならどうということはありませんが、ファイルの概念や外部インターフェース機器を駆動するとなると専門知識も必要となり、なかなか難しいものでした。
さて、コンピュータの内部を、ごく一部ですが紹介します。
■論理回路
コンピュータはデジタルですので中心となる内部回路は当然2進数で動きます。さらに計算の基本となるものは論理回路と呼ばれます。
論理回路はいたって単純でAND、OR、NOTの各回路とそのバリエーションがあるだけです。
それぞれの実際の回路はそれなりに複雑ですので、普通は次のように記号で表現されます。
これから論理回路の説明をしますが、ここでの1とか、0というのはすべて電気信号がある、ないの意味です。
デジタル時計のところでも書きましたように入、出力波形は次のようなパルス信号です。
この論理回路の基本となるものはブール代数という数学なのですが、ややこしくなるので割愛します。
●AND回路
A、Bの入力に対して出力Cの結果は次のようになります。
A B C 0 0 0 1 0 0 0 1 0 1 1 1 このようにAとBが同時に1にならなければCは1になりません。
左下のような回路と同じです。
(スイッチA、Bが同時に入らなければ電球は点灯しない)
●OR回路
A、Bの入力に対して出力Cの結果は次のようになります。
A B C 0 0 0 1 0 1 0 1 1 1 1 1 AとBのどちらか一方が1なら、Cは1になります。
右下のような回路と同じです。(スイッチA、Bの一方が入れば電球は点灯する)
各動作を否定する回路もあります。
●NOT回路
入力は1個で、出力Cは必ず入力とは逆になります
A C 0 1 1 0
●NAND回路
AND回路の結果を否定し、逆の出力になります。
A B C 0 0 1 1 0 1 0 1 1 1 1 0
●NOR回路
OR回路の結果を否定し、逆の出力になります。
A B C 0 0 1 1 0 0 0 1 0 1 1 0
コンピュータがいかに複雑・高度になろうとも、演算部分はこのAND、OR、NOTの3回路で構成されているのです。NAND、NOR回路はそれぞれAND、OR回路のバリエーションにすぎないのです。
■加算器
ここで10進数では1+1=2の結果を出す回路を紹介します。
10進数でいう2は2進数では10ですから、出力は二つ必要です。
入力(A、B)した信号(水色)に対して、出力(C、D)が次のように(黄色)なればよいのです。
入力 出力 2進数 10進数に直す 2進数 10進数に直す A B A B D C --- 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 1 1 1 1 1 1 0 2
回路は次のようになります。上の表になることを確認してみてはいかがでしょう?
■文字
何度も繰り返しますが、コンピュータ内部のデータはすべて2進数で表示されます。したがいまして数値はもちろんのこと、文字も数字(コード)に置き換えているのです。
内部で使われる半角文字コードはASCII(アスキー・・・American Standard Code for Information Interchange)コードと呼ばれ、7ビットの2進数です。
上位3ビット→ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
↓下位4ビット | ||||||||
0 | NUL | DLE | SP | 0 | @ | P | ` | p |
1 | SOH | DC1 | ! | 1 | A | Q | a | q |
2 | STX | DC2 | " | 2 | B | R | b | r |
3 | ETX | DC3 | # | 3 | C | S | c | s |
4 | EOT | DC4 | $ | 4 | D | T | d | t |
5 | ENQ | NAC | % | 5 | E | U | e | u |
6 | ACK | SYN | & | 6 | F | V | f | v |
7 | BEL | ETB | ' | 7 | G | W | g | w |
8 | BS | CAN | ( | 8 | H | X | h | x |
9 | HT | EM | ) | 9 | I | Y | i | y |
A | LF/NL | SUB | * | : | J | Z | j | z |
B | VT | ESC | + | ; | K | [ | k | { |
C | FF | FS | , | < | L | \ | l | | |
D | CR | GS | - | = | M | ] | m | } |
E | SO | RS | . | > | N | ^ | n | ~ |
F | SI | US | / | ? | O | _ | o | DEL |
7ビットのデータはかなり長い(7桁)ですので、ASCIIコードでは7ビットのデータ(下表グレーの部分)を上位3ビット(同、水色)と、下位4ビット(同、黄色)に分割します。
上位は3ビットですから000〜111(10進数で0〜7)まで、下位は0000〜1111(10進数で0〜15)までの値になります。
下位については10以上をA、B、C、D、E、Fと表します。ですから下位は0〜Fになるのです。
この上位、下位の10進数で表を見ます。
例えばAは41ですから上位は 100 であり、下位は0001。合わせて 1000001がASCIIコードになります。同様に小文字のzは7Aですから、10進数でいえば7と10。1111010
となります。
このASCIIコードで作られたデータが、いわゆるテキストデータです。
テキストデータでは、たとえば Pen
という文字は 50 65 6E となっているのです。
漢字も同様にすべて0と1のコードが組み合わされているのです。