登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入   新用戶註冊
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / 物流,時效:出貨後2-4日

2024年10月出版新書

2024年09月出版新書

2024年08月出版新書

2024年07月出版新書

2024年06月出版新書

2024年05月出版新書

2024年04月出版新書

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

『簡體書』计算机组成与设计:硬件/软件接口(原书第5版·ARM版)

書城自編碼: 3276523
分類: 簡體書→大陸圖書→教材研究生/本科/专科教材
作者: [美]大卫·A. 帕特森[David A. Patterso
國際書號(ISBN): 9787111608943
出版社: 机械工业出版社
出版日期: 2018-10-01


書度/開本: 16开 釘裝: 平装

售價:NT$ 904

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
清洁
《 清洁 》

售價:NT$ 296.0
组队:超级个体时代的协作方式
《 组队:超级个体时代的协作方式 》

售價:NT$ 352.0
第十三位陪审员
《 第十三位陪审员 》

售價:NT$ 245.0
微观经济学(第三版)【2024诺贝尔经济学奖获奖者作品】
《 微观经济学(第三版)【2024诺贝尔经济学奖获奖者作品】 》

售價:NT$ 709.0
Python贝叶斯深度学习
《 Python贝叶斯深度学习 》

售價:NT$ 407.0
文本的密码:社会语境中的宋代文学
《 文本的密码:社会语境中的宋代文学 》

售價:NT$ 306.0
启微·狂骉年代:西洋赛马在中国
《 启微·狂骉年代:西洋赛马在中国 》

售價:NT$ 357.0
有趣的中国古建筑
《 有趣的中国古建筑 》

售價:NT$ 305.0

建議一齊購買:

+

NT$ 822
《 计算机组成与设计:硬件/软件接口(原书第5版) 》
+

NT$ 891
《 计算机组成:结构化方法(原书第6版,用结构化方法来介绍计算机系统,以反映当今最重要的计算机技术以及计算机组成和体系结构方面的最新进展) 》
+

NT$ 1251
《 计算机组成与设计:硬件/软件接口(MIPS版)(英文版 第5版) 》
+

NT$ 1014
《 计算机体系结构:量化研究方法(第5版) 》
內容簡介:
本书由2017年图灵奖得主Patterson和Hennessy共同撰写,是计算机体系结构领域的经典教材,强调软硬件协同设计及其对性能的影响。本书采用ARMv8体系结构,讲解硬件技术、汇编语言、计算机算术运算、流水线、存储器层次结构以及IO的基本原理。新内容涵盖平板电脑、云基础设施、ARM(移动计算设备)以及x86(云计算)体系结构,新实例包括IntelCorei7、ARMCortex-A53以及NVIDIAFermiGPU。本书适合作为高等院校计算机专业的教材,也适合广大专业技术人员参考。
關於作者:
第1章 计算机的抽象与技术1
1.1 引言1
1.1.1 计算机应用的分类和特点2
1.1.2 欢迎来到后PC时代3
1.1.3 你能从本书中学到什么4
1.2 计算机体系结构中的8个伟大思想6
1.2.1 面向摩尔定律的设计6
1.2.2 使用抽象简化设计7
1.2.3 加速大概率事件7出版者的话
赞誉
译者序
前言
作者简介
第1章 计算机的抽象与技术1
1.1 引言1
1.1.1 计算机应用的分类和特点2
1.1.2 欢迎来到后PC时代3
1.1.3 你能从本书中学到什么4
1.2 计算机体系结构中的8个伟大思想6
1.2.1 面向摩尔定律的设计6
1.2.2 使用抽象简化设计7
1.2.3 加速大概率事件7
1.2.4 通过并行提高性能7
1.2.5 通过流水线提高性能7
1.2.6 通过预测提高性能7
1.2.7 存储器层次结构7
1.2.8 通过冗余提高可靠性7
1.3 程序表象之下8
1.4 硬件包装之下10
1.4.1 显示器11
1.4.2 触摸屏12
1.4.3 打开机箱13
1.4.4 数据的安全存储15
1.4.5 与其他计算机通信16
1.5 处理器和存储器制造技术17
1.6 性能20
1.6.1 性能的定义20
1.6.2 性能的度量22
1.6.3 CPU的性能及其度量因素24
1.6.4 指令的性能24
1.6.5 经典的CPU性能公式25
1.7 功耗墙28
1.8 沧海巨变:从单处理器向多处理器转变29
1.9 实例:Intel Core i7基准测试32
1.9.1 SPEC CPU基准测试程序32
1.9.2 SPEC功耗基准测试程序34
1.10 谬误与陷阱34
1.11 本章小结36
1.12 历史观点与拓展阅读37
1.13 练习题38
第2章 指令:计算机的语言42
2.1 引言42
2.2 计算机硬件的操作44
2.3 计算机硬件的操作数46
2.3.1 存储器操作数47
2.3.2 常数或立即数操作数50
2.4 有符号数和无符号数51
2.5 计算机中指令的表示56
2.6 逻辑操作61
2.7 决策指令64
2.7.1 循环65
2.7.2 边界检查的简便方法67
2.7.3 caseswitch语句67
2.8 计算机硬件对过程的支持68
2.8.1 使用更多的寄存器69
2.8.2 过程嵌套71
2.8.3 在栈中为新数据分配空间73
2.8.4 在堆中为新数据分配空间74
2.9 人机交互76
2.10 LEGv8中的宽立即数和地址的寻址79
2.10.1 宽立即数79
2.10.2 分支中的寻址80
2.10.3 LEGv8寻址模式总结82
2.10.4 机器语言解码82
2.11 并行与指令:同步86
2.12 翻译并启动程序88
2.12.1 编译器88
2.12.2 汇编器89
2.12.3 链接器90
2.12.4 加载器92
2.12.5 动态链接库92
2.12.6 启动Java程序94
2.13 综合实例:C排序程序95
2.13.1 swap过程95
2.13.2 sort过程97
2.14 数组和指针101
2.14.1 用数组实现clear102
2.14.2 用指针实现clear102
2.14.3 比较两个版本的clear103
2.15 高级主题:编译C和解释Java104
2.16 实例:MIPS指令集104
2.17 实例:ARMv7(32位)指令集105
2.18 实例:x86指令集106
2.18.1 Intel x86的演进107
2.18.2 x86寄存器和数据寻址模式108
2.18.3 x86整数操作110
2.18.4 x86指令编码112
2.18.5 x86总结112
2.19 实例:ARMv8指令集的其他部分113
2.19.1 完整的ARMv8整数算术逻辑指令114
2.19.2 完整的ARMv8整数数据传输指令116
2.19.3 完整的ARMv8分支指令117
2.20 谬误与陷阱118
2.21 本章小结119
2.22 历史观点与拓展阅读121
2.23 练习题121
第3章 计算机的算术运算128
3.1 引言128
3.2 加法和减法128
3.3 乘法131
3.3.1 顺序乘法算法及硬件131
3.3.2 有符号乘法134
3.3.3 更快速的乘法134
3.3.4 LEGv8中的乘法134
3.3.5 小结135
3.4 除法135
3.4.1 除法算法及硬件135
3.4.2 有符号除法137
3.4.3 更快速的除法138
3.4.4 LEGv8中的除法138
3.4.5 小结139
3.5 浮点运算140
3.5.1 浮点表示141
3.5.2 异常和中断142
3.5.3 IEEE 754浮点标准142
3.5.4 浮点加法145
3.5.5 浮点乘法148
3.5.6 LEGv8中的浮点指令150
3.5.7 算术精确性154
3.5.8 小结156
3.6 并行与计算机算术:子字并行157
3.7 实例:x86中的流处理SIMD扩展和高级向量扩展158
3.8 实例:其他的ARMv8算术指令160
3.8.1 完整的ARMv8整数和浮点算术指令160
3.8.2 完整的ARMv8 SIMD指令161
3.9 加速:子字并行和矩阵乘法163
3.10 谬误与陷阱166
3.11 本章小结168
3.12 历史观点与拓展阅读171
3.13 练习题171
第4章 处理器175
4.1 引言175
4.1.1 一种基本的LEGv8实现176
4.1.2 实现概述176
4.2 逻辑设计的一般方法178
4.3 建立数据通路180
4.4 一种简单的实现机制187
4.4.1 ALU控制187
4.4.2 主控制单元的设计188
4.4.3 数据通路的操作191
4.4.4 完成控制单元194
4.4.5 为什么不使用单周期实现195
4.5 流水线概述197
4.5.1 面向流水线的指令集设计200
4.5.2 流水线冒险200
4.5.3 流水线概述小结206
4.6 流水线数据通路及其控制207
4.6.1 图形化表示的流水线215
4.6.2 流水线控制218
4.7 数据冒险:旁路与阻塞221
4.8 控制冒险231
4.8.1 假定分支不发生231
4.8.2 减少分支延迟232
4.8.3 动态分支预测234
4.8.4 流水线小结236
4.9 异常236
4.9.1 LEGv8体系结构中的异常处理237
4.9.2 流水线实现中的异常238
4.10 指令级并行241
4.10.1 推测的概念242
4.10.2 静态多发射243
4.10.3 动态多发射246
4.10.4 动态流水线调度247
4.10.5 能耗效率与高级流水线249
4.11 实例:ARM Cortex-A53和Intel Core i7流水线250
4.11.1 ARM Cortex-A53251
4.11.2 Intel Core i7 920253
4.11.3 Intel Core i7 920的性能255
4.12 加速:指令级并行和矩阵乘法256
4.13 高级主题:采用硬件设计语言描述和建模流水线的数字设计技术以及更多流水线示例258
4.14 谬误与陷阱258
4.15 本章小结259
4.16 历史观点与拓展阅读260
4.17 练习题260
第5章 大容量和高速度:开发存储器层次结构271
5.1 引言271
5.2 存储器技术275
5.2.1 SRAM技术275
5.2.2 DRAM技术275
5.2.3 闪存277
5.2.4 磁盘存储器277
5.3 cache的基本原理279
5.3.1 cache访问280
5.3.2 cache缺失处理285
5.3.3 写操作处理285
5.3.4 cache实例:Intrinsity FastMATH处理器287
5.3.5 小结289
5.4 cache性能的评估和改进289
5.4.1 通过更灵活的块放置策略来减少cache缺失292
5.4.2 在cache中查找块295
5.4.3 替换块的选择296
5.4.4 使用多级cache减少缺失代价297
5.4.5 通过分块进行软件优化299
5.4.6 小结303
5.5 可信存储器层次结构303
5.5.1 失效的定义303
5.5.2 纠1检2汉明码(SECDED)305
5.6 虚拟机308
5.6.1 虚拟机监视器的要求309
5.6.2 指令集体系结构(缺乏)对虚拟机的支持309
5.6.3 保护和指令集体系结构310
5.7 虚拟存储器310
5.7.1 页的存放和查找313
5.7.2 缺页故障315
5.7.3 用于大型虚拟地址的虚拟内存316
5.7.4 关于写318
5.7.5 加快地址转换:TLB318
5.7.6 Intrinsity FastMATH TLB319
5.7.7 集成虚拟存储器、TLB和cache322
5.7.8 虚拟存储器中的保护323
5.7.9 处理TLB缺失和缺页324
5.7.10 小结326
5.8 存储器层次结构的一般框架328
5.8.1 问题1:块放在何处328
5.8.2 问题2:如何找到块329
5.8.3 问题3:cache缺失时替换哪一块330
5.8.4 问题4:写操作如何处理330
5.8.5 3C:一种理解存储器层次结构行为的直观模型331
5.9 使用有限状态机控制简单的cache332
5.9.1 一个简单的cache333
5.9.2 有限状态机333
5.9.3 一个简单cache控制器的有限状态机335
5.10 并行与存储器层次结构:cache一致性336
5.10.1 实现一致性的基本方案337
5.10.2 监听协议337
5.11 并行与存储器层次结构:廉价冗余磁盘阵列339
5.12 高级主题:实现cache控制器339
5.13 实例:ARM Cortex-A53和Intel Core i7的存储器层次结构339
5.14 实例:ARMv8系统的剩余部分以及特殊指令343
5.15 加速:cache分块和矩阵乘法345
5.16 谬误与陷阱346
5.17 本章小结349
5.18 历史观点与拓展阅读350
5.19 练习题350
第6章 并行处理器:从客户端到云362
6.1 引言362
6.2 创建并行处理程序的难点364
6.3 SISD、MIMD、SIMD、SPMD和向量367
6.3.1 x86中的SIMD:多媒体扩展368
6.3.2 向量368
6.3.3 向量与标量370
6.3.4 向量与多媒体扩展370
6.4 硬件多线程372
6.5 多核和其他共享内存多处理器375
6.6 图形处理单元378
6.6.1 NVIDIA GPU体系结构简介379
6.6.2 NVIDIA GPU存储结构380
6.6.3 正确理解GPU381
6.7 集群、仓储式计算机和其他消息传递多处理器383
6.8 多处理器网络拓扑简介386
6.9 与外界通信:集群网络389
6.10 多处理器基准测试程序和性能模型389
6.10.1 性能模型391
6.10.2 Roof?line模型392
6.10.3 两代Opteron的比较393
6.11 实例:Intel Core i7 960
 和NVIDIA Tesla GPU的评测及Roof?line模型396
6.12 加速:多处理器和矩阵乘法399
6.13 谬误与陷阱402
6.14 本章小结403
6.15 历史观点与拓展阅读405
6.16 练习题405
附录A 逻辑设计基础414
索引470
网络内容
附录B 图形处理单元
附录C 控制器的硬件实现
附录D RISC指令集体系结构
术语表
扩展阅读
目錄
出版者的话
赞誉
译者序
前言
作者简介
第1章 计算机的抽象与技术1
1.1 引言1
1.1.1 计算机应用的分类和特点2
1.1.2 欢迎来到后PC时代3
1.1.3 你能从本书中学到什么4
1.2 计算机体系结构中的8个伟大思想6
1.2.1 面向摩尔定律的设计6
1.2.2 使用抽象简化设计7
1.2.3 加速大概率事件7
1.2.4 通过并行提高性能7
1.2.5 通过流水线提高性能7
1.2.6 通过预测提高性能7
1.2.7 存储器层次结构7
1.2.8 通过冗余提高可靠性7
1.3 程序表象之下8
1.4 硬件包装之下10
1.4.1 显示器11
1.4.2 触摸屏12
1.4.3 打开机箱13
1.4.4 数据的安全存储15
1.4.5 与其他计算机通信16
1.5 处理器和存储器制造技术17
1.6 性能20
1.6.1 性能的定义20
1.6.2 性能的度量22
1.6.3 CPU的性能及其度量因素24
1.6.4 指令的性能24
1.6.5 经典的CPU性能公式25
1.7 功耗墙28
1.8 沧海巨变:从单处理器向多处理器转变29
1.9 实例:Intel Core i7基准测试32
1.9.1 SPEC CPU基准测试程序32
1.9.2 SPEC功耗基准测试程序34
1.10 谬误与陷阱34
1.11 本章小结36
1.12 历史观点与拓展阅读37
1.13 练习题38
第2章 指令:计算机的语言42
2.1 引言42
2.2 计算机硬件的操作44
2.3 计算机硬件的操作数46
2.3.1 存储器操作数47
2.3.2 常数或立即数操作数50
2.4 有符号数和无符号数51
2.5 计算机中指令的表示56
2.6 逻辑操作61
2.7 决策指令64
2.7.1 循环65
2.7.2 边界检查的简便方法67
2.7.3 caseswitch语句67
2.8 计算机硬件对过程的支持68
2.8.1 使用更多的寄存器69
2.8.2 过程嵌套71
2.8.3 在栈中为新数据分配空间73
2.8.4 在堆中为新数据分配空间74
2.9 人机交互76
2.10 LEGv8中的宽立即数和地址的寻址79
2.10.1 宽立即数79
2.10.2 分支中的寻址80
2.10.3 LEGv8寻址模式总结82
2.10.4 机器语言解码82
2.11 并行与指令:同步86
2.12 翻译并启动程序88
2.12.1 编译器88
2.12.2 汇编器89
2.12.3 链接器90
2.12.4 加载器92
2.12.5 动态链接库92
2.12.6 启动Java程序94
2.13 综合实例:C排序程序95
2.13.1 swap过程95
2.13.2 sort过程97
2.14 数组和指针101
2.14.1 用数组实现clear102
2.14.2 用指针实现clear102
2.14.3 比较两个版本的clear103
2.15 高级主题:编译C和解释Java104
2.16 实例:MIPS指令集104
2.17 实例:ARMv7(32位)指令集105
2.18 实例:x86指令集106
2.18.1 Intel x86的演进107
2.18.2 x86寄存器和数据寻址模式108
2.18.3 x86整数操作110
2.18.4 x86指令编码112
2.18.5 x86总结112
2.19 实例:ARMv8指令集的其他部分113
2.19.1 完整的ARMv8整数算术逻辑指令114
2.19.2 完整的ARMv8整数数据传输指令116
2.19.3 完整的ARMv8分支指令117
2.20 谬误与陷阱118
2.21 本章小结119
2.22 历史观点与拓展阅读121
2.23 练习题121
第3章 计算机的算术运算128
3.1 引言128
3.2 加法和减法128
3.3 乘法131
3.3.1 顺序乘法算法及硬件131
3.3.2 有符号乘法134
3.3.3 更快速的乘法134
3.3.4 LEGv8中的乘法134
3.3.5 小结135
3.4 除法135
3.4.1 除法算法及硬件135
3.4.2 有符号除法137
3.4.3 更快速的除法138
3.4.4 LEGv8中的除法138
3.4.5 小结139
3.5 浮点运算140
3.5.1 浮点表示141
3.5.2 异常和中断142
3.5.3 IEEE 754浮点标准142
3.5.4 浮点加法145
3.5.5 浮点乘法148
3.5.6 LEGv8中的浮点指令150
3.5.7 算术精确性154
3.5.8 小结156
3.6 并行与计算机算术:子字并行157
3.7 实例:x86中的流处理SIMD扩展和高级向量扩展158
3.8 实例:其他的ARMv8算术指令160
3.8.1 完整的ARMv8整数和浮点算术指令160
3.8.2 完整的ARMv8 SIMD指令161
3.9 加速:子字并行和矩阵乘法163
3.10 谬误与陷阱166
3.11 本章小结168
3.12 历史观点与拓展阅读171
3.13 练习题171
第4章 处理器175
4.1 引言175
4.1.1 一种基本的LEGv8实现176
4.1.2 实现概述176
4.2 逻辑设计的一般方法178
4.3 建立数据通路180
4.4 一种简单的实现机制187
4.4.1 ALU控制187
4.4.2 主控制单元的设计188
4.4.3 数据通路的操作191
4.4.4 完成控制单元194
4.4.5 为什么不使用单周期实现195
4.5 流水线概述197
4.5.1 面向流水线的指令集设计200
4.5.2 流水线冒险200
4.5.3 流水线概述小结206
4.6 流水线数据通路及其控制207
4.6.1 图形化表示的流水线215
4.6.2 流水线控制218
4.7 数据冒险:旁路与阻塞221
4.8 控制冒险231
4.8.1 假定分支不发生231
4.8.2 减少分支延迟232
4.8.3 动态分支预测234
4.8.4 流水线小结236
4.9 异常236
4.9.1 LEGv8体系结构中的异常处理237
4.9.2 流水线实现中的异常238
4.10 指令级并行241
4.10.1 推测的概念242
4.10.2 静态多发射243
4.10.3 动态多发射246
4.10.4 动态流水线调度247
4.10.5 能耗效率与高级流水线249
4.11 实例:ARM Cortex-A53和Intel Core i7流水线250
4.11.1 ARM Cortex-A53251
4.11.2 Intel Core i7 920253
4.11.3 Intel Core i7 920的性能255
4.12 加速:指令级并行和矩阵乘法256
4.13 高级主题:采用硬件设计语言描述和建模流水线的数字设计技术以及更多流水线示例258
4.14 谬误与陷阱258
4.15 本章小结259
4.16 历史观点与拓展阅读260
4.17 练习题260
第5章 大容量和高速度:开发存储器层次结构271
5.1 引言271
5.2 存储器技术275
5.2.1 SRAM技术275
5.2.2 DRAM技术275
5.2.3 闪存277
5.2.4 磁盘存储器277
5.3 cache的基本原理279
5.3.1 cache访问280
5.3.2 cache缺失处理285
5.3.3 写操作处理285
5.3.4 cache实例:Intrinsity FastMATH处理器287
5.3.5 小结289
5.4 cache性能的评估和改进289
5.4.1 通过更灵活的块放置策略来减少cache缺失292
5.4.2 在cache中查找块295
5.4.3 替换块的选择296
5.4.4 使用多级cache减少缺失代价297
5.4.5 通过分块进行软件优化299
5.4.6 小结303
5.5 可信存储器层次结构303
5.5.1 失效的定义303
5.5.2 纠1检2汉明码(SECDED)305
5.6 虚拟机308
5.6.1 虚拟机监视器的要求309
5.6.2 指令集体系结构(缺乏)对虚拟机的支持309
5.6.3 保护和指令集体系结构310
5.7 虚拟存储器310
5.7.1 页的存放和查找313
5.7.2 缺页故障315
5.7.3 用于大型虚拟地址的虚拟内存316
5.7.4 关于写318
5.7.5 加快地址转换:TLB318
5.7.6 Intrinsity FastMATH TLB319
5.7.7 集成虚拟存储器、TLB和cache322
5.7.8 虚拟存储器中的保护323
5.7.9 处理TLB缺失和缺页324
5.7.10 小结326
5.8 存储器层次结构的一般框架328
5.8.1 问题1:块放在何处328
5.8.2 问题2:如何找到块329
5.8.3 问题3:cache缺失时替换哪一块330
5.8.4 问题4:写操作如何处理330
5.8.5 3C:一种理解存储器层次结构行为的直观模型331
5.9 使用有限状态机控制简单的cache332
5.9.1 一个简单的cache333
5.9.2 有限状态机333
5.9.3 一个简单cache控制器的有限状态机335
5.10 并行与存储器层次结构:cache一致性336
5.10.1 实现一致性的基本方案337
5.10.2 监听协议337
5.11 并行与存储器层次结构:廉价冗余磁盘阵列339
5.12 高级主题:实现cache控制器339
5.13 实例:ARM Cortex-A53和Intel Core i7的存储器层次结构339
5.14 实例:ARMv8系统的剩余部分以及特殊指令343
5.15 加速:cache分块和矩阵乘法345
5.16 谬误与陷阱346
5.17 本章小结349
5.18 历史观点与拓展阅读350
5.19 练习题350
第6章 并行处理器:从客户端到云362
6.1 引言362
6.2 创建并行处理程序的难点364
6.3 SISD、MIMD、SIMD、SPMD和向量367
6.3.1 x86中的SIMD:多媒体扩展368
6.3.2 向量368
6.3.3 向量与标量370
6.3.4 向量与多媒体扩展370
6.4 硬件多线程372
6.5 多核和其他共享内存多处理器375
6.6 图形处理单元378
6.6.1 NVIDIA GPU体系结构简介379
6.6.2 NVIDIA GPU存储结构380
6.6.3 正确理解GPU381
6.7 集群、仓储式计算机和其他消息传递多处理器383
6.8 多处理器网络拓扑简介386
6.9 与外界通信:集群网络389
6.10 多处理器基准测试程序和性能模型389
6.10.1 性能模型391
6.10.2 Roof?line模型392
6.10.3 两代Opteron的比较393
6.11 实例:Intel Core i7 960
 和NVIDIA Tesla GPU的评测及Roof?line模型396
6.12 加速:多处理器和矩阵乘法399
6.13 谬误与陷阱402
6.14 本章小结403
6.15 历史观点与拓展阅读405
6.16 练习题405
附录A 逻辑设计基础414
索引470
网络内容
附录B 图形处理单元
附录C 控制器的硬件实现
附录D RISC指令集体系结构
术语表
扩展阅读
內容試閱
神秘是我们所能体验的最美好的事物,它是所有真正的艺术和科学的源泉。
—阿尔伯特·爱因斯坦,《我的信仰》,1930年
关于本书
我们学习计算机科学与工程时,不仅需要了解这个领域内的最新进展,同时也需要掌握计算技术背后的基本原理和组成结构。计算机系统的组成决定了系统的功能和性能,是系统成功与否的关键。因此,计算领域各个方向的读者都能从计算机系统组成理论的学习中
受益。
随着现代计算机技术的发展,计算领域的各个方向都需要对硬件和软件均有深入理解的专业人士。硬件和软件在各个层次上的相互关系,为理解计算技术的基本原理提供了框架。无论你感兴趣的是硬件还是软件,是计算机科学还是电气工程,计算机组成与设计的核心思想都是相同的。因此,本书着重展示计算机硬件与软件间的相互关系,并重点介绍当今计算机中的基础概念。
当前,微处理器由单核发展为多核,这一趋势印证了本书自第1版就提出的观点。过去,程序员可以忽略我们的建议,在计算机体系结构专家、编译器开发者以及芯片工程师的帮助下,他们一行代码也不用修改,就能让程序更快或更高效地运行在新型微处理器上。但是,这样的时代已经一去不返了。为了使程序运行得更快,就必须要实现并行化。虽然许多研究者的目标是希望程序员在编写程序时无须考虑底层硬件的并行特性,但这一目标还要很多年才能实现。我们认为,至少在下一个十年里,大多数程序员仍必须理解硬件软件接口,才能编写出在并行计算机上高效运行的程序。
本书适合以下读者:在汇编语言或(数字)逻辑设计方面只有少许经验,需要对计算机组成的基本原理有所理解;具有汇编语言或逻辑设计基础,需要学习如何设计计算机,或者需要进一步理解计算机系统是如何工作的。
与本书相关的另一本书
有些读者可能对《计算机体系结构:量化研究方法》一书有所了解,也就是人们常说的“Hennessy and Patterson”(本书则常被称为“Patterson and Hennessy”)。我们撰写“量化研究方法”那本书,意在通过坚实的工程基础和量化的开销性能权衡方法来描述计算机体系结构的原理。书中以商用系统为基础,将案例和测量方法相结合,以期帮助读者积累实际的设计经验。我们希望阐明的是,计算机体系结构可以通过“量化”的方法而不是“描述”的方法来学习。因此,它主要面向需要对计算机体系结构有详细了解的计算机专业人士。
本书的大多数读者可能并不打算成为计算机体系结构专家。然而,软件设计人员对底层硬件技术的理解程度,将对软件系统的性能和能效产生显著影响。因此,编译器开发者、操作系统设计者、数据库程序员以及其他大多数软件工程师都应当对本书所介绍的原理有充分了解。同样,硬件设计人员也必须清楚地理解他们的工作将对软件应用产生何种影响。
因此,本书绝非“量化研究方法”一书的子集,而是进行了大量扩充和修订,以满足不同层次的读者。我们在“量化研究方法”的后续版本中删除了很多介绍性的内容,较之这两本书的第1版,现在重叠的内容已经大幅减少,这是一个令人高兴的变化。
这一版为何采用ARMv8
指令集的选择对于一本计算机体系结构教科书而言是非常关键的。无论一种指令集多受欢迎,如果它对初学者来说花哨难懂,我们仍会放弃这种巴洛克式的华美。初次接触的指令集应当是指令集中的“典范”,足以被牢记心间,就像牢记初恋一样。你或许不会相信,初恋和初次接触的指令集都有令人记忆犹新的魔力。
虽然当年也有很多种指令集可供选择,但在撰写“量化研究方法”的第1版时,我们自己构造了一种RISC风格的指令集—MIPS。MIPS指令集非常简洁而且广受欢迎,因此从第1版开始,那本书的后续版本以及我们的其他相关书籍都采用MIPS指令集作为范例。MIPS一直陪伴着我们以及我们的广大读者。
当前,ARM发展速度惊人,其指令集的受欢迎程度也令人难以置信。2015年ARM芯片的出货量就达到了140亿片。很多教师提出需求,希望能够基于ARM出版一个版本。在本书亚洲版的一些章节中,我们曾做过尝试。但是,ARMv7(32位地址)指令集“怪异”的风格让我们无法忍受。因此,我们考虑不再继续采用ARMv7。
然而,让人惊喜的是,ARM推出的64位指令集有了很大的改动。较之ARMv7,新的64位指令集和MIPS有很多相似之处:
将寄存器数由16个增加为32个。
将PC设计为独立的寄存器,而不是寄存器组中的一个。
去除了指令的条件执行功能。
去除了多字连续load和store(load multiple和store multiple)指令。
增加了PC相对寻址的分支指令,支持较大的转移空间。
将所有数据传输指令的寻址模式设置为一致的。
减少了指令集的条件码。
……
虽然ARMv8比MIPS庞大得多(ARMv8指令集参考手册多达5400页),但是本书只挑选了ARMv8指令集的一个子集,这个子集在指令数量和特性上都与以前版本所采用的MIPS相似。为了避免混淆,本书将这个子集称为LEGv8。所以,本书基于LEGv8撰写了ARMv8版。
ARMv8指令集本身提供了32位地址指令和64位地址指令两种模式。我们原本可以选择ARMv8指令集并保持32位地址模式,不过我们的出版商对读者进行了调查,结论是75%的读者倾向于采用64位地址模式或者持中立态度。因此我们最终决定将地址空间扩展为64位,从目前技术发展的角度来看也更为合理。
ARM版和MIPS版的区别仅在于涉及指令集的章节,主要是第2、3、5章的虚拟存储器部分,以及第6章的VMIPS例子部分。第4章切换到了ARMv8指令,修改了若干图表,增加了一些“精解”模块,这些改动都较为简单。第1章和剩下的附录几乎没有改动。考虑到网络上大量的文档材料以及ARMv8本身的复杂度,将原来的附录A(汇编器、链接器和SPIM模拟器)从MIPS版替换为ARM版是非常困难的。对此,本书在第2、3、5章中均包含了对除ARMv8核心指令之外的其他ARMv8指令的快速概述,而这些核心指令则在其他章节中详细介绍。我们相信本书的读者即使没有阅读网络上动辄几千页的资料的经验,也依旧能够较好地理解ARMv8。其他勇于探索的读者则可以通过阅读这些概述对ARMv8形成框架性的认识,以便后续更好地理解ARMv8众多复杂的特点。
当然,我们并没有打算永久地采用ARMv8结构,例如本书第5版的ARM版和MIPS版就同时在售。本书未来的版本可能还会有对MIPS版和ARM版的需求,也可能会有包含另一种指令集的新版本出现。我们期待你的反馈。
第5版的变化
第5版有6项主要变化:
通过实例论证理解硬件的重要性。
对于第1章中提到的8个伟大思想,在后面每次应用这些思想时予以突出显示。
更新例题,体现从PC时代到后PC时代的发展变化。
将IO吞吐率方面的内容贯穿在整本书中,而不是集中在一章中阐述。
对技术内容进行了更新,体现自2009年本书第4版出版以来工业界的变化。
将附录和可选章节的内容放在互联网上(带有??图标),而不是随书附加CD,从而降低了成本,也使新版本可独立成为一部电子书。
在详细介绍第5版的变化即修订目标之前,首先看下表。该表列出了本书的主要内容,并为关注硬件和关注软件的两类读者分别进行了导读。其中,第1、4、5、6章是两类读者都需关注的。第1章讨论了能耗的重要性及其如何引发微处理器从单核向多核转变,还介绍了计算机体系结构中的8个伟大思想。第2章对于硬件方向的读者来说很可能是复习性的内容,而对于软件方向的读者来说则是必选的学习内容,特别是希望对编译器和面向对象编程语言有更多了解的读者。第3章适合对数据通路构建或浮点运算感兴趣的读者。如果你对这些内容没有兴趣,或是已经掌握了这部分知识,则可以跳过该章。不过,第3章中给出了一个矩阵乘法的实例,展示如何通过子字并行方法将性能提高4倍,因此不要跳过3.6~3.8节。第4章介绍流水线处理器。其中,4.1、4.5和4.10节为概述,4.12节给出了进一步提高矩阵乘法性能的方法,这些小节对于关注软件的读者来说比较重要。而对于关注硬件的读者,第4章是核心内容,你可以根据自己具备的硬件知识背景,选择是否先阅读附录A中的逻辑设计部分。最后一章是全新的内容,涉及多核、多处理器和集群系统,所有读者都应该阅读。我们重新组织了内容,希望能使很多技术思想的阐述更加自然,并且引入了更多关于GPU、仓储式计算机以及网络软硬件接口(集群系统中的关键)的内容。
章附录节关注软件关注硬件
第1章
计算机的抽象与技术1.1~1.11
1.12(历史)
第2章
指令:计算机的语言2.1~2.14
2.15(编译器和Java)
2.16~2.21
2.22(历史)
附录D
RISC指令集体系结构D.1~D.17
第3章
计算机的算术运算3.1~3.5
3.6~3.9(子字并行)
3.10~3.11(谬误)
3.12(历史)
附录A
逻辑设计基础A.1~A.13
第4章
处理器4.1(引言)
4.2(逻辑设计的一般方法)
4.3~4.4(简单实现)
4.5(流水线概述)
4.6(流水线数据通路)
4.7~4.9(冒险和异常)
4.10~4.12(并行和实例)
4.13(Verilog流水线控制)
4.14~4.15(谬误)
4.16(历史)
附录C
控制器的硬件实现C.1~C.6
第5章
大容量和高速度:开发存储器层次结构5.1~5.10
5.11(廉价冗余磁盘阵列)
5.12(Verilog cache控制器)
5.13~5.16
5.17(历史)
第6章
并行处理器:从客户端到云6.1~6.8
6.9(网络)
6.10~6.14
6.15(历史)
附录B
图形处理单元B.1~B.13
仔细阅读有时间阅读 作为参考 
回顾或阅读 拓展阅读
第5版的第一个目标是希望通过具体的例子,帮助读者理解硬件对提高性能和能效的重要性。正如前面所述,第3章介绍了如何采用子字并行将矩阵乘法加速4倍。第4章介绍了通过循环展开将性能翻倍,从而证明了指令集并行的价值。第5章阐述了如何利用分块技术优化cache,将性能再次翻倍。第6章证明了通过在16个处理器上采用线程级并行可以获得14倍的加速比。而这四种优化技术的实现,仅需要在原始矩阵乘法例子的C代码上增加24行代码。
第二个目标是帮助读者更好地理解计算机体系结构技术的精髓:首先集中介绍计算机体系结构设计中的8个伟大思想,然后在整本书中明确指出这些思想的应用。在每次引用这些伟大思想时会突出显示,全书大约有100次引用,每章中至少有7处应用实例,并且每个思想至少被引用5次。通过并行、流水线以及预测技术提高性能是被引用最多的三个思想,其次是摩尔定律。讲述处理器的第4章是实例最多的一章,也是最吸引计

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 台灣用户 | 香港/海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.