DATE : 2006/04/23 (Sun)
「CPU の創りかた」(渡波郁:著、毎日コミュニケーションズ)を読みました。
(*´Д`)表紙が萌えます。中表紙の次のページも萌えます。中身はもっと萌え……るかと思いきや、中身はなかなか硬派な本です。
この本の魅力を挙げるとすると、作ることを前提としているという点がまず思い浮かびます。そのため、抵抗、コンデンサ、ダイオード、IC などの半導体やテスターなど、電子部品に関する事柄まで解説されています。IC のデータシートの読み方も解説されているので、電子工作の知識の無い自分にとっては目からうろこでした。
また、CPU を作るという主旨の本ですが、電気や電子工作に関する知識がなくても読めるように工夫されています。前書きにもオームの法則が分かっているレベルで十分と書かれています。小難しい表現もなく語り口も軽いので、すらすらと読めます。この敷居の低さも、この本の魅力と言えます。(ただし、電子工作を実際に行うになったと思いまは、電子工作の本を読んでおいたほうが良いと本文にはあります)
ちなみに、私は、CPU を作るためにこの本を買ったわけではありません。やはりソフトウェアに興味のある身の上、それが動作する CPU の動作原理ぐらいは知っておいても損は無いと考えたからです。(また、この普段巡回しているブログの書評で、この本が「日本の名著」と紹介されていたからでもあります)
( ´Д`)CPU にはレジスタがあって、その値などが ALU に…… などと何となくは CPU の動作の仕組みは分かっているつもりでしたが、それが具体的にどのように繋がっていて、またどのようにデータが流れて……といったことはまったく知りませんでした。また、CPU の命令はメモリからのフェッチ、デコード、実行という過程を経て実行される――ということもそれなりに分かってはいましたが、それらの具体的な動作も知りませんでした。
この本は少しずつ CPU を作りながらの解説となっているため、そこらへんのもやもやがかなりすっきりしました。特に、基本はレジスタ間の ALU を介したコピーで、他のレジスタへの値のコピーは ALU で演算が行われていないだけ、という部分は非常にためになりました。
もっとも、この本には弱点もあります。作る CPU は 4bit ですし、メモリへの値の書き込み機能がないためにその解説もありません。
ただ、CPU の基本動作を知る上では、これほど簡単で分かりやすい本はなかなかないかと思います。(実際、この本で作る CPU を芸術的と賞している方もおられます。IC 10個で CPU というのは、ほとんど例がないそうです。)
(;・∀・)ちなみに、電車の中で堂々と読めるほど、中身は硬派です(表紙も、カバーを外すとシンプルになります)。
(;^ω^)ただし、萌え絵の挿絵が突然挿入されているので、油断は禁物です。
DATE : 2006/04/02 (Sun)
「30日でできる! OS 自作入門」(川合秀実著、毎日コミュニケーションズ、3800円)を読みました。
上のリンクから飛べる立ち読みコーナーで中身を見ていただければわかるのですが、語り口が軽妙ですし、とても分かりやすく書かれています。実際、読んでいて詰まることがあまりなく、すらすらと読み進めていくことができました。(あとがきによると、中学生でも読めるように全力を尽くしたそうです)
本の中では、アセンブラと C 言語を使って OS を作っていく過程が記されています。しかし、アセンブラにしても C にしても、解説を読めば分かるようになっているところはさすがです。
また、ハードウェア(CPU やレジスタ、メモリなど)の解説があるのも見逃せません。
さすがにこれで回路が組めるほど深い解説があるわけではありませんが、ハードウェアの上でソフトウェアがどう動作しているのか、ディスプレイにどのように出力しているのか、キーボードからの入力をどのように受け取っているのかということがしっかりと分かるように書かれています。
その流れの中で、C 言語のポインタについても触れられています。C 言語のポインタの理解があやふやになっていた私にとって、理解を固めるには最適な解説でした。
また、なんといっても、グラフィックを使った OS がしだいに出来上がっていくという構成が非常に面白いです。次はどのような機能ができあがるのかといった、ドキドキ感もあります。
本の中では、その都度 OS の機能を作ったり、直したりといったライブ的な作業を繰り返しています。冗長に思える部分もあるかもしれません。しかし、 OS のみならず、ソフトウェアを開発する上での考え方を垣間見ることができるのも一つの魅力でした。
プログラムの抽象化が進む世の中ですが、ハードウェアなしにソフトウェアは動きません。OS というハードウェアに近いソフトウェア開発を通して、ハードウェアの知識やプログラミングの考え方を学ぶには、とてもおすすめの本と言えそうです。
この本を足掛かりとして、ハードウェアや OS の本格的な本を読むのもいいかもしれませんね。