出版社: 机械工业出版社
副标题: 硬件软件接口 ARM版
原作名: Computer Organization and Design:The Hardware/Software Interface,ARM Edition
译者: 陈微
出版年: 2018-10
页数: 501
定价: 139
装帧: 平装
丛书: 计算机科学丛书
ISBN: 9787111608943
内容简介 · · · · · ·
本书由2017年图灵奖得主Patterson和Hennessy共同撰写,是计算机体系结构领域的经典教材,强调软硬件协同设计及其对性能的影响。本书采用ARMv8体系结构,讲解硬件技术、汇编语言、计算机算术运算、流水线、存储器层次结构以及I/O的基本原理。新内容涵盖平板电脑、云基础设施、ARM(移动计算设备)以及x86(云计算)体系结构,新实例包括IntelCorei7、ARMCortex-A53以及NVIDIAFermiGPU。本书适合作为高等院校计算机专业的教材,也适合广大专业技术人员参考。
作者简介 · · · · · ·
David A. Patterson
加州大学伯克利分校计算机科学系教授,美国国家工程研究院院士,IEEE和ACM会士,曾因成功的启发式教育方法被IEEE授予James H. Mulligan,Jr教育奖章。他因为对RISC技术的贡献而荣获1995年IEEE技术成就奖,而在RAID技术方面的成就为他赢得了1999年IEEE Reynold Johnson信息存储奖。2000年他和John L. Hennessy分享了John von Neumann奖。
John L. Hennessy
斯坦福大学校长,IEEE和ACM会士,美国国家工程研究院院士及美国科学艺术研究院院士。Hennessy教授因为在RISC技术方面做出了突出贡献而荣获2001年的Eckert-Mauchly奖章,他也是2001年Seymour Cray 计算机工程奖得主,并且和Davi...
David A. Patterson
加州大学伯克利分校计算机科学系教授,美国国家工程研究院院士,IEEE和ACM会士,曾因成功的启发式教育方法被IEEE授予James H. Mulligan,Jr教育奖章。他因为对RISC技术的贡献而荣获1995年IEEE技术成就奖,而在RAID技术方面的成就为他赢得了1999年IEEE Reynold Johnson信息存储奖。2000年他和John L. Hennessy分享了John von Neumann奖。
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 欢迎来到后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 case/switch语句 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 用数组实现clear 102
2.14.2 用指针实现clear 102
2.14.3 比较两个版本的clear 103
2.15 高级主题:编译C和解释Java 104
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-A53 251
4.11.2 Intel Core i7 920 253
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汉明码(SEC/DED) 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 加快地址转换:TLB 318
5.7.6 Intrinsity FastMATH TLB 319
5.7.7 集成虚拟存储器、TLB和cache 322
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 使用有限状态机控制简单的cache 332
5.9.1 一个简单的cache 333
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 正确理解GPU 381
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指令集体系结构
术语表
扩展阅读
· · · · · · (收起)
丛书信息
· · · · · ·
喜欢读"计算机组成与设计"的人也喜欢的电子书 · · · · · ·
喜欢读"计算机组成与设计"的人也喜欢 · · · · · ·
- 计算机体系结构(英文版·第6版) 9.7
- 操作系统导论 9.4
- 凝聚态物理学中的量子场论 9.7
- C语言接口与实现 8.2
- 深入理解计算机系统(原书第3版) 9.7
- 数字逻辑基础与Verilog设计 8.8
- 算法详解(卷1)——算法基础 9.0
- 现代操作系统(原书第4版) 8.9
计算机组成与设计的书评 · · · · · · ( 全部 27 条 )
> 更多书评 27篇
论坛 · · · · · ·
在这本书的论坛里发言这本书的其他版本 · · · · · · ( 全部30 )
-
机械工业出版社 (2015)9.2分 373人读过
-
Morgan Kaufmann (2004)9.4分 91人读过
-
机械工业出版社 (2007)9.5分 302人读过
-
机械工业出版社 (2012)9.2分 170人读过
以下书单推荐 · · · · · · ( 全部 )
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有687人想读,手里有一本闲着?
订阅关于计算机组成与设计的评论:
feed: rss 2.0
0 有用 瘴地怪鼠 2023-09-24 10:47:29 安徽
cpu那章可以看看,其他并没有在408的基础之上拓展太多内容,408计组学的比较好的话可以不用细看了
0 有用 贵贵 2020-12-15 07:31:58
发现了几处小错误。 要是彩印就好了
5 有用 Anonymous 2022-01-10 22:50:17
首先,极力的向所有关注于发挥底层硬件性能的programmer推荐本书。本书由浅入深,从指令集入手,在二三四章中,一步一步揭示了CPU中各种数据存取,算数运算,SIMD指令的硬件原理,解答了我之前的很多疑惑,比如,为什么浮点数相加减会产生精度损失,为什么整数乘除法需要的时钟周期数比加法更多等。另外,本书第五章对多级存储器体系做了详尽的描述,揭示了存储器的层次结构如何影响程序的性能。我认为本书可以作... 首先,极力的向所有关注于发挥底层硬件性能的programmer推荐本书。本书由浅入深,从指令集入手,在二三四章中,一步一步揭示了CPU中各种数据存取,算数运算,SIMD指令的硬件原理,解答了我之前的很多疑惑,比如,为什么浮点数相加减会产生精度损失,为什么整数乘除法需要的时钟周期数比加法更多等。另外,本书第五章对多级存储器体系做了详尽的描述,揭示了存储器的层次结构如何影响程序的性能。我认为本书可以作为对CSAPP的扩展,因为,本书采用ARMv8的一个子集讲解CPU的数据通路,相比于CSAPP(使用x86_64讲解)更加的简单清晰。另外,本书从一个统一的视角讲解L1L2缓存,TLB,虚拟内存等技术,相比于CSAPP来说,更加侧重于理论,但并不难于理解,对于缓存技术介绍的广度也优于CSAPP。 (展开)
1 有用 lyl 2023-06-19 16:54:17 重庆
对于新手来说(我),配合b站上周强老师的计算机组成与设计的课程来说效果更好,第三章有进制转换的前置知识,第四章流水线一步一步的实现,印象会更深刻一些。
1 有用 冬荣 2021-05-23 09:41:08
书很厚
2 有用 乱卷书生 2024-04-27 11:29:23 海南
难得的经典佳作。重点在四五六章,本书ISA部分比较简陋且对新手不友好,建议跳过其中大部分内容,再找专门论述相关指令集的教材作为补充。ISA只是铺垫,只需知道那几种指令类型的功能和机器码格式就能阅读第四章了,而cpu设计、流水线原理、冒险的解决等等才是本书精华所在。第三章部分内容与csapp对应章节互补如IEEE754浮点标准,可对比式阅读。第四章封神,无需多言。第五章对cache讲解的广度以及其和... 难得的经典佳作。重点在四五六章,本书ISA部分比较简陋且对新手不友好,建议跳过其中大部分内容,再找专门论述相关指令集的教材作为补充。ISA只是铺垫,只需知道那几种指令类型的功能和机器码格式就能阅读第四章了,而cpu设计、流水线原理、冒险的解决等等才是本书精华所在。第三章部分内容与csapp对应章节互补如IEEE754浮点标准,可对比式阅读。第四章封神,无需多言。第五章对cache讲解的广度以及其和虚拟存储间的衔接、比较和总结都相当精彩。第六章概念阐述清晰但讲解较为粗浅,可当综述。本书的阅读并不需要太多逻辑设计基础,第四章一些重要部件如MUX可当成API,着眼其应用层面即可,因此附录可依兴趣选择性阅读。 ARM版的翻译为所有版本中最佳,致敬陈微老师。相比之下RISC-V版的翻译简直依托答辩。 (展开)
0 有用 阅微草堂 2024-04-02 09:16:39 江苏
核心目标理解:ISA指令层次程序如何在程序中执行与实现。课程的核心理念:从古典教育中的分析原理转变现代教育理念的设计实现的思路。这本书核心阅读第4-6章,前面的可以通过其他书籍进行补充,当然课程中会补充出现逻辑电路的教育。书籍本质来自于cs61c课程,听课的惊喜>读书百倍。结构化和系统化思路贯穿始终,同时讲解原理和问题的时候,很多令人感觉眼前一亮的感觉。读书和听课结合起来。
0 有用 andriy 2023-11-14 01:49:35 浙江
读的是riscv版的
0 有用 Vagrant 2023-10-07 20:02:20 北京
写得太好了!
0 有用 瘴地怪鼠 2023-09-24 10:47:29 安徽
cpu那章可以看看,其他并没有在408的基础之上拓展太多内容,408计组学的比较好的话可以不用细看了