內容簡介
《計算機組成與設計:硬體、軟體接口(原書第4版)》是計算機組成的經典教材。全書著眼於當前計算機設計中最基本的概念,展示了軟硬體間的關係,並全面介紹當代計算機系統發展的主流技術和最新成就。
同以往版本一樣,《計算機組成與設計:硬體、軟體接口(原書第4版)》採用MIPS處理器作為展示計算機硬體技術、彙編語言、計算機算術、流水線、存儲器層次結構以及I/O等基本功能的核心。書中強調了計算機從串列到並行的最新革新,在每章中都納入了並行硬體和軟體的主題,以軟硬體協同設計發揮多核性能為最終目標。
《計算機組成與設計:硬體、軟體接口(原書第4版)》適合作為高等院校相關專業的本科生和研究生教材,對廣大技術人員也有很高的參考價值。
編輯推薦
《計算機組成與設計:硬體、軟體接口(原書第4版)》特色:涵蓋從串列計算到並行計算的革命性變革,新增了關於並行化的一章,並且每章中還有一些強調並行硬體和軟體主題的小節。新增一個由NVIDIA的首席科學家和架構主管撰寫的附錄,介紹了現代GPU的出現和重要性,首次詳細描述了這個針對可視計算進行 了最佳化的高度並行化、多執行緒、多核的處理器。描述一種度量多核性能的獨特方法——Roofline模型,自帶AMDOpteronX4、IntelXeon5000、SunUltraSPARCT2和IBM Cell的基準測試和分析。涵蓋一些關於快閃記憶體和虛擬機的新內容。提供了大量富有啟發性的練習題。將AMDOpteronX4和Inter Nehalem作為貫穿《計算機組成與設計:硬體、軟體接口(原書第4版)》的實例。用SPECCPU2006組件更新了所有處理器性能實例。
這 本最暢銷的計算機組成書籍經過全面更新,關注現今發生在計算機體系結構領域的革命性變革二從單處理器發展到多核微處理器,從串列發展到並行。與前幾版一樣,《計算機組成與設計:硬體、軟體接口(原書第4版)》採用了MIPS處理器來展示計算機硬體技術、彙編語言、計算機算術、流水線、存儲器層次結構以及I/O等基本功能。此外,奉書還包括一些關於ARM和x86體系結構的介紹。
作者簡介
作者:(美國)帕特森(David A.Patterson) (美國)亨尼斯(John L.Hennessy) 譯者:康繼昌 樊曉椏 安建峰 等
David A.Patterson,加州大學伯克利分校計算機科學系教授,美國國家工程研究院院士,IEEE和ACM會士,曾因成功的啟發式教育方法被IEEE授予James H.Muiiigan.Jr教育獎章。他因為對RISC技術的貢獻而榮獲1995年IEEE技術成就獎,而在RAID技術方面的成就為他贏得了1999年IEEE。ReynoldJohnson信息存儲獎。2000年他和JohnL.Hennessy分享了Johnvon Neumann獎。
John L.Hennessy史丹福大學接長。IEEE和ACM會士,美國國家工程研究院院士及美國科學藝術研究院院士。Hennessy教授因為在RISC技術 方面做出了突出貢獻而榮獲2001年的Eckert-Mauchly獎章,他也是2001年Seymour Cray計算機工程獎得主,並且和David A.Pafferson分享了2000年Johnvon Neumann獎。
目錄
出版者的話
譯者序
前言
第1章 計算機概要與技術
1.1 引言
1.1.1 計算套用的分類及其特性
1.1.2 你能從本書學到什麼
1.2 程式概念入門
1.3 硬體概念入門
1.3.1 剖析滑鼠
1.3.2 顯示器
1.3.3 打開機箱
1.3.4 數據安全
1.3.5 與其他計算機通信
1.3.6 處理器和存儲器製造技術
1.4 性能
1.4.1 性能的定義
1.4.2 性能的測量
1.4.3 CPU性能及其因素
1.4.4 指令的性能
1.4.5 經典的CPU性能公式
1.5 功耗牆
1.6 滄海巨變:從單處理器向多處理器轉變
1.7 實例:製造以及AMD Opteron X4基準
1.7.1 SPEC CPU基準測試程式
1.7.2 SPEC功耗基準測試程式
1.8 謬誤與陷阱
1.9 本章小結
1.10 拓展閱讀
1.11 練習題
第2章 指令:計算機的語言
2.1 引言
2.2 計算機硬體的操作
2.3 計算機硬體的運算元
2.3.1 存儲器運算元
2.3.2 常數或立即數運算元
2.4 有符號和無符號數
2.5 計算機中指令的表示
2.6 邏輯操作
2.7 決策指令
2.7.1 循環
2.7.2 case/switch語句
2.8 計算機硬體對過程的支持
2.8.1 使用更多的暫存器
2.8.2 嵌套過程
2.8.3 在棧中為新數據分配空間
2.8.4 在堆中為新數據分配空間
2.9 人機互動
2.10 MIPS中32位立即數和地址的定址
2.10.1 32位立即數
2.10.2 分支和跳轉中的定址
2.10.3 MIPS定址模式總結
2.10.4 機器語言解碼
2.11 並行與指令:同步
2.12 翻譯並執行程式
2.12.1 編譯器
2.12.2 彙編器
2.12.3 連結器
2.12.4 載入器
2.12.5 動態程式庫
2.12.6 啟動一個Java程式
2.13 以一個C排序程式為例
2.13.1 swap過程
2.13.2 sort過程
2.14 數組與指針
2.14.1 用數組實現clear
2.14.2 用指針實現clear
2.14.3 比較兩個版本的clear
2.15 高級內容:編譯C語言和解釋Java語言
2.16 實例:ARM指令集
2.16.1 定址模式
2.16.2 比較和條件分支
2.16.3 ARM的特色
2.17 實例:x86指令集
2.17.1 Intel x86的改進
2.17.2 x86暫存器和數據定址模式
2.17.3 x86整數操作
2.17.4 x86指令編碼
2.17.5 x86總結
2.18 謬誤與陷阱
2.19 本章小結
2.20 拓展閱讀
2.21 練習題
第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 MIPS中的乘法
3.3.5 小結
3.4 除法
3.4.1 除法算法及其硬體結構
3.4.2 有符號除法
3.4.3 更快速的除法
3.4.4 MIPS中的除法
3.4.5 小結
3.5 浮點運算
3.5.1 浮點表示
3.5.2 浮點加法
3.5.3 浮點乘法
3.5.4 MIPS中的浮點指令
3.5.5 算術精確性
3.5.6 小結
3.6 並行性和計算機算術:結合律
3.7 實例:x86的浮點
3.7.1 x86浮點體系結構
3.7.2 Intel SIMD流擴展2(SSE2)浮點體系結構
3.8 謬誤與陷阱
3.9 本章小結
3.10 拓展閱讀
3.11 練習題
第4章 處理器
4.1 引言
4.1.1 一個基本的MIPS實現
4.1.2 實現方式概述
4.2 邏輯設計慣例
4.3 建立數據通路
4.4 一個簡單的實現機制
4.4.1 ALU控制
4.4.2 主控制單元的設計
4.4.3 數據通路的操作
4.4.4 控制的結束
4.4.5 為什麼不使用單周期實現方式
4.5 流水線概述
4.5.1 面向流水線的指令集設計
4.5.2 流水線冒險
4.5.3 對流水線概述的小結
4.6 流水線數據通路及其控制
4.6.1 圖形化表示的流水線
4.6.2 流水線控制
4.7 數據冒險:轉發與阻塞
4.8 控制冒險
4.8.1 假定分支不發生
4.8.2 縮短分支的延遲
4.8.3 動態分支預測
4.8.4 流水線小結
4.9 異常
4.9.1 異常在MIPS體系結構中的處理
4.9.2 在流水線實現中的異常
4.10 並行和高級指令級並行
4.10.1 推測的概念
4.10.2 靜態多發射處理器
4.10.3 動態多發射處理器
4.11 實例:AMD Opteron X4(Barcelona)流水線
4.12 高級主題:通過硬體設計語言描述和建模流水線來介紹數字設計以及更多流水線示例
4.13 謬誤與陷阱
4.14 本章小結
4.15 拓展閱讀
4.16 練習題
第5章 大容量和高速度:開發存儲器層次結構
5.1 引言
5.2 cache的基本原理
5.2.1 cache訪問
5.2.2 cache缺失處理
5.2.3 寫操作處理
5.2.4 一個cache的例子:內置FastMATH處理器
5.2.5 設計支持cache的存儲系統
5.2.6 小結
5.3 cache性能的評估和改進
5.3.1 通過更靈活地放置塊來減少cache缺失
5.3.2 在cache中查找一個塊
5.3.3 替換塊的選擇
5.3.4 使用多級cache結構減少缺失代價
5.3.5 小結
5.4 虛擬存儲器
5.4.1 頁的存放和查找
5.4.2 缺頁
5.4.3 關於寫
5.4.4 加快地址轉換:TLB
5.4.5 集成虛擬存儲器、TLB和cache
5.4.6 虛擬存儲器中的保護
5.4.7 處理TLB缺失和缺頁
5.4.8 小結
5.5 存儲器層次結構的一般架構
5.5.1 問題1:一個塊可以被放在何處
5.5.2 問題2:如何找到一個塊
5.5.3 問題3:當cache缺失時替換哪一塊
5.5.4 問題4:寫操作如何處理
5.5.5 3C:一種理解存儲器層次結構行為的直觀模型
5.6 虛擬機
5.6.1 虛擬機監視器的必備條件
5.6.2 指令集系統結構(缺乏)對虛擬機的支持
5.6.3 保護和指令集系統結構
5.7 使用有限狀態機來控制簡單的cache
5.7.1 一個簡單的cache
5.7.2 有限狀態機
5.7.3 一個簡單的cache控制器的有限狀態機
5.8 並行與存儲器層次結構:cache一致性
5.8.1 實現一致性的基本方案
5.8.2 監聽協定
5.9 高級內容:實現cache控制器
5.10 實例:AMD Opteron X4(Barcelona)和Intel Nehalem的存儲器層次結構
5.10.1 Nehalem和Opteron的存儲器層次結構
5.10.2 減少缺失代價的技術
5.11 謬誤和陷阱
5.12 本章小結
5.13 拓展閱讀
5.14 練習題
第6章 存儲器和其他I/O主題
6.1 引言
6.2 可信度、可靠性和可用性
6.3 磁碟存儲器
6.4 快閃式存儲器
6.5 連線處理器、記憶體以及I/O設備
6.5.1 互聯基礎
6.5.2 x86處理器的I/O互聯
6.6 為處理器、記憶體和作業系統提供I/O設備接口
6.6.1 給I/O設備傳送指令
6.6.2 與處理器通信
6.6.3 中斷優先權
6.6.4 在設備與記憶體之間傳輸數據
6.6.5 直接存儲器訪問和記憶體系統
6.7 I/O性能度量:磁碟和檔案系統的例子
6.7.1 事務處理I/O基準程式
6.7.2 檔案系統和Web I/O的基準程式
6.8 設計I/O系統
6.9 並行性與I/O:廉價磁碟冗餘陣列
6.9.1 無冗餘(RAID 0)
6.9.2 鏡像(RAID 1)
6.9.3 錯誤檢測和糾錯碼(RAID 2)
6.9.4 位交叉奇偶校驗(RAID 3)
6.9.5 塊交叉奇偶校驗(RAID 4)
6.9.6 分散式塊交叉奇偶校驗(RAID 5)
6.9.7 P+Q冗餘(RAID 6)
6.9.8 RAID小結
6.10 實例:Sun Fire x4150伺服器
6.11 高級主題:網路
6.12 謬誤與陷阱
6.13 本章小結
6.14 拓展閱讀
6.15 練習題
第7章 多核、多處理器和集群
7.1 引言
7.2 創建並行處理程式的難點
7.3 共享存儲多處理器
7.4 集群和其他訊息傳遞多處理器
7.5 硬體多執行緒
7.6 SISD、MIMD、SIMD、SPMD和向量機
7.6.1 在x86中的SIMD:多媒體擴展
7.6.2 向量機
7.6.3 向量與標量的對比
7.6.4 向量與多媒體擴展的對比
7.7 圖形處理單元簡介
7.7.1 NVIDIA GPU體系結構簡介
7.7.2 深入理解GPU
7.8 多處理器網路拓撲簡介
7.9 多處理器基準測試程式
7.10 Roofline:一個簡單的性能模型
7.10.1 Roofline模型
7.10.2 兩代Opteron的比較
7.11 實例:使用屋頂線模型評估四種多核處理器
7.11.1 4個多核系統
7.11.2 稀疏矩陣
7.11.3 結構化格線
7.11.4 生產率
7.12 謬誤與陷阱
7.13 本章小結
7.14 拓展閱讀
7.15 練習題
附錄A 圖形和計算GPU
A.1 引言
A.1.1 GPU發展簡史
A.1.2 異構系統
A.1.3 GPU發展成了可擴展的並行處理器
A.1.4 為什麼使用CUDA和GPU計算
A.1.5 GPU統一了圖形和計算
A.1.6 GPU可視化計算的套用
A.2 GPU系統架構
A.2.1 異構CPU-GPU系統架構
A.2.2 GPU接口和驅動
A.2.3 圖形邏輯流水線
A.2.4 將圖形流水線映射到統一的GPU處理器
A.2.5 基本的統一GPU結構
A.3 可程式GPU
A.3.1 為實時圖形編程
A.3.2 邏輯圖形流水線
A.3.3 圖形渲染程式
A.3.4 像素渲染示例
A.3.5 並行計算套用編程
A.3.6 使用CUDA進行可擴展並行編程
A.3.7 一些限制
A.3.8 體系結構隱含的問題
A.4 多執行緒的多處理器架構
A.4.1 大規模多執行緒
A.4.2 多處理器體系結構
A.4.3 單指令多執行緒(SIMT)
A.4.4 SIMT warp執行和分支
A.4.5 管理執行緒和執行緒塊
A.4.6 執行緒指令
A.4.7 指令集架構(ISA)
A.4.8 流處理器(SP)
A.4.9 特殊功能單元(SFU)
A.4.10 與其他多處理器的比較
A.4.11 多執行緒多處理器總結
A.5 並行存儲系統
A.5.1 DRAM的考慮
A.5.2 cache
A.5.3 MMU
A.5.4 存儲器空間
A.5.5 全局存儲器
A.5.6 共享存儲器
A.5.7 局部存儲器
A.5.8 常量存儲器
A.5.9 紋理存儲器
A.5.10 表面
A.5.11 load/store訪問
A.5.12 ROP
A.6 浮點算術
A.6.1 支持的格式
A.6.2 基本算術
A.6.3 專用算術
A.6.4 性能
A.6.5 雙精度
A.7 資料:NVIDIA GeForce 8800
A.7.1 流處理器陣列(SPA)
A.7.2 紋理/處理器簇(TPC)
A.7.3 流多處理器(SM)
A.7.4 指令集
A.7.5 流處理器(SP)
A.7.6 特殊功能單元(SFU)
A.7.7 光柵化
A.7.8 光柵操作處理器(ROP)和存儲系統
A.7.9 可擴展性
A.7.10 性能
A.7.11 密集線性代數性能
A.7.12 FFT性能
A.7.13 排序性能
A.8 資料:將套用映射到GPU
A.8.1 稀疏矩陣
A.8.2 在共享存儲器中進行快取
A.8.3 掃描和歸約
A.8.4 基數排序
A.8.5 GPU上的N-Body套用
A.9 謬誤與陷阱
A.10 小結
A.11 拓展閱讀
附錄B 彙編器、連結器和SPIM仿真器
B.1 引言
B.1.1 什麼時候使用彙編語言
B.1.2 彙編語言的缺點
B.2 彙編器
B.2.1 目標檔案的格式
B.2.2 附加工具
B.3 連結器
B.4 載入
B.5 記憶體的使用
B.6 過程調用規範
B.6.1 過程調用
B.6.2 過程調用舉例
B.6.3 另外一個過程調用的例子
B.7 異常和中斷
B.8 輸入和輸出
B.9 SPIM
B.10 MIPS R2000彙編語言
B.10.1 定址方式
B.10.2 彙編語法
B.10.3 MIPS指令編碼
B.10.4 指令格式
B.10.5 常數操作指令
B.10.6 比較指令
B.10.7 分支指令
B.10.8 跳轉指令
B.10.9 陷阱指令
B.10.10 取數指令
B.10.11 保存指令
B.10.12 數據傳送指令
B.10.13 浮點運算指令
B.10.14 異常和中斷指令
B.11 小結
B.12 參考文獻
B.13 練習題