なかなかの良書が邦訳された。原題「Digital Design and Computer Architecture」(2007年刊)を翔泳社さんが「ディジタル回路設計とコンピュータアーキテクチャ」を邦題として、IT Architects' Archiveシリーズの一冊として刊行したのである。著者は、デイビッド・マネー・ハリス(David Money Harris)、サラ・L・ハリス(Sarah L. Harris) 両氏。訳者は、天野英晴、鈴木貢、中條拓伯、永松礼夫の諸氏である。
この本は、原題及び邦題を見て察しのとおり、ディジタル回路の基礎からコンピュータアーキテクチャを構築する、つまりマイクロプロセッサを設計することを目指したもので、その原理はもちろん設計ノウハウが随所に盛り込まれている(とはいえ、マイクロプロセッサそのものの原材料を作るという行程は含まない)。この道筋は、各章のタイトルを掲げれば、よりよくわかるだろう(カッコ内は原著のタイトル)。
第1章 ゼロからイチへ (From Zero to One)
第2章 組み合わせ理論回路設計 (Combinational Logic Design)
第3章 順序回路設計 (Sequential Logic Design)
第4章 ハードウェア記述言語 (Hardware Description Languages)
第5章 ディジタルビルディングブロック (Digital Building Blocks)
第6章 アーキテクチャ (Architecture)
第7章 マイクロアーキテクチャ (Microarchitecture)
第8章 メモリシステム (Memory Systems)
タイトルから、いきなりブール代数の話から入るかといえばそうではない。本書のオビにも書かれている「複雑さを管理する方法を学ぶ」という設計思想の最重要部分を簡潔に示した後、抽象化の最たるものであるアナログからディジタルへ、つまり0と1の二値世界への話に入っていく。2進数の扱いに慣れた後は、二値世界への現実アプローチである論理ゲートへと向かっていく。そして多くのものを学習しつつ、抽象化の階段を登りつめ、最後にマイクロアーキテクチャの構築へと繋がるのである。マイクロプロセッサの設計を理解した後には、メモリシステム(サブシステム)の話があり、完結する。
だが、本書の圧巻は第1章から第8章とは別にある。付録Aとして扱われている「ディジタルシステムの実装法」で、36ページほどの分量でしかないが、実際に第1章から第8章で学んだものを実践する場である。私的には、本書の価値はこの付録Aに収斂するといっても過言ではない。著者もこのように述べている。
「私たちはディジタルシステムを理解するのに最も良い方法は、実験でそれを自分で作ってデバッグすることだと信じている」
いくらアタマだけで理解していても、それは思い込み、思い過ごしに過ぎない。理解したという自覚があるだけで、まるでわかっていないことは、多くの若者を見ていればわかることである。もちろん、若者だけではなく、妙齢の人であっても実践なければ同じである(若者であったとしても、実践を踏まえていればしっかり理解している人も多い)。
また、次の一文も示唆的である。
「データシートを読んで理解することは重要である。ディジタルシステムの設計ミスの有力な原因の1つは、チップ動作の誤解から生じている」
データシートに限らず、仕様書を「読み込む」ことができない人は多い。もちろん、実物が手元にない場合もあるが、これこそ実践・経験がものをいう世界で、これまで自身で実践を踏まえていれば、仕様書の読み方というか、読み込み方というか、コツともいうべきものがわかっている。だから読み方を誤ったりする可能性は低いが、まったく実践を経験していない、あるいはなぞる程度でしか扱っていない場合は、そもそもの読み方に難があり、誤解や勘違いをすることが少なくない。つまり、「理解するには、自分で実験し作りデバッグした経験をもってデータシートを読む」ことと思うのだ。それは結果として、複雑さを管理する方法を理解したことにつながってくる。
本書で残念な点もあげておこう。原著がないので確証は得られないが、誤訳というか訳がこなれていない部分が散見されるが、邦訳書に伴ういつもの難点なので仕方がない。あえて一つあげると、「Pentium Pro、Pentium II、Pentium IIIプロセッサは、コードP6という名前の共通のアウトオブオーダマイクロアーキテクチャを使っている」(本書491ページ)とあるのは、「Pentium Pro、Pentium II、Pentium IIIプロセッサは、コードネームP6という共通のアウトオブオーダマイクロアーキテクチャを実装している」とした方がよさそうかな、とか。
また、翻訳者からのメッセージにも残念な点(記述)がある。それは、「小職の職場でプロデュースする学生に求められる内容で考えると、第1章の物理学的な話や第2章の論理回路の最適化、第3章の順序回路のタイミングのクリティカルな話といった、CADツールが覆い隠してくれる話題は概要を紹介する程度にとどめ、HDLの章、命令セットアーキテクチャ、それにマイクロアーキテクチャの章に重点を置く、といった具合です」とある部分で、大学生(院生)向けに教える内容の取捨選択についてふれているのだが、本書のキモである「複雑さを管理する方法を学ぶ」基本、足腰を鍛える部分を紹介する程度にとどめようというのである。CADツールが覆い隠している部分こそ、学生時代に学習・実践すべきものだろう。せっかく良書を邦訳しても、使う側の発想が貧困であるのは残念である。
苦言はこの程度にして、最後に本書の価格についてふれておこう。ありがたいことに、本書は税別4,800円ということで、邦訳書にありがちなべらぼうな価格設定となっていない。4,800円そのものが高いという方は別にして、この原著が定価94.95ドルということを知れば、邦訳されてしかも半値近い価格となっていてこの価格なのだから、大いに賞賛されるものだろう。翻訳者からのメッセージ(624ページ)にも「原書は図に青を使った2色刷でしたが、本翻訳書は購入しやすい価格設定を図るために黒のみの1色刷とし、図の線の濃度を微調整し、対応する訳文も調整して対応しています」と記されているように、並々ならぬ配慮をされていることが伺える。実際、本書の図群は薄い灰色が多用されているものの、見にくさという点はあまり感じられない。原書の図群を見てしまうと、比較から見にくいなとは思ってしまうが…。
とはいえ、本書が良書であることに変わりはない。しっかりとしたコンピュータアーキテクチャへの理解を得るには、本書は適切なものだろう。じっくりと読んで、自分の手と頭で理解してほしい。
この本は使えると思って,翻訳前に入手しておりまして,ご指摘の部分を見てみますと,
The Pentium Pro, Pentium II, and Pentium III processors all share a common out-of-order microarchitecture, code named P6.
となっております.ということで,実装という意訳も使えなくもないのですが,著者の意向をできる限り汲んだ訳となっているのではなかろうかと思います.しががいまして,難点とご指摘されると,訳者のご苦労が報われないのではと思い,一言述べさせていただきました.もちろん,訳者当人ではございません.
投稿情報: 通りすがりのギタリスト | 2009/09/26 01:21
通りすがりのギタリスト 様、コメントありがとうございます。
なるほど。おっしゃることおり、とは思います。しかし、そうなると訳が難点とは言い難いとなるわけで…。まぁ寄るべき視点によって見解が異なるのは自明ですので、著者もそうなのかなぁと受け止めるしかないかなぁ。
投稿情報: XWIN II | 2009/09/26 08:49