2007年6月27日水曜日

計算機科学を学ぶゲーム(ドミノで作る論理回路)

論理回路は物理デバイスに依存しない。
ここでは、ドミノで論理回路を作り、コンピュータが作れることを示す。
ただし、ドミノは1度しか倒れないので、1度しか計算できない。
また、ドミノは電子より非常に遅い。計算自体も遅くなる。
それにより、クロック周期も長くなる。
電圧は一瞬で変化する。しかし、ドミノ計算機では情報を伝えるドミノが到達するまで時間がかかる。
そのため、可能な限り非同期で動作するように設計する。
AND回路は以下のように作る。
ゴルフボールと厚紙、2本の針と糸を用意する。
厚紙をゴルフボールの幅に巻いて筒を作る。
筒に穴を空け、針を通し、ボールが通らないようにする。
この針はボールのストッパーとなる。
針に糸を結び、ドミノに糸を結び付ける。
ドミノが倒れると針が練るようにする。
筒を傾けてドミノの前に立てる。
上部にボールをおき、2本のストッパーで下を支える。
ドミノが2つのストッパーを両方とも抜けば、ボールが落ち、筒の前のドミノを倒す。
こうして回路は発火し、新たなドミノ倒しが始まる。
OR回路は1つのストッパーを用い、その糸を2つのドミノに結び付ける。
一方でもドミノが倒れればストッパーが抜ける。
NOT回路はドミノが来ないとスタートするように作る必要がある。
ここで問題は、非同期なので遅いのか来ないのか判断できないということだ。
そこで、一定時間待って来なければスタートするようにする。
経路の長さを調節してドミノをスタートさせておき、入力ドミノが先について道をふさぐようにする。
このようなドミノ素子を用いて簡単な計算をする。
例えば、1桁の2進数の足し算だ。
0,0 -> 0
0,1 -> 1
1,0 -> 1
1,1 -> 0
(x or y) and not (x and y)
さて作れるかな?

0 件のコメント: