《计算机硬件系统设计原理》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:刘子良;徐高潮,齐红,申铉京,魏晓辉,刘苗编
  • 出 版 社:北京:高等教育出版社
  • 出版年份:2016
  • ISBN:7040442272
  • 页数:564 页
图书介绍:本书根据教育部提出的“基础学科拔尖学生培养试验计划(珠峰计划)”和“卓越工程师培养计划”编写的教材。它将已往的“微型计算机技术及应用”、“计算机组成原理”、“计算机系统结构”、“并行处理”和“精简指令集计算机(RISC)”等课程,从计算机系统硬件设计的角度出发,沿着:从单机指令串行执行到重叠到流水线;从线性流水线到非线性流水线;从指令的有序执行到乱序执行;从单机到多核到多机系统;从Von Neumann体制到非Von Neumann体制的脉络,有机地结合在一起。科学地、系统地、定量地揭示当代计算机的本质特征,使之运用到当前计算机系统设计问题中去。全书共分10章,

第1章 计算机设计史简介 1

1.1 自动计算发展史 1

1.2 从ENIAC到冯·诺依曼体系 3

1.2.1 ENIAC 3

1.2.2 冯·诺依曼体系 3

1.3 系列机与兼容机技术 4

1.4 层次技术 5

1.5 多层计算机 7

1.5.1 现代多层计算机每层的研究对象及层次间的关系 7

1.5.2 多层计算机的演化 10

1.6 虚拟机技术 11

1.7 从单机到多机系统 11

习题1 12

第2章 数学语言与计算机部件间的映像关系 13

2.1 一个实际数引入计算机所面临的问题 13

2.1.1 机器中如何表示符号 13

2.1.2 数码处理方案 14

2.1.3 小数点的处理:定点与浮点 15

2.1.4 一个实际数在机器中的数值化表示 15

2.2 有符号整数在机器内的表示 17

2.2.1 为什么会想到采用2的补码表示 17

2.2.2 用数学抽象方法探索其中奥妙 18

2.2.3 计算机中曾采用过1的补码表示 20

2.2.4 原码表示的评说 20

2.3 无符号整数在机器内的表示 21

2.4 有/无符号整数在机器内的存放 21

2.5 实数在机器内的表示 22

2.5.1 实数、浮点数表示两者之间存在的差异 22

2.5.2 IEEE754标准与以往浮点运算之区别 23

2.6 变量在机器内的表示 27

2.7 字符串数据在机器内的表示 30

2.7.1 Big-endian和Little-endian分配 30

2.7.2 具有定长结点的连接表表示法 31

2.7.3 块链结构 31

2.8 布尔值数据在机器内的表示 32

2.9 向量数据在机器内的表示 33

2.10 算术表达式在机器内的表示与软、硬件接口 35

2.10.1 算术表达式的机内表示 35

2.10.2 软、硬件接口 38

习题2 39

第3章 运算方法采用与运算器设计 41

3.1 加减运算及实现线路 41

3.1.1 补码加减法算法 41

3.1.2 补码加减运算器设计 42

3.2 数值运算中的溢出处理问题 43

3.2.1 带符号数溢出处理 43

3.2.2 无符号整数溢出处理方案 45

3.2.3 高级语言对溢出的处理 46

3.3 加法器逻辑结构的改进 46

3.3.1 影响速度的原因 46

3.3.2 计算机中常用的策略 49

3.4 二进制数的快速简捷算法 51

3.5 乘法器的设计 52

3.5.1 乘法器的硬件实现 52

3.5.2 带符号数乘法 57

3.5.3 Booth算法的核心技术 60

3.6 快速乘法器设计 61

3.6.1 查表法 61

3.6.2 华莱士树 62

3.7 除法器的设计 66

3.7.1 除法器的硬件实现 67

3.7.2 带符号数除法 69

3.8 SRT算法 76

3.8.1 基数-2 SRT除法 76

3.8.2 基数-4 SRT除法 78

3.9 浮点运算及实现线路 81

3.9.1 浮点乘法与除法 81

3.9.2 浮点加法与减法 83

3.9.3 浮点加法算术单元结构 85

3.10 构造算术逻辑单元 86

3.10.1 经典的ALU——SN74181 86

3.10.2 MIPS中构造32位ALU 90

习题3 94

第4章 指令集结构设计 96

4.1 什么是一个好的指令集结构 96

4.2 指令集设计中涉及的一般性问题 97

4.2.1 CPU的存储类型 97

4.2.2 寄存器组织 98

4.2.3 存储模式 99

4.3 指令集的词义学问题 101

4.3.1 指令集特征 101

4.3.2 指令中的地址结构 102

4.3.3 扩展操作码技术 104

4.3.4 等长编码 109

4.3.5 操作数给出方式、操作数总数和内存操作数个数 110

4.3.6 操作类型的采集及设置过程中的考虑 111

4.4 指令集的语法学问题 119

4.4.1 冯·诺依曼指令格式的局限性 119

4.4.2 寻址方式设置的一些观点 120

4.4.3 寻址方式与汇编语言程序设计 120

4.4.4 如何进行复杂的分支程序设计 127

4.4.5 循环程序设计中的软硬件接口 129

4.5 RISC与CISC之争 131

4.6 指令功能的增强与改进 133

习题4 138

第5章 存储器系统设计 140

5.1 主存层次设计 140

5.1.1 存储器的基本电路与存储器芯片的内部组织结构 140

5.1.2 工作时序 147

5.1.3 用ROM芯片和RAM芯片构成主存储器 148

5.1.4 大容量存储器结构 155

5.1.5 存储器控制与DRAM刷新开销 156

5.1.6 纠错 157

5.1.7 减少主存延迟的技术 162

5.1.8 提高主存带宽的技术 165

5.1.9 相联存储器 170

5.2 Cache层次设计 174

5.2.1 主存的一个块在Cache中的存放 176

5.2.2 如何找到在Cache中的一个块 179

5.2.3 没有命中时哪个块应被替换 190

5.2.4 信息的一致性 193

5.2.5 Cache工作过程与性能分析 195

5.2.6 Cache性能优化方案一:降低Cache的缺失率 200

5.2.7 Cache性能优化方案二:降低Cache失效开销 206

5.2.8 Cache性能优化方案三:减少命中时间 210

5.2.9 Cache实现 212

5.3 虚拟存储器层次设计 215

5.3.1 磁盘与磁盘系统的演化 216

5.3.2 虚拟存储器层次需解决的问题 225

5.3.3 磁盘中的一个块在主存中的存放 226

5.3.4 如何找到主存中的一个块 227

5.3.5 提高响应时间和响应速度的方法与技术 232

5.3.6 缺页 241

5.3.7 如何保证主存和磁盘信息的一致性 242

5.3.8 MMU技术 243

5.3.9 虚拟存储器与Cache实/虚模式下的交互 250

习题5 257

第6章 控制器设计 262

6.1 时序计数器法 262

6.2 模型机硬连线控制器的设计与实现 263

6.2.1 指令系统设计 264

6.2.2 CPU设计 268

6.2.3 信息传送路径 271

6.2.4 拟定时序系统 272

6.2.5 指令流程与操作时间表 273

6.2.6 微操作组合与化简 293

6.3 微程序设计 294

6.3.1 微程序时序 295

6.3.2 微指令格式设计 296

6.3.3 模型机的微指令格式设计及微程序控制器组成框图 299

6.3.4 微程序流程图 304

6.3.5 微程序编制 307

6.3.6 微程序在CM中的存放与转移示意 313

6.3.7 微代码编制 315

习题6 316

第7章 流水线控制技术 322

7.1 从一次重叠、先行控制到流水线 322

7.1.1 一次重叠 322

7.1.2 先行控制 324

7.1.3 流水线 326

7.2 流水线性能分析 328

7.2.1 吞吐率 328

7.2.2 加速比 329

7.2.3 效率 330

7.2.4 流水线性能分析举例 331

7.3 流水线指令集结构 336

7.3.1 DLX指令的处理步骤 337

7.3.2 以流水方式执行的指令集结构 337

7.3.3 DLX中的操作描述 339

7.4 DLX流水线的数据通路 339

7.4.1 非流水下的DLX数据通路 339

7.4.2 非流水下的DLX数据通路与以往80X86数据通路的比较 342

7.4.3 流水下的DLX数据通路 342

7.5 线性流水线中的“相关”问题及消除方法 346

7.5.1 结构冒险及消除方法 346

7.5.2 数据相关及存在的冒险 349

7.5.3 解决RAW冒险的方法 350

7.5.4 RAW冒险下的编译器调度 355

7.5.5 控制冒险及减少分支开销的方法 357

7.6 非线性流水线的调度 364

7.7 动态流水线 370

7.7.1 有序与乱序 370

7.7.2 采用记分板机制的动态调度法 371

7.7.3 Tomasulo动态调度法 378

7.8 超流水线与超标量流水线 387

7.8.1 超流水线 387

7.8.2 超标量流水线 388

习题7 394

第8章 输入/输出(I/O)系统设计 398

8.1 I/O系统设计中的一些问题 398

8.2 连接I/O设备到CPU/存储器 400

8.2.1 总线 400

8.2.2 总线技术的一般问题 401

8.3 可编程I/O 414

8.3.1 查询方式的由来 414

8.3.2 I/O命令和I/O指令 415

8.3.3 查询传送应用举例 416

8.3.4 I/O系统开销 418

8.4 中断系统设计 419

8.4.1 中断处理中的设计问题 419

8.4.2 中断的常规处理方案 421

8.4.3 中断服务程序设计 432

8.5 有关中断问题的讨论 437

8.5.1 如何尽量压缩系统的额外开销 437

8.5.2 中断和异常 441

8.5.3 中断系统中硬、软件的分工 445

8.5.4 流水线机器中异常的中断和处理 446

8.5.5 中断驱动I/O的开销 449

8.6 直接存储器访问(DMA) 450

8.6.1 DMA传输方式 451

8.6.2 DMA传送过程 451

8.6.3 DMA控制器实例 454

8.6.4 采用DMA进行I/O的开销 462

8.7 I/O通道 462

8.7.1 通道类型 463

8.7.2 通道结构计算机中的I/O指令和通道程序字 466

8.7.3 I/O通道工作过程 467

8.7.4 通道流量分析 470

8.8 I/O系统设计规范 473

8.9 I/O处理性能 476

8.9.1 响应时间与吞吐率 476

8.9.2 Little定律 477

8.9.3 Markovian模型 479

8.10 I/O与操作系统接口 481

8.10.1 操作系统在处理I/O中所扮演的角色 481

8.10.2 为了避免灰色数据I/O与主存、Cache的连接 482

8.10.3 存储系统虚/实地址模式下的DMA操作 484

8.10.4 在操作系统中使用的中断 485

习题8 487

第9章 多处理机 491

9.1 引言 491

9.2 SIMD计算机 492

9.2.1 阵列处理机 492

9.2.2 向量处理机 493

9.3 MIMD计算机 497

9.3.1 多处理机系统拓扑结构 498

9.3.2 路由 504

9.4 基于UMA的多处理机体系结构 507

9.4.1 基于UMA总线的SMP体系结构 508

9.4.2 可重构连接的UMA多处理机系统 509

9.4.3 多端口存储器 512

9.5 基于NUMA的多处理机体系结构 513

9.5.1 基于目录的NUMA多处理机系统 514

9.5.2 COMA多处理器系统 516

9.6 多处理机系统中的存储管理 517

9.6.1 共享存储器 517

9.6.2 共享变量访问 518

9.6.3 Cache一致性 519

9.6.4 MESI协议 521

9.7 多处理机编程 523

9.7.1 程序的并行性 524

9.7.2 并行程序设计特点 526

9.7.3 并行程序设计中程序的划分和调度 527

9.8 多处理机操作系统和软件 530

9.9 多核处理器与编程 534

9.9.1 多核处理器 534

9.9.2 多核编程 535

习题9 540

第10章 其他设计思想简介 544

10.1 数据流计算 544

10.2 归约机 548

10.3 脉动阵列 549

10.4 神经网络 552

10.5 计算机设计性能和定量准则 552

10.5.1 CPU性能分析 553

10.5.2 CPU性能分析举例 555

10.5.3 加速比的概念和Amdahl定律 557

10.5.4 测量CPU性能的各个分量 560

习题10 561

主要参考文献 563