計算機體系結構 基於性能的考量

錢安達

買這商品的人也買了...

商品描述

本書涵蓋了計算機性能的四個關鍵支柱,並為推理和理解這些概念提供了高級基礎: 小即快——規模擴展如何驅動性能;隱性並行——順序程序如何通過並行而更快地執行;動態定位——通過在更小的空間內安排數據而繞過物理限制;並行——通過工作者團隊提高性能。這些原則和模型提供了清晰易懂的高層次見解和定量建模,同時兼顧了低層次細節。最後,本書還涵蓋了GPU和機器學習加速器,它們對主流應用變得越來越重要。本書可幫助軟件架構師、開發人員甚至是數據科學家了解計算機體系結構以及如何提升性能。

作者簡介

王黨輝,博士,西北工業大學計算機學院副教授,主要研究方向為計算機體系結構、高性能微處理器設計、嵌入式系統設計等。主持或承擔了國家自然科學基金、基礎研究等科研項目30多項,發表科研論文80餘篇,曾獲得省部級科技進步一等獎2項。主持了3項教育部產學合作協同育人項目,主講本科生“計算機組成與系統結構”、碩士生“計算機系統結構”等課程,獲得陜西省教學成果一等獎2項、二等獎1項;指導本科生參加全國大學生計算機系統能力培養大賽,多次獲得團體一等獎和二等獎。入選2021年度高校計算機專業優秀教師獎勵計劃。

目錄大綱

譯者序
前言
第1章 計算與社會變遷
1.1 計算改變了社會和經濟
1.1.1 家庭
1.1.2 汽車和交通
1.1.3 商業
1.2 計算改變了科學和探索
1.3 計算的非凡特性
1.4 什麼是計算機體系結構
1.5 計算機性能的四大支柱:微型化、隱式並行性、動態局部性和顯式並行性
1.6 對讀者的預期
1.7 本書組織結構
1.8 總結
1.9 習題
第2章 指令集、軟件和指令執行
2.1 計算機的指令集
2.2 計算機系統結構
2.3 指令集體系結構:RISC-V實例
2.3.1 計算指令
2.3.2 條件控制和程序連接指令
2.3.3 內存訪問指令
2.4 機器指令和基本的軟件結構
2.4.1 基本表達式的實現
2.4.2 數據結構的實現:結構體和對象
2.4.3 一維數組和多維數組的實現
2.4.4 實現條件疊代結構:循環
2.4.5 實現過程調用、返回和棧
2.5 基本的指令執行和實現
2.5.1 順序狀態和指令執行
2.5.2 指令執行的硬件實現
2.6 提高指令的執行速度和程序的性能
2.7 總結
2.8 深入探究
2.9 習題
第3章 處理器與擴展:小即快
3.1 微型化與信息處理
3.2 計算機的自然規模是什麼
3.2.1 例子:位大小和速度
3.2.2 體積不斷縮小的計算機
3.3 計算機的大小和速度
3.3.1 體積較小的計算機更快
3.3.2 例子:應用物理大小和時鐘周期模型
3.3.3 從房間大小的計算機到單芯片計算機的尺寸縮放
3.3.4 尺寸縮放的單芯片計算機:功耗問題和登納德的解決方案
3.3.5 登納德縮放定律的終結
3.4 計算機尺寸與功耗
3.5 其他技術中的尺寸
3.6 微型計算機推動應用爆炸式發展
3.7 總結
3.8 深入探究
3.9 習題
第4章 順序抽象,並行實現
4.1 順序計算抽象
4.1.1 順序程序
4.1.2 指令級並行:流水線及更多方法
4.1.3 數據依賴和順序錯覺
4.2 順序錯覺:重命名與亂序執行
4.2.1 變量與寄存器的重命名
4.2.2 實現寄存器重命名的方法: 重排序緩沖區
4.2.3 亂序執行的局限性
4.3 因果關系錯覺:推測執行
4.3.1 分支預測
4.3.2 推測執行
4.3.3 精確的分支預測器
4.3.4 推測執行的安全風險:幽靈和熔斷
4.4 總結
4.5 深入探究
4.6 習題
第5章 存儲器:開發動態局部性
5.1 存儲器技術、小型化和不斷增加的容量
5.2 軟件和應用程序對內存容量的需求
5.3 存儲系統的挑戰:存儲墻
5.4 存儲器延遲
5.4.1 空間局部性和時間局部性(緩存)
5.4.2 程序中的動態局部性
5.4.3 地址過濾器(緩存)
5.4.4 過濾器的有效性
5.4.5 實現緩存(局部性和過濾)
5.4.6 遞歸過濾(多級緩存)
5.4.7 存儲層次結構性能建模
5.5 為什麼緩存具有良好的效果,如何編程以提高局部性
5.6 應用程序動態局部性的測量和性能的建模
5.6.1 測量動態局部性:重用距離
5.6.2 重用距離和動態局部性
5.6.3 使用重用距離對應用程序的訪存性能進行建模
5.6.4 調整程序以實現動態局部性
5.7 訪問速率和並行存儲器系統
5.8 總結
5.9 深入探究
5.10 習題
第6章 通用計算機
6.1 一個商用處理器:英特爾Skylake
6.2 一個商業存儲層次結構:英特爾Skylake
6.3 CPU是通用計算機
6.4 觀點:數學的普遍性和覆雜性
6.5 總結
6.6 深入探究
6.7 習題
第7章 順序之上:多核和雲端的並行性
7.1 登納德縮放定律的失效與向並行性的轉變
7.2 並行單芯片計算機:多核CPU
7.3 多核計算機的編程:OpenMP和pthreads
7.3.1 OpenMP:基於指示符的並行化
7.3.2 pthreads:顯式線程並行性
7.3.3 多核CPU中的並行性挑戰
7.3.4 多核的簡便使用方法:庫和服務器
7.4 百萬級的並行:超級計算機與雲計算
7.5 高效並行性:計算粒度大小
7.6 雲計算機編程:粗粒度並行性
7.6.1 三層Web應用程序:可擴展的Web服務
7.6.2 分布式MapReduce(Hadoop和Spark)
7.6.3 微服務:模塊化的可靠性與演化
7.6.4 無服務器架構(函數/功能即服務)
7.7 總結
7.8 深入探究
7.9 習題
第8章 加速器:為性能定制的體系結構
8.1 加速器的出現
8.1.1 加速器的硬件優勢
8.1.2 編程和軟件方面的挑戰
8.2 並行加速器
8.2.1 GPU體系結構
8.2.2 不同的GPU及其性能
8.3 機器學習加速器
8.3.1 Google的張量處理單元
8.3.2 Cerebras CS-2:一個晶片規模的機器學習加速器
8.3.3 小型機器學習加速器(邊緣)
8.4 加速器的其他應用機會
8.5 加速計算的限制和不足
8.6 總結
8.7 深入探究
8.8 習題
第9章 計算性能:過去、現在和未來