-
内容大纲
现代计算机技术需要各个计算领域的专业人员对计算机软件和硬件都有所了解。软硬件在不同层次上的相互影响,恰好也提供了一个理解计算基础的框架。不管你的关注点是硬件还是软件,专业是计算机科学还是电气工程,计算机组成和设计的核心思想都是相同的。因此,本书的重点是展示硬件和软件之间的关系,并重点关注现代计算机的基本概念。
本书从MIPS版的第1版起就提出了以上观点,最近从单处理器向多核微处理器的转变再一次印证了这个颇有远见的观点。然而,程序员无视我们的忠告,不想改造程序,只想依赖计算机体系结构设计者、编译器设计者或者芯片设计者来让自己的程序运行得更快、更高效——这样的时代已经一去不复返了。为了运行得更快,需要把程序改造成并行的。让程序员尽可能不知道他们正在使用的底层硬件的并行属性是许多研究者的目标,但这需要花费很长时间才能实现。我们的观点是,至少在接下来的十年里,如果想让程序在并行计算机上运行得更为高效,大多数程序员还是需要了解硬件/软件接口的。
本书的读者包括:不了解汇编语言或者逻辑设计,但需要了解计算机基本组成的人;具有汇编语言或者逻辑设计背景,但想学习如何设计计算机或者想搞清楚系统的工作原理的人。 -
作者介绍
-
目录
赞誉
译者序
前言
作者简介
第1章 计算机抽象及相关技术
1.1 引言
1.1.1 传统的计算应用分类及其特点
1.1.2 欢迎来到后PC时代
1.1.3 你能从本书中学到什么
1.2 计算机体系结构中的7个伟大思想
1.2.1 使用抽象简化设计
1.2.2 加速经常性事件
1.2.3 通过并行提高性能
1.2.4 通过流水线提高性能
1.2.5 通过预测提高性能
1.2.6 存储层次
1.2.7 通过冗余提高可靠性
1.3 程序表象之下
1.4 箱盖后的硬件
1.4.1 显示器
1.4.2 触摸屏
1.4.3 打开机箱
1.4.4 数据安全
1.4.5 与其他计算机通信
1.5 处理器和存储制造技术
1.6 性能
1.6.1 性能的定义
1.6.2 性能的度量
1.6.3 CPU性能及其度量因素
1.6.4 指令性能
1.6.5 经典的CPU性能公式
1.7 功耗墙
1.8 沧海巨变:从单处理器向多处理器转变
1.9 实例:评测Intel Core i7
1.9.1 SPEC CPU基准评测程序
1.9.2 SPEC功耗基准评测程序
1.10 性能提升:使用Python语言编写
矩阵乘法程序
1.11 谬误与陷阱
1.12 本章小结
1.13 历史视角和拓展阅读
1.14 自学
1.15 练习
第2章 指令:计算机的语言
2.1 引言
2.2 计算机硬件的操作
2.3 计算机硬件的操作数
2.3.1 存储器操作数
2.3.2 常数或立即数操作数
2.4 有符号数与无符号数
2.5 计算机中的指令表示
2.6 逻辑操作
2.7 用于决策的指令
2.7.1 循环
2.7.2 边界检查的简便方法
2.7.3 case/switch语句
2.8 计算机硬件对过程的支持
2.8.1 使用更多的寄存器
2.8.2 嵌套过程
2.8.3 在栈中为新数据分配空间
2.8.4 在堆中为新数据分配空间
2.9 人机交互
2.10 对大立即数的RISC-V编址和寻址
2.10.1 大立即数
2.10.2 分支中的寻址
2.10.3 RISC-V寻址模式总结
2.10.4 机器语言译码
2.11 并行性与指令:同步
2.12 翻译并启动程序
2.12.1 编译器
2.12.2 汇编器
2.12.3 链接器
2.12.4 加载器
2.12.5 动态链接库
2.12.6 启动Java程序
2.13 以C排序程序为例的汇总整理
2.13.1 swap过程
2.13.2 sort过程
2.14 数组与指针
2.14.1 用数组实现clear
2.14.2 用指针实现clear
2.14.3 比较两个版本的clear
2.15 高级专题:编译C语言和解释Java语言
2.16 实例:MIPS指令
2.17 实例:ARMv7(32位)指令
2.17.1 寻址模式
2.17.2 比较和条件分支指令
2.17.3 ARM的独特之处
2.18 实例:ARMv8(64位)指令
2.19 实例:x86指令
2.19.1 Intel x86的演变
2.19.2 x86寄存器和寻址模式
2.19.3 x86整数操作
2.19.4 x86指令编码
2.19.5 x86总结
2.20 实例:RISC-V指令系统的剩余部分
2.21 性能提升:使用C语言编写矩阵乘法程序
2.22 谬误与陷阱
2.23 本章小结
2.24 历史视角和扩展阅读
2.25 ?自学
2.26 练习
第3章 计算机的算术运算
3.1 引言
3.2 加法和减法
3.3 乘法
3.3.1 串行版的乘法算法及其硬件实现
3.3.2 带符号乘法
3.3.3 快速乘法
3.3.4 RISC-V中的乘法
3.3.5 总结
3.4 除法
3.4.1 除法算法及其硬件实现
3.4.2 有符号除法
3.4.3 快速除法
3.4.4 RISC-V中的除法
3.4.5 总结
3.5 浮点运算
3.5.1 浮点表示
3.5.2 例外和中断
3.5.3 IEEE 754浮点数标准
3.5.4 浮点加法
3.5.5 浮点乘法
3.5.6 RISC-V中的浮点指令
3.5.7 精确算术
3.5.8 总结
3.6 并行性与计算机算术:子字并行
3.7 实例:x86中的SIMD扩展和高级向量扩展
3.8 性能提升:子字并行和矩阵乘法
3.9 谬误与陷阱
3.10 本章小结
3.11 历史视角和拓展阅读
3.12 ?自学
3.13 练习
第4章 处理器
4.1 引言
4.1.1 一种基本的RISC-V实现
4.1.2 实现概述
4.2 逻辑设计的一般方法
4.3 建立数据通路
4.4 一个简单的实现方案
4.4.1 ALU控制
4.4.2 设计主控制单元
4.4.3 数据通路操作
4.4.4 控制的结束
4.4.5 为什么现在不使用单周期实现
4.5 多周期实现
4.6 流水线概述
4.6.1 面向流水线的指令系统设计
4.6.2 流水线冒险
4.6.3 总结
4.7 流水线数据通路和控制
4.7.1 流水线的图形化表示
4.7.2 流水线控制
4.8 数据冒险:前递与停顿
4.9 控制冒险
4.9.1 假设分支不发生
4.9.2 缩短分支延迟
4.9.3 动态分支预测
4.9.4 流水线总结
4.10 例外
4.10.1 RISC-V体系结构中如何处理例外
4.10.2 流水线实现中的例外
4.11 指令间的并行性
4.11.1 推测的概念
4.11.2 静态多发射
4.11.3 动态多发射处理器
4.11.4 能效和高级流水线
4.12 实例:ARM Cortex-A53和Intel Core i
4.12.1 ARM Cortex
4.12.2 A53流水线的性能
4.12.3 Intel Core i
4.12.4 Intel Core i7处理器的性能
4.13 性能提升:指令级并行和矩阵乘法
4.14 高级专题:数字设计概述—使用硬件设计语言进行流水线建模以及更多流水线示例
4.15 谬误与陷阱
4.16 本章小结
4.17 历史视角和拓展阅读
4.18 自学
4.19 练习
第5章 大而快:层次化存储
5.1 引言
5.2 存储技术
5.2.1 SRAM存储技术
5.2.2 DRAM存储技术
5.2.3 闪存
5.2.4 磁盘
5.3 cache基础
5.3.1 cache访问
5.3.2 处理cache失效
5.3.3 处理写操作
5.3.4 cache实例:Intrinsity FastMATH 处理器
5.3.5 总结
5.4 cache的性能评估和改进
5.4.1 使用更为灵活的替换策略降低cache失效率
5.4.2 在cache中查找数据块
5.4.3 选择替换的数据块
5.4.4 使用多级cache减少失效代价
5.4.5 通过分块进行软件优化
5.4.6 总结
5.5 可靠的存储器层次
5.5.1 失效的定义
5.5.2 纠正1位错、检测2位错的汉明编码
5.6 虚拟机
5.6.1 虚拟机监视器的必备条件
5.6.2 指令系统体系结构(缺乏)对虚拟机的支持
5.6.3 保护和指令系统体系结构
5.7 虚拟存储
5.7.1 页的存放和查找
5.7.2 缺页失效
5.7.3 支持大虚拟地址空间的虚拟存储
5.7.4 关于写
5.7.5 加快地址转换:TLB
5.7.6 Intrinsity FastMATH TLB
5.7.7 集成虚拟存储、TLB和cache
5.7.8 虚拟存储中的保护
5.7.9 处理TLB失效和缺页失效
5.7.10 总结
5.8 存储层次结构的一般框架
5.8.1 问题一:块放在何处
5.8.2 问题二:如何找到块
5.8.3 问题三:当cache发生失效时替换哪一块
5.8.4 问题四:写操作如何处理
5.8.5 3C:一种理解存储层次结构的直观模型
5.9 使用有限状态自动机控制简单的cache
5.9.1 一个简单的cache
5.9.2 有限状态自动机
5.9.3 使用有限状态自动机作为简单的cache控制器
5.10 并行和存储层次结构:cache一致性
5.10.1 实现一致性的基本方案
5.10.2 监听协议
5.11 并行与存储层次结构:廉价磁盘冗余阵列
5.12 高级专题:实现cache控制器
5.13 实例:ARM Cortex-A53和Intel Core i7的存储层次结构
5.14 实例:RISC-V系统的其他部分和特殊指令
5.15 性能提升:cache分块和矩阵乘法
5.16 谬误与陷阱
5.17 本章小结
5.18 历史视角和拓展阅读
5.19 自学
5.20 练习
第6章 并行处理器:从客户端到云
6.1 引言
6.2 创建并行处理程序的难点
6.3 SISD、MIMD、SIMD、SPMD和向量机
6.3.1 x86中的SIMD:多媒体扩展
6.3.2 向量机
6.3.3 向量与标量
6.3.4 向量与多媒体扩展
6.4 硬件多线程
6.5 多核及其他共享内存多处理器
6.6 GPU简介
6.6.1 NVIDIA GPU体系结构简介
6.6.2 NVIDIA GPU存储结构
6.6.3 对GPU的展望
6.7 领域定制体系结构
6.8 集群、仓储级计算机和其他消息传递多处理器
6.9 多处理器网络拓扑简介
6.10 与外界通信:集群网络
6.11 多处理器测试基准和性能模型
6.11.1 性能模型
6.11.2 Roofline模型
6.11.3 两代Opteron的比较
6.12 实例:评测Google TPUv3超级计算机和NVIDIA Volta GPU集群
6.12.1 深度学习神经网络的训练和推理
6.12.2 领域定制体系结构的超级计算机网络
6.12.3 领域定制体系结构的超级计算机节点
6.12.4 领域定制体系结构的计算
6.12.5 TPUv3领域定制体系结构与Volta GPU的比较
6.12.6 性能
6.13 性能提升:多处理器和矩阵乘法
6.14 谬误与陷阱
6.15 本章小结
6.16 历史视角和拓展阅读
6.17 自学
6.18 练习
附录A 逻辑设计基础
术语表
网络内容
附录B 图形与计算GPU
附录C 将控制映射至硬件
附录D 指令集体系结构概述
扩展阅读
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-

孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-

时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-

本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...
[
