「プロセッサを支える技術 - 果てしなくスピードを追求する世界」は、マイコミジャーナルで「コンピュータアーキテクチャの話」の連載を続けておられるHisa Ando氏の2冊目の書籍。1冊目の「コンピュータ設計の基礎」は、氏のマイコミジャーナルにおける連載をまとめたもので、既に伊藤剛浩氏のレビューもあるのでそちらをご覧いただくとして、2冊目となる本書は、ソフトウェアエンジニアあるいはシステムの評価を行う人(例えば筆者のようなPCのレビュアー)が知っておくべき事を、簡潔かつ容易に網羅した良書である。

ソフトウェアエンジニアあるいはシステムの評価を行う人が知っておくべき事を、簡潔かつ容易に網羅した一冊となっている「プロセッサを支える技術 - 果てしなくスピードを追求する世界」

どのあたりが良書か? といえば、例えば第三章は「プログラマのためのプロセッサアーキテクチャ」として、昨今のプロセッサに使われるさまざまな高速化技術を取り上げているが、ここで必ずサンプルコードが付記されていること。なぜスラッシングの対処には"dummy[8]"を挟むと効果的なのか、を不必要に文章を費やすことなく、しかもわかりやすく説明してくれる。カバーにも「本書は、自身でプログラムを書きコンピュータシステムを効率的に動かしたい、という方を対象にしたプロセッサの解説書です。」とあるように、プログラムを読み書きできるエンジニアもしくはそれと同程度のスキルを持った人を想定読者としている。こうした人々にとっては、日本語で説明を費やすよりもわかりやすいサンプルコードを示したほうが何倍も理解が早い。かつてアジャイル開発で「ソースは最良のドキュメント」とした主張があったが、ここにはこの一番わかりやすい実例がある。

その一方、例えばプログラマはしばしばCPUのリソースに無頓着である。アセンブラを使って、各々の処理サイクル数を気にしながらプログラムを書いていたかつてのプログラマならば除算をなるべく避けるようなアルゴリズムを選ぶだろうが、高級言語のみしか使った事がないプログラマは。おそらく除算を特別扱いしたり、Shiftで済むようなアルゴリズムを選んだりはしないだろう。なぜそれだとまずいか、も本書はちゃんとページを割いて説明している(といってもページの都合もあってか、さすがに理屈をすべて説明するには至っていない。除算器がいかにリソースを費やし、かつ動作が遅くなるのかは「コンピュータ設計の基礎」の3.4章に詳しい。そういう意味では、まず本書を読んで全貌をつかみ、個別の項目は「コンピュータ設計の基礎」で補うのが、理屈をきちんと理解するという意味でも、知的好奇心を満足させるという意味でも正しい読み方だろう。

こう書くと、まるでプログラマ向けの解説書的なイメージを想像するかもしれないが、文章そのものは平易であり、非常に読みやすい。ある程度の専門用語は避けて通れないものの、そうした専門用語はすべて文章の中で説明されており、プログラマレベルの知識を持ち合わせていなくても、こうした話に興味をお持ちの方なら読み進める事に困難はないだろう。こんな言い方はアレかもしれないが、筆者の記事に「面白いけど良くわかりません」という評価を下さる読者の方が居られる。こうした事を理解したいと思うのだが、いかんせんWebや雑誌などだとどうしても断片的な知識にとどまってしまうから、ということなのだが、こうした読者の方が系統立ててCPUの仕組みを学ぶには、本書はまさしく最適な一冊と言って良いと思う。

Hisa Ando氏(本来は先生とお呼びすべき方なのだが、ご当人が嫌がられるのでこの呼び方にさせていただく)には何度かお目に掛かったことがある。氏は日本を代表するCPUアーキテクトのお一人である。特にHPC方面に関しては造詣も深いし、自身も多くの仕事をなさってきた方であるが、にもかかわらずご本人は(丁度本書と同じように)気さくな方である。筆者も一応同じ方面でお仕事をさせて頂いているのだが、こちらは一介の元ファーム屋さんでしかなく、バックグラウンドのスキルが全然違っている。そんなわけで、実際書評を書くにあたって一通り読ませていただいて、(情けないながら)ずいぶん勉強になった。

内容もさることながら、「それをどう文章で表現して読ませるか」という点に関して、Hisa Ando氏の文章は筆者の文章などよりも数段素晴らしい(と書かなければいけないのがまた情けない)。今回、割と時間を掛けて精読したつもりなのだが、それでも実質3日程度でするっと読めてしまうところがこの本の一番素晴らしいところだろう。コンピュータアーキテクチャの教科書としては、いわゆるヘネパタ本(ヘネシー&パターソンの「コンピュータの構成と設計」)が有名だが、あちらは統計的アプローチに重きを置きすぎで、全般的に学ぶという目的にはあまり適していないし、やや内容も古い(日本語版はまだ第3版、英語版では第4版が出ているが、GPGPUなどは含まれて居ない)上に、分量が不必要に多すぎて、とても3日で読むのは無理である。そんなわけで、ソフトウェアエンジニアのみならず、こうした事に興味のある方に広くお勧めしたい。

「プロセッサを支える技術 - 果てしなくスピードを追求する世界」


発行 技術評論社
発売 2011年1月6日
著者 Hisa Ando
単行本 ソフトカバー・400ページ
定価 2,709円
出版社から: わずか60年余りで、200万倍もの演算性能向上を遂げたプロセッサ。システムの全体性能を左右する小さなチップには、どのような技術が搭載されているのでしょうか。本書では、コンピュータアーキテクチャの基本からスタートし、プロセッサのしくみ/働き、高速化を実現した応用技術、旬の64ビットCPUの内部構造まで徹底解説。合わせて、プロセッサの実力を引き出すためのプログラミングテクニックも盛り込みました。マルチコア化、スレッド、GPGPU/超並列処理、仮想化機構、省エネなど注目のキーワードを押さえ、プロセッサを核に、コンピューティングの今をコンパクトにまとめた1冊です。