スイッチから CPU まで · LogicLab
1 個のスイッチから 1 台の CPU まで組み立てよう。直列・並列のスイッチとリレーを動かして「AND」「OR」「NOT」を見つけ、光る導線を伝う信号と論理ゲート内部のトランジスタの開閉を透視します。NAND ゲートだけであらゆるゲートを配線し、半加算器・全加算器を作って検証後にチップへ封入。4 個の全加算器を筆算のように並べて桁上がりが最上位まで伝わる様子を観察し、最後はクロックを押して自作の加算器が 4 ビット小型 CPU の中でプログラムを実行する姿を追い、チップの中のトランジスタ数を比べます。
章の内容
スイッチは「計算」できるか
スイッチには開と閉の 2 つの状態しかありません。開を 0、閉を 1、消灯を 0、点灯を 1 と書けば、回路はそのまま真偽を問う「判断問題」になります。
画面のスイッチを直接クリックしてみましょう。2 つのスイッチを直列につなぐと両方閉じたときだけ点灯し、並列につなぐとどちらか一方を閉じれば点灯します。4 通りすべて試すと、右側の真理値表が 1 行ずつ埋まっていきます。
次にリレーへ切り替えます。コイルに電流を流すと電磁石になり、別の回路の接点を引き離します。つまり電気で動かすスイッチです。1937 年、21 歳のシャノンは修士論文で、こうしたスイッチ回路が論理の「AND」「OR」「NOT」をそのまま表せることを示しました。電気回路そのものの法則は VoltLab を参照してください。
論理ゲート
前の課のスイッチ回路を箱に収め、入力と出力だけを外に出したものが論理ゲートです。導線に電圧がある状態を 1(点灯)、ない状態を 0(消灯)と表します。
左の入力スイッチを切り替え、信号が導線を伝わってゲートに入り、少し遅れて結果がランプに届く様子を見ましょう。右側でゲートを切り替え、それぞれの真理値表を確かめます:AND ゲート Y = A · B、OR ゲート Y = A + B、NOT ゲート Y = A。出力に小さな丸がついた NAND ゲート・NOR ゲートは計算してから反転し、XOR ゲートは 2 つの入力が異なるとき 1 を出力します。
「透視」を押して中を見てみましょう。動く部品は一切なく、電圧で制御する超小型スイッチ――トランジスタが数個あるだけです。左上から MIL 記号と JIS/IEC 記号(&、≥1、1、=1)を切り替えられます。
万能な NAND ゲート
この課では自分で配線します。ボード上には NAND ゲートしかありません。これだけを使って他のゲートを組み立てましょう。
配線:ピンからピンへドラッグします(または 1 つ目をクリックしてから 2 つ目をクリック)。導線は出力から入力へつなぎ、1 つの出力は複数の入力に分けられますが、1 つの入力には 1 本しかつなげません。線をクリックすると外せます。左のスイッチを動かして信号の流れをいつでも確認できます。
つなげたら検証を押します。すべての入力を自動で試し、目標の真理値表と 1 行ずつ照合します。全行一致したらチップに封入しましょう。半導体工場も同じです。NAND ゲートはトランジスタ 4 個で済み、最小・最速だからこそ、すべてを組み立てる「積み木」になります。迷ったら「配線を 1 本ヒント」を押してください。
0 と 1 だけで数を数える
1 本の導線が表せるのは 0 か 1 だけで、これを 1 ビット(bit)と呼びます。もっと大きな数を表すには何本か並べ、10 進法の 1 の位・10 の位・100 の位のように各桁に重みを持たせます――ただし重みは 1、2、4、8 で、2 になると繰り上がります。
4 つのスイッチを切り替えると、下のランプがその桁の 0・1 を示し、右の数字表示器が 10 進数を表示します。1011 なら 8 + 0 + 2 + 1 = 11 です。
「1 を足す」を押して順番に数えてみましょう。最下位が 1 のときに 1 を足すと 0 に戻って左へ桁上がりします。0111 に 1 を足すと桁上がりが 3 桁連続で伝わり、4 桁すべて 1 からさらに 1 を足すとオーバーフローします。
半加算器
1 ビットの 2 進数どうしの足し算は 4 通りしかありません:0 + 0 = 0、0 + 1 = 1、1 + 0 = 1、そして 1 + 1 = 10 です。結果を表すには、この桁の和 S と上の桁への桁上がり C の 2 ビットが要ります。
右の目標真理値表を見比べましょう。S の列はどのゲートと同じでしょうか?C の列はどうでしょう?ボード上の 4 種類のゲートから適切な 2 個を選び、A・B をつないで出力を S と C のランプへ配線してください。使わないゲートはそのままで構いません。
検証に通ったら半加算器チップに封入します。1937 年、ベル研究所のスティビッツがリレー数個と懐中電灯の豆電球 2 個を家に持ち帰り、台所のテーブルで組んだのがまさにこの 2 進加算回路でした。
全加算器
筆算の足し算では、各桁で実際には3 つの数を足しています。A のその桁、B のその桁、そして下の桁からの桁上がり Cin です。この 3 入力を処理する回路を全加算器と呼びます。
ボードには先ほど封入した半加算器チップ(HA)が 2 個あります。まず 1 個目で A と B を足し、その和と Cin を 2 個目で足せば、2 個目の「和」が最終的な S になります。
2 個の半加算器からはそれぞれ桁上がりが出ます。どちらか一方でも 1 なら上の桁へ繰り上げるべきなので、適切なゲートを選んで Cout にまとめましょう。8 通りすべて検証できたら全加算器チップ(FA)に封入します。
4 ビット加算器
4 個の全加算器が筆算と同じように一列に並んでいます。一番上のスイッチが A、2 段目が B、下のランプが和です。各全加算器の桁上がり出力は左隣(1 つ上の桁)の桁上がり入力につながっています――オレンジ色の線が桁上がりです。
スイッチを動かして計算を作り、信号が 1 桁ずつ伝わっていく様子を見ましょう。1111 + 0001 を試してみてください。最下位で生じた桁上がりが 4 個の全加算器を順番に通り抜けるまで上位の結果が確定しないため、リップルキャリー(波紋桁上がり)加算器と呼ばれます。右の波形図には各ビットがいつ安定したかが記録されます。
右端には「減算」スイッチ M もあります。オンにすると B の各ビットが XOR ゲートで反転され、最下位に 1 が足されます。A − B = A + B + 1 により、引き算も同じ加算器で行えます。
加算器から CPU へ
あなたが作った 4 ビット加算器が、この小さな CPU の演算装置になりました。その周りにはいくつかの部品が加わっています:数値を記憶するレジスタ A・B、命令を並べておくプログラムメモリ、何番目の命令かを覚えるプログラムカウンタ PC、そして命令を解読して加算器へ送るデータを選ぶ制御装置です。
クロックを 1 回押すごとに、1 つの命令が 4 拍で実行されます:命令取り出し → 解読 → 実行 → PC+1。まず「3 + 4」を 1 歩ずつ動かし、次に「カウントダウン」と「3 × 4」を実行してみましょう――乗算器はなく、足し算のループで掛け算を実現しています。右側のプログラムはオペランド横の − と + で書き換えられます。
最後に「ズームアウト」を押して、1 個のスイッチから現代のチップまでトランジスタが何個あるか比べてみましょう。1971 年の Intel 4004 も同じ 4 ビットで 2,300 個でした。さらに大量の足し算と掛け算で機械がどう「学習」するかは NeuroLab へどうぞ。
確認テスト
8 つの課題をふり返り、下の選択問題に答えよう。
ほかの実験
- VoltLab 電気実験台
- 地球の運動の授業
- 細胞 · 三次元構造
- 元素周期表 · PeriodicLab
- 水循環 3D ジオラマ · WaterCycle
- ニューラルネットで数字を読む · NeuroLab
- 神舟の打ち上げと帰還 · RocketLab
- 私たちはここにいた · ArtHistory
- メンデルのエンドウ交雑実験 · PeaLab
- 体液性免疫 · ImmuneLab
- 細胞のエネルギー通貨 · ATPLab
- 空間図形 · GeoSpace
- 等高線 3D 教室
- 大気大循環の粒子教室
- 潮汐のしくみ · TideLab
- 海陸の変遷
- 河川地形 · RiverLab
- 地質構造とカルストの砂盤 · KarstLab
- 台風の目へ · TyphoonLab
- 地球を貫く · QuakeLab
- 顕微鏡実験台 · MicroLab
- DNA の構造 · DNALab
- 植物の一生 · PlantLab
- 胃のつくりとはたらき · StomachLab
- 細胞の分化 · StemLab
- 遺伝子の発現 · GeneLab
- 生態系 · EcoLab
- 40億年 · DeepTime
- 実験室での気体の製法 · GasLab
- 化学分析実験台 · AnalytLab
- 反応機構 · 分子アニメーション
- 触媒 · CatalystLab
- 電池と電気分解 · ElectroLab
- 分子の形状 · VSEPR
- 原子軌道 · 電子雲
- 化学反応 · ミクロの世界
- 二次曲線 · ConicLab
- 関数のグラフ · FuncLab
- 定規とコンパスによる作図 · ConstructLab
- 三平方の定理 · PythagoLab
- 数学のふしぎ · WonderLab
- 運動と力 · MotionLab
- 単純機械 · MachineLab
- 液体の圧力と浮力 · FloatLab
- 熱力学 · ThermoLab
- 熱の伝わり方と状態変化 · HeatLab
- 音の世界 · SoundLab
- 光学実験台 · OpticsLab
- 光電効果と光子 · PhotonLab
- 原子の構造とスペクトル · AtomLab
- 振動と波 · WaveLab
- 電場と磁場 · FieldLab
- 著名な戦いの作戦沙盤 · WarTable
- 疆域の変遷 · HistoryAtlas