6 計算の機構

6.1 コンピューターの発明の歴史の概観

6.1.1 発明以前

コンピューターが発明される以前,情報処理は手作業で行われるtことが多かった.良く て,専用の機械が使われる程度であった.ここで,コンピュータが発明される前の時代, どのような機械があったか眺めるのも良いだろう.ここでは,コンピューターの発明につ ながる大事なものについて,紹介する.

あまり,コンピューターの発明に寄与しないが,そろばんとか機械式の計算機があった. そろばんは,かなり古くから使われていたようで,現存する最古のものは紀元前300年く らいのものらしい.このことからも人類が活動する上で,計算(情報処理のひとつ)は重要 な行為であることが分かる.

コンピューターの発明に寄与したもので最初のものは,1881年にジョゼフ・マリー・ジャ カールにより発明されたジャカード織機(Jacquard loom)と言われている.これは自動織機 で,絵柄のパターンはパンチカードに書かれている.パンチカードに書かれたとおりに機 械が縦糸と横糸を織る機械で,パンチカードのパターンを変えことにより図柄を変えるこ とができる.丁度,パンチカードがプログラムの役割を果たすのである.

ジャカード織機はパンチカードに従い自動的に図柄を織る機械であるが,これに目をつけ, チャールズ バベッジ(Charles Babbage:1791-1871)は自動的に計算する機械を作ろうと した.バベッジが作ろうとした計算機は,階差機関(difference engine)と呼ばれるもので,自動的 に多項式の値を計算し,印刷する機械を目指した.残念ながら,当時の技術水準ではそれ を作ることはできなかったが,コンピューターにつながるアイディアがあったことは確か であろう.

次に登場するものはハーマン ホレリス(Herman Hollerith:1860-1929)の発明した 統計機械(tabulating machine) で,1890年の米国の国勢調査に使われた.この機械は穿孔機により空けられたパンチカード の穴が国税調査の情報を表す.その穴を電気的に検出し,データを集計する仕組みであっ た.バベッジの階差機械とは異なり,この機械は大成功を収め,後のIBM社につながる.

6.1.2 発明

ホレリスの統計機械は,情報の処理はできるがコンピュータにはほど遠い.特定の処理し かできず,プログラムにより様々な処理ができるコンピュータとは大きく異なる.

プログラムにより広範囲の計算ができる電子計算機は,ENIAC(Electronic Numerical Integrator And Computer)が最初である.それまでに も,プログラムを使ったリレー式の計算機はあったが,電子計算機はENIACが最初である. リレー式の計算機に比べ圧倒的な処理速度があった.ENIACを見たノイマンは,「これで 世界で二番目に計算が速いヤツ決まったな」と言ったとか.一番目はノイマンあるいは ENIAC?

ENIACはプログラムを変えることで,様々な計算が出来たことが画期的であった.大砲の 弾道の軌道計算もおこなったし,70時間かけて円周率を2037桁まで求めた.ただ,ENIAC には致命的な欠点があった.プログラムは配線により行っていたのである.プログラムを変更する ためには,いちいち電線の接続を変えなくてはならない.

次のEDVAC(Electronic Discrete Variable Automatic Computer)というコンピューターの開発では,プログラムを配線ではなく,メモリーの中 に入れることが議論された.こうすることにより,プログラムの変更が容易でかつ高速で 計算するコンピューターが可能となる.このコンピューターを実現するためのメモリーの 開発は大変だった.

このEDVACが現在のコンピューターの原型と言ってもよいだろう.この後は,CPUのスピー ドアップとメモリーの大容量化に向かって,突き進むことになる.

余談ではあるが,ENIACの開発で真空管の寿命が問題となった.真空管の寿命は大体2000 時間で,ENIACには17,468本の真空管が使われていた.平均的に,ENIACは

$\displaystyle \frac{2000時間}{17468}=0.11時間$ (1)

に1回故障することになる2.6分に1回,故障することになる.円周率2037桁の計算に37時 間も要することからすると,6分ではほとんど何も計算できない.エンジニアは猛烈な努 力を行い,故障する真空管を2〜3本/週に抑えたようである.

6.2 2進数モデル

6.2.1 2進数を使う理由

コンピューターが扱えるのは,数値だけである.世の中の様々な情報を数値化して,コン ピューターは計算により,処理を行う.たとえば,音楽が録音されたCDが典型的な例であ る.空気振動である音をマイクにより電気信号に変えAD変換器を使い,音の情報を数値化 し,CD-ROMに記録している.これから音を取り出すときには,DA変換器を通して,電気信 号にして,スピーカーを使って空気の振動に変えている.数値化された音の情報は,コン ピューターにより,如何様にも加工できる.

コンピューターで数値を扱う場合,2進数がもっとも適している.ノイズに強いとかブー ル代数が使えるとかがその理由である.また,2進数の場合,コンピューターを構成する 素子が単純になるという利点もある.

ENIACは10進数のコンピューターであったが,発明 者のエッカートとモークリーは2進数の方が有利であると気がついていたようである.そ のため,彼らの2号機となるEDVACでは2進数を採用した.

6.2.2 ブール代数(復習)

ブール代数は,つぎの特徴がある. 0と1だけからなる代数系であり,これはコンピューター 内部で行われている演算そのものである.演算子もコンピューター内部の回路と 一致している.

ブール代数の公理は次のとおりである.

公理 6.1 (ブール代数)  

  交換法則 $\displaystyle \hspace{3mm}$ $\displaystyle A+B=B+A,$ $\displaystyle \hspace{10mm}$ $\displaystyle A \cdot B = B \cdot A$ (2)
  分配法則   $\displaystyle A \cdot(B + C)=(A \cdot B)+(A \cdot C),$   $\displaystyle A+(B \cdot C) = (A+B) \cdot (A+C)$ (3)
  単位元   $\displaystyle A+0=A,$   $\displaystyle A \cdot 1 = A$ (4)
  補元   $\displaystyle A + \bar{A}=1,$   $\displaystyle A \cdot \bar{A}= 0$ (5)

これで,ブール代数が定義できた.それにしても,通常の数の演算と似て いる.しかし,良く見ると少し異なるものもある. これらの違いに気をつけなくてはならい.

さらに,演算について重要なこと を付け加えておく.それは,加法と乗法,補元の演算の結果は,必ず元の 変数の集合$ \{0,1\}$に含まれることである.このことをこれらの演算について 閉じていると言う.

閉じていることの確認は,次のブール代数真表から分かる.もちろん,この真理表は公理 から導くことができる.

  • 1. $ A+B$の真理値表
  • 2. $ A \cdot B$の真理値表
  • . $ \bar{A}$の真理値表
  • 表 1: $ A+B$の真理値表
    $ A$ $ B$ $ A+B$
    0 0 0
    0 1 1
    1 0 1
    1 1 1
    表 2: $ A \cdot B$の真理値表
    $ A$ $ B$ $ A \cdot B$
    0 0 0
    0 1 0
    1 0 0
    1 1 1
    表: $ \bar{A}$の真理値表
    $ A$ $ \bar{A} $
    0 1
    1 0
       

    ちなみに,ブール代数を作ったブールとバベッジ,それにド・モルガンは仲間であったよ うである.いずれも,コンピューターの基礎に関係している.

    6.3 プログラム内蔵方式

    先に述べたようにEDVACというコンピューターの開発では,プログラムを配線ではなく, メモリーの中に入れることが議論された.こうすることにより,プログラムの変更が容易 でかつ高速で計算するコンピューターが可能となる.このようにプログラムを内蔵したも のをプログラム内蔵方式と言う.

    紆余曲折の後,プログラムと計算処理の対象であるデータは,同じメモリー上に置かれるようになった.このように,同じメモリー上に命令とデータがあるようなものをノイマン型コンピューターと言う.世界中のほとんどのコンピューターがこのノイマン型のコンピューターで,

    の特徴をもっている.

    プログラムとデータを別のメモリーに置く,コンピューター(CPU)もある.このような方 式をハーバードアーキテクチャーと言う.


    ホームページ: Yamamoto's laboratory
    著者: 山本昌志
    Yamamoto Masashi
    平成19年10月12日


    no counter