Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NAND から全加算器まで (CPU の仕組み超入門)

NAND から全加算器まで (CPU の仕組み超入門)

NAND から全加算器を作成するまでの解説。
(2024/11/12 社内勉強会用スライド)

Avatar for Hiroki Kamiyoshikawa

Hiroki Kamiyoshikawa

May 05, 2025
Tweet

More Decks by Hiroki Kamiyoshikawa

Other Decks in Programming

Transcript

  1. コンピュータのパーツ コンピューター = 計算する機械 ディスプレイ CPU GPU メモリ etc... Q.

    コンピューターが計算するのに必須なものは? A. CPU 今回は CPU の中で演算を行う中枢である ALU (Arithmetic Logic Unit) の仕組みを見る 2
  2. CPU って何でできているの? 1. NAND という電子部品がある (NAND より下層は電気電子の話になるので割愛) 2. NAND があれば全ての論理部品が作れる

    3. 論理部品があれば足し算ができる 4. 足し算ができれば四則演算が全てできる ( 減算は負の数の加算、乗算は加算の繰り返し、除算は減算の繰り返し) 5. 四則演算が全てできればあらゆる計算ができる CPU が作れる → NAND があれば CPU が作れる! NAND って何? 4
  3. CPU ができる計算 二進数の1 桁 (1 ビット) の足し算 0 + 0

    = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 究極的には CPU はこの4 つの計算しかできない!超ローテク ( 二進数で 1 + 1 は 10 ( 十進数で2) だが、1 桁しか扱えないので上の桁は消えてなくなる) これを電気信号が流れる論理回路として表す 5
  4. NAND AND NOT NAND AND の出力に NOT をつけたもの Input 1

    Input 2 Output 0 0 1 0 1 1 1 0 1 1 1 0 10
  5. NOR OR NOT NOR OR の出力に NOT をつけたもの Input 1

    Input 2 Output 0 0 1 0 1 0 1 0 0 1 1 0 11
  6. NAND の完全性 AND, OR, NOT, NAND, NOR, XOR, 部品の種類多くない!? 実はこんなに要らない……

    NAND だけあれば、他のパーツ全部 NAND の組み合わせで作成可能 (NAND の完全性) 13
  7. NAND NOT NOT NAND の完全性 (NOT) Input Input nand Input

    0 1 1 0 (↓ 参考: NAND) Input 1 Input 2 NAND 0 0 1 0 1 1 1 0 1 1 1 0 14
  8. NAND NOT NAND AND AND NAND の完全性 (AND) I1 I2

    I1 nand I2 not (I1 nand I2) 0 0 1 0 0 1 1 0 1 0 1 0 1 1 0 1 15
  9. NAND NOT NAND NOT NAND OR OR NAND の完全性 (OR)

    I1 I2 not I1 not I2 (not I1) nand (not I2) 0 0 1 1 0 0 1 1 0 1 1 0 0 1 1 1 1 0 0 1 16
  10. XOR Input 1 Input 2 XOR 0 0 0 0

    1 1 1 0 1 1 1 0 1 ビット足し算 1 ビットの足し算に戻る。 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 あれっ!?これって XOR やん!! 19
  11. AND Input 1 Input 2 Output 0 0 0 0

    1 0 1 0 0 1 1 1 1 ビット足し算の繰り上がり 繰り上がりを考慮して、2 ビットで考える 0 + 0 = 00 0 + 1 = 01 1 + 0 = 01 1 + 1 = 10 2 つの入力と、出力の2 桁目に注目すると、 あれっ!?出力の2 桁目って入力の AND やん!! 20
  12. XOR AND Half Adder X Y S C 半加算器 (Half

    Adder) 上の桁への繰り上がりを考慮した1 ビット足し算回路のことを半加算器 (Half Adder) とい う。 入力が X, Y の2 つ。出力の1 桁目が和 (S; Sum) 、2 桁目が桁上げ (C; Carry) X Y Carry Sum 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 ↑ さっきの足し算そのものですよね? (X + Y = CS) 21
  13. Half Adder X Y S C Half Adder X Y

    S C OR C S C' X Y Full Adder C' Y X Carry Sum 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 全加算器 (Full Adder) (C': 下の桁からの繰り上がり) 23
  14. C S C' X Y Full Adder C S C'

    X Y Full Adder C S C' X Y Full Adder 0 X0 X1 X2 Y0 Y1 Y2 S0 S1 S2 C 任意の桁数の足し算 1 ビットの完全な足し算は全加算器でできる ので、桁数の分だけ全加算器を重ねる。 足し算ができる CPU 完成! 24
  15. CPU って何でできているの? ( 再) 1. NAND という電子部品がある (NAND より下層は電気電子の話になるので割愛) 2.

    NAND があれば全ての論理部品が作れる 3. 論理部品があれば足し算ができる 4. 足し算ができれば四則演算が全てできる ( 減算は負の数の加算、乗算は加算の繰り返し、除算は減算の繰り返し) 5. 四則演算が全てできればあらゆる計算ができる CPU が作れる NAND があれば CPU が作れた!! 25