商品详情

本书由2017年图灵奖的两位得主撰写,是计算机体系结构领域的经典教材,每年被超过40000名学生使用。新版的主要更新是在每章中添加了关于DSA的内容,并更新了所有实例,使全书更加与时俱进,满足学生和读者的新需求。

译者序
前言
作者简介
第1章 计算机抽象及相关技术1
1.1 引言1
1.1.1 计算应用的分类及其特性2
1.1.2 欢迎来到后PC时代3
1.1.3 你能从本书学到什么4
1.2 计算机体系结构的7个伟大思想6
1.2.1 使用抽象简化设计6
1.2.2 加速大概率事件6
1.2.3 通过并行提高性能6
1.2.4 通过流水线提高性能6
1.2.5 通过预测提高性能7
1.2.6 存储层次7
1.2.7 通过冗余提高可靠性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 性能的定义21
1.6.2 性能的度量23
1.6.3 CPU性能及其因素24
1.6.4 指令的性能25
1.6.5 经典的CPU性能公式26
1.7 功耗墙28
1.8 沧海巨变:从单处理器向多处理器转变30
1.9 实例:Intel Core i7基准32
1.9.1 SPEC CPU基准测试程序32
1.9.2 SPEC功耗基准测试程序34
1.10 加速:使用Python语言编写矩阵乘法程序35
1.11 谬误与陷阱36
1.12 本章小结38
1.13 历史观点和拓展阅读39
1.14 自学39
1.15 练习题42
第2章 指令:计算机的语言46
2.1 引言46
2.2 计算机硬件的操作48
2.3 计算机硬件的操作数50
2.3.1 存储器操作数51
2.3.2 常数或立即数操作数53
2.4 有符号数和无符号数54
2.5 计算机中指令的表示59
2.6 逻辑操作65
2.7 决策指令67
2.7.1 循环68
2.7.2 case/switch语句70
2.8 计算机硬件对过程的支持71
2.8.1 使用更多寄存器72
2.8.2 嵌套过程74
2.8.3 在栈中为新数据分配空间76
2.8.4 在堆中为新数据分配空间76
2.9 人机交互78
2.10 MIPS中32位立即数和地址的寻址82
2.10.1 32位立即数83
2.10.2 分支和跳转中的寻址83
2.10.3 MIPS寻址模式总结85
2.10.4 机器语言解码87
2.11 并行与指令:同步89
2.12 翻译并执行程序91
2.12.1 编译器91
2.12.2 汇编器91
2.12.3 链接器93
2.12.4 加载器95
2.12.5 动态链接库95
2.12.6 启动一个Java程序97
2.13 综合实例:C排序程序98
2.13.1 swap过程98
2.13.2 sort过程100
2.14 数组与指针104
2.14.1 用数组实现clear104
2.14.2 用指针实现clear106
2.14.3 比较两个版本的clear106
2.15 高级内容:编译C语言和解释Java语言107
2.16 实例:ARMv7(32位)指令集107
2.16.1 寻址模式108
2.16.2 比较和条件分支108
2.16.3 ARM的特色109
2.17 实例:ARMv8(64位)指令集 111
2.18 实例:RISC_V指令集112
2.19 实例:x86指令集112
2.19.1 Intel x86的演进112
2.19.2 x86寄存器和数据寻址模式114
2.19.3 x86整数操作115
2.19.4 x86指令编码117
2.19.5 x86总结119
2.20 加速:使用C语言编写矩阵乘法程序119
2.21 谬误与陷阱120
2.22 本章小结122
2.23 历史观点和拓展阅读124
2.24 自学124
2.25 练习题126
第3章 计算机的算术运算132
3.1 引言132
3.2 加法和减法132
3.3 乘法136
3.3.1 顺序的乘法算法和硬件137
3.3.2 有符号乘法139
3.3.3 更快速的乘法139
3.3.4 MIPS中的乘法140
3.3.5 小结140
3.4 除法140
3.4.1 除法算法和硬件141
3.4.2 有符号除法143
3.4.3 更快速的除法144
3.4.4 MIPS中的除法144
3.4.5 小结145
3.5 浮点运算146
3.5.1 浮点表示147
3.5.2 浮点加法151
3.5.3 浮点乘法154
3.5.4 MIPS中的浮点指令156
3.5.5 算术精确性161
3.5.6 小结163
3.6 并行性和计算机算术:子字并行164
3.7 实例:x86中的流处理SIMD扩展和高级向量扩展166
3.8 加速:子字并行和矩阵乘法167
3.9 谬误与陷阱168
3.10 本章小结171
3.11 历史观点和拓展阅读174
3.12 自学174
3.13 练习题176
第4章 处理器181
4.1 引言181
4.1.1 一个基本的MIPS实现182
4.1.2 实现方式概述182
4.2 逻辑设计的一般方法184
4.3 建立数据通路187
4.4 一个简单的实现机制193
4.4.1 ALU控制193
4.4.2 主控制单元的设计195
4.4.3 为什么不使用单周期实现方式201
4.5 多周期实现202
4.6 流水线概述203
4.6.1 面向流水线的指令集设计206
4.6.2 流水线冒险207
4.6.3 小结212
4.7 流水线数据通路与控制213
4.7.1 图形化表示的流水线221
4.7.2 流水线控制224
4.8 数据冒险:旁路与阻塞227
4.9 控制冒险237
4.9.1 假定分支不发生238
4.9.2 缩短分支的延迟238
4.9.3 动态分支预测241
4.9.4 小结244
4.10 异常245
4.10.1 MIPS体系结构中的异常处理245
4.10.2 流水线实现中的异常246
4.11 指令级并行249
4.11.1 推测......
神秘是我们能体验的最美好的事物,它是所有真正的艺术和科学的源泉。
—阿尔伯特;爱因斯坦,《我的信仰》,1930
关于本书
在学习计算机科学与工程时,除了掌握计算的基本原理外,还应该了解该领域的最新进展。计算领域中各个方向的读者都应学习计算机系统的组成理论,因为这是决定计算机系统的功能、性能甚至成功的关键。
要推动现代计算机技术的发展,需要对硬件和软件都有深入理解的专业人士。硬件和软件在多个层次上的相互影响成为理解计算基本原理的框架。无论你的主要兴趣是硬件还是软件,是计算机科学还是电气工程,计算机组成与设计的基本思想都是相同的。因此,本书着重展示硬件与软件的关系,并重点介绍当今计算机中的基础概念。
处理器已经由单核发展为多核,且近年来更强调领域专用体系结构,该趋势印证了本书自第1版就提出的观点。过去,程序员可以忽略这一发展趋势,并希望计算机体系结构专家、编译器设计者和芯片工程师能够帮助他们,让程序不做任何修改就可以更快、更高效地在新型处理器上运行。但是,这样的时代已经一去不复返了。我们认为,至少在下一个十年里,大多数程序员只有理解硬件/软件接口,才能编写出在现代计算机上高效运行的程序。
本书适合以下读者阅读:在汇编语言或逻辑设计方面只有少许经验,需要理解计算机组成的基本原理的读者;具有汇编语言或逻辑设计的基础,需要学习如何设计计算机,或者要进一步理解计算机系统如何工作的读者。
与本书相关的另一本书
有些读者可能已经熟悉我们的另一本书—《计算机体系结构:量化研究方法》,该书已广为流传,经常以作者姓名命名,称为“Hennessy and Patterson”(本书则常称为“Patterson and Hennessy”)。该书的目的是用坚实的工程基础和量化的性价比权衡来描述计算机体系结构的原理。该书基于商用系统,将案例与测量方法相结合,帮助读者理解实际的设计。该书的目标是通过量化分析方法讲解计算机体系结构,而不是仅仅对相关知识进行描述。因此,该书主要面向希望深入理解计算机系统的计算机专业人士。
本书的大多数读者并不一定要成为计算机体系结构的设计者。软件设计人员对系统中基本硬件技术的理解,将显著影响未来软件系统的性能和能效。因此,编译器设计者、操作系统设计者、数据库程序员以及其他大多数软件工程师对本书所述的原理都应当有充分的了解。同样,硬件设计者也必须清楚自己的工作对软件的影响。
所以,本书的内容绝不仅仅是“Hennessy and Patterson”的子集,而是进行了大量的扩展和修订,以满足不同读者的需求。我们对再版“Hennessy and Patterson”时删除大量介绍性材料的效果感到满意,与第1版相比,这两本书的内容重叠度已大大降低。
第6版的变化
相比于前5版之间的变化,自本书第5版出版至今,计算机体系结构技术和商业模式发生了更大的变化。
摩尔定律放缓:Gordon Moore预测单芯片上集成的晶体管数量每18~24个月翻一番,但是半导体加工工艺按照此趋势发展了50年之后,该预测将不再有效。虽然半导体加工工艺仍然在进步,但进步速度比以前慢了很多,且越来越不可预测。
领域专用体系结构(DSA)的出现:由于摩尔定律的放缓以及Dennard按比例缩小定律的终结,通用处理器的性能每年只有百分之几的提升。另外,Amdahl定律限制了单芯片上处理器核数目增加所能够带来的收益。2020年,DSA被公认为最有发展前途的技术。与通用处理器能够运行所有的应用程序不同,DSA能够更高效地运行特定领域的程序。
微体系结构是安全攻击的直接对象:Spectre(幽灵)能够针对“推测乱序执行”和“硬件多线程”进行时间旁路攻击。这些并不属于任何一类可被修复的bug,从而为处理器设计提出了根本性的挑战。
开放指令集和开源实现:开源软件给计算机体系结构领域带来了机遇和影响。任何组织机构都能够在不签署版权协议的情况下,使用RISC_V等开放指令集设计自己的处理器,并可以将设计实现进行开源。开源的设计实现既可被共享并自由下载,也可以作为有知识产权的RISC_V以供使用。开源软件和硬件对于大学的研究、教学很有益处,可以帮助学生理解理论知识并提升产业技术能力。
信息技术产业的再次整合(re_virticalization):云计算使得不超过6家公司便可为所有用户提供计算基础设施,与20世纪六七十年代的IBM非常类似,这些公司决定软件栈和硬件的部署。上述变化导致这些大型公司开发自己的DSA和RISC_V芯片,并将其部署到自己的云中。
本书第6版反映了这些变化,更新了所有的实例和图。针对用书教师提出的需求,我们对教学方法也做了进一步改进,这些改进的灵感来自给我的孙子辅导数学课时使用的教科书。
- 新华一城书集 (微信公众号认证)
- 上海新华书店官方微信书店
- 扫描二维码,访问我们的微信店铺
- 随时随地的购物、客服咨询、查询订单和物流...