掌桥专利:专业的专利平台
掌桥专利
首页

用于降低直接内存访问处理延迟的数据预取方法及装置

文献发布时间:2023-06-19 16:09:34



技术领域

本发明属于高性能计算领域芯片内数据预取技术,具体涉及一种用于降低直接内存访问(DMA,Direct Memory Access)处理延迟的数据预取方法及装置,用于通过预先向PCIE接口发送内存数据读取请求以降低数据处理事务的延迟。

背景技术

随着高性能计算机系统(HPC,High Performance Computer)计算速度从千万亿次级(P级,Petascale)向百亿亿次级(E级,Exascale)的不断提升,微处理器芯片以及互连网络芯片所需处理的数据量呈指数级上升。因此,如何在更短的时间内处理更多的数据,是当前高性能计算机系统研究过程中所面临的巨大挑战。

在高性能计算机系统中,成千上万的计算节点之间需要进行海量的数据传输。对于任意两个节点之间的数据传输,典型的远程直接内存访问(RDMA,Remote Direct MemoryAccess)处理流程包括:首先,源节点与目的节点之间建立数据连接通路,为网络传输做准备;其次,源节点上的网络接口芯片通过PCIE接口向源节点提交内存数据访问请求;然后,源节点通过PCIE接口将相应的内存数据送到网络接口芯片;最后,网络接口芯片对数据进行处理后通过网络端口发送到整个系统的互连网络中,经过建立好的数据连接通路最终到达目的计算节点。但是,由于通过PCIE接口访问内存数据的延迟在整个数据传输流程的总延迟中所占比例较大,上述过程如果完全串行执行,将无法实现较高的数据传输效率。

发明内容

本发明要解决的技术问题:针对现有技术的上述问题,提供一种用于降低直接内存访问处理延迟的数据预取方法及装置,本发明旨在对直接内存访问的数据获取流程进行优化,降低任意两个节点之间的数据传输延迟,提高该处理流程的效率,从而提升整个系统的通信效率。

为了解决上述技术问题,本发明采用的技术方案为:

一种用于降低直接内存访问处理延迟的数据预取方法,包括:

1)在收到RDMA事务的描述符后,在根据描述符启动源节点、目的节点之间的数据连接通路的建立过程时,同时启动数据块预取请求的过程以预取当前RDMA事务所需的内存数据;

2)执行报文处理子流程:若数据连接通路成功建立,则将包含预取的内存数据在内的当前RDMA事务的所有内存数据发送到目的节点。

可选地,步骤1)中启动数据块预取请求的过程时,需要预取的数据块的数量不超过预设的预取阈值N。

可选地,所述预取阈值N的大小为源节点的网络接口芯片的响应数据缓冲区所能缓存数据块的数量。

可选地,步骤1)中启动数据块预取请求的过程包括:

1.1A)向PCIE总线发送一个数据块预取请求;

1.2A)判断当前RDMA事务是否仍有需要预取的数据块,若仍有需要预取的数据块,则跳转下一步;否则,本过程结束;

1.3A)判断已发出的数据块预取请求数量等于预取阈值N是否成立,若成立则本过程结束,否则跳转步骤1.1A)以继续发送下一个数据块预取请求。

可选地,步骤1)中数据连接通路成功建立时,还包括判断当前RDMA事务是否仍有尚未发出数据块预取请求预取的数据块,如果仍有尚未发出数据块预取请求预取的数据块,则针对仍有尚未发出数据块预取请求预取的数据块执行数据块请求的过程:

1.1B)向PCIE总线发送一个数据块请求;

1.2B)判断当前RDMA事务是否仍有要请求的数据块,若仍有要请求的数据块,则跳转步骤1.1B);否则,本过程结束。

可选地,步骤2)中执行报文处理子流程时,还包括在数据连接通路建立失败的情况下,丢弃启动数据块预取请求所返回的预取数据、取消当前RDMA事务,结束并退出的步骤。

可选地,步骤2)中执行报文处理子流程时,将包含预取的内存数据在内的当前RDMA事务的所有内存数据发送到目的节点包括:

2.1)判断是否已经收到足够数量的当前RDMA事务的内存数据,若已经收到足够数量的当前RDMA事务的数据则跳转下一步;否则,跳转重新执行步骤2.1)继续等待;

2.2)将当前RDMA事务的内存数据进行报文封装,并通过建立的数据连接通路发送到目的节点;

2.3)判断当前RDMA事务的报文是否已经发送完毕,如果尚未发送完毕,则跳转步骤2.1);否则,结束报文处理子流程并退出。

此外,本发明还提供一种用于降低直接内存访问处理延迟的数据预取装置,包括相互连接的微处理器和内存,所述微处理器连接有网络接口芯片,所述微处理器被编程或配置以执行前述用于降低直接内存访问处理延迟的数据预取方法的步骤。

此外,本发明还提供一种高性能计算机系统,包括通过网络相互连接的多个计算机节点,所述计算机节点包括相互连接的微处理器和内存,所述微处理器连接有网络接口芯片,所述微处理器被编程或配置以执行前述用于降低直接内存访问处理延迟的数据预取方法的步骤。

此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序用于被微处理器执行以实施前述用于降低直接内存访问处理延迟的数据预取方法的步骤。

和现有技术相比,本发明主要具有下述优点:1、延迟低。通过将内存数据访问过程隐藏在数据连接通路建立过程中,从而减少两个节点的RDMA事务处理延迟;2、预取机制不产生额外代价。预取机制只是将内存数据请求操作提前执行,不需增加额外代价,即使数据连接通路建立失败,也只需将预取返回的数据丢弃即可。简而言之,本发明通过对直接内存访问的数据获取流程进行优化,能够降低任意两个节点之间的数据传输延迟,提高该处理流程的效率,从而提升整个系统的通信效率。

附图说明

图1为本发明实施例方法的基本流程示意图。

具体实施方式

参见图1,本实施例用于降低直接内存访问处理延迟的数据预取方法包括:

1)在收到RDMA事务的描述符(用于启动RDMA事务传输过程)后,在根据描述符启动源节点、目的节点之间的数据连接通路的建立过程时,同时启动数据块预取请求的过程以预取当前RDMA事务所需的内存数据;

2)执行报文处理子流程:若数据连接通路成功建立,则将包含预取的内存数据在内的当前RDMA事务的所有内存数据发送到目的节点。

网络接口芯片从软件得到当前RDMA事务的描述符,描述符包含了当前事务用于获取数据并发送数据的标识符、操作类型、地址、长度等信息;得到描述符信息后,开始启动与目的节点的数据连接通路建立过程,数据连接通路建立过程需要通过与目的节点进行通信来完成,该过程将持续一段时间,且数据连接通路存在着因出现错误或资源不可用等情况而建立失败的可能;当前事务要处理的数据需要通过PCIE接口从内存获取,并在数据连接通路成功建立完成以后通过网络端口发送到目的节点;当前描述符向PCIE接口发送内存数据读取请求,通常一个描述符的内存数据请求可能被拆分为多次请求,以适应PCIE接口的处理逻辑,从而提高数据处理效率;每个数据请求得到响应后,所对应的内存数据通过PCIE接口顺序返回到网络接口芯片,并等待通过网络端口发送;由于数据只能够在数据连接通路成功建立完成后才能发送,因此最直接的方式是等待数据连接通路成功建立完成后才开始向PCIE发送数据请求,但是这种方式延迟较大。本发明目的是对该数据传输流程进行优化,降低任意两个节点之间的数据传输延迟,提高该处理流程的效率,从而提升整个系统的数据传输性能。本实施例提出一种数据预取方法,将网络接口芯片通过PCIE获取内存数据的过程提前到与数据连接通路建立过程同时进行,而不是在数据连接通路建立过程完成之后才启动内存数据访问过程。目的是将内存数据访问过程隐藏在数据连接通路建立过程中,从而减少两个节点的数据传输延迟。

本实施例在得到描述符信息后直接向PCIE发送数据请求,不等待数据连接通路建立过程完成。由于一个描述符所代表的RDMA事务需要读取的内存数据量通常较大,因此一个RDMA事务的内存数据请求一般被拆分为多次请求,以适应PCIE接口的数据处理粒度。本实施例中,步骤1)中启动数据块预取请求的过程时,需要预取的数据块的数量不超过预设的预取阈值N。记一个RDMA事务的PCIE数据请求次数共需n次,设定一个预取阈值N。如果n>N,则在数据连接通路建立完成之前,只提交N次PCIE数据预取请求,剩余的n-N次数据请求不进行预取;如果n≤N,则将n次PCIE数据请求全部提交进行预取。

本实施例中,所述预取阈值N的大小为源节点的网络接口芯片的响应数据缓冲区所能缓存数据块的数量。N次请求所对应的数据在从内存返回后,刚好能够填满网络接口芯片的响应数据缓冲区。

本实施例中,步骤1)中启动数据块预取请求的过程包括:

1.1A)向PCIE总线发送一个数据块预取请求;

1.2A)判断当前RDMA事务是否仍有需要预取的数据块,若仍有需要预取的数据块,则跳转下一步;否则,本过程结束;

1.3A)判断已发出的数据块预取请求数量等于预取阈值N是否成立,若成立则本过程结束,否则跳转步骤1.1A)以继续发送下一个数据块预取请求。

本实施例中,步骤1)中数据连接通路成功建立时,还包括判断当前RDMA事务是否仍有尚未发出数据块预取请求预取的数据块,如果仍有尚未发出数据块预取请求预取的数据块,则针对仍有尚未发出数据块预取请求预取的数据块执行数据块请求的过程:

1.1B)向PCIE总线发送一个数据块请求;

1.2B)判断当前RDMA事务是否仍有要请求的数据块,若仍有要请求的数据块,则跳转步骤1.1B);否则,本过程结束。

本实施例中,步骤2)中执行报文处理子流程时,还包括在数据连接通路建立失败的情况下,丢弃启动数据块预取请求所返回的预取数据、取消当前RDMA事务,结束并退出的步骤。

本实施例中,步骤2)中执行报文处理子流程时,将包含预取的内存数据在内的当前RDMA事务的所有内存数据发送到目的节点包括:

2.1)判断是否已经收到足够数量的当前RDMA事务的内存数据,若已经收到足够数量的当前RDMA事务的数据则跳转下一步;否则,跳转重新执行步骤2.1)继续等待;

2.2)将当前RDMA事务的内存数据进行报文封装,并通过建立的数据连接通路发送到目的节点;

2.3)判断当前RDMA事务的报文是否已经发送完毕,如果尚未发送完毕,则跳转步骤2.1);否则,结束报文处理子流程并退出。

如果在提交预取描述符的过程中,接收到数据连接通路建立完成的信号,则开始对接收到的数据进行后续处理:如果数据连接通路建立成功,则将接收到的内存数据按报文格式定义封装成多个网络报文,然后通过网络端口发送出去,最终到达目的节点的对应内存空间;如果数据连接通路建立失败,则接收到的内存数据将被丢弃,中止该RDMA事务的处理。

此外,本实施例还提供一种用于降低直接内存访问处理延迟的数据预取装置,包括相互连接的微处理器和内存,所述微处理器连接有网络接口芯片,所述微处理器被编程或配置以执行前述用于降低直接内存访问处理延迟的数据预取方法的步骤。

此外,本实施例还提供一种高性能计算机系统,包括通过网络相互连接的多个计算机节点,所述计算机节点包括相互连接的微处理器和内存,所述微处理器连接有网络接口芯片,所述微处理器被编程或配置以执行前述用于降低直接内存访问处理延迟的数据预取方法的步骤。

此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序用于被微处理器执行以实施前述用于降低直接内存访问处理延迟的数据预取方法的步骤。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据预取设备的处理器以产生一个机器,使得通过计算机或其他可编程数据预取设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据预取设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据预取设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

技术分类

06120114726481