# I.9 结束语
<!-- source: p1219 -->

在此前五到十年间，大规模多处理器的格局发生了剧烈变化。规模最大的多处理器都采用了某种形式的集群，但将它们统称为“集群”，会掩盖体系结构、实现方式、成本和性能上的重大差异。Bell 和 Gray［2002］讨论了这一趋势，认为集群将占主导地位。Dongarra 等［2005］也认为，对于最大的多处理器，某种形式的集群几乎不可避免；但他们提出了更细致的分类，以区分各种不同方案。

<!-- source: p1220 -->

图 I.20 汇总了用于大规模多处理器的术语，着重从体系结构和实现角度定义这些名称。图 I.21 展示了各种体系结构方案之间的层次关系。虽然过去十五年间方案有所趋同，但以 Linpack 基准评测世界上最快 500 台计算机的 TOP500 榜单，仍包含通用商品集群、定制集群、对称多处理器（SMP）、分布式共享内存系统（DSM）和 constellation；其中既有标量处理器，也有向量处理器。

| 术语 | 特征 | 示例 |
| --- | --- | --- |
| MPP | 最初指由大量小型处理器构成的一类体系结构；处理器通常为定制设计，体系结构通常采用 SIMD 方式。 | Connection Machines CM-2 |
| SMP（对称多处理器） | 共享内存多处理器，各处理器与内存之间的关系对称，也称 UMA（均匀存储器访问）。可扩展版本采用多级互连网络，典型配置上限为 64–128 个处理器。 | SUN Sunfire、NEC Earth Simulator |
| DSM（分布式共享内存） | 以分布方式支持可扩展共享内存的一类体系结构。既有支持缓存一致性的实现，也有不支持的实现；通常可容纳数百至数千个处理器。 | SGI Origin 和 Altix、Cray T3E、Cray X1、IBM p5 590/5 |
| 集群（cluster） | 使用消息传递的一类多处理器。各节点可采用通用商品或定制设计，互连也一样。 | 见通用商品集群与定制集群两行 |
| 通用商品集群（commodity cluster） | 节点完全采用通用商品，通常是无显示终端的工作站、主板或刀片服务器，通过 SAN 或 LAN 相连，通常经 I/O 总线访问网络。 | Beowulf 及其他自行组装的集群 |
| 定制集群（custom cluster） | 节点和互连均为定制设计，比通用商品集群集成得更紧密；也称分布式存储多处理器或消息传递多处理器。 | IBM Blue Gene、Cray XT3 |
| Constellation | 将规模较小的多处理器组成集群，构成大规模多处理器。所用小规模多处理器通常采用 DSM 或 SMP 体系结构，并有 32 个或更多处理器。 | 较大的 SGI Origin/Altix、ASC Purple |
{#fig-I.20 .wide .expand num="I.20" caption="大规模多处理器的分类。MPP 原本具有表中所述含义，后来常被不够精确地泛用于全部大规模多处理器。按原书写作时的情况，正在商业出货的多处理器没有一种是原始含义上的真正 MPP，但未来这种方案可能有意义。SMP 和 DSM 两类都包含支持向量的多处理器。Constellation 有多种用法，表中的用法既直观又精确［Dongarra 等，2005］。"}

表中的 `IBM p5 590/5` 产品名称按原表保留。Constellation 在这里是特定系统分类名，保留英文，以免另造中文名称造成歧义。

不过，从 TOP500 榜单中各类多处理器的分布，仍能看出一些正在形成的趋势：

1. **集群占据系统总数的大多数。** 开发工作量较小，显然是其日益普及的动力。<!-- source: p1221 -->高端多处理器市场还没有发展到足够大的规模，无法让全盘高度定制的设计成为主流选择。
2. **多数集群采用通用商品。** 它们往往由用户自行组装，而非由系统厂商设计成标准产品。
3. **榜单前 25 名的类型更为多样。** 尽管通用商品集群在总数上占主导地位，前 25 名却包括九个定制集群，主要是 Blue Gene 或 Cray XT3；两个 constellation；八个通用商品集群；两个 SMP，其中一个是节点采用向量处理器的 NEC Earth Simulator；以及四个 DSM 多处理器。
4. **向量处理器几乎消失。** 它们曾经占据榜单的主导地位。
5. **IBM Blue Gene 主导前十名。** 这体现了其设计取舍的优势：采用部分通用商品处理器核心，定制许多其他功能，并兼顾性能、功耗和封装密度。
6. **体系结构趋同更多源自市场作用。** 增长不足、供应商有限等因素的推动，比对“最佳体系结构方案”形成明确共识更强。

![大规模多处理器的体系结构分类树](/figures/app-i/fig-i-21.png)
{#fig-I.21 .wide .expand num="I.21" caption="大规模多处理器的设计空间，以及不同类别之间的关系。"}

图中顶层按地址空间分为两支。**共享地址空间**下分为对称共享内存 SMP（IBM eServer、SUN Sunfire）和分布式共享内存 DSM；DSM 再区分为缓存一致的 ccNUMA（SGI Origin/Altix）与不支持缓存一致性的系统（Cray T3E、X1）。**分布式地址空间**下分为通用商品集群（Beowulf 等）和定制集群；定制集群再分为节点结构统一的集群（IBM Blue Gene），以及由 DSM 或 SMP 组成的 constellation 集群（SGI Altix、ASC Purple）。

软件——包括应用程序、编程语言和编程环境——仍是并行计算的重大挑战，就像三十年前设计 Illiac IV 等多处理器时一样。编程容易与并行性能高，仍难以兼得。<!-- source: p1222 -->在这个方面取得更大进展之前，要向单一编程模型及其底层体系结构方案收敛，进程仍会缓慢，或者由已获证实的体系结构优势以外的因素推动。别忘了，对于单处理器，我们实质上已经有一种编程模型和一种体系结构方案！
