1ビットのシクラメン
私の悪い癖の一つに、精神的な余裕が少しでもあれば付近の何かを観察してしまうというものがある。
例えば、スキーに出かけてゴンドラを待つ間にその動作の仕組みを観察していたり(よく考えると非常に不思議な動きをしているのだ。観察してみたまえ)、立体駐車場でのリフトの動きに疑問を持ち、自分の車が出て来るまでじっと観察していたりと、枚挙にいとまがない。こうした観察によって得られるものはなにか。知識はもちろんだが、やや変人であるといういささか不本意な評価もあったりする。しかし、これが科学の姿勢だと自負しているのでそのような評価は褒め言葉である(と思うことにしている)。
最近、花香園という花栽培農家で、シクラメンを栽培しているビニールハウスを見学する機会に恵まれた。そこでは約14,000鉢のシクラメンを栽培していたのだが、案内してくれた築城直子女史によると、シクラメンの無垢な花弁は水分や湿気に直接さらすと、シミがついてしまい価値が大幅に低下するとのことであった。したがって、花弁に直接かけないように注意しながら水を与えなければいけない。
なるほど、大変ですね・・・、などと言いながらビニールハウスの中を進むうちにあることに気が付いた。花弁に水をかけてはならない、鉢の数は14,000、目につく範囲で作業をしているのはほんの数人、ビニールハウスは他にも数棟ある。いったいどうやって実用的な時間で水を与えるのだろうか? 芝生のように上から散水する訳にはいかないのだ。疑問に思うこと数分、私の目に正解らしき物が写った。それは、鉢の下に敷いてある黒いシートであった。一見するとただの滑り止め用ゴムシートの様だが、もしこのシートが浸透性のあるものならシートの下から水を浸透させ、鉢の底から水を吸い上げさせることが可能かもしれない。これなら花弁を濡らすことはない。
ここまで考えてから、水を与える方法について質問してみた。帰ってきた答えは、おおむね私の考えた通りであった。こういった思考の積み重ねが非常に重要だと考える私は、その時すっかり天才気分になっていた。だが、誤解のないように申し上げると、真に天才的なのは「最初に」それを考えた人間であり、私の場合はただ単に「後で」気付いただけのことである。
さて、シクラメンのビニールハウスについて気付いたことがもう一つあった。それは、水を与える仕組みがコンピュータのメモリに似ているということである。
似ているといっても、まさかコンピュータに水を与える訳ではない(与える者もいるようだが)。コンピュータのメモリにはDRAM(註1)という部品を利用するのだが、そのDRAMの動作の仕組みが似ているように思えたのだ。
DRAMの仕組みを解説する前に、コンピュータの記憶の仕組みについて説明しよう。コンピュータの基本的な動作原理は「歩く2進数」でも触れたが、2進法の利用である。
2進法は0と1の2つの記号で数を表す仕組みであるが、0と1はOFFとONとしても表現できる。これは電子回路の集合体であるコンピュータにとって大変都合が良い(というより、これ以外の方法は考えにくい)。なぜかというと、電子回路上で何らかの処理をしようとするとき、電圧や電流の強弱を扱うよりも単に入、切の2つの状態だけを扱うようにした方が容易だからである。これは発光信号に例えることができる。発光信号は光のON、OFFの繰り返しで信号を表現するが、もしON、OFFではなく明るい、やや明るい、やや暗い、暗いなどというあいまいな区別を用いたとしたらどうだろう。はたして、正確な通信は可能だろうか? 光の強弱などというあいまいな尺度には個人差がある。ある送信者がやや明るいと感じる信号は、別の受信者にとってやや暗いと感じるかもしれない。こんなことでは正確な通信などおよそ望めない。だが、点灯、消灯の2通りの区別だけなら正常な視力を持つ者なら誰でも区別できる。電子回路でも同じく電圧が、ある、ない、の2通りで区別している、と言いたいところだが現実的にはもっと厳密な規則がある。それは、電圧の「ない」状態と「ある」状態とはなにか、ということである。これにはいくつかの基準があり、例えば「ない」状態は電圧が0.4V以下であり、「ある」状態は2.7V以上であるといったような基準である。ここで登場するVという単位は「ボルト」と読み電圧を計る単位である(註2)。「ある」と「ない」という表現ではあまり学術的とは呼べないので、いささか気取って「正」と「負」、または「H」と「L」とも呼ばれる(ここではHとLを使っていく)。HとLはそれぞれ2進数の1と0に対応させられる。
加えて、コンピュータの世界では2進数で表わされる情報の単位としてビットという言葉が用いられている。これは、その2進数の数列の桁数を表わすものであり、1桁が1ビットである。
さあ、これで電子回路で2進数を扱うことができる。こういったタイプの電子回路は論理回路と呼ばれている。
小さな計算とその記憶、これを処理と記憶と読み替えてみよう。途端にコンピュータらしく見えないだろうか? らしくではない。これこそコンピュータの処理の仕組みなのである。そしてコンピュータは論理回路の集合体である。論理回路は2進数を扱う回路である。よってコンピュータにとって最も小さな計算とは2進数の計算ということになる。計算の次は記憶だ。もちろん2進数で計算したのだから、2進数で記憶する。2進数は1と0、HとLなのだから記憶もHとLの2つの状態だけを扱えばよい。だが、記憶というのはある必要な期間だけ情報を保つことである。これを電圧のH、Lで表そうにも、演算用の論理回路上では電圧というものは一瞬しか保っていられない。なんらかの方法で電圧を維持しなければならない。幸いにも電気はコンデンサという装置によってためることができるので、電気がたまっている、たまっていないという2つの状態をもってHとLを表現すればよい。
これですべて解決か、というとそうでもない(しつこいようだが)。さらに解決しなければならないことがある。たまった電気もまた、一瞬しか保っていられないのである。もっとも、流れている電気の電荷が失われるスピードに比べれば遥かに長い時間は保っていられる。水に例えるなら、あっという間に流れ去ってしまうか、ゆっくりと蒸発してしまうかといったような違いだ。コンデンサの電荷はまさに蒸発してしまうのだ。コンデンサの記憶を維持するためには蒸発してしまった分だけ補充する必要がある。これをリフレッシュという。コンデンサを利用した記憶装置は一定時間おきにこのリフレッシュという動作を繰り返さなければいけない。リフレッシュには当然だが補充のための電力が必要になる。コンデンサを利用した記憶装置をDRAMというが、もちろんこのDRAMにもリフレッシュという動作があり(しかもすべてのコンデンサに対して一斉にである)そのための電力を必要とする。そのため電力の供給を絶つとリフレッシュができなくなり、記憶がまさに蒸発してしまう。このため、DRAMのことを別名「揮発性」メモリとも呼ぶ(註3)。
さて、ここまできてなぜ私が14,000鉢のシクラメンでDRAMを連想したかお分かりになっただろうか? つまり、1鉢、1鉢がコンデンサに見えたのだ(ことわっておくが妄想や幻覚の話ではない)。花が咲いている鉢は1、枯れている(もしくは空の)鉢は0である。ビニールハウス全体の記憶容量は約14,000ビット。定期的にリフレッシュ、水をやらなければ当然枯れてしまい記憶は0になってしまう。リフレッシュは1鉢ずつ行っていたのでは間に合わないのですべての鉢に対して一斉に行う。下敷きになっている浸透性のシートを通してである。
こうして定期的なリフレッシュ動作により記憶=シクラメンは成長を続け、やがてそれらは我々人間に届き、感動や安らぎといった新たな情報へと処理され蓄積されることになるわけである。
(註1)Dynamic RAMの略語。パソコンでメモリといったらこれのことである。
(註2)ある抵抗体の中で電荷を移動させようとする力を表わす単位。残念だがこれ以上の説明はしない。
(註3)ご期待通りROMと呼ばれる不揮発性メモリというものもあるが別の機会に説明しよう。