版元ドットコム

探せる、使える、本の情報

文芸 新書 社会一般 資格・試験 ビジネス スポーツ・健康 趣味・実用 ゲーム 芸能・タレント テレビ・映画化 芸術 哲学・宗教 歴史・地理 社会科学 教育 自然科学 医学 工業・工学 コンピュータ 語学・辞事典 学参 児童図書 ヤングアダルト 全集 文庫 コミック文庫 コミックス(欠番扱) コミックス(雑誌扱) コミックス(書籍) コミックス(廉価版) ムック 雑誌 増刊 別冊
プログラマーのためのCPU入門  CPUは如何にしてソフトウェアを高速に実行するか Takenobu Tani(著) - ラムダノート
.
【利用可】 (連絡不要)

書店員向け情報 HELP

書店注文情報

注文電話番号:
注文メール:

在庫ステータス

在庫あり

取引情報

取引取次: 西村   書店
直接取引:あり
返品の考え方: 原則あり

出版社への相談

店頭での販促・拡材・イベントのご相談がありましたらお気軽にご連絡ください。

プログラマーのためのCPU入門 CPUは如何にしてソフトウェアを高速に実行するか (プログラマーノタメノシーピーユーニュウモン シーピーユーハイカニシテソフトウェアヲコウソクニスルカ)

このエントリーをはてなブックマークに追加
A5判
312ページ
定価 3,400 円+税   3,740 円(税込)
ISBN
978-4-908686-16-0   COPY
ISBN 13
9784908686160   COPY
ISBN 10h
4-908686-16-5   COPY
ISBN 10
4908686165   COPY
出版者記号
908686   COPY
Cコード
C3055  
3:専門 0:単行本 55:電子通信
出版社在庫情報
在庫あり
初版年月日
2023年1月
書店発売日
登録日
2025年1月16日
最終更新日
2025年10月22日
このエントリーをはてなブックマークに追加

重版情報

4刷 出来予定日: 2026-02-01
MORE
LESS
3刷と併売可能ですが、解説に使っているソフトウェアのバージョンアップや数値など、細かいところで最新の情報を取り込んでいます。

紹介

本書では、豊富な図説と簡潔なコードを交えながら、CPUが備える高速化のためのさまざまな仕組みとその動作を阻む要因、さらにはソフトウェアで可能な対策について、ハードウェア技術に馴染みがないプログラマーでも十分な直感を得られるように解説していきます。

目次

第1章 CPUは如何にしてソフトウェアを高速に実行するのか
 1.1 CPUはソフトウェアを「命令流」として見てる
 1.2 CPUごとにどのような命令があるか
 1.3 CPUで人から見えるソフトウェアをそのまま扱っていない理由
 1.4 プログラムはどのようなCPUの命令列に変換されるか

第2章 命令の密度を上げるさまざまな工夫
 2.1 逐次処理
 2.2 パイプライン化
 2.3 スーパースカラ化
 2.4 スーパーパイプライン化
 2.5 スーパースカラ+スーパーパイプライン化
 2.6 本章のまとめ

第3章 データ依存関係
 3.1 データ依存関係とは
 3.2 真のデータ依存関係のスーパーパイプライン化への影響
 3.3 真のデータ依存関係のスーパースカラ化への影響
 3.4 アウトオブオーダー実行による緩和
 3.5 再順序化(リオーダー)の必要性
 3.6 真ではないデータ依存関係への影響を解消する
 3.7 ソフトウェアによる緩和
 3.8 命令レイテンシの計測実験
 3.9 本章のまとめ

第4章 分岐命令
 4.1 分岐命令とその課題
 4.2 分岐命令の種類
 4.3 分岐予測による緩和
 4.4 分岐予測ミスの影響と要因
 4.5 ソフトウェアによる緩和
 4.6 予測ミス率の計測実験
 4.7 本章のまとめ

第5章 キャッシュメモリ
 5.1 メモリアクセスに伴うパイプラインの停滞
 5.2 キャッシュメモリによる緩和
 5.3 初回のアクセスは遅い(初期参照ミス)
 5.4 容量を超えるアクセスは遅い(容量性ミス)
 5.5 アドレスの一部が競合するアクセスも遅い(競合性ミス)
 5.6 キャッシュミスの測定
 5.7 本章のまとめ

第6章 仮想記憶
 6.1 仮想記憶でできること
 6.2 アドレス変換に伴うメモリアクセス
 6.3 TLBによる緩和
 6.4 TLBは外れる
 6.5 ソフトウェアによる緩和
 6.6 仮想記憶についての補足
 6.7 TLBミスの計測実験
 6.8 本章のまとめ

第7章 I/O
 7.1 I/O アクセスの方法
 7.2 I/O アクセスで実現できること
 7.3 I/O アクセスは遅い
 7.4 ハードウェアによる支援
 7.5 ソフトウェアによる緩和
 7.6 I/O の挙動を確認するアセンブリプログラム例
 7.7 本章のまとめ

第8章 システムコール、例外、割り込み
 8.1 用語の定義
 8.2 システムコールとその利用シーン
 8.3 例外とその利用シーン
 8.4 割り込みとその利用シーン
 8.5 例外・割り込み系の振る舞い
 8.6 例外・割り込み系がCPUの動作を遅くする背景
 8.7 ソフトウェアによる対策
 8.8 システムコール、例外、割り込みについての実験
 8.9 本章のまとめ

第9章 マルチプロセッサ
 9.1 マルチプロセッサの多様な方式
 9.2 組み合わせるCPUの種類による分類
 9.3 命令流の独立性による分類
 9.4 メモリアドレス空間の共有と主記憶の配置による分類
 9.5 マルチプロセッサを活かすためには
 9.6 データ共有によるソフトウェア間の協調
 9.7 共有メモリ型マルチプロセッサ上のソフトウェアを遅くする要因
 9.8 本章のまとめ

第10章 キャッシュコヒーレンス制御
 10.1 CPUごとにキャッシュを搭載することの影響
 10.2 キャッシュコヒーレンス制御による解決
 10.3 MSI プロトコルの概要
 10.4 キャッシュコヒーレンス制御は遅い
 10.5 フォールスシェアリングでさらに遅い
 10.6 ソフトウェアによる緩和
 10.7 コヒーレンスミスについての実験
 10.8 本章のまとめ

第11章 メモリ順序付け
 11.1 メモリアクセスの順序は入れ替わる
 11.2 メモリアクセス順序が入れ替わるメカニズム
 11.3 メモリアクセス順序の入れ替えによる問題
 11.4 メモリ順序付けによる解決
 11.5 メモリ順序付けは遅い
 11.6 ソフトウェアによる緩和
 11.7 メモリ順序付けの挙動を見るプログラム
 11.8 本章のまとめ

第12章 不可分操作
 12.1 マルチプロセッサにおける共有データの更新
 12.2 同一アドレスへの複数回のメモリアクセスの課題
 12.3 不可分操作による解決
 12.4 不可分操作はソフトウェアを遅くすることがある
 12.5 ソフトウェアによる緩和
 12.6 不可分操作についての実験
 12.7 本章のまとめ

第13章 高速なソフトウェアを書く際には何に注目すべきか
 13.1 性能劣化による影響の度合い
 13.2 性能劣化の要因を制御できるか
 13.3 結局、何を優先すればいいか

付録A CPUについてさらに広く深く知るには
 A.1 書籍
 A.2 学術論文など
 A.3 特許文献
 A.4 オープンソースハードウェア
 A.5 講義資料
 A.6 特定のCPUに関する情報

付録B 各CPUの基本的な命令
 B.1 代表的な命令の例
 B.2 命令の組み合わせ例

付録C 現代的なCPUの実装例(BOOM)
 C.1 BOOMのパイプライン構成例
 C.2 BOOMについての情報源

付録D マイクロオペレーション方式と、その命令レイテンシ
 D.1 複雑な命令の実装方式
 D.2 マイクロオペレーション方式における命令のレイテンシ
 D.3 個別発行制御におけるレイテンシの揺れ

付録E GPUおよびベクトル方式におけるパイプラインの高密度化の工夫
 E.1 GPUにおける高密度化のアプローチ
 E.2 ベクトル方式における高密度化のアプローチ

付録F CPUの性能向上の物理的な難しさ
 F.1 動作周波数と論理ゲートの段数
 F.2 論理ゲートの物理的な特徴とCPU性能

あとがき
参考文献
索引
著者について

著者プロフィール

Takenobu Tani  (タケノブタニ)  (

CPU関連のハードウェアエンジニア。性能と消費電力を重視するCPUの設計および応用開発に携わる。ソフトウェアの性能と電力改善の支援も担う。一番好きなプログラミング言語はHaskell、次はアセンブリ。

上記内容は本書刊行時のものです。