《并行计算机体系结构 硬件/软件结合的设计与分析 原书第2版》PDF下载

  • 购买积分:21 如何计算积分?
  • 作  者:(美)David E. Culler等著;李晓明等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2003
  • ISBN:7111078888
  • 页数:776 页
图书介绍:当今并行计算机体系结构最令人振奋的发展是对传统的相互各异的并行实现方式的完美综合。本书正是以此技术为背景,通过大量的实例,精确的数据和作者对并行结构深邃的理解向人们提示了蕴藏于并行体系结构中的强大力量,并同时首次对设计的平衡性能做了充分的定量评估。本书用硬件、软件方面的最新技术对并行结构设计中的若干重大问题做了全面、深刻的追踪探讨。本书是诸多专家智慧的结晶、经验的融合,是广大学生、科研人员、工程人员的权威教材,也是奉献于并行结构科学的经典之作。DavidE.Culler&JaswinderPalSinghwithAnoopGupta:ParallelComputerArchitecture,A

第1章 引论 1

1.1 为什么要用并行体系结构 3

1.1.1 计算机应用发展的趋势 4

1.1.2 微电子技术趋势 9

1.1.3 体系结构趋势 10

1.1.4 超级计算机 15

1.1.5 小结 17

1.2 并行体系结构的融合 18

1.2.1 通信体系结构 18

1.2.2 共享地址空间 20

1.2.3 消息传递 27

1.2.4 融合 29

1.2.5 数据并行处理 32

1.2.6 其他并行体系结构 34

1.2.7 一个通用并行体系结构 36

1.3 基本的设计问题 37

1.3.1 通信抽象 38

1.3.2 编程模型的要求 38

1.3.3 通信和复制 41

1.3.4 性能 42

1.4 结论 45

1.3.5 小结 45

1.5 历史资料 47

习题 50

第2章 并行程序 54

2.1 并行应用的案例分析 55

2.1.1 洋流的模拟 55

2.1.2 星系演化的模拟 56

2.1.3 用光线跟踪法来实现复杂场景的可视化 57

2.1.4 针对关联性的数据挖掘 58

2.2 并行化过程 58

2.2.1 程序并行化过程中的几个步骤 59

2.2.3 并行化过程的目标 65

2.2.2 计算并行和数据并行 65

2.3 一个例子程序的并行化 66

2.3.1 方程求解器的内核 66

2.3.2 分解 68

2.3.3 分配 71

2.3.4 在数据并行模型下的协调 72

2.3.5 在共享地址空间模型下的协调 73

2.3.6 在消息传递模型下的协调 78

2.4 结论 84

习题 84

第3章 面向性能的程序设计 88

3.1划分阶段的性能问题 89

3.1.1 负载平衡和同步等待时间 90

3.1.2 减少固有的通信 95

3.1.3 减少额外的工作 98

3.1.4 小结 99

3.2 在多存储器系统中的数据访问和通信 100

3.2.1 看作扩展的存储层次结构的多处理器系统 100

3.2.2 在扩展的存储层次结构中的附加通信 101

3.2.3 用工作集的观点看附加的通信和数据的复制 102

3.3 性能的协调 103

3.3.1 减少附加通信 103

3.3.2 将通信结构化以降低代价 108

3.4 从处理器角度看到的性能因素 113

3.5 并行应用程序案例的深入分析 115

3.5.1 Ocean 116

3.5.2 Barnes-Hut 120

3.5.3 光线跟踪 125

3.5.4 数据挖掘 128

3.6 编程模型涉及的问题 131

3.6.1 命名 132

3.6.2 复制 132

3.6.3 通信的开销和粒度 133

3.6.5 同步 134

3.6.4 块数据传送 134

3.6.6 硬件代价和设计复杂性 135

3.6.7 性能模型 135

3.6.8 小结 136

3.7 结论 136

习题 137

第4章 工作负载驱动的性能评价 142

4.1 改变工作负载和机器的规模 144

4.1.1 多处理器性能的基本测量 144

4.1.2 为什么要考虑扩放性 145

4.1.4 扩放模型和加速比的测量 148

4.1.3 扩放的关键问题 148

4.1.5 扩放模型对方程求解器内核的影响 151

4.1.6 扩放工作负载参数 153

4.2 评价一台实际的机器 154

4.2.1 使用微基准测试程序分离性能 154

4.2.2 选择工作负载 156

4.2.3 评价一台固定规模的机器 158

4.2.4 改变机器的规模 163

4.2.5 选择性能指标 164

4.3 对一个体系结构概念或设计权衡的评估 166

4.3.1 多处理器的模拟 167

4.3.2 缩小模拟的问题和机器参数的规模 168

4.3.3 处理参数空间:评价举例 171

4.3.4 小结 174

4.4 说明工作负载的特征 175

4.4.1 工作负载案例分析 175

4.4.2 工作负载的特征化 182

4.5 结论 188

习题 189

第5章 共享存储的多处理器 193

5.1 高速缓存的一致性 196

5.1.1 高速缓存一致性问题 196

5.1.2 通过总线侦听的高速缓存一致性 199

5.2 存储同一性 204

5.2.1 顺序同一性 206

5.2.2 保证顺序同一性的充分条件 208

5.3 总线侦听协议的设计空间 210

5.3.1 一种三态(MSI)回写作废式协议 211

5.3.2 一种四态(MESI)回写作废式协议 215

5.3.3 一种四态(Dragon)回写更新式协议 217

5.4 关于协议设计中若干折中的评估 220

5.4.1 方法论 221

5.4.2 在MESI协议下的带宽需求 223

5.4.3 协议优化的影响 224

5.4.4 高速缓存中存储块大小的权衡 227

5.4.5 基于更新和基于作废协议的对比 238

5.5 同步 241

5.5.1 同步事件的组成部分 242

5.5.2 用户和系统的角色 243

5.5.3 互斥 244

5.5.4 点对点事件同步 254

5.5.5 全局(栅障)事件的同步 255

5.5.6 同步问题小结 259

5.6 对软件的影响 259

5.7 结论 264

习题 265

6.1 正确性需求 273

第6章 基于侦听的多处理器的设计 273

6.2 基础设计:采用原子总线的单级高速缓存 275

6.2.1 高速缓存控制器和标记的设计 276

6.2.2 侦听结果的报告 277

6.2.3 对回写的处理 278

6.2.4 基础系统组织 279

6.2.5 非原子性的状态转移 279

6.2.6 串行化 281

6.2.7 死锁 282

6.2.8 活锁和挨饿 283

6.2.9 原子操作的实现 283

6.3 多级高速缓存层次结构 284

6.3.1 包含性的维护 285

6.3.2 在高速缓存层次结构中传播一致性的事务 287

6.4 事务拆分型总线 289

6.4.1 事务拆分型总线设计的一个例子 290

6.4.2 总线设计和请求-响应的匹配 290

6.4.3 侦听结果和冲突的请求 292

6.4.4 流控制 293

6.4.5 一次缓存扑空的路线 293

6.4.6 串行化和顺序同一性 294

6.4.7 其他设计选择 296

6.4.8 带有多级高速缓存的事务拆分型总线 297

6.4.9 对一个处理器有多个待完成扑空的支持 299

6.5 实例分析:SGI Challenge和Sun Enterprise 6000 301

6.5.1 SGI Powerpath-2系统总线 302

6.5.2 SGI处理器和内存子系统 304

6.5.3 SGI I/O子系统 306

6.5.4 SGI Challenge内存系统性能 307

6.5.5 Sun Gigaplane系统总线 308

6.5.6 Sun处理器和内存系统 309

6.5.7 Sun I/O子系统 311

6.5.8 Sun Enterprise内存系统性能 311

6.5.9 应用程序性能 312

6.6.1 共享缓存的设计 314

6.6 高速缓存一致性的扩充 314

6.6.2 虚拟标引缓存的一致性 317

6.6.3 转换检测缓冲器的一致性 318

6.6.4 环上基于侦听的高速缓存一致性 320

6.6.5 在基于总线的系统中的数据和侦听带宽的扩展 322

6.7 结论 323

习题 324

第7章 可扩展多处理器 329

7.1 可扩展性 331

7.1.1 带宽的可扩展性 331

7.1.2 时延的可扩展性 333

7.1.3 成本的可扩展性 334

7.1.4 物理可扩展性 336

7.1.5 通用并行体系结构的可扩展性 339

7.2 编程模型的实现 340

7.2.1 基本的网络事务 341

7.2.2 共享地址空间 343

7.2.3 消息传递 346

7.2.4 主动消息 349

7.2.5 共同的挑战 350

7.2.6 通信体系结构设计空间 351

7.3.1 节点到网络的接口 352

7.3 物理DMA 352

7.3.2 通信抽象的实现 354

7.3.3 案例分析:nCUBE/2 354

7.3.4 典型的局域网接口 355

7.4 用户级访问 356

7.4.1 节点到网络的接口 356

7.4.2 案例分析:Thinking Machines CM-5 357

7.4.3 用户级的处理程序 358

7.5 专用消息处理 360

7.5.1 案例分析:Intel Paragon 362

7.5.2 案例分析:Meiko CS-2 365

7.6 共享的物理地址空间 367

7.6.1 案例分析:CRAY T3D 369

7.6.2 案例分析:CRAY T3E 371

7.6.3 小结 372

7.7 工作站机群和工作站网络 372

7.7.1 案例分析:Myrinet SBUS Lanai 374

7.7.2 案例分析:PCI存储器通道 376

7.8 并行软件涉及的问题 378

7.8.1 网络事务的性能 378

7.8.2 共享地址空间操作 382

7.8.3 消息传递操作 383

7.8.4 应用层性能 384

7.9 同步 390

7.9.1 加锁算法 390

7.9.2 栅障算法 393

7.10 结论 397

习题 398

第8章 基于目录的高速缓存一致性 400

8.1 可扩展的高速缓存一致性 403

8.2 基于目录方法概述 404

8.2.1 简单目录方案的操作 404

8.2.2 可扩展性 407

8.2.3 组织目录表的其他方法 408

8.3 目录协议和折中的评价 412

8.3.1 目录方案的数据共享模式 413

8.3.2 本地和远程通信流量 418

8.3.3 高速缓存块尺寸的影响 423

8.4 目录协议设计上的挑战性问题 423

8.4.1 性能 423

8.4.2 正确性 427

8.5 基于存储器的目录协议:SGI的Origin系统 432

8.5.1 高速缓存一致性协议 432

8.5.2 关于正确性问题 438

8.5.3 目录结构的细节 441

8.5.4 协议扩展 442

8.5.5 Origin2000硬件概述 443

8.5.6 Hub的实现 445

8.5.7 性能特征 447

8.6 基于高速缓存的目录协议:Sequent的NUMA-Q 451

8.6.1 高速缓存一致性协议 452

8.6.2 关于正确性问题 458

8.6.3 协议扩展 459

8.6.4 NUMA-Q硬件一览 460

8.6.5 协议和SMP节点的交互 462

8.6.6 IQ链路的实现 463

8.6.7 性能特征 464

8.6.8 对比案例分析:HALS1多处理器 466

8.7 性能参数和协议性能 467

8.8 同步 469

8.8.1 几种同步算法的性能 470

8.8.2 实现原子性原语 471

8.9 对并行软件的影响 472

8.10 高级论题 474

8.10.1 减少目录存储的开销 474

8.10.2 层次式的一致性 477

8.11 结论 484

习题 485

第9章 硬件/软件功能的折中 491

9.1 放松的存储同一性模型 492

9.1.1 系统规范说明 496

9.1.2 程序员接口 501

9.1.3 翻译机制 504

9.1.4 真实的多处理器系统中的同一性模型 504

9.2 克服容量限制 505

9.2.1 第三层高速缓存 505

9.2.2 惟有高速缓存的存储器体系结构 506

9.3 降低硬件成本 509

9.3.2 通过代码修改实现的访问控制 510

9.3.1 具有去耦辅助部件的硬件访问控制 510

9.3.3 基于页面的访问控制:共享虚拟存储器 511

9.3.4 语言和编译器支持的访问控制 520

9.4 综合:分类和简单的COMA 522

9.4.1 综合:简单的COMA和Stache 523

9.5 对并行软件的影响 526

9.6 高级论题 527

9.6.1 灵活性和CC-NUMA系统中的地址约束 527

9.6.2 以软件实现放松的存储同一性 528

9.7 结论 533

习题 533

第10章 互连网络设计 539

10.1 基本定义 540

10.2 基本的通信性能 543

10.2.1 时延 543

10.2.2 带宽 547

10.3 组织结构 549

10.3.1 链路 550

10.3.2 交换机 551

10.3.3 网络接口 552

10.4.2 线性阵列和环 553

10.4.1 全连接网络 553

10.4 互连拓扑结构 553

10.4.3 多维网格和多维花环 554

10.4.4 树 555

10.4.5 蝶网 557

10.4.6 超立方体 560

10.5 对网络拓扑设计折中的评价 561

10.5.1 无负载时延 562

10.5.2 负载情况下的时延 565

10.6 路由 569

10.6.1 路由机制 569

10.6.3 免死锁 570

10.6.2 确定性路由 570

10.6.4 虚通道 573

10.6.5 上行*-下行*路由 574

10.6.6 折转模型路由 575

10.6.7 自适应路由 577

10.7 交换机的设计 578

10.7.1 端口 578

10.7.2 内部数据通路 579

10.7.3 通道缓冲 580

10.7.4 输出调度 583

10.8 流控 585

10.7.5 堆叠式维度交换机 585

10.8.1 并行计算机网络与局域网、广域网的对照 586

10.8.2 链路级的流控 587

10.8.3 端到端的流控 590

10.9 案例分析 591

10.9.1 CRAY T3D网络 591

10.9.2 IBM SP-1、SP-2网络 593

10.9.3 可扩展一致性接口 595

10.9.4 SGI的Origin网 596

10.9.5 Myricom网络 597

10.10 结论 598

习题 598

第11章 时延的包容 601

11.1.1 时延包容与通信流水线 603

11.1 时延包容技术概述 603

11.1.2 采用技术 605

11.1.3 基本要求、优点与局限性 607

11.2 显式消息传递中的时延包容 612

11.2.1 通信结构 612

11.2.2 块数据传送 612

11.2.3 预通信 613

11.2.5 多线程技术 614

11.3 共享地址空间中的时延包容 614

11.2.4 跨越同一线程中的通信 614

11.4 共享地址空间中的数据成块传送 615

11.4.1 技术和机制 616

11.4.2 策略问题和折衷方案 617

11.4.3 性能收益 618

11.5 跨越长时延事件 622

11.5.1 跨越写操作 623

11.5.2 跨越读操作 626

11.5.3 小结 632

11.6 共享地址空间中的预通信 632

11.6.1 没有共享数据高速缓存的共享地址空间 632

11.6.2 缓存一致的共享地址空间 634

11.6.3 性能收益 641

11.7 共享地址空间中的多线程技术 645

11.6.4 小结 645

11.7.1 技术和机制 646

11.7.2 性能收益 656

11.7.3 阻塞方式的实现问题 658

11.7.4 交替方式的实现问题 660

11.7.5 在多发布处理器中集成多线程 662

11.8 免锁定的缓存设计 664

11.9 结论 666

习题 667

12.1 技术与体系结构 673

第12章 将来的发展方向 673

12.1.1 演变趋势 674

12.1.2 遇到的阻碍 676

12.1.3 潜在的突破 679

12.2 应用程序和系统软件 687

12.2.1 演变趋势 687

12.2.2 遇到的困难 690

12.2.3 潜在的突破 691

附录 并行基准测试程序集 692

参考文献 696

索引 722