《计算机系统结构》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:朱利,李晨编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2012
  • ISBN:9787302297444
  • 页数:439 页
图书介绍:本教材共分为14章,将计算机系统设计、性能评价和工程应用紧密结合起来,强调应用,增强课程的实践性;让未来不从事计算机系统设计的软件工程专业的学生,也觉得计算机系统结构课程“学而有用”。

第1章 计算机系统结构概论 1

1.1 计算机系统结构的基本概念 2

1.1.1 计算机系统结构的定义 2

1.1.2 计算机组成与计算机实现 2

1.2 计算机的分类 3

1.3 计算机系统设计与分析的量化原理 4

1.3.1 程序访问的局部性原理 4

1.3.2 利用并行与优化处理经常性事件 5

1.3.3 Amdahl定律 5

1.3.4 处理器的性能公式 7

1.3.5 可靠性 9

1.4 计算机系统的性能评测 10

1.4.1 主要性能指标 11

1.4.2 计算机性能测试 12

1.4.3 计算机性能测试实例 16

1.5 计算机技术的发展趋势 19

1.5.1 吞吐率相对于延时的发展趋势 19

1.5.2 集成电路的发展限制 20

1.5.3 计算机发展的新方向 22

1.6 本章总结 26

习题1 26

第2章 Cache 30

2.1 计算机存储系统的层次结构 30

2.1.1 存储器概述 30

2.1.2 存储器的层次结构 31

2.2 Cache系统的基本原理 33

2.2.1 Cache存储系统的构成与组织 33

2.2.2 Cache存储系统的基本性能参数 34

2.2.3 Cache的基本工作原理 37

2.3 Cache设计的关键问题 37

2.3.1 Cache的容量与行大小 37

2.3.2 映射机制 38

2.3.3 替换算法 45

2.3.4 单机系统的Cache写策略 49

2.3.5 Cache数量选择 50

2.4 Cache的性能分析 52

2.4.1 未中率 52

2.4.2 加速比 52

2.5 Cache的基本优化方法 53

2.5.1 增加行大小和容量,减少未中率 53

2.5.2 增加关联度减少未中率 55

2.5.3 使用多级Cache减少未中损失 57

2.5.4 让读未中的优先级高于写来减少未中损失 57

2.6 Cache的高级优化设计 58

2.6.1 踪迹Cache 58

2.6.2 路预测技术 59

2.6.3 流水Cache与非阻塞Cache 59

2.6.4 关键字优先和早重启 61

2.6.5 合并写缓存 62

2.6.6 预取技术 63

2.6.7 牺牲Cache和伪关联Cache 65

2.7 Cache的应用问题 66

2.7.1 循环交换与循环融合 67

2.7.2 数组合并与矩阵分块 68

2.8 Pentium 4与ARM中Cache的组织 70

2.8.1 Pentium中Cache的组织 70

2.8.2 ARM中的Cache组织 70

2.9 本章总结 71

习题2 72

第3章 内部存储器与外部存储器 75

3.1 半导体存储器 75

3.1.1 ROM 75

3.1.2 RAM 76

3.2 内部存储器芯片的组织 77

3.2.1 芯片的组织 77

3.2.2 存储模块的组织 77

3.3 高级内存的组织 78

3.3.1 SDRAM 79

3.3.2 RDRAM 80

3.3.3 DDR SDRAM 81

3.4 高性能存储器 82

3.4.1 多体交叉主存 82

3.4.2 并行访问主存 85

3.4.3 关联存储器 86

3.5 磁盘 87

3.5.1 磁盘的读写与数据组织 87

3.5.2 磁盘的物理特性 89

3.5.3 磁盘的性能参数 89

3.6 RAID 90

3.6.1 RAID0和RAID1 90

3.6.2 RAID2和RAID3 91

3.6.3 RAID4和RAID5 92

3.6.4 RAID6 94

3.6.5 组合式RAID 94

3.7 RAID7与网络化存储 96

3.7.1 RAID7 96

3.7.2 基于网络的并行存储 97

3.8 磁带 98

3.8.1 磁带的数据记录方式 98

3.8.2 磁带的数据组织 99

3.9 光学存储器 100

3.9.1 CD和CD-ROM 100

3.9.2 刻录CD、重写CD和DVD 101

3.9.3 集成光盘设备 102

3.10 本章总结 103

习题3 103

第4章 I/O系统 106

4.1 中断 106

4.1.1 中断源的组织 106

4.1.2 中断处理 107

4.1.3 中断源识别 108

4.1.4 中断现场的保存与恢复 109

4.2 I/O系统的功能与结构 110

4.2.1 I/O模块的功能 110

4.2.2 I/O模块的结构 111

4.3 基本I/O方式 112

4.3.1 可编程式I/O 112

4.3.2 中断驱动式I/O 113

4.3.3 DMA 115

4.4 高级I/O方式 118

4.4.1 I/O通道 118

4.4.2 I/O处理机 123

4.5 高性能I/O接口 124

4.5.1 SCSI 124

4.5.2 FireWire 125

4.5.3 InfiniBand 126

4.6 本章总结 128

习题4 129

第5章 虚拟内存 131

5.1 虚拟内存的组成 131

5.1.1 虚拟内存的组成 131

5.1.2 Cache系统与虚拟内存的比较 132

5.2 虚拟地址Cache 133

5.3 虚拟内存基础——进程调度与交换 134

5.3.1 进程调度 134

5.3.2 交换 135

5.4 分页式虚拟内存 136

5.4.1 分页机制 136

5.4.2 地址变换 137

5.4.3 页表的结构 138

5.4.4 快速页表查询方法 140

5.4.5 分页机制的优缺点 142

5.5 分段式虚拟内存 142

5.5.1 分段机制 142

5.5.2 分段式虚拟内存的优点和缺点 143

5.5.3 分段与分页的比较 144

5.6 段页式虚拟内存 145

5.7 页替换与分配算法 145

5.7.1 堆栈型替换算法 146

5.7.2 帧分配算法 146

5.8 降低页故障率的方法 147

5.8.1 页大小与主存容量的选择 147

5.8.2 页调度方式 147

5.9 Pentium的虚拟内存 148

5.10 ARM的内存管理 149

5.10.1 虚拟地址变换 150

5.10.2 访问控制 150

5.11 本章总结 151

习题5 152

第6章 指令系统 154

6.1 指令格式的优化设计 154

6.1.1 机器指令的组成与表示 154

6.1.2 操作码的优化设计 155

6.1.3 地址码的优化设计 157

6.1.4 指令格式设计 159

6.1.5 x86的指令格式 159

6.2 数据类型 161

6.2.1 数值型数据 161

6.2.2 字符型数据和逻辑型数据 163

6.2.3 数据的大小端模式 163

6.2.4 x86的数据类型 164

6.3 操作类型 165

6.3.1 数据传送与运算指令 165

6.3.2 控制传送指令 166

6.3.3 其他指令 167

6.4 寻址方式 168

6.4.1 基本寻址方式 168

6.4.2 x86的寻址方式 170

6.5 x86 SIMD指令及应用 172

6.5.1 MMX技术 173

6.5.2 SSE2 176

6.5.3 SSE4 177

6.6 本章总结 179

习题6 180

第7章 CPU的流水线技术 182

7.1 CPU的基本结构 182

7.1.1 寄存器的组织 183

7.1.2 内部总线组织 184

7.1.3 控制单元 184

7.1.4 指令周期 185

7.2 指令流水线 186

7.2.1 指令流水机制 186

7.2.2 流水线的性能分析 187

7.2.3 流水线的流水段数确定 191

7.3 复杂流水线 191

7.3.1 非线性流水线 191

7.3.2 非线性流水线的指令调度 193

7.3.3 多功能流水线 198

7.3.4 阵列流水线 199

7.4 流水线冲突与对策 199

7.4.1 结构冲突与对策 199

7.4.2 数据冲突与对策 200

7.4.3 控制冲突及对策 203

7.4.4 流水线的动态调度 212

7.4.5 循环展开 214

7.5 流水线的中断处理 216

7.5.1 中断的类型与需求 217

7.5.2 精确中断的维护 218

7.6 流水线的应用 221

7.7 本章总结 224

习题7 224

第8章 RISC与嵌入式架构 228

8.1 程序的执行特征 228

8.2 RISC的寄存器组织 229

8.2.1 交叠的寄存器窗口 230

8.2.2 全局变量寄存器 231

8.2.3 寄存器组与Cache的比较 232

8.3 基于编译器的寄存器使用优化 232

8.4 RISC架构 233

8.4.1 RISC的特征 233

8.4.2 RISC与CISC的比较 235

8.5 RISC流水线 236

8.5.1 规则指令的流水 236

8.5.2 流水线优化 237

8.6 SPARC 240

8.6.1 SPARC寄存器组 240

8.6.2 SPARC的指令集 241

8.6.3 SPARC的指令格式 242

8.7 嵌入式架构 243

8.7.1 嵌入式系统的架构 243

8.7.2 ARM架构 245

8.8 本章总结 249

习题8 249

第9章 超标量与VLIW架构 252

9.1 超标量与超流水线 252

9.1.1 超标量的基本特征 252

9.1.2 超流水线与超标量 253

9.1.3 超标量超流水线处理器的性能 254

9.2 超标量的组织 256

9.2.1 超标量流水线的并行性、多样性和动态性 256

9.2.2 超标量的组织 258

9.2.3 超标量流水线中指令的动态调度 264

9.3 Tomasulo动态调度机制 266

9.3.1 Tomasulo算法的基本结构 266

9.3.2 Tomasulo算法的实例 269

9.4 基于硬件的推测 271

9.4.1 推测技术的基本原理 271

9.4.2 推测技术的硬件结构 271

9.4.3 推测技术中的冲突处理 273

9.5 Pentium 4 274

9.5.1 Pentium 4的微架构 274

9.5.2 Pentium 4的组成 275

9.6 VLIW与EPIC架构 277

9.6.1 基本的VLIW方法 277

9.6.2 EPIC技术 278

9.7 本章总结 286

习题9 286

第10章 多核架构与多核程序设计 288

10.1 多核的必然性 288

10.1.1 功耗与散热问题 288

10.1.2 并行度问题 289

10.1.3 应用软件的要求 290

10.2 从SMT到多核 291

10.2.1 线程级的并行 291

10.2.2 SMT架构 292

10.2.3 SMT设计问题 294

10.3 多核架构 295

10.3.1 多核的组织 295

10.3.2 互连机制与Cache的一致性问题 297

10.4 Intel x86和ARM的多核组织 304

10.4.1 Intel x86多核组织 304

10.4.2 ARM11 MPCore 306

10.5 并行程序设计基础 308

10.5.1 并行程序设计的理论基础 308

10.5.2 进程与线程 309

10.5.3 并行程序设计基础 311

10.6 并行程序设计模式 316

10.6.1 并行性发现 316

10.6.2 算法结构设计 319

10.6.3 结构设计支撑 326

10.6.4 实现机制设计 332

10.7 多核编程API 333

10.7.1 Windows和Linux环境下的多线程编程 333

10.7.2 平台无关的多线程API:OpenMP 334

10.7.3 MPI 336

10.8 本章总结 336

习题10 337

第11章 多处理器系统 339

11.1 多处理器系统的组织 339

11.1.1 并行计算机的Flynn分类 339

11.1.2 并行计算机的组织 341

11.2 SMP 342

11.2.1 SMP的组织 343

11.2.2 SMP操作系统设计问题 344

11.2.3 一个Mainframe SMP实例 344

11.2.4 Cache的一致性和MESI协议 346

11.3 SMP的互连机制 352

11.3.1 基于多端口主存的互连 352

11.3.2 中央控制单元 353

11.3.3 互连网络 353

11.3.4 消息通信 360

11.4 机群系统 366

11.4.1 机群的特点和应用配置 366

11.4.2 机群操作系统的设计问题 368

11.4.3 机群的架构 369

11.4.4 机群和SMP的比较 371

11.5 NUMA系统 371

11.5.1 开发NUMA系统的动机 371

11.5.2 NUMA的组织 372

11.5.3 NUMA的优点和缺点 374

11.5.4 超级计算机 374

11.6 向量机 375

11.7 网格计算 379

11.7.1 网格计算的定义及其用途 379

11.7.2 网格的架构 381

11.7.3 网格的一般组成 383

11.7.4 基于开源技术的网格开发 386

11.8 本章总结 388

习题11 388

第12章 云计算 393

12.1 云计算的概念与特征 393

12.1.1 云计算与计算云 393

12.1.2 云计算的特征和模型 395

12.1.3 云计算的重要性 401

12.2 云计算的架构 402

12.2.1 云计算的参考架构 402

12.2.2 云计算架构实例:Intel IT私有云架构 408

12.3 云计算的关键技术 410

12.3.1 虚拟化 410

12.3.2 资源管理与调度 414

12.3.3 云计算的安全性 418

12.3.4 数据存储与管理 422

12.3.5 编程模型与工具 426

12.3.6 其他关键技术 426

12.4 云联邦与云互连架构 427

12.4.1 云联邦与云互连的概念 427

12.4.2 云联邦的架构 428

12.5 MapReduce编程模型 431

12.5.1 MapReduce的基本特征 432

12.5.2 MapReduce编程模型 432

12.5.3 MapReduce的执行 434

12.6 从数据中心到云:7步模型 434

12.6.1 7步模型 435

12.6.2 迁移风险和风险缓解 435

12.7 本章总结 436

习题12 436

参考文献 438