发表时间: 2004-10 · Communications of the ACM, Vol. 47 No. 10, pp. 71–75 (David A. Patterson)
原文: https://dl.acm.org/doi/10.1145/1022594.1022596
本文的核心论点是,在过去的几十年里,多种关键计算技术(包括微处理器、内存、网络和磁盘)的带宽(Bandwidth)提升速度远超延迟(Latency)的改善速度。文章旨在通过翔实的数据揭示这一长期存在且持续加剧的失衡现象,并系统性地探讨其背后的原因、应对策略,以及对未来系统设计的影响。
核心问题与研究目标:
* 核心问题:在技术发展中,带宽和延迟的性能提升速度存在严重不平衡,带宽的增长呈指数级,而延迟的改善则相对缓慢。
* 研究目标:
1. 量化证明:通过收集和分析微处理器、内存、网络和磁盘在过去20-25年间的性能里程碑数据(如表1和图1所示),直观地展示带宽与延迟的增长差距。
2. 原因剖析:系统性地总结导致这种“带宽充裕,延迟滞后”现象的六大原因,涵盖技术、物理和市场等多个层面。
3. 提出应对策略:归纳业界长期以来为应对高延迟问题而发展出的三种核心技术:缓存(Caching)、复制(Replication)和预测(Prediction)。
4. 提供设计指导:提出一个量化的“经验法则”(Rule of Thumb),并以一个存储系统设计为例,阐述工程师应如何基于带宽远超延迟增长的预期来做出更优的设计决策。
主要创新点与贡献:
带宽充裕但延迟滞后的原因
<blockquote>“网络界有句老话:带宽问题可以用钱解决。延迟问题则更难,因为光速是固定的——你无法贿赂上帝。”
——匿名
</blockquote>摩尔定律对带宽的助益大于延迟。半导体制程的微缩带来了更快的晶体管和在单个芯片上集成更多的晶体管。摩尔定律预测芯片上的晶体管数量会周期性翻倍,这部分源于微缩,也部分源于芯片面积的增大;近期的速率是每22-24个月翻一番【6, P. Ross, 5 commandments of engineering, 2003, IEEE Spectrum】。更快的晶体管、更多的晶体管以及更多的并行引脚都有助于提升带宽。更快的晶体管有助于降低延迟,但是晶体管数量的增多以及在实际更大的芯片上相对更长的走线距离,限制了微缩对延迟带来的好处。例如,表1中的处理器晶体管数量增长了超过300倍,引脚数增长了超过6倍,但芯片面积也增大了近5倍。由于距离随面积的平方根增长,表1中的距离翻了一番。
图1. 表1中带宽和延迟里程碑相对于第一个里程碑的对数-对数图。注意延迟改善了约10倍,而带宽改善了约100倍至1000倍。
距离限制延迟。距离为延迟设定了下限。DRAM中长字线和位线的延迟是行地址访问时间(row access time)的主要部分。光速告诉我们,如果网络上的另一台计算机在300米外,其延迟永远不可能低于一微秒。
带宽通常更易于销售。延迟落后于带宽的一个非技术性原因是性能营销:销售更高的带宽比销售更低的延迟更容易。例如,向今天的客户解释10Gbps带宽以太网的好处,可能比解释10微秒延迟以太网的好处更容易,无论哪一个实际上提供更好的价值。一种观点认为,带宽的巨大进步导致了销售带宽的营销技巧,这反过来又培养了客户对带宽的渴望。无论真实的事件链如何,毫无疑问,今天为处理器、内存或网络推销更高的带宽比推销更低的延迟要容易。由于带宽好卖,工程资源往往被投入到带宽上,这进一步加剧了失衡。
延迟的改善有助于带宽。有助于延迟的技术改进通常也有助于带宽,但反之则不然。例如,降低DRAM延迟决定了每秒的访问次数,因此更低的延迟意味着每秒更多的访问次数,从而带来更高的带宽。同样,让磁盘转得更快可以减少旋转延迟,但读写头也必须以新的更快速率读取数据。因此,让磁盘转得更快同时改善了带宽和旋转延迟。然而,增加磁道上每英寸的线性比特密度有助于带宽,但对延迟没有任何帮助。
带宽损害延迟。通常很容易通过牺牲延迟来提高带宽。排队论量化了缓冲区如何帮助带宽但损害延迟。作为第二个例子,增加芯片以加宽内存模块会增加带宽,但地址线上更高的扇出(fan-out)可能会增加延迟。
操作系统开销损害延迟。一个想要发送消息的用户程序会调用操作系统,操作系统接着调用网络驱动程序,然后才能访问硬件。这种开销在处理大消息时被摊销,因此在带宽中扮演的角色较小,但对于短消息来说,它可能是延迟的很大一部分。
第四行显示了带宽翻倍所需的时间,下一行显示了在该时间内容量的改善程度,最后一行显示了在该时间内延迟的改善程度。每年微小的差异导致每十年巨大的差异;以最小的失衡为例,磁盘带宽每十年提高5.2倍,但磁盘延迟仅提高2.4倍。对于成本敏感型磁盘(如ATA),容量改善高于每年1.48倍,但我们关注的是性能导向的技术(如SCSI)。
这六个原因有助于解释为什么自1980年以来带宽的增长超过了延迟,以及为什么我预计这种情况会持续下去。尽管很可能出现一些创新,在特定技术中一次性地降低延迟,但我相信这些创新将发生在带宽不懈改进的大背景下。
应对带宽充裕但延迟滞后的策略
<blockquote>“如果一个问题没有解决方案,那它可能不是一个问题,而是一个事实,不应去解决,而应随着时间的推移去适应。”
——西蒙·佩雷斯(“佩雷斯法则”)
</blockquote>尽管存在这种不平衡,延迟对于桌面或网络上的交互式应用仍然至关重要:快速且可预测的用户交互时间对生产力至关重要【3, J. Hennessy and D. Patterson, Computer Architecture: A Quantitative Approach, 1990, 1996, 2003, Morgan Kauffman, San Francisco, CA】。带宽与延迟的失衡可能不是每种技术都能解决的问题;它可能是一个我们在构建更平衡的系统时必须应对的事实。以下是多年来为应对这种失衡而发展出的三种技术。实际上,这种趋势的另一个原因可能是,隐藏带宽短缺相对困难,而使用像缓存这样的技术来隐藏部分延迟则更为可行。
缓存:利用容量来帮助延迟。处理器最早引入缓存是为了克服访问内存的长延迟,它依赖于引用的局部性(locality of reference),使得一小块快速内存能够捕获大部分访问。现有大型微处理器芯片约一半的面积用于缓存。文件系统通常使用当前大型主存的很大一部分作为文件缓存,以试图避免访问磁盘,而今天的磁盘也包含数兆字节的缓存,以试图避免访问磁盘表面。
复制:再次利用容量来帮助延迟。内存和存储容量的增加使得数据副本变得经济实惠,从而可以降低延迟。因此,互联网服务提供商(ISP)通常在全国各地使用多个站点,部分原因是为了减少用户的网络延迟。为可靠性而复制数据的存储系统,也可能读取那个最接近磁盘读写头的副本以减少延迟。处理器在功能单元集群中复制寄存器以减少其延迟。
预测:利用带宽来再次帮助延迟。设计师们不再等到计算机知道它想要什么,而是越来越多地使用预先猜测的技术,并在猜对时保持高性能。因此,处理器会提前预测分支是否会跳转,而处理器、缓存、内存和磁盘控制器则会预取数据。
各种策略的弊端。需要注意的是,这三种方法并非万能药,它们都有各自的缺点。缓存可能会有很高的未命中率,保持副本一致性很复杂且可能需要大量通信,而预测则需要恢复机制,并且在预测错误时会干扰性能。尽管如此,它们通常是有效的。
对未来的展望。从乐观的角度看,这三种技术应该会越来越受欢迎,以应对性能进步中偏重带宽而非延迟的趋势。从悲观的角度看,这些技术现在已经得到充分部署,可能更难找到下一组技巧来帮助应对。按照这种思路,带宽与延迟的失衡在未来可能会更加明显。
新的工程设计思路。因此,除了应对相对较高的延迟外,我们还应考虑用新的方法来设计具有更低延迟的系统。这四种技术中的失衡部分是设计决策和工程投资的结果。对于每种技术,都有可能以更高的成本或通过稍微降低我们过剩的带宽来改善延迟。例如,可以重新设计DRAM块和接口,以更高的每兆字节成本来强调延迟,而SCSI磁盘已经展示出比ATA磁盘更低的延迟和更高的每千兆字节成本。营销延迟创新的困难是迄ت今为止延迟受关注较少的原因之一,如果我们想突出延迟,就必须解决这个障碍。也许我们可以从更成熟的汽车行业中汲取灵感,该行业除了宣传峰值马力和最高速度外,还宣传从0到60英里/小时的加速时间。
该论文是一篇分析性文章,其“实验环境”是其用于分析的数据集和技术范围。
数据来源:数据主要来源于过去20至25年间四种关键技术的性能里程碑。大部分历史数据引自亨尼西(Hennessy)和帕特森(Patterson)所著的《计算机体系结构:一种定量方法》的三个版本【3, J. Hennessy and D. Patterson, Computer Architecture: A Quantitative Approach, 1990, 1996, 2003, Morgan Kauffman, San Francisco, CA】。部分数据也来自《计算机组成与设计:硬件/软件接口》【5, D. Patterson and J. Hennessy, Computer Organization and Design: The Hardware/Software Interface, 1994, 1998, 2004, Morgan Kauffman San Francisco, CA】以及其他来源【1, 2, 4, 6】。
分析对象:
硬件配置与指标定义:
软件配置:论文中提到的网络延迟包括了发送和接收的软件开销,表明分析考虑了操作系统和驱动程序的影响。
论文通过对历史数据的分析,得出了一系列关于带宽与延迟增长不平衡的结论。
核心发现(图1):通过对四种技术(微处理器、内存、网络、磁盘)过去20-25年的性能里程碑进行归一化比较,图1清晰地显示,带宽的增长速度远超延迟。
长期趋势量化(表2):通过分析过去二十多年的年均改进率,论文量化了这种不平衡。
表3. 表1中最近三个里程碑的延迟、容量和带宽年度改进摘要。尽管最近带宽改善得更快,但在带宽翻倍期间延迟和容量的改进比率与表2中的比率接近。
近期趋势验证(表3):为了验证该趋势在近期是否依然成立,论文分析了最近的三个性能里程碑。
最终结论:经验法则:综合长期和近期的数据分析,论文提出了一个核心的经验法则来概括这一现象:
> 在带宽翻倍的时间内,延迟的改善不超过1.2到1.4倍。
一个更引人注目的表述是:带宽的提升至少是延迟改善幅度的平方。
这又如何?
变化率不同导致颠覆性创新。如果所有事物都以相同的速率改进,那么实际上什么都不会改变。当速率不同时,我们就会看到真正的错位,而这种错位反过来又需要真正的创新。如果你认同这一观察,它应该如何影响你构建的系统?表1显示,性能里程碑最近每三到四年就会出现一次。由于成功的系统寿命远不止三到四年,你的设计决策应该在几个新的里程碑之后依然能良好工作。
一个存储系统设计案例。让我们举一个假设的例子。假设你正在设计一个存储系统,该系统在不同的远程站点保存数据的多个副本来确保数据可靠性。缓存是降低延迟的显而易见的选择。你的设计可以利用这些副本来获益,方法是从通常最快的那个副本发出请求,或者向多个副本发出多个请求,然后只使用最快的回复。预取也应该被考虑,因为随着时间的推移,预取的负面影响将会减小。你可能会在一种使用许多小消息的“话痨”协议和一种使用少数非常大消息的协议之间做出选择。带宽的进步有利于后者,即使你最终发送了更多的字节。根据读写混合的比例,你可能会为每个远程站点选择一个日志结构文件系统(log-structured file system),因为它的性能与磁盘带宽相关,而传统的原地更新(update-inplace)文件系统的性能则与磁盘延迟相关。最后,你可能还想将数据聚合成大块,因为这些大块能很好地匹配内存和磁盘不断增加的带宽。
设计决策应倾向于带宽。因此,新的设计应该考虑缓存、复制和预测,因为这些技术在过去运作良好。此外,在某些设计决策中,延迟的进步可能导向一个方向,而带宽的进步则导向另一个方向。我倾向于选择带宽所偏好的方向。
跨学科寻找将带宽转化为性能的技术。硬件和软件创新者可以跨学科寻找能将带宽转化为有用性能的技术,因为日益加剧的失衡需要发明创造。由于处理器通常最先面临这些障碍,它们一直是他人灵感的丰富来源。为了尝试应对进一步的失衡,处理器设计师已经考虑在操作数被计算出来之前就预测其值,以便让计算继续进行。访问内存的延迟正接近执行一千条指令的时间,所以我们可能会看到像重新计算而不是去内存取值这样的技术。也许这些奇特的解决方案会激发新的方法,与缓存、复制和预测一起,成为帮助应对带宽充裕但延迟有限的重要技术。
自1980年以来,我们在处理器、内存、网络和磁盘领域见证了性能的飞速发展。如图1所示,带宽的改善程度远超延迟。本文探讨了导致这种不平衡的六个原因,并指出了缓存(caching)、复制(replication)和预测(prediction)这三种有助于应对该问题的策略。
从系统角度来看,可以说图1甚至低估了问题的严重性,因为使用多个组件(如磁盘阵列中的多个磁盘、交换网络中的并发通信、大型内存中的多个内存模块,或集群/共享内存多处理器中的多个处理器)会使带宽成倍增加,但对延迟却没有帮助。
本文提供了一个经验法则,用于设定对四种不同技术产品的预期:在带宽翻倍的时间内,延迟的改善不超过1.2到1.4倍;更简单地说,带宽的增长至少是延迟改善的平方。我预计这种带宽与延迟的进步比例在可预见的未来将持续存在。硬件和软件开发者应据此进行规划。