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