moNo’s note

最近読んだ本,観た映画など,気ままにメモします.

コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方/ Noam Nisan, Shimon Schocken

NAND回路から高水準言語まで概観できる超良書. javaで実装されたツールで,1から計算機を組み上げることができる模様. 時間が定期的に取れるようになったら取り組んでみたい.

この本は,計算機を成り立たせるための基本的な理論に絞ると,こんなにもシンプルなのか,と驚かせてくれる. マイクロソフトやアップルなどの製品では,機能や高速性につい目が行くが,そこを省いてしまえばとってもシンプル. なんとなくわかっている事が,電気的スイッチの塊から組みあがっていることを傍観できて,凄くよく整理されている.

発展的内容として,物理的な実装には電気回路へ,モダンな種々の機能はOSへそれぞれ立ち入る必要がある.

個人的に勉強になったのは,

  • 算術論理演算器ALUは,NANDから構成可能で,入力されたデータと計算指示に従って出力値を出す構造.計算指示は加算,減算,といった命令セットを入力することができ,これがチップごとに仕様が異なる.
  • 状態を保つ回路=順序回路.レジスタ,メモリ,カウンタなどは,2値を行き来するクロックによって時刻に依存した出力を可能にする
  • 高水準言語→VM言語→アセンブリ機械語.高水準言語は木構造へ,VM言語ではスタック,アセンブリはバイナリとして表現される.
  • VM言語の存在により,ハードウェアに依存せずにコードをコンパイル可能になる.
  • OSは基本的に高水準言語で書かれており,ハードウェアの扱い,ファイルシステム,通信,メモリ管理等々を受け持つ.計算機実験はそのうえで動くアプリケーションに過ぎない.