Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

長谷川智希 @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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

長谷川智希 @tomzoh NANDがあればNANDeもできる トランジスタ? • NAND回路はトランジスタでできている • CPUコアはNANDのカタマリ、すなわちトランジスタのカタマリ • GPUコアも同様 • なので「○億トランジスタ」がウリになる • CPUコアもGPUコアもたくさん入ってるよ!のアピール • そういう意味ではCPUの最小構成要素はトランジスタ • トランジスタだと 0 1 の回路に見えにくいので… • 今日はNANDを最小構成要素として話を進めます 7

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

長谷川智希 @tomzoh NANDがあればNANDeもできる 真空管 • トランジスタと真空管は同じ動き • 昔のコンピュータは真空管でできていた • 真空管を超コンパクト超省電力にしたのがトランジスタ • 真空管ラジオ → トランジスタラジオ 9

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

長谷川智希 @tomzoh NANDがあればNANDeもできる CPUのコンポネントと演算器 • 名著"CPUの創りかた"で作るCPU TD4 • CPUは 
 「何かと何かを足してどこかに格納する」 
 をひたすら繰り返す機械 • CPUの各コンポネントはすべてNANDで 
 作れる • NANDがあればNANDeもできる • 今回は演算器(のうちの加算機)だけ説明 11 A レジスタ B レジスタ 入力 PC レジスタ メモリ Address Data 演算器 Decoder 出力 セレクタ

Slide 12

Slide 12 text

長谷川智希 @tomzoh NANDがあればNANDeもできる 加算機 • 足し算をする回路 • 2進数で足し算する • 0 + 0 = 0 • 1 + 0 = 1 • 0 + 1 = 1 • 1 + 1 = 10 12

Slide 13

Slide 13 text

長谷川智希 @tomzoh NANDがあればNANDeもできる NANDでつくる加算機 NANDで作った加算機が下図 例えば、1 + 0 の場合 13 = A B A + B A + B の 桁上がり

Slide 14

Slide 14 text

長谷川智希 @tomzoh NANDがあればNANDeもできる NANDでつくる加算機 NANDで作った加算機が下図 例えば、1 + 0 の場合: 1を青、0を黒で表現すると… 14 = A B A + B A + B の 桁上がり 1 + 0 = 1 になった

Slide 15

Slide 15 text

長谷川智希 @tomzoh NANDがあればNANDeもできる NANDでつくる加算機 NANDで作った加算機が下図 例えば、1 + 1 の場合: 15 = A B A + B A + B の 桁上がり 1 + 1 = 10 になった

Slide 16

Slide 16 text

長谷川智希 @tomzoh NANDがあればNANDeもできる NANDでつくる加算機 こういうのは半加算器という 上の桁への桁上がりは出力できるが、下の桁からの桁上がりを処理できない 16 = A B A + B A + B の 桁上がり

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

長谷川智希 @tomzoh NANDがあればNANDeもできる NANDでつくる加算機 全加算機がたくさんあれば8ビットとか16ビットの足し算ができる 下の図は A + B = S 各5ビットの足し算 18 https://ja.wikipedia.org/wiki/加算器

Slide 19

Slide 19 text

長谷川智希 @tomzoh NANDがあればNANDeもできる NANDで作るコンピュータ • Nandgame • https://nandgame.com • ブラウザ上でNANDを組み合せてコンピュータを作る • 「演算器を作れ」みたいなお題が出てブラウザ上で線を接続して正解を探す • From Nand to Tetris • https://www.nand2tetris.org • NANDでCPUを作ってテトリスを動かす • CPUの創りかた • 言わずと知れた名著 19

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

長谷川智希 @tomzoh NANDがあればNANDeもできる リレー • 電気的にコントロールできるスイッチ • 電圧をかけるとスイッチが切り替わる • 電気的な機械で「カチッ」って音がするやつは 
 こいつが動いている • コンセントにつけるタイマーとか 25 https://amzn.to/43rEdGh

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

長谷川智希 @tomzoh NANDがあればNANDeもできる まとめ コンピュータの原子: NAND • NANDがあればなんでも作れる • ぜひやってみてください! • Nandgameはお手軽でおすすめ • 「知らないとできない」みたいなのが多いので適度にカンニングしながら… • 読み物としては "CPUの創りかた" が面白い 29 ௕୩઒ஐر ͸͕ͤΘ ͱ΋͖ @tomzoh