PR:この記事にはアフィリエイトリンクが含まれます。
CPUの仕組みを学ぶと、プログラムがなぜ速く動くのか、同じ処理でも書き方でなぜ差が出るのかが見えてきます。コンピュータアーキテクチャの本は、ソフトウェアとハードウェアの関係を理解する入口になります。
開発者にとってキャッシュやメモリ階層は、机上の知識にとどまりません。配列の走査やデータ配置、並列処理の計測結果を読むとき、原因を考える手掛かりになります。
紹介するのは、図解で基礎を扱う本、講義に沿って学べる本、コードの性能を扱う本、記憶階層と並列処理まで学ぶ上下巻です。まずCPUとキャッシュの基本を整理し、その後で各書の特徴を見ていきます。
おすすめ本早見表
初めて学ぶ人向けから、講義や開発実務で理解を深めたい人向けまで、得意分野の異なる4冊を並べました。図解や演習など、学び方の違いも見渡せます。
| 書名 | 読みどころ | 向く読者 | 参考価格 |
|---|---|---|---|
図解 コンピュータアーキテクチャ入門(第3版・新装版) | 図解、CPU設計演習 | 初学者 | 3,080円(税込) |
IT Text コンピュータアーキテクチャ(改訂2版) | キャッシュ性能、章末演習 | 学生、初級技術者 | 3,190円(税込) |
プログラマーのためのCPU入門 | コード例、性能計測実験 | 開発者 | 3,740円(税込) |
| コンピュータの構成と設計 MIPS Edition 第6版 上下巻セット | 記憶階層、並列処理 | 理論を深く学びたい人 | 販売価格を確認 |
掲載した3冊の金額は、税込みの公式希望小売価格が目安です。実売価格は時期や店舗によって変わります。MIPS Editionの上下巻セットも、購入時の販売価格を確認してください。
CPUの全体像
CPUはプログラムの命令を読み、計算し、その結果を書き戻す装置です。命令セットはCPUが理解する命令の取り決めで、ソフトウェアとハードウェアをつなぎます。
実際のCPUは、命令を一つずつ順に処理するだけではありません。パイプラインで複数の処理を重ね、複数の演算器を並行して使い、次に実行する命令を予測する仕組みもあります。
ソースコードの行数と命令数から、実行時間を判断することはできません。データの置き場所やCPUへ届く速さも、性能を左右します。
キャッシュとは
キャッシュは、よく使うデータをCPUの近くに置く小容量の高速メモリです。主記憶のDRAMより容量は小さく、CPUがデータを待つ時間を短くします。
直前に使ったデータを再び使う傾向を時間的局所性、近くに並ぶデータも使う傾向を空間的局所性と呼びます。この性質があるほど、必要なデータがキャッシュに見つかりやすくなります。
必要なデータがキャッシュにあればヒット、次の階層から取り寄せる場合はミスです。単純化した平均アクセス時間は、ヒット時の時間にミス率とミス時の遅れを掛けた値を加えて考えます。ミス率が同じでも、遅れの大きさによって性能への影響は変わります。
多くのCPUにはL1、L2、L3など複数段のキャッシュがあります。段ごとに容量や速さ、コア間で共有する範囲が異なり、構成はCPUによって変わります。
メモリ階層
CPUレジスタ、キャッシュ、主記憶、SSDなどのストレージは、容量が大きいほどアクセスに時間がかかる傾向があります。この速度と容量の差を埋める仕組みがメモリ階層です。
仮想記憶は、プログラムが使う仮想アドレスを物理メモリ上の場所に対応づけます。変換結果の一部はTLBに保存され、見つからない場合は追加の参照が必要になってアクセスが遅れることもあります。
キャッシュは、データを一定のまとまりであるキャッシュライン単位で扱います。配列の隣接要素を順に読むと、次に必要な値も一緒にキャッシュへ入る可能性が高まります。
遅延はデータが届くまでの時間を指し、帯域幅は一定時間に転送できる量です。大量のデータを扱う処理では、どちらが制約になっているかで改善策が変わります。
開発で効く視点
C言語の二次元配列では、要素が行方向に連続して並びます。そのため行ごとに読むとキャッシュを使いやすく、列方向に大きく飛ぶ処理ではデータ待ちが増える場合があります。
連結リストでは次に読む場所が現在のデータに依存するため、先読みが難しくなります。データ量が増えると、計算式に加えてデータ構造や配置も実行速度を左右します。
複数コアで動かすプログラムにも注意点があります。変数が別々でも、同じキャッシュラインに載るとコア間のやり取りが増える場合があります。この現象を偽共有と呼び、並列処理を遅くすることがあります。
キャッシュミスを見つけても、すぐコードを変える必要はありません。代表的な入力で計測し、時間を多く使う処理を特定します。キャッシュの仕組みを知っていれば、計測結果が変わった理由も説明しやすくなります。
図解の入門書
『図解 コンピュータアーキテクチャ入門(第3版・新装版)』は、堀桂太郎著、森北出版刊です。初学者向けのB5判176ページ。参考価格は3,080円(税込)で、図や写真を見ながら基本構成を学べます。
命令セット、演算と制御、メモリアーキテクチャを扱い、キャッシュや仮想メモリ、パイプラインへ進みます。CPUの各部分がどう関係するかを視覚的に追えるのが特徴です。
最後には簡単なCPUを自作する設計演習があります。命令の実行を手を動かして確かめたい人や、専門用語に慣れていない人におすすめです。
講義の流れで学ぶ
『IT Text コンピュータアーキテクチャ(改訂2版)』は、小柳滋・内田啓一郎著、オーム社刊です。A5判256ページで、参考価格は3,190円(税込)。情報系の講義に沿って体系的に学べます。
命令セットやメモリ、プロセッサから、パイプライン、命令レベル並列、並列処理まで取り上げます。キャッシュの方式や性能、多階層化、プリフェッチに加え、仮想記憶やSRAM・DRAMも扱います。
性能評価の尺度やアムダールの法則も登場し、各章には演習問題があります。2019年刊行の本で、基本原理や評価方法を学びたい学生や初級技術者におすすめです。
コード性能に結ぶ
『プログラマーのためのCPU入門』はTakenobu Tani著、ラムダノート刊。A5判312ページで、参考価格は3,740円(税込)です。ハードウェアの予備知識が少ない開発者向けに構成されています。
パイプライン、スーパースカラ、アウトオブオーダー実行、分岐予測、キャッシュ、TLBなどを扱います。アセンブリのコード例も交えて、CPUの仕組みとソフトウェアの実行速度を結びつけます。
命令レイテンシやキャッシュミスを計測する実験があり、読んだ内容を自分で確かめられます。キャッシュコヒーレンス、メモリアクセス順序、不可分操作まで扱うため、並行処理の知識を深めたい開発者にもおすすめです。
上下巻で深掘り
『コンピュータの構成と設計 MIPS Edition 第6版 上下巻セット』は、David Patterson、John Hennessy著、成田光彰訳、日経BP刊です。B5変型判で、上巻424ページ、下巻408ページの読み応えあるセットです。
上巻ではコンピュータ技術、命令、算術演算、プロセッサを扱います。下巻では記憶階層と並列プロセッサを掘り下げ、キャッシュの基礎や性能測定と改善、コヒーレンス、仮想記憶も取り上げます。記憶階層を詳しく学びたい人におすすめです。
PythonやCの行列乗算を題材に、並列性と記憶階層を使った高速化を説明します。各章には自習節と演習問題があり、例題を通じて理論を確かめながら学べます。
結論
初学者がCPUの全体像を学ぶなら、図解と設計演習を備えた『図解 コンピュータアーキテクチャ入門』がおすすめです。講義や章末問題に沿って学びたい人には、IT Textが合います。
コードの性能を考える開発者には、計測実験とコード例がある『プログラマーのためのCPU入門』が実務に直結します。記憶階層と並列処理まで幅広く学びたい人には、上下巻セットをおすすめします。
CPUキャッシュを理解すると、性能差が出る理由を言葉で説明しやすくなります。目的に合う本で基礎をつかみ、コードの計測や演習へ進めば、学んだ仕組みを日々の開発で活かせます。
Amazon の PC をスコア化してみた
Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。




