コンピュータアーキテクチャのエッセンス[第 2 版]
コンピュータアーキテクチャノエッセンス ダイニハン
- 著者:
- Douglas E. Comer / 吉川 邦夫(ダグラスイーカマー / ヨシカワ クニオ)
- 出版社:
- 翔泳社
- 出版日:
- 2020年10月14日頃
- ISBN:
- 9784798167930
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
基礎知識こそ開発者にとっての
“銀の弾丸”だ!
【本書の内容】
本書は
Douglas E. Comer, "Essentials of Computer Architecture, 2nd Edition",
Taylor & Francis Group, LLC. 2017
の邦訳版です。
「コンピュータアーキテクチャ」という学術分野は、コンピュータ科学とコンピュータ工学を抱合しているだけに、深く広大です。
この膨大な知識をすべて習得するのは、専門家ならいざしらず、いわゆる IT 系技術者あるいは、そのトバクチに立っている初学者にとっては、無理筋というものです。
とはいえ、これらの知見があれば、より強固な知識の土台を形成し、開発者として一歩も二歩も先に進むことができます。
本書はその膨大な知見の中から「プロセッサ」「メモリ」「入出力 (I/O)」の三分野に焦点を当て、プログラマやデベロッパー、それらの初学者にとって、有効な知識の武器となるパートを平易に解説し、より深い知識への踏み台を提供してくれます。
一般教養的なコンピュータの動作原理を、よりプログラミングに近いところで理解するには、本書を入り口に歩を進めるのが近道となるはずです。
【本書のポイント】
・コンピュータアーキテクチャのマップが手に入る
・開発者として一回り大きくなれる
・原理がわかるので緊急時にも慌てないココロをもてる
第 1 章 序論と概要
■第 1 部 基礎
第 2 章 デジタル論理回路の基礎
第 3 章 データとプログラムの表現
■第 2 部 プロセッサ
第 4 章 さまざまなプロセッサと計算エンジン
第 5 章 プロセッサの種類と命令セット
第 6 章 データパスと命令実行
第 7 章 オペランドのアドレッシングと命令表現
第 8 章 CPU:マイクロコード、保護、プロセッサモード
第 9 章 アセンブリ言語とプログラミングパラダイム
■第 3 部 メモリ
第 10 章 メモリとストレージ
第 11 章 物理メモリと物理アドレッシング
第 12 章 キャッシュとキャッシング
第 13 章 仮想メモリ技術と仮想アドレッシング
■第 4 部 入出力
第 14 章 入出力の概念と用語
第 15 章 バスとバスアーキテクチャ
第 16 章 プログラム駆動と割り込み駆動の入出力
第 17 章 デバイスと入出力とバッファのプログラミング
■第 5 部 高度な話題
第 18 章 並列処理
第 19 章 パイプライン処理
第 20 章 電力とエネルギー
第 21 章 性能評価
第 22 章 アーキテクチャのサンプルと階層構造
第 23 章 ハードウェアのモジュール化
付録 A コンピュータアーキテクチャコースのラボ
付録 B ブール代数を単純化する規則
付録 C x86 アセンブリ言語の基本
付録 D ARM のレジスタ定義とコーリングシーケンス
技書の森解説
プログラムを書く人が、その下で動くプロセッサー、メモリ、入出力の仕組みをひととおり押さえるための教科書です。『コンピュータアーキテクチャのエッセンス[第 2 版]』 (Douglas E. Comer 著、吉川 邦夫 訳、翔泳社、2020 年 10 月 14 日発売) は、2017 年に Taylor & Francis Group から刊行された原書 Essentials of Computer Architecture, 2nd Edition の邦訳です。版元の紹介文は、コンピューター科学とコンピューター工学にまたがる広大な分野から、プログラマやデベロッパーとその初学者に役立つ部分を選んで平易に解説し、より深い知識への踏み台を提供する本だと説明しています。
5 部 23 章の構成、論理回路からプロセッサー、メモリ、入出力へ
目次は第 1 章「序論と概要」のあとに 5 つの部が続きます。第 1 部「基礎」はデジタル論理回路とデータとプログラムの表現、第 2 部「プロセッサ」はさまざまなプロセッサーと計算エンジン、プロセッサーの種類と命令セット、データパスと命令実行、オペランドのアドレッシング、マイクロコードと保護とプロセッサモード、アセンブリ言語とプログラミングパラダイムまでの 6 章です。第 3 部「メモリ」は物理メモリと物理アドレッシング、キャッシュ、仮想メモリを、第 4 部「入出力」はバスとバスアーキテクチャ、プログラム駆動と割り込み駆動の入出力、デバイスとバッファーのプログラミングを扱います。第 5 部「高度な話題」には並列処理、パイプライン処理、電力とエネルギー、性能評価、アーキテクチャのサンプルと階層構造、ハードウェアのモジュール化が並びます。紹介文が焦点とするプロセッサー、メモリ、入出力の 3 分野がそのまま第 2 部から第 4 部に対応しており、論理回路から積み上げて 3 分野を順に通り、最後に分野横断の話題で締める並びと読めます。
プログラマから見たアーキテクチャ、キャッシュと割り込みが効く場面
アーキテクチャの知識がプログラマに効くのは、性能の謎と障害の原因を説明できるようになる点です。同じ計算でも配列を走査する順序によって速度が大きく変わるのは、CPU がメモリの内容を近くの小さなキャッシュに一定の単位で写して使うためで、アクセスの局所性が崩れるとキャッシュから外れてメモリを待つ時間が増えます。仮想メモリは各プロセスに独立したアドレス空間を見せる仕組みで、ページ単位の対応づけと保護がオペレーティングシステムとハードウェアの共同作業で成り立っています。入出力では、装置の状態を CPU が繰り返し確かめるプログラム駆動の方式と、装置が終わったことを知らせる割り込み駆動の方式の違いが、応答性と CPU の使い方の差になって現れます。本書の第 12 章、第 13 章、第 16 章はそれぞれこの土台を扱う章で、版元が本書のポイントに挙げる「原理がわかるので緊急時にも慌てない」は、こうした挙動を原理から説明できる状態を指していると読めます。
付録 A のラボと x86 と ARM の付録、手を動かす入口
巻末には付録 A「コンピュータアーキテクチャコースのラボ」、付録 B「ブール代数を単純化する規則」、付録 C「x86 アセンブリ言語の基本」、付録 D「ARM のレジスター定義とコーリングシーケンス」の 4 本があります。付録 A は書名どおり授業で取り組むラボを集めたもので、読むだけでなく実習と組み合わせて学ぶ使い方が想定されていると読めます。付録 C と付録 D が x86 と ARM という 2 系統の命令セットを取り上げているため、第 9 章のアセンブリ言語の章で学んだ考え方を、手元のパソコンやスマートフォンで動いているプロセッサーの具体的な規約に当てはめて確かめられます。関数呼び出しの際にどのレジスターに引数を置き、どのレジスターを呼ばれた側が保存するかというコーリングシーケンスは、デバッガーで逆アセンブル結果を読むときや、他の言語のライブラリを呼び出すときに直接役立つ知識です。
低レイヤーの全体像がほしいプログラマに向く理由
版元が対象とするのは、プログラマやデベロッパーと、IT 系の仕事の入り口に立つ初学者です。命令セットの設計やプロセッサーの実装を一つの命令セットに沿って深く掘り下げたい人には、Patterson と Hennessy の『コンピューターの構成と設計』のような設計寄りの教科書が目的に合います。本書は 3 分野の全体を見渡して、性能と挙動の理由を説明できるようになりたい人のための入口です。OS やコンパイラーなど隣の分野も含めて学ぶ順序を考えたい場合は、当サイトの OS / 低レイヤー本ガイド と合わせて検討すると選びやすくなります。高水準言語での開発に慣れたあとに、キャッシュの効き方や割り込みの仕組みを自分の言葉で説明できるようになりたい人にとって、23 章を一冊で通せる本書は投じた時間に見合う土台になります。
言及した記事 (2 件)
この本に興味がある方におすすめ
関連する本
関連記事
OS / 低レイヤー本ガイド - コンピューターの仕組みを学ぶ技術書の選び方
OS、コンパイラー、ネットワークなど低レイヤーを学べる技術書の 4 ジャンルと、どこから始めるべきかの指針、賞味期限の見極め方を紹介します。
Linux 本ガイド - コマンドライン / しくみ / 性能の 3 層で選ぶ技術書
Linux を学ぶ技術書の選び方を 3 層 (コマンドラインの操作 → カーネルのしくみ → 性能と運用) で整理。新しい Linux の教科書や [試して理解] Linux のしくみなどの定番書の使い分けと、学ぶ順番を解説します。
データベース本ガイド - SQL から設計まで学べる技術書の選び方
データベースの基礎から設計、パフォーマンスチューニングまで学べる技術書の選び方と学習順序を紹介します。