计算机组成与设计硬件软件接口第五版,简称为计算机组成与设计第五版,是一本介绍计算机体系结构的教材,由美戴维A.帕特森,约翰L.亨尼斯编著,王党辉,康继昌,安建峰等翻译,机械工业出版社出版。全书非常详细的介绍了软件和硬件之间的关系,并且还提供了丰富的计算机组成与设计的基本原理——摩尔定律、抽象、加速大概率事件、冗余、存储器层级、并行和流水线。另外计算机组成与设计第五版经过全面更新,关注后pc时代发生在计算机体系结构领域的革命性变革--从单核处理器到多核微处理器,从串行到并行。特别关注移动计算和云计算,通过平板电脑,云体系结构以及arm和x86体系结构来探索和揭动漫这场技术变革,适用于用为计算机专业的教材使用。内容介绍计算机组成与设计硬件软件接口第五版是计算机组成的经典教材,着眼于当前计算机设计中最基本的概念,详细展示软硬件间的关系,介绍当代计算机系统发展多的主流技术和最新成就。本书以mips处理器为例介绍了计算机硬件技术、汇编语言、计算机、流水线以及存储器层次结构等基本技术。书中强调从串行处理到并行处理的最新革新,每章都包含并行硬件和软件的主题,以软硬件协同设计发挥多核性能为终极目标。另外,本版与时俱进地使用了比如ARM Cortex A8和Intel Core I7等现代设计来说明计算机设计的基本原理,非常适合作为高等院校计算机专业的教材,并且对技术和维修人员也有很好的参考价值。作者介绍David A. Patterson,加州大学伯克利分校计算机科学系教授,IEEE和ACM会士,美国国家工程院、国家科学院和美国艺术与科学院院士,美国计算机历史博物馆院士,并入选硅谷工程名人堂。Patterson曾荣获加州大学杰出教学奖、ACM Karlstrom奖、IEEE Mulligan教育奖章和本科生教学奖。由于对RISC技术的贡献,他获得了IEEE技术成就奖和ACM Eckert-Mauchly奖;而在RAID方面的贡献为他赢得了IEEE Johnson信息存储奖;他还和Hennessy分享了IEEE John von Neumann奖章和C&C奖金。Patterson作为美国总统信息技术顾问委员会委员,还曾担任计算机研究协会(CRA)主席和ACM主席。这些杰出的工作使他荣获了ACM和CRA颁发的杰出服务奖。John L. Hennessy,斯坦福大学的第10任校长,从1977年开始在该校电子工程与计算机系任教。Hennessy教授是IEEE和ACM会士,美国国家工程院、国家科学院和美国哲学院院士,美国艺术与科学院院士。他获得过众多奖项,包括:2001年Eckert-Mauchly奖,以表彰他对RISC技术的贡献;2001年Seymour Cray计算机工程奖;2000年与Patterson共同获得IEEE John von Neumann奖章。他还拥有7个荣誉博士学位。1981年,Hennessy在斯坦福大学开始MIPS研究项目,1984年参与创建MIPS计算机系统(现在的MIPS技术公司),开发了一款商用RISC微处理器。除了技术活动与大学工作外,他还是多家创业公司的顾问和投资者。计算机组成与设计第五版章节目录出版者的话本书赞誉译者序前言作者简介第1章 计算机概要与技术11.1 引言11.1.1 计算应用的分类及其特性21.1.2 欢迎来到后PC时代31.1.3 你能从本书学到什么41.2 计算机系统结构中的8个伟大思想61.2.1 面向摩尔定律的设计61.2.2 使用抽象简化设计61.2.3 加速大概率事件61.2.4 通过并行提高性能71.2.5 通过流水线提高性能71.2.6 通过预测提高性能71.2.7 存储器层次71.2.8 通过冗余提高可靠性71.3 程序概念入门71.4 硬件概念入门101.4.1 显示器111.4.2 触摸屏121.4.3 打开机箱121.4.4 数据安全151.4.5 与其他计算机通信161.5 处理器和存储器制造技术171.6 性能201.6.1 性能的定义201.6.2 性能的度量221.6.3 CPU性能及其因素231.6.4 指令的性能241.6.5 经典的CPU性能公式251.7 功耗墙271.8 沧海巨变:从单处理器向多处理器转变291.9 实例:Intel Core i7基准311.9.1 SPEC CPU基准测试程序311.9.2 SPEC功耗基准测试程序321.10 谬误与陷阱331.11 本章小结351.12 历史观点和拓展阅读361.13 练习题36第2章 指令:计算机的语言402.1 引言402.2 计算机硬件的操作432.3 计算机硬件的操作数442.3.1 存储器操作数452.3.2 常数或立即数操作数472.4 有符号数和无符号数482.5 计算机中指令的表示532.6 逻辑操作582.7 决策指令602.7.1 循环612.7.2 case/switch语句632.8 计算机硬件对过程的支持642.8.1 使用更多的寄存器662.8.2 嵌套过程672.8.3 在栈中为新数据分配空间692.8.4 在堆中为新数据分配空间702.9 人机交互722.10 MIPS中32位立即数和寻址752.10.1 32位立即数752.10.2 分支和跳转中的寻址762.10.3 MIPS寻址模式总结782.10.4 机器语言解码792.11 并行与指令:同步812.12 翻译并执行程序832.12.1 编译器832.12.2 汇编器842.12.3 链接器852.12.4 加载器872.12.5 动态链接库872.12.6 启动一个Java程序892.13 以一个C排序程序作为完整的例子902.13.1 swap过程902.13.2 sort过程912.14 数组与指针962.14.1 用数组实现clear962.14.2 用指针实现clear972.14.3 比较两个版本的clear972.15 高级内容:编译C语言和解释Java语言982.16 实例:ARMv7(32位)指令集982.16.1 寻址模式992.16.2 比较和条件分支1002.16.3 ARM的特色1002.17 实例:x86指令集1022.17.1 Intel x86的改进1022.17.2 x86寄存器和数据寻址模式1032.17.3 x86整数操作1052.17.4 x86指令编码1072.17.5 x86总结1082.18 实例:ARMv8(64位)指令集1082.19 谬误与陷阱1092.20 本章小结1102.21 历史观点和拓展阅读1112.22 练习题112第3章 计算机的算术运算1173.1 引言1173.2 加法和减法1173.3 乘法1213.3.1 顺序的乘法算法和硬件1213.3.2 有符号乘法1243.3.3 更快速的乘法1243.3.4 MIPS中的乘法1243.3.5 小结1253.4 除法1253.4.1 除法算法及其硬件结构1253.4.2 有符号除法1283.4.3 更快速的除法1283.4.4 MIPS中的除法1293.4.5 小结1293.5 浮点运算1303.5.1 浮点表示1313.5.2 浮点加法1353.5.3 浮点乘法1383.5.4 MIPS中的浮点指令1393.5.5 算术精确性1453.5.6 小结1463.6 并行性和计算机算术:子字并行1483.7 实例:x86中流处理SIMD扩展和高级向量扩展1493.8 加速:子字并行和矩阵乘法1503.9 谬误与陷阱1533.10 本章小结1553.11 历史观点和拓展阅读1583.12 练习题159第4章 处理器1624.1 引言1624.2 逻辑设计的一般方法1654.3 建立数据通路1674.4 一个简单的实现机制1734.4.1 ALU控制1734.4.2 主控制单元的设计1754.4.3 为什么不使用单周期实现方式1814.5 流水线概述1824.5.1 面向流水线的指令集设计1864.5.2 流水线冒险1864.5.3 对流水线概述的小结1914.6 流水线数据通路及其控制1924.6.1 图形化表示的流水线2004.6.2 流水线控制2034.7 数据冒险:旁路与阻塞2064.8 控制冒险2144.8.1 假定分支不发生2154.8.2 缩短分支的延迟2154.8.3 动态分支预测2164.8.4 流水线小结2204.9 异常2214.9.1 MIPS体系结构中的异常处理2214.9.2 在流水线实现中的异常2224.10 指令级并行2264.10.1 推测的概念2274.10.2 静态多发射处理器2274.10.3 动态多发射处理器2314.10.4 能耗效率与高级流水线2334.11 实例:ARM Cortex-A8和Intel Core i7流水线2344.11.1 ARM Cortex-A82354.11.2 Intel Core i7 9202364.11.3 Intel Core i7 920的性能2384.12 运行更快:指令级并行和矩阵乘法2404.13 高级主题:通过硬件设计语言描述和建模流水线来介绍数字设计以及更多流水线示例2424.14 谬误与陷阱2424.15 本章小结2434.16 历史观点和拓展阅读2434.17 练习题243第5章 大容量和高速度:开发存储器层次结构2525.1 引言2525.2 存储器技术2555.2.1 SRAM技术2565.2.2 DRAM技术2565.2.3 闪存2585.2.4 磁盘存储器2585.3 cache的基本原理2595.3.1 cache访问2615.3.2 cache缺失处理2655.3.3 写操作处理2665.3.4 一个cache的例子:内置FastMATH处理器2675.3.5 小结2695.4 cache性能的评估和改进2705.4.1 通过更灵活地放置块来减少cache缺失2725.4.2 在cache中查找一个块2755.4.3 替换块的选择2765.4.4 使用多级cache结构减少缺失代价2775.4.5 通过分块进行软件优化2805.4.6 小结2835.5 可信存储器层次2835.5.1 失效的定义2835.5.2 纠正一位错、检测两位错的汉明编码(SEC/DED)2845.6 虚拟机2875.6.1 虚拟机监视器的必备条件2895.6.2 指令集系统结构(缺乏)对虚拟机的支持2895.6.3 保护和指令集系统结构2895.7 虚拟存储器2905.7.1 页的存放和查找2935.7.2 缺页故障2945.7.3 关于写2975.7.4 加快地址转换:TLB2975.7.5 集成虚拟存储器、TLB和cache 3005.7.6 虚拟存储器中的保护3025.7.7 处理TLB缺失和缺页3035.7.8 小结3075.8 存储器层次结构的一般框架3095.8.1 问题1:一个块可以被放在何处3095.8.2 问题2:如何找到一个块3105.8.3 问题3:当cache缺失时替换哪一块3115.8.4 问题4:写操作如何处理3115.8.5 3C:一种理解存储器层次结构行为的直观模型3125.9 使用有限状态机来控制简单的cache3145.9.1 一个简单的cache3145.9.2 有限状态机3155.9.3 一个简单的cache控制器的有限状态机3165.10 并行与存储器层次结构:cache一致性3175.10.1 实现一致性的基本方案3185.10.2 监听协议3195.11 并行与存储器层次结构:冗余廉价磁盘阵列3205.12 高级内容:实现cache控制器3205.13 实例:ARM Cortex-A8和Intel Core i7的存储器层次结构3205.14 运行更快:cache分块和矩阵乘法3245.15 谬误和陷阱3265.16 本章小结3295.17 历史观点和拓展阅读3295.18 练习题329第6章 从客户端到云的并行处理器3406.1 引言3406.2 创建并行处理程序的难点3426.3 SISD、MIMD、SIMD、SPMD和向量机3456.3.1 在x86中的SIMD:多媒体扩展3466.3.2 向量机3466.3.3 向量与标量的对比3476.3.4 向量与多媒体扩展的对比3486.4 硬件多线程3506.5 多核和其他共享内存多处理器3526.6 图形处理单元简介3556.6.1 NVIDIA GPU体系结构简介3566.6.2 NVIDIA GPU存储结构3576.6.3 GPU展望3586.7 集群、仓储级计算机和其他消息传递多处理器3606.8 多处理器网络拓扑简介3636.9 与外界通信:集群网络3666.10 多处理器测试集程序和性能模型3666.10.1 性能模型3686.10.2 Roofline模型3696.10.3 两代Opteron的比较3706.11 实例:评测Intel Core i7 960和NVIDIA Tesla GPU的Roofline模型3736.12 运行更快:多处理器和矩阵乘法3766.13 谬误与陷阱3786.14 本章小结3796.15 历史观点和拓展阅读3816.16 练习题382附录A 汇编器、链接器和SPIM仿真器389附录B 逻辑设计基础437索引494使用说明1、下载并解压,得出pdf文件2、如果打不开本文件,请务必下载pdf阅读器3、安装后,在打开解压得出的pdf文件4、双击进行阅读