create every day - 福野泰介の一日一創

なぜコンピューターは計算が速いのか? 電気回路で計算ができる謎を解く

2016/05/27 23:55:00
#KidsIT 

IchigoJamのCPUの計算能力は人間の約1億倍。この速さの秘密はなんでしょう?
実は、電気回路を使うと、あらゆる計算が一瞬で行えるのです!

下の回路は、スイッチを押すとがLEDが光る回路です。(LED用の抵抗は省略!)

下の図はスイッチがはいってないとき光らず、スイッチをいれたら光るという関係を表しています。

このスイッチを使って、ちょっと変わった電気回路を3種類つくります。

2つのスイッチが入っている時だけ光るAND回路。
どちらかのスイッチが入っている時に光るOR回路。
スイッチが入っていない時に光るNOT回路。

これらの回路を組み合わせるだけで、あらゆる計算ができてしまうのです!

例えば、1+1の計算をさせてみましょう。
計算する数ふたつを a と b で表し、答を2桁 c と d で表すことにします。
各桁はONかOFFしか表せない2進数です。

a + b = c d
0 + 0 = 0 0
0 + 1 = 0 1
1 + 0 = 0 1
1 + 1 = 1 0

a + b の全パターンを洗い出して、cとdがどのように表せるか調べてみます。
cに注目すると、aとbが共に1の時だけ1になるので、c = a AND b です。
dは、aとbのどちらかが1でかつcが1ではない時に1になるので d = (a OR b) AND (NOT c) です。
これを電気回路にするとこうなります。

回路を辿って確認してみましょう。
aが1(スイッチON)でbが0(スイッチOFF)の時、cとdはそれぞれ光る?光らない?

計算する電気回路の正解は1つではありません。
d = ((NOT a) AND b) OR (a AND (NOT b)) とも表せるので、違う電気回路でもOKです。

1bit + 1bit → 2bit の足し算コンピューターができました!

IchigoJamのCPUは32bitなので、abcd... と32コのスイッチ、2セット分に加え、足し算、引き算、掛け算など計算の種類を指定するスイッチを合わせた電気回路がどっさり入っているわけです。

このように電気回路なので、計算は瞬時に終わりますが、次の計算にいくためには電気が一旦抜けてくれないと前回の計算とまざっておかしくなってしまいます。 計算する、抜けるの待つ、計算する、抜けるの待つ・・・を繰り返しているのがコンピューターというわけです。 ただ、この待ち時間、比較的遅いIchigoJamのCPUでも、4800万分の1秒(48MHzの周期)というとっても短い時間になっています。

はんだづけからコンピューターづくりを体験する、IchigoJamはんだづけ&プログラミングワークショップ、この週末、鯖江市嚮陽会館駐車場「めがねフェス」野外ブースにて開催中!

めがねフェス

メガネpaprikaにも会えます!
about yrm — めがねフェスでpaprikaもメガネをかける!常に熱い鯖江、今年も小学校のプログラミングクラブが開始!...

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image