$30 off During Our Annual Pro Sale. View Details »

NANDがあればNANDeもできる / With NAND, you can do anything

NANDがあればNANDeもできる / With NAND, you can do anything

Nandgame
https://nandgame.com

From Nand to Tetris
https://www.nand2tetris.org

CPUの創りかた
https://amzn.to/46mCrIg

HASEGAWA Tomoki

June 24, 2023
Tweet

More Decks by HASEGAWA Tomoki

Other Decks in Technology

Transcript

  1. 長谷川智希 @tomzoh
    2023/06/23 (非公式)PHPカンファレンス福岡 前夜祭
    NANDがあればNANDeもできる
    何億トランジスタってNANDe?

    View Slide

  2. 2
    ௕୩઒ஐر
    ͸͕ͤΘ ͱ΋͖
    @tomzoh
    http://www.dgcircus.com
    デジタルサーカス株式会社 副団長CTO
    ॴଐ ٕज़ΧϯϑΝϨϯεओ࠻
    دߘɾஶॻ
    来たれ!PHPer!We are hiring!

    View Slide

  3. 3
    ௕୩઒ஐر
    ͸͕ͤΘ ͱ΋͖
    @tomzoh
    ٕज़ΧϯϑΝϨϯεӡӦࢀՃ 8FCJ04ΞϓϦ։ൃ
    $16 ϨτϩήʔϜػ ిࢠ޻࡞ Ϗʔϧ
    αοΧʔ؍ઓ ϨϯλϧΧʔτϨʔε ʜ
    ϥΠϑϫʔΫ

    View Slide

  4. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる 4
    NANDがあればNANDeもできる
    何億トランジスタってNANDe?

    View Slide

  5. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    NAND
    • コンピュータはNAND回路でできている


    • NAND = NOT + AND


    • PHPで言えば ! と & つまり !(A & B)


    • NANDだけでコンピュータを作れる


    • ちなみに、NORでも作れる


    • NORとNANDは変換できる


    • if (! $a and ! $b) === if (! ($a or $b))


    • ド・モルガンの法則
    5
    https://ja.wikipedia.org/wiki/ファイル:NAND_ANSI_Labelled.svg
    " # 2




    View Slide

  6. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる 6

    View Slide

  7. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    トランジスタ?
    • NAND回路はトランジスタでできている


    • CPUコアはNANDのカタマリ、すなわちトランジスタのカタマリ


    • GPUコアも同様


    • なので「○億トランジスタ」がウリになる


    • CPUコアもGPUコアもたくさん入ってるよ!のアピール


    • そういう意味ではCPUの最小構成要素はトランジスタ


    • トランジスタだと 0 1 の回路に見えにくいので…


    • 今日はNANDを最小構成要素として話を進めます
    7

    View Slide

  8. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    トランジスタでNAND
    8
    http://meyon.gonna.jp/study/electronic/609/

    View Slide

  9. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    真空管
    • トランジスタと真空管は同じ動き


    • 昔のコンピュータは真空管でできていた


    • 真空管を超コンパクト超省電力にしたのがトランジスタ


    • 真空管ラジオ → トランジスタラジオ
    9

    View Slide

  10. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる 10
    https://twitter.com/toukatsujin/status/1051016883355377665/photo/1

    View Slide

  11. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    CPUのコンポネントと演算器
    • 名著"CPUの創りかた"で作るCPU TD4


    • CPUは

    「何かと何かを足してどこかに格納する」

    をひたすら繰り返す機械


    • CPUの各コンポネントはすべてNANDで

    作れる


    • NANDがあればNANDeもできる


    • 今回は演算器(のうちの加算機)だけ説明
    11
    A
    レジスタ
    B
    レジスタ
    入力
    PC
    レジスタ
    メモリ
    Address Data
    演算器
    Decoder
    出力
    セレクタ

    View Slide

  12. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    加算機
    • 足し算をする回路


    • 2進数で足し算する


    • 0 + 0 = 0


    • 1 + 0 = 1


    • 0 + 1 = 1


    • 1 + 1 = 10
    12

    View Slide

  13. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    NANDでつくる加算機
    NANDで作った加算機が下図


    例えば、1 + 0 の場合
    13
    =
    A
    B
    A + B
    A + B の


    桁上がり

    View Slide

  14. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    NANDでつくる加算機
    NANDで作った加算機が下図


    例えば、1 + 0 の場合: 1を青、0を黒で表現すると…
    14
    =
    A
    B
    A + B
    A + B の


    桁上がり
    1 + 0 = 1 になった

    View Slide

  15. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    NANDでつくる加算機
    NANDで作った加算機が下図


    例えば、1 + 1 の場合:
    15
    =
    A
    B
    A + B
    A + B の


    桁上がり
    1 + 1 = 10 になった

    View Slide

  16. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    NANDでつくる加算機
    こういうのは半加算器という


    上の桁への桁上がりは出力できるが、下の桁からの桁上がりを処理できない
    16
    =
    A
    B
    A + B
    A + B の


    桁上がり

    View Slide

  17. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    NANDでつくる加算機
    下の桁からの桁上がりを処理できる加算機は全加算器という
    17
    https://ja.wikipedia.org/wiki/加算器
    下の桁からの桁上がり
    上の桁への桁上がり

    View Slide

  18. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    NANDでつくる加算機
    全加算機がたくさんあれば8ビットとか16ビットの足し算ができる


    下の図は A + B = S 各5ビットの足し算
    18
    https://ja.wikipedia.org/wiki/加算器

    View Slide

  19. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    NANDで作るコンピュータ
    • Nandgame


    • https://nandgame.com


    • ブラウザ上でNANDを組み合せてコンピュータを作る


    • 「演算器を作れ」みたいなお題が出てブラウザ上で線を接続して正解を探す


    • From Nand to Tetris


    • https://www.nand2tetris.org


    • NANDでCPUを作ってテトリスを動かす


    • CPUの創りかた


    • 言わずと知れた名著
    19

    View Slide

  20. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    Nandgame
    20
    https://nandgame.com/

    View Slide

  21. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる 21

    View Slide

  22. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    From Nand to Tetris
    22
    https://www.oreilly.co.jp/books/9784873117126/

    View Slide

  23. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    CPUの創りかた
    23
    https://amzn.to/43ioLfP

    View Slide

  24. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    リレーでもNAND
    24
    余談

    View Slide

  25. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    リレー
    • 電気的にコントロールできるスイッチ


    • 電圧をかけるとスイッチが切り替わる


    • 電気的な機械で「カチッ」って音がするやつは

    こいつが動いている


    • コンセントにつけるタイマーとか
    25
    https://amzn.to/43rEdGh

    View Slide

  26. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    リレーでNAND
    NANDatte〜
    26
    https://tams.informatik.uni-hamburg.de/applets/hades/webdemos/05-switched/20-relays/and-nand.html

    View Slide

  27. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる 27
    http://recursion.jp/rl/relay/j/index.html

    View Slide

  28. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    まとめ
    28

    View Slide

  29. 長谷川智希 @tomzoh
    NANDがあればNANDeもできる
    まとめ
    コンピュータの原子: NAND
    • NANDがあればなんでも作れる


    • ぜひやってみてください!


    • Nandgameはお手軽でおすすめ


    • 「知らないとできない」みたいなのが多いので適度にカンニングしながら…


    • 読み物としては "CPUの創りかた" が面白い
    29
    ௕୩઒ஐر
    ͸͕ͤΘ ͱ΋͖
    @tomzoh

    View Slide