デッドライン読書会第43回の課題図書は、前回からスタートした通称パタヘネこと「コンピュータの構成と設計」第6版です。パタヘネは上下巻に分かれており、今回は上巻の後半戦である3章と4章が対象となりました。
今回の範囲
第3章は「コンピュータにおける算術演算」。コンピュータにおける四則演算、浮動小数点演算のハードウェア上での実現方法を解説する内容でした。オーバーフローへの対処や、浮動小数点演算の誤差の話なんかも出てきました。まだとっつきやすかった・・・。
第4章は「プロセッサ」。ここからいきなり本書が本気を出してきたような内容、だいぶ難しかった(って書くとあたかも読めているような雰囲気ですが、詳読はできなかった)。テーマ的には、1~3章で扱った命令セットをどのようにハードウェア上に実装するかという内容が半分とパイプラインによる高速化に関する内容が半分でしたね。
4章は苦行だった…
4章ではハードウェアの中でも、プロセッサの中にあるデータパス要素を説明していきます。データパスは「命令メモリ、プログラムカウンタ(PC)、加算器/演算回路(ALU)」から構成されており、これらを組み合わせて構築します。MIPSで定義されている代表的な命令セット(メモリ参照命令、算術論理演算命令、ジャンプ命令)を題材とし、命令セットをどう回路上に実現するかを、概念図に示しています。命令セットを実装するために、だんだん積み上げていく感じの説明でした。実装が進むに従い、ページの半分以上が回路図っていう、読んでて「お、おぅ…そうか、まったく分からんけど、工夫してるんだな」みたいな気分になりました笑
前半部分で説明する実装は「単一クロック・サイクル方式」と呼ばれるもの。4.6節からテーマの主題がこの実装をいかに高速化とするかに変わります。ちなみに、「単一」を高速化するなら、「複数」かな?と思いますが、「複数クロック・サイクル方式」は現代ではあまり使われていないらしいです。詳しくはWebで(に教育用の参考資料を掲示している)ってなってた。
洗濯で解説するパイプライン処理
さて4章後半の高速化の話。現代のプロセッサの高速化は「パイプライン処理」によって行われているとのことで、「洗濯」を例にパイプライン処理を説明してくれる節が4.6節でした。洗濯の工程を「洗濯→乾燥→折り畳み→収納」の4ステップと考え、複数人でこの工程を利用する場合、直列で工程を実施するのか、パイプライン処理にするかで、スループットに差が出るよね(スループットが向上するよね)というイメージをつけさせてくれます。(下記のサイトから画像をお借りしました)
正直この4.6節があって助かりました。ここでパイプライン処理を使った高速化のイメージがついたこと、高速化により犠牲となるハザードのイメージがついたことは大きかったです。(そのあとの4.7~4.11くらいはまた頭に入らなかった💦)(というのとパイプライン処理自体はIPAの試験とかでも出てくる範囲でまあイメージつくか)
このあたりの内容って、学生時代に大学で習ったはずなんだけど、それよりか学生時代にパソコンを自作をしていて、その時に一緒に買っていたパソコン関係の雑誌から学んだような記憶のほうが鮮明。趣味って偉大だな〜。(そんなこと書いてたらパソコン雑誌を読みたくなってきた、いまはソフトウェアデザインくらい?最近いくつか定期購読を解約したので浮いたお金で考えてみようかな。)
付録Bはどこにある?→下巻じゃん
4章で頻繁に付録Bへのリファーがある。最初はスルーしていたんだけど、途中から気になって気になって探してもどうしても見つけられない。と思ったら、付録Bは下巻の最後についている様子。上巻を読むときにはできれば下巻も一緒に購入しておいたほうが良いですね。(私はまだ買っていない)
「パタヘネを学ぼう」動画も一緒に見ている
いまのところパタヘネのオーラを受けるような読書(理解し切るというより、こんなことが書いてあるんだ、なるほど、みたいな読書)になっているので、もう少し理解を深めるために、こちらの動画:Hak&Tomozohにお世話になっています。読んだ範囲を動画で復習するイメージ。より広いテーマでパタヘネの味噌を解説してくれているので面白い。
まだ続く、次は下巻へ
上巻をどうにか読み切ったので次は下巻。下巻はメモリーと並列処理、また高速化だ。下巻を買おう。頑張って読もう。
コメント