# 2.8 结束语：展望未来
<!-- source: p0173 -->

> 过去三十年间，曾有人多次预言，计算机性能的提升即将停滞。每一次这样的预测都错了。它们之所以错，是因为依赖了未曾明说、后来又被事实推翻的假设。例如，由于未能预见从分立元件到集成电路的转变，有人曾预测，光速的限制会使计算机速度的上限比今天慢几个数量级。我们对存储墙的预测很可能也会出错，但它提醒我们，必须开始跳出既有框架思考。
>
> ——Wm. A. Wulf 和 Sally A. McKee，*Hitting the Memory Wall: Implications of the Obvious*，University of Virginia 计算机科学系，1994 年 12 月。这篇论文提出了 memory wall（存储墙）一词。[^eminent]

使用存储层次结构的构想，可以追溯到 20 世纪 40 年代末至 50 年代初通用数字计算机诞生之时。虚拟内存在 60 年代初用于研究型计算机，70 年代进入 IBM 大型机。缓存也在大致同一时期出现。此后，这些基本概念不断扩展和完善，以缩小主存与处理器之间的访问时间差距，但基本思想始终未变。近年来，多种因素汇聚，使得过去 25 年一直由先进存储层次结构克服的存储墙，再次成为性能提升的重要限制。

一个正在显著改变存储层次结构设计的趋势，是 DRAM 密度提升和访问时间改善的持续放缓。过去 15 年都能观察到这两个趋势，最近 5 年尤其明显。虽然 DRAM 带宽有所增加，访问时间的缩短却缓慢得多，从 DDR4 到 DDR5 甚至没有改善。Dennard 缩放规律失效与 Moore 定律放缓都促成了这一局面。DRAM 使用的沟槽电容设计也限制了其缩放能力。堆叠内存等封装技术，很可能成为改善 DRAM 访问带宽和延迟的主要来源。最近，采用新半导体工艺时，SRAM 的性能改善也不如逻辑电路明显。

因此，我们看到多种因素会阻碍存储层次结构性能的提高：

- DRAM 延迟没有改善，密度提升幅度减小。
- SRAM 访问时间的改善幅度减小，每位功耗也几乎没有改善。
- 增大 LLC 容量或增加缓存级数，所得收益逐渐递减。
- 越来越多的应用以流式方式处理极大的数据集，时间和空间局部性较低，包括图形和深度神经网络；见第 4 章和第 7 章。

<!-- source: p0174 -->

这些因素共同增强了存储墙的影响，而此前我们已经将它挡在门外 25 年。正如第 4 章和第 7 章将展示的，对某些应用而言，最佳办法可能是采用不同的存储组成；Cray 早在 50 年前设计的一台超级计算机中，就实践了这一认识！

不论 DRAM 和 SRAM 如何发展，Flash 都在发挥越来越大的作用。Flash 已主导 PMD 存储 15 年，并在近 10 年前成为笔记本电脑的标准配置。过去几年，多数台式机出厂时也已将 Flash 作为主要辅助存储器。Flash 相对 DRAM 的潜在优势，特别是不必为每一位配置控制写入的晶体管，也恰恰是其弱点：Flash 必须采用成批擦除再写入的周期，而这一过程慢得多。因此，虽然 Flash 已成为增长最快的辅助存储形式，DDR DRAM 仍然主导主存。

尽管以相变材料制造存储器的构想已存在一段时间，它却一直未能成为磁盘或 Flash 的有力竞争者。这项技术似乎比 Flash 有若干优势，包括消除缓慢的先擦除后写入周期，以及更长的使用寿命；但迄今尚未取得显著的商业成功。

多年来，人们不断预言存储墙即将到来，见前面的引语及论文，认为它将严重限制处理器性能。幸运的是，缓存扩展到更多层级，从 2 级发展到 4 级，更复杂的回填和预取机制，编译器与程序员对局部性重要性的更深认识，以及 DRAM 带宽的巨大提升——自 20 世纪 90 年代中期以来超过 200 倍——共同帮助我们抵御了存储墙。

近年来，L1 容量受到访问时间约束，而访问时间又受时钟周期限制；L2 和 L3 容量则受到能耗方面的限制。这些因素带来了新的挑战。i7 与 i9 处理器核在大约十二年间的演进正说明了这一点：L1 指令缓存容量没有变化，数据缓存也只增长了 50%！更积极地使用预取，正是为了弥补 L2 和 L3 无法继续增大的限制。

除了依靠多级缓存，还可以引入支持多个未完成未命中的乱序流水线，利用已有的指令级并行性，隐藏带缓存系统中尚未消除的内存延迟。引入多线程和更多线程级并行性，又将这一思路推进了一步：并行性更大，隐藏延迟的机会也更多。很可能，利用指令级与线程级并行性，会成为隐藏现代多级缓存系统各种内存延迟的更重要手段。

<!-- source: p0175 -->

一个不时被重新提出的构想，是使用由程序员控制的 **scratchpad**，即软件显式管理的高速暂存存储器，或其他对软件可见的高速存储器。我们将看到，GPU 和领域专用体系结构会采用这类存储，见第 7 章。它们一直没有成为通用处理器的主流，原因有几方面。首先，引入行为不同的地址空间会打破原来的内存模型。其次，与编译器或程序员实施的缓存优化，例如预取，不同，使用 scratchpad 的存储变换必须完整处理从主存地址空间到 scratchpad 地址空间的重新映射。这使变换更难实施，也限制了适用范围。

GPU（见第 4 章）和领域专用体系结构（见第 7 章）大量使用本地 scratchpad，目前管理它们的负担仍落在程序员和编译器身上。对于能够利用这种存储的领域专用软件系统，性能收益非常显著。HBM 技术是图形及类似系统的主要工作内存。领域专用体系结构在克服 Dennard 缩放规律失效和 Moore 定律放缓带来的限制方面，已变得更加重要，见第 7 章；这也让 scratchpad 和类似向量的寄存器组越来越普遍。

Dennard 缩放规律失效同时影响 DRAM 和处理器技术。由于 DRAM 的独特结构，其受到的影响稍大一些；但无论逻辑还是存储，都受到功率上限和 Moore 定律放缓的制约。要延续过去 50 年间的性能提升，关键在于计算机体系结构与相关软件的共同创新，同时提高性能和效率。

[^eminent]: **译注：** 引文原文将“即将”写作 eminent，并附有作者保留原误的 `[sic]` 标记；按语义应为 imminent。中文译文按“即将”表达，特在此保留原书的用词提示。
