延迟容忍



微处理器的速度每十年增长十倍以上,但商品内存(DRAM)的速度仅翻倍,即访问时间减半。因此,内存访问的延迟(以处理器时钟周期为单位)在 10 年内增长了六倍。多处理器加剧了这个问题。

在基于总线的系统中,在处理器和内存之间建立高带宽总线往往会增加从内存获取数据的延迟。当内存物理分布时,网络和网络接口的延迟会添加到节点上访问本地内存的延迟中。

延迟通常会随着机器规模的增大而增长,因为更多的节点意味着更多的通信相对于计算,更多的网络跳转用于一般通信,以及可能更多的争用。硬件设计的首要目标是在保持高可扩展带宽的同时降低数据访问延迟。

延迟容忍概述

要了解如何处理延迟容忍,最好查看机器中的资源以及如何利用它们。从处理器的角度来看,从一个节点到另一个节点的通信架构可以被视为一个管道。管道的阶段包括源和目标处的网络接口,以及沿途的网络链路和交换机。根据体系结构如何管理通信,通信辅助、本地内存/缓存系统和主处理器中也存在阶段。

基线通信结构中的利用问题是处理器或通信架构在给定时间处于繁忙状态,并且在通信管道中,只有一个阶段在繁忙状态,因为正在传输的单个字从源到目标。延迟容忍的目标是尽可能多地重叠这些资源的使用。

显式消息传递中的延迟容忍

消息传递中数据的实际传输通常由发送方发起,使用发送操作。接收操作本身不会促使数据进行通信,而是将数据从传入缓冲区复制到应用程序地址空间。接收方发起的通信是通过向作为数据源的过程发出请求消息来完成的。然后,该过程通过另一个发送将数据发送回。

同步发送操作的通信延迟等于将消息中的所有数据通信到目标所需的时间,以及接收处理时间,以及返回确认所需的时间。同步接收操作的延迟是其处理开销;这包括将数据复制到应用程序,以及如果数据尚未到达的额外延迟。我们希望隐藏这些延迟,包括尽可能的开销,在两端。

共享地址空间中的延迟容忍

基线通信是通过共享地址空间中的读写操作完成的。为方便起见,称为读写通信。接收方发起的通信是通过导致访问另一个处理器内存或缓存中的数据的读取操作来完成的。如果没有共享数据的缓存,则发送方发起的通信可以通过写入分配在远程内存中的数据来完成。

使用缓存一致性,写入的影响更加复杂:写入导致发送方或接收方发起的通信取决于缓存一致性协议。无论是接收方发起还是发送方发起,硬件支持的读写共享地址空间中的通信本质上是细粒度的,这使得容忍延迟非常重要。

共享地址空间中的块数据传输

在共享地址空间中,无论是通过硬件还是软件,数据的合并和块传输的启动可以在用户程序中显式完成,也可以由系统透明地完成。显式块传输是由在用户程序中执行类似于发送的命令来发起的。发送命令由通信辅助解释,后者以流水线方式将数据从源节点传输到目标节点。在目标端,通信辅助从网络接口中提取数据字并将它们存储在指定的位置。

与发送-接收消息传递有两个主要区别,这两者都源于发送进程可以直接指定程序数据结构,其中数据将在目标处放置,因为这些位置位于共享地址空间中。

在共享地址空间中继续执行长延迟事件

如果内存操作被设为非阻塞,则处理器可以继续执行其他指令。对于写入,如果写入被放入写入缓冲区,并且处理器继续执行,而缓冲区负责根据需要向内存系统发出写入并跟踪其完成,则通常很容易实现这一点。区别在于,与写入不同,读取通常紧随其后的是需要读取返回的值的指令。

共享地址空间中的预通信

预通信是一种已在商用微处理器中广泛采用的技术,并且其重要性可能会在未来增加。预取指令不会替换数据项的实际读取,并且预取指令本身必须是非阻塞的,如果要通过重叠来实现隐藏延迟的目标。

在这种情况下,由于共享数据未被缓存,因此预取的数据被引入一个称为预取缓冲区的特殊硬件结构中。当在下次迭代中将该字实际读入寄存器时,它从预取缓冲区的头部读取,而不是从内存读取。如果要隐藏的延迟远大于计算单个循环迭代的时间,我们会提前预取几个迭代,并且预取缓冲区中可能同时存在几个字。

共享地址空间中的多线程

在隐藏不同类型的延迟方面,硬件支持的多线程可能是用途最广泛的技术。与其他方法相比,它具有以下概念优势:

  • 它不需要特殊的软件分析或支持。

  • 由于它是动态调用的,因此它可以处理不可预测的情况,例如缓存冲突等,以及可预测的情况。

  • 与预取类似,它不会更改内存一致性模型,因为它不会重新排序线程内的访问。

  • 虽然以前的技术针对隐藏内存访问延迟,但多线程可以潜在地同样轻松地隐藏任何长延迟事件的延迟,只要可以在运行时检测到该事件即可。这也包括同步和指令延迟。

这种趋势可能会在未来发生变化,因为与处理器速度相比,延迟变得越来越长。此外,使用更复杂的微处理器,这些微处理器已经提供了可以扩展用于多线程的方法,以及开发了新的多线程技术以将多线程与指令级并行相结合,这种趋势肯定在未来会发生一些变化。

广告

© . All rights reserved.