この章のゴール
トランジスタを組み合わせるだけで
- 足し算
- 比較
- if文
- CPU
まで作れることを理解する。
最終的には
電子
↓
トランジスタ
↓
論理回路
↓
CPU命令
までイメージできるようになる。
なぜ論理回路が必要なの?
前回学んだように
トランジスタ1個では
ON
または
OFF
しかできない。
つまり
1
0
しか表現できない。
これだけでは
足し算も比較もできない。
そこで
複数のトランジスタ
を組み合わせる。
これが
論理回路。
入力と出力
論理回路は
入力
↓
計算
↓
出力
という仕組みになっている。
例えば
A = 1
B = 0
↓
?
↓
1
のように
入力から出力を作る。
AND回路
ANDは
両方とも1なら1
になる。
| A | B | 出力 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
つまり
1
AND
1
↓
1
だけ。
OR回路
ORは
どちらか1なら1
になる。
| A | B | 出力 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
NOT回路
NOTは
反転する。
| 入力 | 出力 |
|---|---|
| 0 | 1 |
| 1 | 0 |
つまり
1
↓
0
にする。
XOR回路
ここが重要。
XORは
違えば1
になる。
| A | B | 出力 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
後で
足し算に使う。
「これだけ」で何ができる?
実は
AND
OR
NOT
XOR
だけで
全部作れる。
例えば
足し算
引き算
比較
掛け算
割り算
全部。
一番感動するところ
例えば
1 + 1
を考える。
私たちは
答えは
2
だと知っている。
でも
CPUは
「2」
を知っていない。
CPUが知っているのは
0
1
だけ。
つまり
1
+
1
も
実際は
1bit
+
1bit
の計算になる。
これを
論理回路だけで実現する。
Half Adder(半加算器)
Half Adderとは
1桁の足し算回路
である。
例えば
1
+
1
なら
答えは
10
になる。
この
10
を
実は
XOR
AND
だけで作れる。
つまり
和
↓
XOR
繰り上がり
↓
AND
である。
ここが
CPU最大の発明。
Full Adder
実際には
繰り上がりも考える必要がある。
だから
Half Adderを
組み合わせる。
すると
8bit
16bit
32bit
64bit
全部足せるようになる。
CPUはどうやって足し算する?
CPUの中には
ALU
(Arithmetic Logic Unit)
がある。
ALUの中には
大量の
AND
OR
NOT
XOR
が入っている。
つまり
CPUは
論理回路だけで
足し算している。
if文も同じ
例えば
if ($a == $b)
を書く。
CPUは
比較回路
で
一致したかどうか
調べる。
これも
AND
OR
NOT
だけでできている。
この章で覚えること
| 用語 | 本質 |
|---|---|
| 論理回路 | トランジスタを組み合わせた回路 |
| AND | 両方1なら1 |
| OR | どちらか1なら1 |
| NOT | 反転する |
| XOR | 違えば1 |
| Half Adder | 1bitの足し算回路 |
| Full Adder | 複数bitの足し算回路 |
| ALU | CPUの計算する部分 |
次章
次はいよいよ
CPU
を学ぶ。
ここで
論理回路が
何万個
何百万個
何億個
集まると
CPUになることを理解する。
そして
CPUの中には
- ALU
- レジスタ
- キャッシュ
- 制御装置
があることを学ぶ。