ハードウェアエンジニアの守破離

国内電機メーカーに勤務しているハードウェアエンジニア

【Nand2tetirs】名著『コンピュータシステムの理論と実装』を読んで、実際にコンピュータシステムを構築してみる #1

冒険のはじまり

先日、CPUの名著『CPUの創りかた』を遅まきながら読んだところ、とても面白くてこれまで頭の中でブラックボックス化されていたCPUの動作原理をざっくり理解することができました。内容は論理ゲートICからTD4(とりあえず動作するだけの4bitCPU)を手はんだで構築する過程を理論と共に順序立てて丁寧に説明されています。

f:id:Subarukun:20220304171304p:plain

早速、部品を取り寄せて構築しようと思いましたが、開発効率を重視してどうせならFPGAで構築したいと考えました。(業務でも少し扱っているので)

また、本書の内容だけでは実際のコンピュータシステムの動作原理(機械語コンパイラアセンブラVMなど)を十分に理解できないと感じました。

加えて、TD4はCPUをかなり単純化した構成であり、もう少し踏み込んだ構成を設計したいと考えたため、タイトルにもある名著『コンピュータシステムの理論と実装』を手に取りました。

Nand2tetris

f:id:Subarukun:20220304172041p:plain

本を読みつつ、Coursera(※1)にてヘブライ大学講師である筆者がコースを開講していることが分かったため、理解の補助としてPartⅠ, Ⅱを現在受講しています。

本書の流れは下図のように、ハードウェア編とソフトウェア編に分かれています。

ハードウェア編では、Nandゲートを最小単位として、そこから各論理ゲートやCPU, RAMといったチップセットを構築します。そして、それらを組み合わせてComputerを構築します。最後に、アセンブリ言語から機械語に変換するアセンブラを作成する。

ソフトウェア編では、中間語から機械語に変換するVM変換器, コンパイラ, OSを設計します。

このように、最小単位のNandからボトムアップで設計を進める構成となっています。

読者は最終的に、Nandからテトリスが遊べるコンピュータシステムを構築できるようになるので、本書は『Nand2tetris』と呼ばれて親しまれています。

私はハードウェアエンジニアですが、理解を深めるために高水準言語のPythonを使用してソフトウェア編も奮闘する予定です。

f:id:Subarukun:20220305135732p:plain

(※1)Coursera(コーセラ)は、オンラインで大学や企業が提供するコースが受講できる学習サイト

無料で受講可能だが、課題の自動採点機能や修了書が欲しい人は各Partで5,500円を支払う必要がある

 

次回は最小単位であるNandゲートをはじめとした論理ゲートをトランジスタレベルから設計して理解を深めた記事を書く予定です。

subarukun.hatenablog.com