http://www.amazon.co.jp/dp/4798114405/mowanetjp-22
言わずと知れた、と申しますか。
私が同著者によるより初学者向けの『コンピュータの構成と設計』の第二版上下を読んだのは2002年か2003年、以降、本著も長いこと挑戦しようとは思いつつ読んでいなかった教科書なので、個人的には「ようやく」という感じです。(ただ、不幸にして付録のCD-ROMを日本に忘れてきてしまったので付録Dから付録Kまでは読んでいません。これは読者としてはよろしい慣習ではない。)
読んでみると、想像したほどには多くの新しい内容はないように感じました。おそらく大学の授業が良くできていたのが大きいのでしょう。もっとも、実際に演習問題をすらすら解けるというのとは別で、もし私が実際に何かこの分野で具体的な仕事を行うということであれば、本著を再度より丁寧に読む必要があるでしょう。比較的詳細な例題や演習こそが本質であるという向きもあるかと思います。プロセッサや下回りを実装する前段階として読むには、やはり極めて優れた内容です。
私がこの手の内容を学んだ頃は、まだTLP (スレッドレベルパラレリズム) が当たり前のように授業に登場するという時代ではありませんでした。もちろん明らかなお話として、理論としてははるか昔からあったはずですし、実装界隈では既に話題になっていたはずです。ただプロダクトとして今のように確固とした地位は確立していませんでした。私が学んだ直後あたりから急速に「マルチコア」の製品が増えていたと記憶しています。2003年までPentium4のシリーズが存在し、本著が2006年頃までの事情を元に書かれているとすれば、私が学んだ時代というのは、TLPが授業で現れるとしても、このような確立された形で教えられるタイミングではなかったのかもしれません。ILP (命令レベルパラレリズム) の極致がPentium4と言う現在の私の理解が正しければ (もちろんSMPが実装されていたので、当時時点で既に萌芽はあったのですが)、次の流れに移行する時期であったのかも。この辺りは識者に説明をお譲りします。そういった学習にあたっての背景事情から、どうしてもILPの限界地点の議論とTLPの議論がおもしろくて仕方ない。
一方、メモリやストレージに関する後半の説明は、詳細に学ぶ点が多くありつつも、全体としてはとても「真っ当」で「普通」の内容に映りました。ストレージについては最近はSSDという派閥が割とサーバサイドでも使われようとしていると聞いており、一方本著ではまだ「フラッシュメモリ」の説明に止まっており、このあたりは次の版を待ちたい限りです。一方、「普通」であるにも関わらず、ストレージの信頼度、速度の理論交じりの説明は、意外にもあまり頻繁には伺わない話でもあります。実務に従事している方などからは、本著のような筋の通った計測手法について聞かされることはあまりなく、大方ライブラリの使い方や最新のプロダクトについてのニュースを伺うことの方が多い。そういう点で見て補完的な内容という点で依然として素晴らしい。
はるか昔に私がこの本を読んだときにある方が「要は『計測せよ』」と話していらっしゃいました。なるほどその通り。特にストレージの信頼度や速度のお話については、プロセッサ設計に関係なく一般の方も学べる点が非常に多いと期待されるので、お時間があれば一度読んでみると良いかと思います。やや蛇足ですが、「計測」という観点で近年のクラウド界隈の話を見る上では下記の書籍も (ずっと浅いですが) 良い内容です
http://www.amazon.co.jp/dp/4873113997/mowanetjp-22
(The Art of Capacity Planning - 真 もわ爛漫)