4. Concluding Remarks
硬件预取作为学术研究与工业发展的课题已超过40年。然而,由于处理器性能与内存访问延迟之间的差距随着技术迭代持续扩大,硬件预取的重要性及隐藏内存系统延迟的需求愈发凸显——持续创新依然至关重要。
本入门书中,我们梳理了已开发的众多预取技术,并重点阐释了这些技术所依赖的核心程序行为特征。我们希望本书能成为该领域的入门指南,为浩如烟海的硬件预取文献提供概览,并激发新的研究探索。
未来研究仍需应对诸多挑战。指令获取仍是基础性瓶颈,尤其在运行复杂软件栈且片上指令工作集不断扩大的服务器中。虽然指令足迹通常能完整容纳于大型末级缓存,但周期时间限制严重制约了L1指令缓存的容量,而访问大容量缓存的延迟问题依然存在。近年来提出的时序指令流先进方案即使面对复杂软件栈,也实现了惊人的预测精度与覆盖率(>99.5%)。这些方案能否广泛落地的关键,在于将元数据存储开销压缩至实用水平的技术突破。
指令预取面临的另一重挑战源于编程语言与软件工程的发展——它们常常使我们讨论的技术复杂化甚至失效。面向对象编程、动态分派与托管运行时导致短频函数调用激增,函数指针间接寻址、寄存器间接跳转及多路控制转移日益普遍。动态代码生成/优化、解释型语言与即时编译使得程序控制结构难以追踪,指令地址的含义随时间动态变化。虚拟化与操作系统分层则通过频繁的虚拟机退出和陷入模拟特权功能,同样使控制流复杂难辨。
在硬件层面,处理器日益支持多并发硬件线程,这些线程必须共享本已过载的指令缓存容量。预取器需升级以实现线程间有限容量与带宽的共享,分离各线程的指令流,并统筹预取策略与线程优先级/取指策略的相互作用。
数据预取面临的一个关键挑战,是在各种工作负载中普遍存在的低准确率和低覆盖率问题。随着数据密集型工作负载和大规模内存数据服务的出现,对高效数据预取的需求不断增加。然而,内存容量的不断扩大,使得即便是本教程中介绍的最先进的基于历史的预取技术,也面临两个问题:一是可重复的历史访问模式日益减少,二是元数据存储需求变得过高。因此,未来的数据预取技术需要进一步发展,能够以更低的元数据存储开销、更高的准确度来捕获可重复的访问模式。
针对图形处理器及其他专用加速器的预取技术正逐渐兴起,这些设备的代码和数据访问模式与传统处理器存在显著差异。以图形处理器为例,内存访问延迟与线程/线程束调度以复杂方式相互影响,为协同设计创造了新的机遇。
过去十年中出现的一个根本性挑战是:由于登纳德缩放定律[130, 131]的减速及供电电压趋于稳定,功耗已成为首要约束条件。一方面,预取器通过消除延迟可实现硬件资源更高效利用,从而提升能效;另一方面,多数预取器需要辅助硬件结构,这些结构会消耗能量。此外,预取器常会获取错误数据块,导致大量能量浪费。实际上,许多简单(但广泛部署)的设计准确率极低——其获取的数据块超过半数可能永远不会被访问。预取技术的进步必须将能效作为核心约束指标,并与准确率、覆盖率等其他关键指标共同评估预取器设计的有效性。