シリーズ「コンピュータの記憶のしくみ」 第1回
回路が「覚える」とは?
なぜ自販機で買い物できるの!?
コンピュータはものを覚える。電源が入っている間、書き込んだ値をずっと保持し続ける。 しかし、私たちが義務教育で習った電球を電池につなげて光らせるといった実験からはどのように記憶しているのか想像しがたい。 ここで自動販売機をイメージしてほしい。もし自動販売機が記憶できなかったらどうなるだろうか。 お金を入れてもいくら入れられたかすぐに忘れてしまい、どれだけお金を入れてもジュースが買えなくなってしまう。 お金を吸い込み続けるモンスターマシンの完成だ。
では、電気の流れでしかない回路が、どうやって「覚える」ことができるのだろう。
その最小の仕組みが SR ラッチ だ。まずは実際に触ってみてほしい。
SR ラッチ シミュレータ
S・R のスイッチをクリックすると、回路が自動的に安定するまで評価されます
押して、確かめる
上の回路には「つける」と「消す」の2つのスイッチと、1つの出力ランプがある。 もし何も触っていなければ、右上のランプが点灯しているだけのはずだ。
- 「消す」を押しONにすると、ランプが消える。
- もう一度「消す」を押してOFFにしてもランプは消えたまま。
- 「つける」を押しONにすると、ランプがつく。
- もう一度「つける」を押してOFFにしてもランプはついたまま。
ここで何か気づいたことはないだろうか。 「つける」も「消す」もOFFのとき、つまりどちらも灰色のときもランプは前の状態を維持している。 私たちが義務教育で作ったような回路は入力によって出力が決まっていた。(スイッチをONにすれば点灯、OFFにすれば消灯のように) しかしこの回路は消す、つけるがどちらもOFFのときは前のランプの状態によって結果が変わるのだ! これだけでは自販機が入れられたお金を覚えているのにつながらないのでは?と思うかもしれない。 実際、このようなものは上階と下階にあるスイッチで自在に階段の照明をつけたり消したりできるものと似ている。 しかし、これを複数集めればどうだろう。コンピュータは0と1の世界で考えている。ランプの消灯点灯はそれぞれ0、1に対応付けられないだろうか。 つまり、このSRラッチが複数個あれば、その分複数ケタの二進数を保存できるということなのだ。
なぜ覚えられるのか
実際のところ、この回路はどのように動いているのだろうか。これを知るためには、まず回路の途中にあるNORの意味を知る必要がある。 NORは2入力1出力の回路で、これは前回の状態によって出力が変わるSRラッチと違い、入力によって完全に出力が確定される。 下表に入力と出力の組み合わせをまとめてある。電流が流れているとき1,流れていないとき0で表す。
| 入力1 | 入力2 | 出力 |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 0 |
上図からわかるように、入力がどちらも0のときのみ出力が1になる回路である。
NORとはNOT ORという意味である。つまり、OR(入力がどちらか若しくはどちらも1なら出力が1になる)の逆の出力、すなわち上記の入力がどちらも0のときのみ出力が1になる。
さて、この回路をシミュレータの用につなげるとどうなるだろう。
「消す」を押すと何が起きるか
便宜上、NOR の上側の入力を入力1、下側を入力2と呼ぶ。
- 「消す」を押すと、上の NOR の入力1に1が入る。
- NOR は入力のどちらかが1なら出力は0なので、入力2が何であっても出力は0になる。
- この0がそのまま出力ランプに届き、ランプは消える。
- 同時に、この0は下の NOR の入力1にも戻っている。
- 下の NOR は入力1も入力2も0になるので、出力は1。
- そしてその1は、上の NOR の入力2に戻る。
ここで一周した。上の NOR の入力2に1が来たが、入力1にはすでに1が入っているので、出力は0のまま変わらない。何も動かなくなった。回路が安定した状態だ。
「つける」を押すとどうなるか
ここからは自分で追ってみてほしい。手順は上と同じで、たどる場所が上下入れ替わるだけだ。
SR ラッチ シミュレータ
S・R のスイッチをクリックすると、回路が自動的に安定するまで評価されます
追いにくければ、上級モードにチェックを入れてほしい。「1ステップ進む」を押すと、信号が一段ずつ伝わっていく様子が見られる。自分の予想と合っているか確かめてみてほしい。
何も押していないときは何が起きているのか
さて、本題はここからだ。
「つける」も「消す」も0のとき、この回路は何もしていないように見える。しかし実際には、信号はずっと回り続けている。
ランプが点いている状態を追ってみよう。上の NOR の出力は1で、それが下の NOR の入力1に入っている。入力1が1なので下の NOR の出力は0。その0が上の NOR の入力2に戻る。上の NOR は入力1も入力2も0なので、出力は1。
——最初に戻ってきた。
つまりこの状態は、自分自身を維持している。上のゲートが下のゲートを0に保ち、下のゲートが上のゲートを1に保つ。互いに相手の根拠になっていて、外から邪魔されない限り永遠に崩れない。
消えている状態も同じで、値がすべて逆になるだけだ。こちらも自分自身で成立している。
このような記憶回路を複数使うことで、コンピュータは記憶することができているのである。
参考文献
- 松下俊介 著. 基礎からわかる論理回路. 第2版, 森北出版, 2021.7. 978-4-627-82842-1. https://ndlsearch.ndl.go.jp/books/R100000002-I031573740
- 馬場敬信 著. 算数で読み解くコンピュータのしくみ, 技術評論社, 2022.8. 978-4-297-12960-6. https://ndlsearch.ndl.go.jp/books/R100000002-I032268791