# 3.15 结束语
<!-- source: p0290 -->

2000 年伊始，对开发 ILP 的关注达到顶峰。新世纪的前五年，人们逐渐看清：ILP 方法很可能已经见顶，需要寻找新方法。到 2005 年，Intel 和其他所有主要处理器厂商，都调整了方向，把重点转向多核。更高性能将通过 TLP 而非 ILP 实现，高效使用处理器的责任也将大幅从硬件转移到软件与程序员身上。这是自 25 多年前流水线和 ILP 早期发展以来，处理器体系结构最重大的变化。如今，除最深度嵌入式的应用领域外，已经很难找到单核芯片。

同一时期，设计者开始探索利用更多数据级并行性，作为提高性能的另一条途径。SIMD 扩展让桌面和服务器微处理器在图形及类似功能上取得适度性能提升。更重要的是，GPU 积极采用 SIMD，在具有大量 DLP 的应用中取得显著性能优势。对于科学计算应用，这些方法提供了一种可行选择，替代多核所利用的更通用、但效率较低的 TLP。第 4 章将探讨 DLP 应用的这些发展。2015 年前后又发生了一次重大技术转向：设计者开始探索领域专用体系结构，以牺牲部分可编程性，换取机器学习计算等关键应用在性能与功耗效率方面的大幅提升。第 7 章重点讨论领域专用硬件的构建。

许多研究者预言，ILP 的使用会大幅收缩，未来属于双发射超标量处理器和更多核心。然而，略高的发射速率本身有优势，推测式动态调度又能够应对一级缓存未命中等不可预测事件，因此，即使在数据中心等具有充足 TLP 的应用领域，多核设计的主要构件——处理器核心——仍在缓慢而稳定地改善 ILP。SMT 的加入，以及它在性能与能效方面的有效性，进一步巩固了推测式乱序执行的地位。尽管超标量设计的改进速度确实放缓，Intel、AMD、Arm、Apple 和 IBM 等厂商，仍持续、适时地推出<!-- source: p0291 -->改进。实际上，即使在嵌入式市场，最新处理器也已经引入动态调度、推测和更宽的发射。2023 年性能最好的乱序核心之一，是 Apple Avalanche，应用于智能手机的 A15 芯片和笔记本电脑的 M2 芯片。

ILP 的改进速度不太可能显著加快。从硅面积利用率和功耗效率来看，它实在过于低效。不过，ILP 缓慢改进的趋势很可能继续。单线程性能对若干工作负载的重要性，以及 ILP 技术广泛的适用性，仍然是重要考量。此外，在同一芯片中结合高性能核心与高能效核心，或结合可编程核心与定制加速器，可以平衡效率方面的顾虑，从而支持不断改进的乱序核心投入使用。请看图 3.46，其中列出 IBM Power 系列的七代处理器。Power 面向银行系统、客户关系管理等企业应用的高性能需求，通常属于领先的 ILP 设计。二十年来，Power 对 ILP 的支持持续改善，但晶体管数量增长的绝大部分——从 Power4 到 Power10 超过 100 倍——用于扩大片上缓存容量和增加每个裸片的核心数量。单线程每周期最多发射指令数，从 Power4 的 5 条增加到 Power10 的 8 条。Power10 SMT8 核心组织为两个执行域，每个域服务 8 个线程，并提供足以每周期发射 8 条指令的资源。同时，SMT 支持从无，发展到每个处理器 8 个线程。多代高性能 Intel 微体系结构也呈现类似趋势：新增硅面积中的很大一部分，用于支持更多核心、更宽 SIMD 单元和更大缓存。接下来的两章，重点讨论利用数据级与线程级并行性的方法。

| 特性 | Power4 | Power5 | Power6 | Power7 | Power8 | Power9 | Power10 |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| 推出年份 | 2001 | 2004 | 2007 | 2010 | 2014 | 2017 | 2021 |
| 峰值时钟频率（GHz） | 1.3 | 1.9 | 5.0 | 4.14 | 4.35 | 4.0 | 4.15 |
| 晶体管数量（百万） | 174 | 276 | 790 | 1,200 | 4,200 | 8,000 | 18,000 |
| 每周期发射数 | 5 | 5 | 7 | 6 | 8 | 18 | 16 |
| 每核功能单元数 | 8 | 8 | 9 | 12 | 16 | 38 | 42 |
| 每核 SMT 线程数 | 0 | 2 | 2 | 4 | 8 | 8 | 8 |
| 每芯片核心数 | 2 | 2 | 2 | 8 | 12 | 12 | 16 |
| 片上缓存总量（MiB） | 1.5 | 2 | 8 | 35 | 103.0 | 128 | 163 |
{#fig-3.46 .wide .expand num="3.46" caption="七代 IBM Power 处理器的特性。"}

**图 3.46** 七代 IBM Power 处理器的特性。除了采用静态、顺序执行的 Power6，其余都是动态调度超标量处理器。Power7 和 Power8 的 L3 缓存采用嵌入式 DRAM。前文已简要介绍 Power9，它进一步扩大缓存，并支持片外 HBM。Power10 SMT8 核心包含两个执行资源域，每个域提供最多服务四个硬件线程的资源。因此，总发射宽度为每周期 16 条指令，而单线程每周期最多发射 8 条指令。

> 译注：正文称 Power10 每个执行域服务 8 个线程，图注则为每域最多 4 个；正文还使用“每处理器 8 个线程”，表格口径为“每核”。三处均忠实保留，不将其混为同一资源范围。表中 Power9 发射数 18 也是原页数值。
