ISBN 9784814400874
コンピュータシステムの理論と実装 第2版 : モダンなコンピュータの作り方
- 出版社
- オライリー・ジャパン
- 刊行
- 2024-12
概要
NANDゲートからOSまでコンピュータをゼロから実装して理解する
想定読者
コンピュータの仕組みをハードウェアからソフトウェアまで体系的に理解したい学生・エンジニア
こんな人には向いていない
- CPUアーキテクチャやコンパイラ理論をすでに専門的に習得しており、理論的な深掘りを求める上級者には既知事項の比重が大きい
- 特定の言語習得や実務スキルの即戦力化を急ぐエンジニアには、学習効果が出るまでの時間が長く感じられる構成
- 電気回路レベルのハードウェア設計を求める読者には、HDLシミュレータ上の抽象的な実装に留まる点で対象外
この本で身につくこと
- NANDゲートを出発点に論理ゲート・加算器・ALU・CPUを設計し、デジタル論理の基礎を実装で体得できる
- アセンブラを自力で実装し、機械語とアセンブリ言語の対応関係およびシンボル解決の仕組みを理解できる
- スタックマシンベースの仮想マシンを実装し、高水準言語がバイトコードへ変換される過程を把握できる
- 字句解析・構文解析・コード生成を含むコンパイラを段階的に構築し、コンパイラの全体像を実装で掴める
- メモリ管理・I/O処理を含む最小構成のOSをスクラッチで実装し、OSの基礎的な責務を理解できる
- 自作コンピュータ上でテトリス等のアプリケーションを動かし、ハードウェアからアプリケーションまで全層の繋がりを実感できる
ハイライト(外部からの言及)
コンピュータを理解するための最善の方法はゼロからコンピュータを作ることです — 出典
本書のアプローチを一言で示す、著者の設計哲学が凝縮された核心文
NANDという電子素子からスタートし、論理ゲート、加算器、CPUを設計します。そして、アセンブラ、仮想マシン、コンパイラ、OSなどを実装しコンピュータを完成させて、最後にその上でアプリケーション(テトリスなど)を動作させます — 出典
NAND→テトリスというビルドアップの全工程が端的に示されており、本書の射程距離を購入前に把握できる
章立て
第1章 ブール論理
第I部 ハードウェア。NAND ゲートだけから本書全体のコンピュータを構築する出発点
第2章 ブール算術
ALU の前提となる加算器・桁上げを実装
第3章 メモリ
フリップフロップ→レジスタ→RAM の階層構造を HDL で組み上げる
第4章 機械語
Hack マシン語仕様。後続章のアセンブラ・コンパイラの目標
第5章 コンピュータアーキテクチャ
本書の中間到達点。CPU と Memory を統合し動くコンピュータが完成する章
第6章 アセンブラ
ハードウェアからソフトウェアへの架け橋。assembler を 1 から実装
第7章 仮想マシンI: 処理
第II部 ソフトウェア。スタックベース VM の前半(算術・メモリアクセス)
第8章 仮想マシンII: 制御
VM の後半(関数呼び出し・分岐)。Java/.NET の VM 構造の小規模版を構築
第9章 高水準言語
本書独自の Jack 言語(Java/Python 風)の仕様
第10章 コンパイラI: 構文解析
再帰下降パーサを Jack 言語向けに実装
第11章 コンパイラII: コード生成
AST から VM コードへの変換。コンパイラ設計の核心
第12章 OS
Math / String / Memory / Output などの最小 OS を Jack で実装。本書の集大成
第13章 さらなる冒険へ
本書の到達点と次のステップ(GPU・OS・並行性等)への橋渡し
学習のヒント
- 各章はプロジェクト形式で前章の実装成果物が次章の入力になる。スキップ読みは難しいため、第1プロジェクトの HDL シミュレータ環境をセットアップしてから読み始めると詰まりを最小化できる
- ハードウェア編(NAND→CPU)とソフトウェア編(アセンブラ→OS)は独立した難易度を持つ。コンパイラや OS の実装だけを目的とする場合、後半の目次を先に確認して逆引きで読む進め方も有効
- 本書は「改訂第2版」(description 明記)であり、ネット上の初版ベースの解説記事と実装仕様が一部異なる場合がある。参考実装を流用する際は本文の仕様との整合を都度確認することを推奨する
前提知識
- Python または任意の言語での基本的なプログラミング経験(ファイル I/O・文字列処理が書けるレベル)
- 2進数・16進数の基礎概念(加算・ビット演算の読み書きができる程度)
- コマンドラインの基本操作とテキストエディタを使った開発環境の構築ができること
次に読む本
低レイヤを知りたい人のためのCコンパイラ作成入門
本書の Hack コンパイラは仮想 CPU 向けの教育目的実装であり、実在の x86-64 ABI やレジスタ割り当てには踏み込まない。本タイトルはその差分を C 言語で埋め、実務に近いコンパイラ実装スキルを次のステップとして習得できる構成になっている
コンピュータの構成と設計(パターソン&ヘネシー)
本書の Hack CPU は教育用に単純化されており、パイプライン・キャッシュ・分岐予測などの実機 CPU 設計理論は扱わない。本タイトルはその空白を RISC-V ベースで埋め、産業標準アーキテクチャの設計判断の根拠を系統的に習得できる
オペレーティングシステム — 設計と実装
本書の OS 実装は Jack 言語で書かれた最小構成(算術ライブラリ・文字出力・メモリ管理程度)であり、プロセス管理・仮想メモリ・ファイルシステムは対象外。本タイトルはその差分を補い、OS 設計の全体像を実装ベースで段階的に理解する読み順として位置づけられる
出版社による内容紹介
コンピュータシステムをゼロから作って学ぶベストセラー書の改訂第2版! コンピュータシステムをゼロから作って学ぶベストセラー書の改訂第2版。コンピュータを理解するための最善の方法はゼロからコンピュータを作ることです。コンピュータの構成要素は、ハードウェア、ソフトウェア、コンパイラ、OSに大別できます。本書では、これらコンピュータの構成要素をひとつずつ組み立てます。具体的には、NANDという電子素子からスタートし、論理ゲート、加算器、CPUを設計します。そして、アセンブラ、仮想マシン、コンパイラ、OSなどを実装しコンピュータを完成させて、最後にその上でアプリケーション(テトリスなど)を動作させます。
この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。