Nandgame https://nandgame.com
From Nand to Tetris https://www.nand2tetris.org
CPUの創りかた https://amzn.to/46mCrIg
長谷川智希 @tomzoh2023/06/23 (非公式)PHPカンファレンス福岡 前夜祭NANDがあればNANDeもできる何億トランジスタってNANDe?
View Slide
2୩ஐر͕ͤΘ ͱ͖@tomzohhttp://www.dgcircus.comデジタルサーカス株式会社 副団長CTOॴଐ ٕज़ΧϯϑΝϨϯεओ࠻دߘɾஶॻ来たれ!PHPer!We are hiring!
3୩ஐر͕ͤΘ ͱ͖@tomzohٕज़ΧϯϑΝϨϯεӡӦࢀՃ 8FCJ04ΞϓϦ։ൃ $16 ϨτϩήʔϜػ ిࢠ࡞ Ϗʔϧ αοΧʔ؍ઓ ϨϯλϧΧʔτϨʔε ʜϥΠϑϫʔΫ
長谷川智希 @tomzohNANDがあればNANDeもできる 4NANDがあればNANDeもできる何億トランジスタってNANDe?
長谷川智希 @tomzohNANDがあればNANDeもできるNAND• コンピュータはNAND回路でできている• NAND = NOT + AND• PHPで言えば ! と & つまり !(A & B)• NANDだけでコンピュータを作れる• ちなみに、NORでも作れる• NORとNANDは変換できる• if (! $a and ! $b) === if (! ($a or $b))• ド・モルガンの法則5https://ja.wikipedia.org/wiki/ファイル:NAND_ANSI_Labelled.svg" # 2
長谷川智希 @tomzohNANDがあればNANDeもできる 6
長谷川智希 @tomzohNANDがあればNANDeもできるトランジスタ?• NAND回路はトランジスタでできている• CPUコアはNANDのカタマリ、すなわちトランジスタのカタマリ• GPUコアも同様• なので「○億トランジスタ」がウリになる• CPUコアもGPUコアもたくさん入ってるよ!のアピール• そういう意味ではCPUの最小構成要素はトランジスタ• トランジスタだと 0 1 の回路に見えにくいので…• 今日はNANDを最小構成要素として話を進めます7
長谷川智希 @tomzohNANDがあればNANDeもできるトランジスタでNAND8http://meyon.gonna.jp/study/electronic/609/
長谷川智希 @tomzohNANDがあればNANDeもできる真空管• トランジスタと真空管は同じ動き• 昔のコンピュータは真空管でできていた• 真空管を超コンパクト超省電力にしたのがトランジスタ• 真空管ラジオ → トランジスタラジオ9
長谷川智希 @tomzohNANDがあればNANDeもできる 10https://twitter.com/toukatsujin/status/1051016883355377665/photo/1
長谷川智希 @tomzohNANDがあればNANDeもできるCPUのコンポネントと演算器• 名著"CPUの創りかた"で作るCPU TD4• CPUは 「何かと何かを足してどこかに格納する」 をひたすら繰り返す機械• CPUの各コンポネントはすべてNANDで 作れる• NANDがあればNANDeもできる• 今回は演算器(のうちの加算機)だけ説明11AレジスタBレジスタ入力PCレジスタメモリAddress Data演算器Decoder出力セレクタ
長谷川智希 @tomzohNANDがあればNANDeもできる加算機• 足し算をする回路• 2進数で足し算する• 0 + 0 = 0• 1 + 0 = 1• 0 + 1 = 1• 1 + 1 = 1012
長谷川智希 @tomzohNANDがあればNANDeもできるNANDでつくる加算機NANDで作った加算機が下図例えば、1 + 0 の場合13=ABA + BA + B の桁上がり
長谷川智希 @tomzohNANDがあればNANDeもできるNANDでつくる加算機NANDで作った加算機が下図例えば、1 + 0 の場合: 1を青、0を黒で表現すると…14=ABA + BA + B の桁上がり1 + 0 = 1 になった
長谷川智希 @tomzohNANDがあればNANDeもできるNANDでつくる加算機NANDで作った加算機が下図例えば、1 + 1 の場合:15=ABA + BA + B の桁上がり1 + 1 = 10 になった
長谷川智希 @tomzohNANDがあればNANDeもできるNANDでつくる加算機こういうのは半加算器という上の桁への桁上がりは出力できるが、下の桁からの桁上がりを処理できない16=ABA + BA + B の桁上がり
長谷川智希 @tomzohNANDがあればNANDeもできるNANDでつくる加算機下の桁からの桁上がりを処理できる加算機は全加算器という17https://ja.wikipedia.org/wiki/加算器下の桁からの桁上がり上の桁への桁上がり
長谷川智希 @tomzohNANDがあればNANDeもできるNANDでつくる加算機全加算機がたくさんあれば8ビットとか16ビットの足し算ができる下の図は A + B = S 各5ビットの足し算18https://ja.wikipedia.org/wiki/加算器
長谷川智希 @tomzohNANDがあればNANDeもできるNANDで作るコンピュータ• Nandgame• https://nandgame.com• ブラウザ上でNANDを組み合せてコンピュータを作る• 「演算器を作れ」みたいなお題が出てブラウザ上で線を接続して正解を探す• From Nand to Tetris• https://www.nand2tetris.org• NANDでCPUを作ってテトリスを動かす• CPUの創りかた• 言わずと知れた名著19
長谷川智希 @tomzohNANDがあればNANDeもできるNandgame20https://nandgame.com/
長谷川智希 @tomzohNANDがあればNANDeもできる 21
長谷川智希 @tomzohNANDがあればNANDeもできるFrom Nand to Tetris22https://www.oreilly.co.jp/books/9784873117126/
長谷川智希 @tomzohNANDがあればNANDeもできるCPUの創りかた23https://amzn.to/43ioLfP
長谷川智希 @tomzohNANDがあればNANDeもできるリレーでもNAND24余談
長谷川智希 @tomzohNANDがあればNANDeもできるリレー• 電気的にコントロールできるスイッチ• 電圧をかけるとスイッチが切り替わる• 電気的な機械で「カチッ」って音がするやつは こいつが動いている• コンセントにつけるタイマーとか25https://amzn.to/43rEdGh
長谷川智希 @tomzohNANDがあればNANDeもできるリレーでNANDNANDatte〜26https://tams.informatik.uni-hamburg.de/applets/hades/webdemos/05-switched/20-relays/and-nand.html
長谷川智希 @tomzohNANDがあればNANDeもできる 27http://recursion.jp/rl/relay/j/index.html
長谷川智希 @tomzohNANDがあればNANDeもできるまとめ28
長谷川智希 @tomzohNANDがあればNANDeもできるまとめコンピュータの原子: NAND• NANDがあればなんでも作れる• ぜひやってみてください!• Nandgameはお手軽でおすすめ• 「知らないとできない」みたいなのが多いので適度にカンニングしながら…• 読み物としては "CPUの創りかた" が面白い29୩ஐر͕ͤΘ ͱ͖@tomzoh