このページは、J.L.Hennessy D.A.Patterson Computer Architecture, A Quantitative Approach 5th Editionの日本語版のホームページです。新しく翻訳された5版の翻訳本についての追加情報、正誤表を掲載します。正誤表以外の部分の文責は天野にあります。
ヘネパタの紹介
J.L.Hennessy, D.A.Patterson著Computer Architecture, A Quantitative Approach、通称ヘネパタは1990年に第1版が出版されて以来、姉妹編であるD.A.Patterson, J.L.Hennessy, Computer Organization & Design(パタへネ)と共に、コンピュータ関係者の間で親しまれています。しかし、この本はやたら厚くて値段も張る上、通して読むのが難しいため、誤解されていることが多いです。
以下、ヘネパタに関する誤解をヘネパタ風に明らかにしたいと思います。
ヘネパタとパタへネの役割分担がはっきりしていなかった第1版では、上記の記述は正しかった。
しかし、入門書としてパタヘネが出版された後、ヘネパタの第3版以降はコンピュータアーキテクチャの専門書としての役割を担うようになった。現在のヘネパタは、高度な専門書であり、他の工学分野の専門書が難しいのと同じレベルで難しく、すらすら読めるような代物ではない。
コンピュータには2つの側面がある。コンピュータの動作原理は、EDSAC、EDVAC以来一貫してプログラム格納型であり、この動作自体は簡単である。パイプライン、マルチコア、命令レベル並列処理、SIMDなど、どれも原理は簡単で、わかりやすく説明することができる。一方で、現在、世界中のPCで使われているx86アーキテクチャのCPUは、おそらく人間がかつて作ったものの中でもっとも複雑怪奇な構造物である。パタヘネが前者の側面を見ているのに対して、ヘネパタは、後者の側面、すなわち、えり抜きの技術者が100人以上掛かって開発してなおバグが出る代物に対して正面からアタックした書である。難しくないわけはない。しかし、このようなことを試みたテキストは他には存在しない。
ヘネパタの第1版は、確かに読みやすい文章がかなりの割合を占めていた。また、今の第5版にも読みやすく、わかりやすい文章が含まれている。しかし、解説する対象が難しくなると、それに対応して文章は長く、複雑になる。平均的な学部4年生がこれに取り組んだ場合、ひどく時間が掛かった上にまったく原文と違う解釈をしてしまう場合がある。輪講をする場合、時間をたっぷりとり、各部を正確に理解したかどうか確認して進める必要がある。
ヘネパタは、あくまでパタヘネを読んだ読者を対象に書かれている。パタヘネを読まずにヘネパタ本編を読んだ場合、何を言っているのか全くわからないだろう。では、付録を読んでから本編を読めばどうだろうか?付録は、ヘネパタがまだ入門書としての役割も担っていた第1版、第2版の記述が多く含まれているので、入門者が読んでもある程度理解することができる。それでも、わかりやすさという点では、パタヘネの方が付録より優れている。お勧めは、パタヘネを読んでからヘネパタを読み、それから理解を深めるために付録を読むことだ(もちろん十分時間がないとこんなことはできないが)。付録はパタヘネとは違う角度から解説してくれ、周辺、発展の情報を含んでおり、理解をさらに深めてくれる。
「第3版以降も(多分)名著であることには変わりないのですが、版数を重ねるごとにコンピュータの図鑑のようになっていき、実際の設計という観点が薄まっていった感があるそうです。」この文はインターフェイス2011年7月号の「コラム1 ヘネパタ本とは?」からの引用であるが、原著も訳本も読んでいない筆者による記述であり、完全に誤った情報である。
確かにヘネパタは、各章の「総合的実例」で実際のプロセッサ(今回の版ではIntel Core i7、ARM Cortex-A8など)についての記述を多く含んでいるが、これは解説した
それぞれのアーキテクチャ上の技術の実現例として個々のプロセッサを分析したものであり、プロセッサ自体を紹介したものではない。逆に言うとヘネパタはプロセッサの図鑑ではないので、これを読んでもIntel Core i7なりARM Cortex-A8の全体像がわかるわけではない。
核心、日経BP社」と同じである。
確かにヘネパタ5版の6章は、上記の著作とほとんど同じ図を使っている。しかし、両者を読み比べてみると、内容が全く違うことがわかる。ヘネパタではこの著作に加えて他の資料を基にして、ウェアスケールコンピューティングについてアーキテクチャの立場から紹介し、分析を試みている。6章は、他の章と比べて読みやすく、第5版の中で特に優れた部分である。両者を読み比べるとさらに理解が深まると思う。ここでヘネパタ関連著作を紹介しておこう。言うまでもなく直接の姉妹編はパタヘネであるが、Harris&Harrisの「Digital Design and Computer Architecture」(邦題 ディジタル回路設計とコンピュータアーキテクチャ:翔泳社)は、ディジタル設計寄りの記述で、パタヘネと同じMIPSマイクロアーキテクチャのHDLコードが載っている。実際に作ってみたい人にはお勧めである。さらにWeste&Harrisの「CMOS VLSI Design」(邦題CMOS VLSI回路設計:丸善)はLSIデバイスから回路設計をカバーした名著なのだが、Harrisが共著になった第4版にはFallacies and Pitfallsの節があり、ヘネパタ文化が輸出されているのがわかる。
確かに同一のテーマを扱っていて、以前の版より記述が良くなっている章もあるが、むしろ5版では今までの版のパッチワークでできている章が目立っている。5版の3章は、4版の2章の一部(基本的な分岐予測)を付録Cに持っていったものと3章をかなり削って書き直したものからできている。また4章は、3版以降、付録に追い出されたベクタプロセッサの記述に、新たなSIMD命令とGPUに対する記述を加え、さらに2版以降付録に追いやられたコンパイラによるループレベル並列性のサポートの記述をくっつけている。
5版の3章は、命令レベル並列処理の複雑怪奇な構造を詳細に解説すると共に、命令レベル並列性の限界を明らかにし、スレッドレベル並列性への歴史的転換の理由を探る章である。また、4章は特殊な業界用語とNVIDIAによるアーキテクチャの隠蔽作戦のために、ベールに包まれたGPUのアーキテクチャを今までのアーキテクチャの中に位置づけている。両方ともすばらしい章なのだが、、この版からこの本を読む読者の中には、流れが悪かったり、記述量のバランスがおかしかったり、文のニュアンスに微妙な違和感を感じる部分があるのに気づくかもしれない。特に3章は、分岐予測がいきなり相関分岐からはじまったり、ILPの限界について想定アーキテクチャの記述がやたらにある割りに分析があっさり終わるので面食らうかもしれない。これはこれらの章がパッチワークでできているからで、短期間で新しい内容の版を出すためにやむを得ないと考えるしかない。
公平を期すため、最新の内容が付け加わり、磨き上げられた章を紹介しておくと、1章では4版で「統計上意味があるのか?」といわれたベンチマークの相乗平均標準偏差の話が削除され、電力、エネルギーについての記述が充実している。コンピュータの分類も最新の状況とマッチしており、ついにヘネパタがSPECベンチマークに疑問を呈するというファンに取っては驚愕の事態を見ることになる。
マルチコアを記述する5章は、4版での「ヘネパタはマルチプロセッサについてはいかんのではないかい?」という印象を一新している。たしかにまだ「こんなにわかりにくく書かなくてもいいんじゃない」と思うところもあるが少なくとも4版より質、量共に格段に改善されている。
4版と5版の差を考えてもわかるが、ヘネパタは、版が違うと大幅に内容が違う。4版と5版で内容が同じなのは付録A,Bだけである。コンピュータアーキテクチャの専門家は新しい版が出たら、基本的に別の本と考えて読む必要がある。残念なことに年を取って偉くなった先生や技術者ほど分厚い本を読む時間がなくなり、昔の版の印象でこれを語ることが多い。しかし、5版についてはとにかく4章と6章は読むことをお勧めする。特にExascaleコンピュータの設計方針に関わる偉い人は4章だけでも読んでくれると良いのだが、、、
p.681
表C-39 -> 図C-39
小島君による
p.685
そして、除算器は最初の除算器
->最初の乗算器
だぶってました。すいません。これも小島君の指摘です。
p.509 A章
長所と短所を表A-4にまとめる -> 表A-7
小島君による
p.176 表3-5
「命令状態」したにある「命令」は原文ではIssueとなっていますし
命令 ->発行
が正しい。
これもごもっともです。小島君の指摘です。
同じく表3-5
動作および管理情報の更新作業
4行目
ir->if
小島君の指摘です。
p.187 表3-9
全命令の発行の行にある更新作業
ROB[b].Dext -> ROB[b].Dest
同じく表3-9
FP操作とストアの行にある更新作業
waite -> wait
同じく表3-9
「ストア」と「ストアを除く結果の書き込み」の間に線がない
すいません。表と図がやや雑になっています。 小島君の指摘です。
p.223
3行目
IPC -> CPI
小島君による
p.229
5行目
Minnspecはの
->Minspecは
小島君による
p.262
MULS.D->MULVS.D 小島君による
p.276
BORADCAST->BROADCAST
小島君による
p.291 表の一番上の「意味」、「説明」が左にずれている
小島君による
p.103 4.…これによって、コンテキストスイッチ時に、プロセスがディスクにスワップされることを防ぐ。だが、これだと意味が不明になる。
ここは、文を切ったのが良くなくて、
コンテキストスイッチでプロセスがディスクにスワップされないようにプロセスのメモリ状態を保護するために、メモリアクセスを制限する機構を設けておく。
の方が良かった。しかしこれは元の文もかなりわかりにくい。