新書推薦:
《
新民说·逝去的盛景:宋朝商业文明的兴盛与落幕(上下册)
》
售價:NT$
790.0
《
我从何来:自我的心理学探问
》
售價:NT$
545.0
《
失败:1891—1900 清王朝的变革、战争与排外
》
售價:NT$
390.0
《
送你一匹马(“我不求深刻,只求简单。”看三毛如何拒绝内耗,为自己而活)
》
售價:NT$
295.0
《
秦汉史讲义
》
售價:NT$
690.0
《
万千心理·我的精神分析之道:复杂的俄狄浦斯及其他议题
》
售價:NT$
475.0
《
荷马:伊利亚特(英文)-西方人文经典影印21
》
售價:NT$
490.0
《
我的心理医生是只猫
》
售價:NT$
225.0
|
內容簡介: |
本书是计算机组成的经典教材。全书着眼于当前计算机设计中最基本的概念,展示了软硬件间的关系,并全面介绍当代计算机系统发展的主流技术和最新成就。
同以往版本一样,本书采用MIPS处理器作为展示计算机硬件技术、汇编语言、计算机算术、流水线、存储器层次结构以及IO等基本功能的核心。书中强调了计算机从串行到并行的最新革新,在每章中都纳入了并行硬件和软件的主题,以软硬件协同设计发挥多核性能为最终目标。
本书适合作为高等院校相关专业的本科生和研究生教材,对广大技术人员也有很高的参考价值。
|
目錄:
|
出版者的话
译者序
前言
第1章 计算机概要与技术
1.1 引言
1.1.1 计算应用的分类及其特性
1.1.2 你能从本书学到什么
1.2 程序概念入门
1.3 硬件概念入门
1.3.1 剖析鼠标
1.3.2 显示器
1.3.3 打开机箱
1.3.4 数据安全
1.3.5 与其他计算机通信
1.3.6 处理器和存储器制造技术
1.4 性能
1.4.1 性能的定义
1.4.2 性能的测量
1.4.3 CPU性能及其因素
1.4.4 指令的性能
1.4.5 经典的CPU性能公式
1.5 功耗墙
1.6 沧海巨变:从单处理器向多处理器转变
1.7 实例:制造以及AMD Opteron X4基准
1.7.1 SPEC CPU基准测试程序
1.7.2 SPEC功耗基准测试程序
1.8 谬误与陷阱
1.9 本章小结
1.10 拓展阅读
1.11 练习题
第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 caseswitch语句
2.8 计算机硬件对过程的支持
2.8.1 使用更多的寄存器
2.8.2 嵌套过程
2.8.3 在栈中为新数据分配空间
2.8.4 在堆中为新数据分配空间
2.9 人机交互
2.10 MIPS中32位立即数和地址的寻址
2.10.1 32位立即数
2.10.2 分支和跳转中的寻址
2.10.3 MIPS寻址模式总结
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 实例:ARM指令集
2.16.1 寻址模式
2.16.2 比较和条件分支
2.16.3 ARM的特色
2.17 实例:x86指令集
2.17.1 Intel x86的改进
2.17.2 x86寄存器和数据寻址模式
2.17.3 x86整数操作
2.17.4 x86指令编码
2.17.5 x86总结
2.18 谬误与陷阱
2.19 本章小结
2.20 拓展阅读
2.21 练习题
第3章 计算机的算术运算
3.1 引言
3.2 加法和减法
3.2.1 多媒体算术运算
3.2.2 小结
3.3 乘法
3.3.1 顺序的乘法算法和硬件
3.3.2 有符号乘法
3.3.3 更快速的乘法
3.3.4 MIPS中的乘法
3.3.5 小结
3.4 除法
3.4.1 除法算法及其硬件结构
3.4.2 有符号除法
3.4.3 更快速的除法
3.4.4 MIPS中的除法
3.4.5 小结
3.5 浮点运算
3.5.1 浮点表示
3.5.2 浮点加法
3.5.3 浮点乘法
3.5.4 MIPS中的浮点指令
3.5.5 算术精确性
3.5.6 小结
3.6 并行性和计算机算术:结合律
3.7 实例:x86的浮点
3.7.1 x86浮点体系结构
3.7.2 Intel SIMD流扩展2(SSE2)浮点体系结构
3.8 谬误与陷阱
3.9 本章小结
3.10 拓展阅读
3.11 练习题
第4章 处理器
4.1 引言
4.1.1 一个基本的MIPS实现
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.5.1 面向流水线的指令集设计
4.5.2 流水线冒险
4.5.3 对流水线概述的小结
4.6 流水线数据通路及其控制
4.6.1 图形化表示的流水线
4.6.2 流水线控制
4.7 数据冒险:转发与阻塞
4.8 控制冒险
4.8.1 假定分支不发生
4.8.2 缩短分支的延迟
4.8.3 动态分支预测
4.8.4 流水线小结
4.9 异常
4.9.1 异常在MIPS体系结构中的处理
4.9.2 在流水线实现中的异常
4.10 并行和高级指令级并行
4.10.1 推测的概念
4.10.2 静态多发射处理器
4.10.3 动态多发射处理器
4.11 实例:AMD Opteron X4(Barcelona)流水线
4.12 高级主题:通过硬件设计语言描述和建模流水线来介绍数字设计以及更多流水线示例
4.13 谬误与陷阱
4.14 本章小结
4.15 拓展阅读
4.16 练习题
第5章 大容量和高速度:开发存储器层次结构
5.1 引言
5.2 cache的基本原理
5.2.1 cache访问
5.2.2 cache缺失处理
5.2.3 写操作处理
5.2.4 一个cache的例子:内置FastMATH处理器
5.2.5 设计支持cache的存储系统
5.2.6 小结
5.3 cache性能的评估和改进
5.3.1 通过更灵活地放置块来减少cache缺失
5.3.2 在cache中查找一个块
5.3.3 替换块的选择
5.3.4 使用多级cache结构减少缺失代价
5.3.5 小结
5.4 虚拟存储器
5.4.1 页的存放和查找
5.4.2 缺页
5.4.3 关于写
5.4.4 加快地址转换:TLB
5.4.5 集成虚拟存储器、TLB和cache
5.4.6 虚拟存储器中的保护
5.4.7 处理TLB缺失和缺页
5.4.8 小结
5.5 存储器层次结构的一般架构
5.5.1 问题1:一个块可以被放在何处
5.5.2 问题2:如何找到一个块
5.5.3 问题3:当cache缺失时替换哪一块
5.5.4 问题4:写操作如何处理
5.5.5 3C:一种理解存储器层次结构行为的直观模型
5.6 虚拟机
5.6.1 虚拟机监视器的必备条件
5.6.2 指令集系统结构(缺乏)对虚拟机的支持
5.6.3 保护和指令集系统结构
5.7 使用有限状态机来控制简单的cache
5.7.1 一个简单的cache
5.7.2 有限状态机
5.7.3 一个简单的cache控制器的有限状态机
5.8 并行与存储器层次结构:cache一致性
5.8.1 实现一致性的基本方案
5.8.2 监听协议
5.9 高级内容:实现cache控制器
5.10 实例:AMD Opteron X4Barcelona和Intel Nehalem的存储器层次结构
5.10.1 Nehalem和Opteron的存储器层次结构
5.10.2 减少缺失代价的技术
5.11 谬误和陷阱
5.12 本章小结
5.13 拓展阅读
5.14 练习题
第6章 存储器和其他IO主题
6.1 引言
6.2 可信度、可靠性和可用性
6.3 磁盘存储器
6.4 快闪式存储器
6.5 连接处理器、内存以及IO设备
6.5.1 互联基础
6.5.2 x86处理器的IO互联
6.6 为处理器、内存和操作系统提供IO设备接口
6.6.1 给IO设备发送指令
6.6.2 与处理器通信
6.6.3 中断优先级
6.6.4 在设备与内存之间传输数据
6.6.5 直接存储器访问和内存系统
6.7 IO性能度量:磁盘和文件系统的例子
6.7.1 事务处理IO基准程序
6.7.2 文件系统和Web IO的基准程序
6.8 设计IO系统
6.9 并行性与IO:廉价磁盘冗余阵列
6.9.1 无冗余RAID 0
6.9.2 镜像(RAID 1)
6.9.3 错误检测和纠错码(RAID 2)
6.9.4 位交叉奇偶校验(RAID 3)
6.9.5 块交叉奇偶校验(RAID 4)
6.9.6 分布式块交叉奇偶校验(RAID 5)
6.9.7 P+Q冗余(RAID 6)
6.9.8 RAID小结
6.10 实例:Sun Fire x4150服务器
6.11 高级主题:网络
6.12 谬误与陷阱
6.13 本章小结
6.14 拓展阅读
6.15 练习题
第7章 多核、多处理器和集群
7.1 引言
7.2 创建并行处理程序的难点
7.3 共享存储多处理器
7.4 集群和其他消息传递多处理器
7.5 硬件多线程
7.6 SISD、MIMD、SIMD、SPMD和向量机
7.6.1 在x86中的SIMD:多媒体扩展
7.6.2 向量机
7.6.3 向量与标量的对比
7.6.4 向量与多媒体扩展的对比
7.7 图形处理单元简介
7.7.1 NVIDIA GPU体系结构简介
7.7.2 深入理解GPU
7.8 多处理器网络拓扑简介
7.9 多处理器基准测试程序
7.10 Roofline:一个简单的性能模型
7.10.1 Roofline模型
7.10.2 两代Opteron的比较
7.11 实例:使用屋顶线模型评估四种多核处理器
7.11.1 4个多核系统
7.11.2 稀疏矩阵
7.11.3 结构化网格
7.11.4 生产率
7.12 谬误与陷阱
7.13 本章小结
7.14 拓展阅读
7.15 练习题
附录A 图形和计算GPU
A.1 引言
A.1.1 GPU发展简史
A.1.2 异构系统
A.1.3 GPU发展成了可扩展的并行处理器
A.1.4 为什么使用CUDA和GPU计算
A.1.5 GPU统一了图形和计算
A.1.6 GPU可视化计算的应用
A.2 GPU系统架构
A.2.1 异构CPU-GPU系统架构
A.2.2 GPU接口和驱动
A.2.3 图形逻辑流水线
A.2.4 将图形流水线映射到统一的GPU处理器
A.2.5 基本的统一GPU结构
A.3 可编程GPU
A.3.1 为实时图形编程
A.3.2 逻辑图形流水线
A.3.3 图形渲染程序
A.3.4 像素渲染示例
A.3.5 并行计算应用编程
A.3.6 使用CUDA进行可扩展并行编程
A.3.7 一些限制
A.3.8 体系结构隐含的问题
A.4 多线程的多处理器架构
A.4.1 大规模多线程
A.4.2 多处理器体系结构
A.4.3 单指令多线程(SIMT)
A.4.4 SIMT warp执行和分支
A.4.5 管理线程和线程块
A.4.6 线程指令
A.4.7 指令集架构(ISA)
A.4.8 流处理器(SP)
A.4.9 特殊功能单元(SFU)
A.4.10 与其他多处理器的比较
A.4.11 多线程多处理器总结
A.5 并行存储系统
A.5.1 DRAM的考虑
A.5.2 cache
A.5.3 MMU
A.5.4 存储器空间
A.5.5 全局存储器
A.5.6 共享存储器
A.5.7 局部存储器
A.5.8 常量存储器
A.5.9 纹理存储器
A.5.10 表面
A.5.11 loadstore访问
A.5.12 ROP
A.6 浮点算术
A.6.1 支持的格式
A.6.2 基本算术
A.6.3 专用算术
A.6.4 性能
A.6.5 双精度
A.7 资料:NVIDIA GeForce 8800
A.7.1 流处理器阵列(SPA)
A.7.2 纹理处理器簇(TPC)
A.7.3 流多处理器(SM)
A.7.4 指令集
A.7.5 流处理器(SP)
A.7.6 特殊功能单元(SFU)
A.7.7 光栅化
A.7.8 光栅操作处理器(ROP)和存储系统
A.7.9 可扩展性
A.7.10 性能
A.7.11 密集线性代数性能
A.7.12 FFT性能
A.7.13 排序性能
A.8 资料:将应用映射到GPU
A.8.1 稀疏矩阵
A.8.2 在共享存储器中进行缓存
A.8.3 扫描和归约
A.8.4 基数排序
A.8.5 GPU上的N-Body应用
A.9 谬误与陷阱
A.10 小结
A.11 拓展阅读
附录B 汇编器、链接器和SPIM仿真器
B.1 引言
B.1.1 什么时候使用汇编语言
B.1.2 汇编语言的缺点
B.2 汇编器
B.2.1 目标文件的格式
B.2.2 附加工具
B.3 链接器
B.4 加载
B.5 内存的使用
B.6 过程调用规范
B.6.1 过程调用
B.6.2 过程调用举例
B.6.3 另外一个过程调用的例子
B.7 异常和中断
B.8 输入和输出
B.9 SPIM
B.10 MIPS R2000汇编语言
B.10.1 寻址方式
B.10.2 汇编语法
B.10.3 MIPS指令编码
B.10.4 指令格式
B.10.5 常数操作指令
B.10.6 比较指令
B.10.7 分支指令
B.10.8 跳转指令
B.10.9 陷阱指令
B.10.10 取数指令
B.10.11 保存指令
B.10.12 数据传送指令
B.10.13 浮点运算指令
B.10.14 异常和中断指令
B.11 小结
B.12 参考文献
B.13 练习题
|
|