# 5.10 多核扩展的未来
<!-- source: p0466 -->

40 多年来，研究者与设计者一直预言，单处理器将走向终结，多处理器将占据主导地位。直到本世纪初，这种预测还不断被事实否定。第 3 章已经说明，试图发现和利用更多 ILP，在硅面积和功耗方面的效率代价已高到难以承受。当然，多核并不能神奇地解决功耗问题，因为它显然既增加晶体管总数，也增加正在切换的活跃晶体管数量，而这两者正是功耗的主要来源。

<!-- source: p0467 -->

本节将看到，能耗问题已经在限制多核扩展，今后的限制很可能也比此前设想的更严重。

ILP 扩展失效，既因为可用 ILP 有限，也因为利用这些 ILP 的效率有限。类似地，两种因素共同决定，单靠增加核心来提高性能，不太可能普遍成功，至少作为加快单个程序的方法如此。一方面是 Amdahl 定律所揭示的并行性利用效率问题，另一方面是决定多核处理器能耗需求的 Dennard 缩放规律失效。

为理解这些因素，我们采用一个简单的工艺缩放模型，依据 Esmaeilzadeh et al.（2012）广泛而详尽的分析。先回顾 CMOS 的能耗和功率。第 1 章给出晶体管切换所需能量：

$$
\text{能量}\propto\text{电容负载}\times\text{电压}^{2}
$$

CMOS 缩放主要受热功率限制，热功率由静态漏电功率和通常占主导的动态功率组成。功率为：

$$
\begin{aligned}
\text{功率}
&=\text{每晶体管能量}\times\text{频率}\times\text{切换晶体管数}\\
&=\text{电容负载}\times\text{电压}^{2}\times\text{频率}\times\text{切换晶体管数}
\end{aligned}
$$

为理解能量和功率缩放的影响，将较早的 Xeon E5，即 2014／2015 年的 22 nm 工艺，与 2021 年 Xeon Platinum 的 10 nm 工艺比较。图 5.34 根据工艺预测，列出其对能量、功率缩放的影响。注意，功率缩放比大于 1.0，意味着新器件消耗更多功率；这里为原来的 1.79 倍。

| 比较项目 | 缩放比 |
| --- | ---: |
| 器件数量缩放，每个晶体管面积变为四分之一 | 4 |
| 频率缩放，依据器件速度预测 | 1.75 |
| 预测的电压缩放 | 0.81 |
| 预测的电容缩放 | 0.39 |
| 每个切换晶体管的能量缩放，\(CV^2\) | 0.26 |
| 假定切换晶体管比例相同，且芯片达到完整频率缩放时的功率缩放 | 1.79 |
{#fig-5.34 .wide .expand num="5.34" caption="2014／2015 年的 22 nm 工艺与 Intel 在 2021 年 Xeon Platinum 中使用的当前 11 nm 工艺的比较。"}

**图 5.34（续）。** 特征数据来自 International Technology Roadmap for Semiconductors，它多年来为后续半导体工艺指明方向。由于继续缩放面临挑战，新工艺的不确定性增加，这一路线图在 2015 年版后停止。比较展示六年间 Dennard 缩放放缓，以及 Moore 定律放缓的影响；若按 Moore 定律原来的速度，11 nm 本应在 2018／2019 年实现。

> **译注：** 正文使用 10 nm，图注使用 11 nm。表中的 \(0.39\times0.81^2\approx0.26\)，再乘器件数与频率缩放比，约为 \(1.79\)，表内数量关系一致。

<!-- source: p0468 -->

来看这对较新的 Intel Xeon Platinum 8380 意味着什么。它有 40 核，接近 100 亿晶体管，包括 60 MiB 缓存；运行频率为 2.3 GHz，额定热功率为 270 W，裸片面积为 600 mm²。功耗已经限制时钟频率：八核 Xeon Gold 运行在 3.2 GHz，功耗 140 W。比较 2017–2022 年的 Xeon 版本可见，如果不增加核心数，时钟频率可提高约 50%；若增加核心数，时钟频率基本不变。功耗是关键限制。此外，还可能受到 Amdahl 定律的影响，如下例所示。

### 例题：功率约束与 Amdahl 定律

假定未来一代处理器有 96 核，但平均只能让 54 核工作。90% 的时间可以利用全部可用核心，9% 的时间可以利用 50 核，1% 的时间必须严格串行。可以期望多大的加速比？假定闲置核心可以关闭且不耗电，不同核心使用数量在时间上的分布使我们只需考虑平均功耗。与一个 99% 的时间都能利用全部处理器的 24 处理器版本相比，该多核的加速比如何？

**解答。** 在能利用超过 54 核的那 90% 时间内，可用核心数求解如下：

$$
\begin{aligned}
\text{平均处理器使用数}&=0.09\times50+0.01\times1+0.90\times\text{最大处理器数}\\
54&=4.51+0.90\times\text{最大处理器数}\\
\text{最大处理器数}&=55
\end{aligned}
$$

于是加速比为：

$$
\text{加速比}
=\frac{1}{
\frac{\mathrm{Fraction}_{55}}{55}
+\frac{\mathrm{Fraction}_{50}}{50}
+(1-\mathrm{Fraction}_{55}-\mathrm{Fraction}_{50})
}
$$

$$
\text{加速比}
=\frac{1}{\frac{0.90}{55}+\frac{0.09}{50}+0.01}
=35.5
$$

再计算 24 个处理器的加速比：

$$
\text{加速比}
=\frac{1}{\frac{\mathrm{Fraction}_{24}}{24}+(1-\mathrm{Fraction}_{24})}
$$

$$
\text{加速比}
=\frac{1}{\frac{0.99}{24}+0.01}
=19.5
$$

同时考虑功率约束和 Amdahl 定律，96 处理器版本相对于 24 处理器版本的加速不到两倍。实际上，提高时钟频率所带来的加速，几乎能赶上处理器数量增加到四倍的收益。本章结语还将讨论这些问题。

> **译注：** 本例沿用原书的平均使用数模型与取整结果；由 \(54=4.51+0.90N\) 得 \(N\approx54.99\)。Amdahl 公式中的 Fraction 是按串行执行工作量划分的比例，不能一般地与并行执行后各阶段所占时间比例互换。原例直接用同一组百分比计算平均功耗和加速比，读者使用这一简化模型时应注意这一假设边界。

<!-- source: p0469 -->

## 多核的未来在于异构

单纯扩展多核很可能撞上刚才讨论的功率墙。多核的未来将朝更异构的系统发展。对于个人移动设备和桌面系统，很可能采用片上系统（SoC）设计，包含多个通用核心及领域专用加速器。Apple M1、M2 就是很好的例子，下面将简要考察 M1。

数据中心使用的大型多核系统，越来越多地采用基于领域专用体系结构的片外加速器。以更节能的方式实现计算最密集的部分，例如神经网络训练或推理，就能更有效地利用多核内部的通用处理器。数据中心多核是否也会纳入不同类型的通用核心，目前尚无定论，但功耗限制可能推动它们向这个方向发展。

## Apple M1：异构的 SoC 多核

2020 年末推出的 M1 包含：

- 通用 ARM 核心，其中四个是高性能、也更耗电的核心，四个是能效核心。
- 八核 GPU，图形任务性能可达 2.6 teraops。
- 16 核神经网络引擎，机器学习推理任务相对于通用核心可加速 10–15 倍，同时功耗更低。
- 信号处理引擎，负责图像处理以及媒体编码、解码。
- 加密引擎，用于支持安全隔区（security enclaves）。

对许多应用，M1 以更低功耗提供更高性能。Apple M1 发布约一年后，Intel 推出多种新处理器，也具备其中一些能力，尤其是同时采用性能核心与能效核心。Apple 没有公布两类核心的相对性能和功率数据；对 Intel i9 系列中采用性能核心和能效核心的设计进行测量，可见在不使用 SMT 时，性能核心的性能约为能效核心的 1.5 倍；只有性能核心支持 SMT。对于能利用 SMT 的并行工作负载，性能核心的性能为能效核心的 1.8–2.0 倍。性能核心的功耗为能效核心的 1.3–1.7 倍，具体取决于是否使用 SMT。
