NANDからテトリス
前編
研究部 新海孝洋
目的
 コンピューターの動く仕組みを体系的に理解し
たい
 CPUを実際に作り、動いているところを見て納
得感を得たい
© 2018 ViSCO Technologies Corp. Confidential
2022/11/25 2
© 2018 ViSCO Technologies Corp. Confidential
2022/11/25 3
題名:コンピュータシステムの理論と実装~モ
ダンなコンピュータの作り方~
著者:Noam Nisan
Shimon Schocken
訳者:斎藤康毅
出版:株式会社オライリージャパン
内容:
NAND
論理ゲート
加算器
CPU
オペレーティングマシン
コンパイラ
バーチャルマシン
を実装しコンピューターを作る。
その上でテトリスなどのアプリケーションを動作させる。
今回はここまで
目次
 1章: ブール論理
 2章: ブール算術
 3章: 順序回路
 4章: 機械語
 5章: コンピュータアーキテクチャ
© 2018 ViSCO Technologies Corp. Confidential
2022/11/25 4
ブール論理
 NANDゲートのみを使って
をHDL言語で組み立てた
© 2018 ViSCO Technologies Corp. Confidential
2022/11/25 5
NOT
AND
OR/XOR
マルチプレクサ/デマルチプレクサ
多ビットNOT/AND/ORゲート
多ビットマルチプレクサ
NANDのみから作れることに感動!
a b out
0 0 0
0 1 0
1 0 0
1 1 1
AND
in out
0 1
1 0
NOT
ブール算術
 半加算器 / 全加算器 / 加算器 / インクリメンタ / ALU
を今まで作った論理ゲートから構築
 ALUでは16ビットの2つの入力から、それらの和、差、
論理積および論理和を計算する仕様となっている
 補数表現を用いて引き算を行う理論について学ぶことが
できた。
© 2018 ViSCO Technologies Corp. Confidential
2022/11/25 6
順序回路
 D型フリップフロップが与えられた状態でレジスタ /
RAM / カウンタを実装した。
 16個のD型フリップフロップとマルチプレクサを組み合わ
せることで16ビットの記憶ができるレジスタを実装した。
 レジスタを組み合わせて、64KビットRAMを実装した。
 フリップフロップから記憶装置が作れることを理解した。
© 2018 ViSCO Technologies Corp. Confidential
2022/11/25 7
機械語
 ノイマン型コンピュータのHACKコンピューターのアセン
ブリプログラムを書いた。
 付属のアセンブラで機械語に変換したものを付属のCPUエ
ミュレータで動かし、仕様通りの動作をすることを確認。
 コンピューターの構成を理解したうえでアセンブリを書く
ことができて面白い。
© 2018 ViSCO Technologies Corp. Confidential
2022/11/25 8
コンピュータアーキテクチャ
 メモリを実装した。
RAM、与えられたキーボード及びスクリーンを用いて組み立てた。ア
ドレスを入力すると対応するメモリの値を読み込む/書き込む。
 CPU を実装した。
実装済みの ALU / レジスタ / プログラムカウンタ / 論理ゲートを組
み合わせた。機械語の命令を入力すると演算およびレジスタやメモリ
に記憶する。また、命令のジャンプ命令を処理する回路を実装した。
 Hack コンピュータを実装し、与えられた機械語プログラムを実行
し正しく動作することを確認した。
ここまでに実装済みの CPU / メモリ / ROM を組み合わせた。ROM
に機械語命令を予め記憶させる必要がある。
© 2018 ViSCO Technologies Corp. Confidential
2022/11/25 9
まとめ
 NAND/D型フリップフロップのみから機械語命令を実
行できるコンピューターを作ることができた。
 単純なNAND/DFFからこれだけ複雑なモノを作れるこ
とに感動した。
 今までは本で読むだけだったことに対して、プログラム
上ではあるが実際に作ることで、コンピューターが動く
ことに対しての納得感が得られた。
 後編ではコンパイラやOSを実装するので楽しんで取り
組み、学んでいきたい。
© 2018 ViSCO Technologies Corp. Confidential
2022/11/25 10
© 2018 ViSCO Technologies Corp. Confidential
2022/11/25 11

NANDからテトリスへ_前編.pdf