內容介紹
這本最暢銷的計算機組成書籍經過全面更新,關注現今發生在計算機體系結構領域的革命性變革:從單處理器發展到多核微處理器,從串列發展到並行。與前幾版一樣,本書採用了MIPS處理器來展示計算機硬體技術、彙編語言、計算機算術、流水線、存儲器層次結構以及I/O等基本功能。此外,本書還包括一些關於ARM和x86體系結構的介紹。
本書特色
涵蓋從串列計算到並行計算的革命性變革,新增了關於並行化的一章,並且每章中還有一些強調並行硬體和軟體主題的小節。
新增一個由NVIDIA的首席科學家和架構主管撰寫的附錄,介紹了現代GPU的出現和重要性,首次詳細描述了這個針對可視計算進行了最佳化的高度並行化、多執行緒、多核的處理器。
描述一種度量多核性能的獨特方法——Roofline model模型,自帶AMD Opteron X4、Intel Xeon 5000、Sun UltraSPARC T2和IBM Cell的基準測試和分析。
涵蓋一些關於快閃記憶體和虛擬機的新內容。
提供了大量富有啟發性的練習題。
將AMD Opteron X4和Intel Nehalem作為貫穿本書的實例。
用SPEC CPU2006組件更新了所有處理器性能實例。
作者介紹
David A.Patterson 加州大學伯克利分校計算機科學系教授,美國國家工程研究院院士,IEEE和ACM會士,曾因成功的啟發式教育方法被IEEE授予James H. Mulligan,Jr教育獎章。他因為對RISC技術的貢獻而榮獲1995年IEEE技術成就獎,而在RAID技術方面的成就為他贏得了1999年IEEE ReynoldJohnson信息存儲獎。2000年他和John L. Hennessy分享了John vonNeumann獎。
John L.Hennessy 史丹福大學校長,IEEE和ACM會士,美國國家工程研究院院士及美國科學藝術研究院院士。Hennessy教授因為在RISC技術方面做出了突出貢獻而榮獲2001年的Eckert-Mauchly獎章,他也是2001年Seymour Cray計算機工程獎得主,並且和David A.Patterson分享了2000年John von Neumann獎。
目錄
出版者的話
譯者序
前言
第1章 計算機概要與技術1
1.1 引言1
1.1.1 計算套用的分類及其特性2
1.1.2 你能從本書學到什麼3
1.2 程式概念入門4
1.3 硬體概念入門7
1.3.1 剖析滑鼠8
1.3.2 顯示器8
1.3.3 打開機箱9
1.3.4 數據安全12
1.3.5 與其他計算機通信13
1.3.6 處理器和存儲器製造技術14
1.4 性能15
1.4.1 性能的定義15
1.4.2 性能的測量17
1.4.3 CPU性能及其因素18
1.4.4 指令的性能19
1.4.5 經典的CPU性能公式19
1.5 功耗牆21
1.6 滄海巨變:從單處理器向多處理器轉變23
1.7 實例:製造以及AMD Opteron X4基準25
1.7.1 SPEC CPU基準測試程式27
1.7.2 SPEC功耗基準測試程式28
1.8 謬誤與陷阱29
1.9 本章小結31
1.10 拓展閱讀32
1.11 練習題32
第2章 指令:計算機的語言42
2.1 引言42
2.2 計算機硬體的操作43
2.3 計算機硬體的運算元46
2.3.1 存儲器運算元47
2.3.2 常數或立即數運算元49
2.4 有符號和無符號數50
2.5 計算機中指令的表示54
2.6 邏輯操作59
2.7 決策指令61
2.7.1 循環62
2.7.2 case/switch語句64
2.8 計算機硬體對過程的支持65
2.8.1 使用更多的暫存器66
2.8.2 嵌套過程68
2.8.3 在棧中為新數據分配空間69
2.8.4 在堆中為新數據分配空間70
2.9 人機互動72
2.10 MIPS中32位立即數和地址的定址75
2.10.1 32位立即數75
2.10.2 分支和跳轉中的定址76
2.10.3 MIPS定址模式總結78
2.10.4 機器語言解碼79
2.11 並行與指令:同步81
2.12 翻譯並執行程式83
2.12.1 編譯器84
2.12.2 彙編器84
2.12.3 連結器85
2.12.4 載入器87
2.12.5 動態程式庫87
2.12.6 啟動一個Java程式88
2.13 以一個C排序程式為例89
2.13.1 swap過程89
2.13.2 sort過程90
2.14 數組與指針95
2.14.1 用數組實現clear96
2.14.2 用指針實現clear96
2.14.3 比較兩個版本的clear97
2.15 高級內容:編譯C語言和解釋Java語言98
2.16 實例:ARM指令集98
2.16.1 定址模式99
2.16.2 比較和條件分支100
2.16.3 ARM的特色100
2.17 實例:x86指令集101
2.17.1 Intel x86的改進101
2.17.2 x86暫存器和數據定址模式103
2.17.3 x86整數操作104
2.17.4 x86指令編碼106
2.17.5 x86總結107
2.18 謬誤與陷阱107
2.19 本章小結108
2.20 拓展閱讀110
2.21 練習題110
第3章 計算機的算術運算135
3.1 引言135
3.2 加法和減法135
3.2.1 多媒體算術運算137
3.2.2 小結138
3.3 乘法139
3.3.1 順序的乘法算法和硬體139
3.3.2 有符號乘法141
3.3.3 更快速的乘法142
3.3.4 MIPS中的乘法142
3.3.5 小結142
3.4 除法143
3.4.1 除法算法及其硬體結構143
3.4.2 有符號除法145
3.4.3 更快速的除法146
3.4.4 MIPS中的除法146
3.4.5 小結147
3.5 浮點運算148
3.5.1 浮點表示149
3.5.2 浮點加法152
3.5.3 浮點乘法154
3.5.4 MIPS中的浮點指令157
3.5.5 算術精確性162
3.5.6 小結164
3.6 並行性和計算機算術:結合律165
3.7 實例:x86的浮點165
3.7.1 x86浮點體系結構166
3.7.2 Intel SIMD流擴展2(SSE2)浮點體系結構167
3.8 謬誤與陷阱168
3.9 本章小結170
3.10 拓展閱讀172
3.11 練習題173
第4章 處理器182
4.1 引言182
4.1.1 一個基本的MIPS實現183
4.1.2 實現方式概述183
4.2 邏輯設計慣例185
4.3 建立數據通路187
4.4 一個簡單的實現機制192
4.4.1 ALU控制192
4.4.2 主控制單元的設計194
4.4.3 數據通路的操作197
4.4.4 控制的結束199
4.4.5 為什麼不使用單周期實現方式201
4.5 流水線概述202
4.5.1 面向流水線的指令集設計205
4.5.2 流水線冒險205
4.5.3 對流水線概述的小結210
4.6 流水線數據通路及其控制211
4.6.1 圖形化表示的流水線219
4.6.2 流水線控制222
4.7 數據冒險:轉發與阻塞225
4.8 控制冒險234
4.8.1 假定分支不發生234
4.8.2 縮短分支的延遲235
4.8.3 動態分支預測237
4.8.4 流水線小結239
4.9 異常240
4.9.1 異常在MIPS體系結構中的處理241
4.9.2 在流水線實現中的異常242
4.10 並行和高級指令級並行245
4.10.1 推測的概念246
4.10.2 靜態多發射處理器247
4.10.3 動態多發射處理器250
4.11 實例:AMD Opteron X4(Barcelona)流水線253
4.12 高級主題:通過硬體設計語言描述和建模流水線來介紹數字設計以及更多流水線示例255
4.13 謬誤與陷阱255
4.14 本章小結256
4.15 拓展閱讀257
4.16 練習題257
第5章 大容量和高速度:開發存儲器層次結構280
5.1 引言280
5.2 cache的基本原理283
5.2.1 cache訪問285
5.2.2 cache缺失處理288
5.2.3 寫操作處理289
5.2.4 一個cache的例子:內置FastMATH處理器290
5.2.5 設計支持cache的存儲系統292
5.2.6 小結294
5.3 cache性能的評估和改進295
5.3.1 通過更靈活地放置塊來減少cache缺失297
5.3.2 在cache中查找一個塊300
5.3.3 替換塊的選擇302
5.3.4 使用多級cache結構減少缺失代價302
5.3.5 小結305
5.4 虛擬存儲器305
5.4.1 頁的存放和查找308
5.4.2 缺頁309
5.4.3 關於寫312
5.4.4 加快地址轉換:TLB312
5.4.5 集成虛擬存儲器、TLB和cache315
5.4.6 虛擬存儲器中的保護317
5.4.7 處理TLB缺失和缺頁318
5.4.8 小結322
5.5 存儲器層次結構的一般架構323
5.5.1 問題1:一個塊可以被放在何處323
5.5.2 問題2:如何找到一個塊324
5.5.3 問題3:當cache缺失時替換哪一塊325
5.5.4 問題4:寫操作如何處理325
5.5.5 3C:一種理解存儲器層次結構行為的直觀模型326
5.6 虛擬機328
5.6.1 虛擬機監視器的必備條件329
5.6.2 指令集系統結構(缺乏)對虛擬機的支持329
5.6.3 保護和指令集系統結構329
5.7 使用有限狀態機來控制簡單的cache330
5.7.1 一個簡單的cache330
5.7.2 有限狀態機331
5.7.3 一個簡單的cache控制器的有限狀態機333
5.8 並行與存儲器層次結構:cache一致性334
5.8.1 實現一致性的基本方案335
5.8.2 監聽協定335
5.9 高級內容:實現cache控制器336
5.10 實例:AMD Opteron X4(Barcelona)和Intel Nehalem的存儲器層次結構337
5.10.1 Nehalem和Opteron的存儲器層次結構337
5.10.2 減少缺失代價的技術339
5.11 謬誤和陷阱340
5.12 本章小結342
5.13 拓展閱讀343
5.14 練習題343
第6章 存儲器和其他I/O主題355
6.1 引言355
6.2 可信度、可靠性和可用性357
6.3 磁碟存儲器359
6.4 快閃式存儲器362
6.5 連線處理器、記憶體以及I/O設備363
6.5.1 互聯基礎364
6.5.2 x86處理器的I/O互聯365
6.6 為處理器、記憶體和作業系統提供I/O設備接口366
6.6.1 給I/O設備傳送指令367
6.6.2 與處理器通信368
6.6.3 中斷優先權369
6.6.4 在設備與記憶體之間傳輸數據370
6.6.5 直接存儲器訪問和記憶體系統371
6.7 I/O性能度量:磁碟和檔案系統的例子372
6.7.1 事務處理I/O基準程式372
6.7.2 檔案系統和Web I/O的基準程式373
6.8 設計I/O系統373
6.9 並行性與I/O:廉價磁碟冗餘陣列374
6.9.1 無冗餘(RAID 0)376
6.9.2 鏡像(RAID 1)376
6.9.3 錯誤檢測和糾錯碼(RAID 2)376
6.9.4 位交叉奇偶校驗(RAID 3)376
6.9.5 塊交叉奇偶校驗(RAID 4)376
6.9.6 分散式塊交叉奇偶校驗(RAID 5)377
6.9.7 P+Q冗餘(RAID 6)378
6.9.8 RAID小結378
6.10 實例:Sun Fire x4150伺服器379
6.11 高級主題:網路383
6.12 謬誤與陷阱383
6.13 本章小結386
6.14 拓展閱讀387
6.15 練習題387
第7章 多核、多處理器和集群394
7.1 引言394
7.2 創建並行處理程式的難點396
7.3 共享存儲多處理器398
7.4 集群和其他訊息傳遞多處理器400
7.5 硬體多執行緒403
7.6 SISD、MIMD、SIMD、SPMD和向量機404
7.6.1 在x86中的SIMD:多媒體擴展405
7.6.2 向量機406
7.6.3 向量與標量的對比407
7.6.4 向量與多媒體擴展的對比408
7.7 圖形處理單元簡介408
7.7.1 NVIDIA GPU體系結構簡介410
7.7.2 深入理解GPU411
7.8 多處理器網路拓撲簡介412
7.9 多處理器基準測試程式415
7.10 Roofline:一個簡單的性能模型417
7.10.1 Roofline模型418
7.10.2 兩代Opteron的比較419
7.11 實例:使用屋頂線模型評估四種多核處理器422
7.11.1 4個多核系統422
7.11.2 稀疏矩陣424
7.11.3 結構化格線425
7.11.4 生產率426
7.12 謬誤與陷阱427
7.13 本章小結428
7.14 拓展閱讀429
7.15 練習題429
附錄A 圖形和計算GPU439
A.1 引言439
A.1.1 GPU發展簡史439
A.1.2 異構系統440
A.1.3 GPU發展成了可擴展的並行處理器440
A.1.4 為什麼使用CUDA和GPU計算440
A.1.5 GPU統一了圖形和計算441
A.1.6 GPU可視化計算的套用441
A.2 GPU系統架構441
A.2.1 異構CPU-GPU系統架構442
A.2.2 GPU接口和驅動443
A.2.3 圖形邏輯流水線443
A.2.4 將圖形流水線映射到統一的GPU處理器443
A.2.5 基本的統一GPU結構444
A.3 可程式GPU445
A.3.1 為實時圖形編程446
A.3.2 邏輯圖形流水線446
A.3.3 圖形渲染程式447
A.3.4 像素渲染示例447
A.3.5 並行計算套用編程448
A.3.6 使用CUDA進行可擴展並行編程449
A.3.7 一些限制453
A.3.8 體系結構隱含的問題453
A.4 多執行緒的多處理器架構454
A.4.1 大規模多執行緒454
A.4.2 多處理器體系結構455
A.4.3 單指令多執行緒(SIMT)456
A.4.4 SIMT warp執行和分支457
A.4.5 管理執行緒和執行緒塊457
A.4.6 執行緒指令458
A.4.7 指令集架構(ISA)458
A.4.8 流處理器(SP)461
A.4.9 特殊功能單元(SFU)461
A.4.10 與其他多處理器的比較461
A.4.11 多執行緒多處理器總結462
A.5 並行存儲系統462
A.5.1 DRAM的考慮462
A.5.2 cache463
A.5.3 MMU463
A.5.4 存儲器空間463
A.5.5 全局存儲器463
A.5.6 共享存儲器464
A.5.7 局部存儲器464
A.5.8 常量存儲器464
A.5.9 紋理存儲器464
A.5.10 表面465
A.5.11 load/store訪問465
A.5.12 ROP465
A.6 浮點算術465
A.6.1 支持的格式465
A.6.2 基本算術465
A.6.3 專用算術466
A.6.4 性能467
A.6.5 雙精度467
A.7 資料:NVIDIA GeForce 8800468
A.7.1 流處理器陣列(SPA)468
A.7.2 紋理/處理器簇(TPC)469
A.7.3 流多處理器(SM)470
A.7.4 指令集471
A.7.5 流處理器(SP)471
A.7.6 特殊功能單元(SFU)471
A.7.7 光柵化471
A.7.8 光柵操作處理器(ROP)和存儲系統471
A.7.9 可擴展性472
A.7.10 性能472
A.7.11 密集線性代數性能472
A.7.12 FFT性能473
A.7.13 排序性能474
A.8 資料:將套用映射到GPU474
A.8.1 稀疏矩陣475
A.8.2 在共享存儲器中進行快取477
A.8.3 掃描和歸約478
A.8.4 基數排序480
A.8.5 GPU上的N-Body套用482
A.9 謬誤與陷阱486
A.10 小結489
A.11 拓展閱讀489
附錄B 彙編器、連結器和SPIM仿真器490
B.1 引言490
B.1.1 什麼時候使用彙編語言493
B.1.2 彙編語言的缺點493
B.2 彙編器494
B.2.1 目標檔案的格式495
B.2.2 附加工具496
B.3 連結器498
B.4 載入499
B.5 記憶體的使用499
B.6 過程調用規範500
B.6.1 過程調用502
B.6.2 過程調用舉例503
B.6.3 另外一個過程調用的例子505
B.7 異常和中斷507
B.8 輸入和輸出509
B.9 SPIM511
B.10 MIPS R2000彙編語言513
B.10.1 定址方式514
B.10.2 彙編語法515
B.10.3 MIPS指令編碼515
B.10.4 指令格式516
B.10.5 常數操作指令520
B.10.6 比較指令520
B.10.7 分支指令521
B.10.8 跳轉指令523
B.10.9 陷阱指令523
B.10.10 取數指令525
B.10.11 保存指令526
B.10.12 數據傳送指令527
B.10.13 浮點運算指令528
B.10.14 異常和中斷指令532
B.11 小結533
B.12 參考文獻533
B.13 練習題533
英文版
書名:計算機組成與設計:硬體/軟體接口(英文版·第4版)
叢書名:經典原版書庫
原文書名:Computer Organizationand Design,The Hardware/SoftwareInterface,FourthEdition
作者::(美)David A. PattersonJohn L. Hennessy著
ISBN: 978-7-111-41237-3
定價:139.00元
出版日期:2013年2月
出版社:機械工業出版社
1 computer abstractions and technology 2
1.1 introduction 3
1.2 belowyour program 10
1.3 under the covers 13
1.4 performance 26
1.5 the power wall 39
1.6 the sea change: the switch from uniprocessors to multiprocessors 41
1.7 real stuff: manufacturing and benchmarking the amd opteron x4 44
1.8 fallacies and pitfalls 51
1.9 concluding remarks 54
1.10 historical perspective and further reading 55
1.11 exercises 56
2 instructions: language of the computer 74
2.1 introduction 76
2.2 operations of the computer hardware 77
2.3 operands of the computer hardware 80
2.4 signed and unsigned numbers 87
2.5 representing instructions in the computer 94
2.6 logical operations 102
.2.7 instructions for making decisions 105
2.8 supporting procedures in computer hardware 112
2.9 communicating with people 122
2.10 mips addressing for 32-bit immediates and addresses 128
2.11 parallelism and instructions: synchronization 137
2.12 translating and starting a program 139
2.13 a c sort example to put it all together 149
2.14 arrays versus pointers 157
2.15 advanced material: compiling c and interpreting java
2.16 real stuff: arm instructions 161
2.17 real stuff: x86 instructions 165
2.18 fallacies and pitfalls 174
2.19 concluding remarks 176
2.20 historical perspective and further reading 179
2.21 exercises 179
3 arithmetic for computers 222
3.1 introduction 224
3.2 addition and subtraction 224
3.3 multiplication 230
3.4 division 236
3.5 floating point 242
3.6 parallelism and computer arithmetic: associativity 270
3.7 real stuff: floating point in the x86 272
3.8 fallacies and pitfalls 275
3.9 concluding remarks 280
3.10 historical perspective and further reading 283
3.11 exercises 283
4 the processor 298
4.1 introduction 300
4.2 logic design conventions 303
4.3 building a datapath 307
4.4 a simple implementation scheme 316
4.5 an overview of pipelining 330
4.6 pipelined datapath and control 344
4.7 data hazards: forwarding versus stalling 363
4.8 control hazards 375
4.9 exceptions 384
4.10 parallelism and advanced instruction-level parallelism 391
4.11 real stuff: the amd opteron x4 (barcelona) pipeline 404
4.12 advanced topic: an introduction to digital design using a hardware design language to describe and model a pipeline and more pipelining illustrations 406
4.13 fallacies and pitfalls 407
4.14 concluding remarks 408
4.15 historical perspective and further reading 409
4.16 exercises 409
5 large and fast: exploiting memory hierarchy 450
5.1 introduction 452
5.2 the basics of caches 457
5.3 measuring and improving cache performance 475
5.4 virtual memory 492
5.5 a common framework for memory hierarchies 518
5.6 virtual machines 525
5.7 using a finite-state machine to control a simple cache 529
5.8 parallelism and memory hierarchies: cache coherence 534
5.9 advanced material: implementing cache controllers 538
5.10 real stuff: the amd opteron x4 (barcelona) and intel nehalem memory hierarchies 539
5.11 fallacies and pitfalls 543
5.12 concluding remarks 547
5.13 historical perspective and further reading 548
5.14 exercises 548
6 storage and other i/0 topics 568
6.1 introduction 570
6.2 dependability, reliability, and availability 573
6.3 disk storage 575
6.4 flash storage 580
6.5 connecting processors, memory, and i/o devices 582
6.6 interfacing i/o devices to the processor, memory, and operating system 586
6.7 i/o performance measures: examples from disk and file systems 596
6.8 designing an i/o system 598
6.9 parallelism and i/o: redundant arrays of inexpensive disks 599
6.10 real stuff: sun fire x4150 server 606
6.11 advanced topics: networks 612
6.12 fallacies and pitfalls 613
6.13 concluding remarks 617
6.14 historical perspective and further reading 618
6.15 exercises 619
7 multicores, muluprocessors, and clusters 630
7.1 introduction 632
7.2 the difficulty of creating parallel processing programs 634
7.3 shared memory multiprocessors 638
7.4 clusters and other message-passing multiprocessors 641
7.5 hardware multithreading 645
7.6 sisd, mimd, simd, spmd, and vector 648
7.7 introduction to graphics processing units 654
7.8 introduction to multiprocessor network topologies 660
7.9 multiprocessor benchmarks 664
7.10 roofiine: a simple performance model 667
7.11 real stuff: benchmarking four multicores using the roofline model 675
7.12 fallacies and pitfalls 684
7.13 concluding remarks 686
7.14 historical perspective and further reading 688
7.15 exercises 688
appendices
a graphics and computing gpus a-2
a.1 introduction a-3
a.2 gpu system architectures a-7
a.3 programming gpus a-12
a.4 multithreaded multiprocessor architecture a-25
a.5 parallel memory system a-36
a.6 floating point arithmetic a-41
a.7 real stuff: the nvidia geforce 8800 a-46
a.8 real stuff: mapping applications to gpus a-55
a.9 fallacies and pitfalls a-72
a.10 concluding remarks a-76
a.11 historical perspective and further reading a-77
b assemblers, linkers, and the spim simulator
b.1 introduction b-3
b.2 assemblers b-10
b.3 linkers b-18
b.4 loading b-19
b.5 memory usage b-20
b.6 procedure call convention b-22
b.7 exceptions and interrupts b-33
b.8 input and output b-38
b.9 spim b-40
b.10 mips r2000 assembly language b-45
b.11 concluding remarks b-81
b.12 exercises b-82
index i-1
cd-rom content
c the basics of logic design c-2
c.1 introduction c-3
c.2 gates, truth tables, and logic equations c-4
c.3 combinational logic c-9
c.4 using a hardware description language c-20
c.5 constructing a basic arithmetic logic unit c-26
c.6 faster addition: carry lookahead c-38
c.7 clocks c-48
c.8 memory elements: flip-flops, latches, and registers c-50
c.9 memory elements: srams and drams c-58
c.10 finite-state machines c-67
c.11 timing methodologies c-72
c.12 field programmable devices c-78
c.13 concluding remarks c-79
c.14 exercises c-80
d mapping control to hardware d-2
d.1 introduction d-3
d.2 implementing combinational control units d-4
d.3 implementing finite-state machine control d-8
d.4 implementing the next-state function with a sequencer d-22
d.5 translating a microprogram to hardware d-28
d.6 concluding remarks d-32
d.7 exercises d-33
e a survey of risc architectures for desktop,server, and embedded computers e-2
e.1 introduction e-3
e.2 addressing modes and instruction formats e-5
e.3 instructions: the mips core subset e-9
e.4 instructions: multimedia extensions of the desktop/server riscs e-16
e.5 instructions: digital signal-processing extensions of the embedded riscs e-19
e.6 instructions: common extensions to mips core e-2(
e.7 instructions unique to mips-64 e-25
e.8 instructions unique to alpha e-27
e.9 instructions unique to sparc v.9 e-29
e.10 instructions unique to powerpc e-32
e.11 instructions unique to pa-risc 2.0 e-34
e.12 rnstructions unique to arm e-36
e.13 instructions unique to thumb e-38
e.14 instructions unique to superh e-39
e.15 instructions unique to m32r e-40
e.16 instructions unique to mips-16 e-40
e.17 concluding remarks e-43
glossary g-1
further reading fr-1