多计算机系统中节点的dma设备及通信方法

文档序号:6618785阅读:289来源:国知局
专利名称:多计算机系统中节点的dma设备及通信方法
技术领域
本发明涉及DMA (Direct Memory Access,直接内存存取)领域,尤其 涉及多计算机系统中节点的DMA设备及通信方法。
背景技术
在多计算机系统内部,任意节点间经常需要进行数据的交换,因此数据 交换的性能会影响通信的新能。灵活高效地将数据从一个节点的内存复制到 另一个节点的内存中,能够为多计算机系统提供的强大的通信能力。由处理 器直接处理内存数据的存取会带来巨大的处理器开销,而DMA技术能够避免 处理器将处理能力浪费在简单重复的内存读写操作中,因此多计算机系统的 节点间在通信时也会使用DMA技术。实现DMA技术的专用硬件称为DMA设备。
现在通用的微处理器在发出一条或者几条读内存指令后就会处于等待状 态,直到数据返回。当微处理器处于等待状态时不会执行其它指令,这会造 成处理器的吞吐能力和运算能力的浪费。如果需要读取的数据的物理地址是 连续的,微处理器中cache的预取机制可以极大地降低处理器的等待时间, 从而有效地提高处理器的吞吐能力。但是在处理器读内存时,处理器中的运 算部件会长时间空闲,因而造成处理器的运算能力的浪费。同样地,在处理 器写内存时,处理器中的运算部件也会长时间空闲,造成处理器的运算能力 的浪费。
DMA设备能够取代处理器从事简单重复的内存读写操作,避免处理器的 处理能力的浪费。因此,DMA设备广泛应用在单计算机系统和多计算机系统 中。在单计算机系统中,DMA设备能够实现内存到自身、内存到I/0接口的 数据传送。而在多计算机系统中,DMA设备能够按照处理器的命令,读取源 节点的内存中的数据,并写入目标节点的内存中。
在单计算机系统中,处理器通常通过一组寄存器实现对DMA设备的使用。
这组寄存器包括源地址寄存器、目标地址寄存器、数据长度寄存器和状态寄存器。源地址寄存器存放需要传送的数据在内存中的首地址;目标地址寄
存器存放用于接收数据的内存空间的首地址;数据长度寄存器存放需要传送
的数据的长度;状态寄存器存放DMA设备的状态。处理器在进行一次DMA数 据传输之前要先检査状态寄存器的值,如果DMA设备处于空闲状态,就设置 好源地址寄存器、目标地址寄存器和数据长度寄存器,然后将状态寄存器设 置为工作状态;如果DMA设备已经处于工作状态,处理器就需要等待。DMA 设备在空闲时如果看到状态寄存器被设置为工作状态就会自动启动,完成 DMA数据传输后又会将状态寄存器设置成空闲状态。
在多计算机系统中,通过类似单计算机系统的一组寄存器来实现对DMA 设备的控制通常是不够的。这是由于多计算机系统中一次DMA数据传输需要 传输的数据量经常很大,并且这些数据在内存空间上是不连续的。此时需要 使用较为复杂的数据结构描述一次DMA数据传输需要的源地址、目标地址和 数据长度等信息,该些按照一定的数据结构组成的信息称为DMA描述符。同 时为了实现通信与计算的重叠,处理器可能会连续发出多次DMA数据传输, 这就需要多计算机系统中DMA设备的启动方式也要与单计算机系统有所不 同。多计算机系统的结构如图l所示, 一个节点包括处理器、内存、桥接芯 片和DMA设备,各个节点通过互网络相互通信。
本领域中常用术语如下。
在多计算机系统中,发起一次DMA数据传输的节点称为本地节点;接收 DMA数据传输的节点称为远端节点。
多计算机系统中的DMA设备通常支持通道,从而实现多个应用程序对单 个DMA设备的共享,使得每个应用程序逻辑上独立拥有能够进行DMA方式数 据传输的设备。
通信库软件,是位于DMA设备和应用程序之间的程序,它根据本发明中 的DMA设备和方法为应用程序提供标准的程序接口 。这些标准的程序接口满 足一种或者多种编程模型规范,例如消息传递接口 (MPI)规范。
DMA描述符,是将描述一次DMA数据传输需要的源地址、目标地址和数 据长度等信息,按照一定的数据结构组成的信息。
命令窗口,是DMA设备在处理器的I/0空间上峡射的一段地址区间,用 于启动DMA设备。处理器将一条DMA命令的描述符填写到一块8字节对齐、物理地址连续的内存区域,然后将这块内存区域的首地址和长度发送到DMA
设备的命令窗口,以启动一次DMA数据传输。
门铃,是用于启动画A设备进行一次DMA传输的消息。
一次DMA发送操作,是指DMA设备按照描述符中的相关信息,将全部需
要传送的数据从内存中读出来,并将数据按照网格包的格式封装成一个或者
多个网络包,最后发送到互连网络上的过程。
一次DMA接收操作,是指DMA设备接收互连网络上的网络包,并将其中
的数据写入内存,直到将一个标记为尾包的网络包中的全部数据写入内存的过程。

发明内容
为解决上述问题,本发明提供了多计算机系统中节点的DMA设备及通信 方法,能够提供多计算机系统中节点的信息传输方式,同时保证多计算机系 统的高效通信。
本发明公开了多计算机系统中节点的通信方法,所述方法包括
步骤1,本地节点的通信库软件根据应用程序生成DMA命令,将所述DMA 命令的描述符存储到内存中,将包含所述DMA命令的描述符内存位置信息的 门铃传送给本地节点的DMA设备;
步骤2,本地节点的DMA设备根据所述门铃读取所述描述符;根据所述 描述符中信息将网络包发送到互连网络并在发送完成后生成发送完成事件, 或仅生成发送完成事件;
步骤3,远端节点的DMA设备从互连网络上接收网络包,根据所述网络 包的类型保存所述网络包中数据并在接收完成后生成接收完成事件,或仅生 成接收完成事件,或将所述远端节点的数据装入网络包发送给所述本地节点。
所述DMA设备支持通道,所述步骤l前还包括,
步骤21,在处理器1/0地址空间上映射用于接收所述门铃的命令窗口。 所述命令窗口的大小与所述DMA设备支持的通道数成正比。 所述步骤21还包括
步骤41,为所述DMA设备支持的每个通道在内存中分配用于暂存DMA命 令的发送完成事件的发送完成事件缓冲区、用于暂存DMA命令的接收完成事件的接收完成事件缓冲区和用于暂存DMA设备接收到的NAP网络包中数据的 DMA数据接收缓冲区。
所述DMA命令为NAP立即数命令或NAP间接数命令,
所述步骤2进一步为 '
步骤51,根据所述描述符获得待传输的数据,DMA设备将所述描述符中 与接收相关的信息和所述数据封装成一个NAP网络包,发送到互连网络;
步骤52,在所述NAP网络包发送到互连网络上后,根据所述描述符中与 发送完成事件相关的信息,确定是否生成发送完成事件,并发送给所述本地 节点。
所述DMA命令为RDMA put命令, 所述步骤2进一步为
步骤61,根据所述描述符读取内存中待传输的数据,DMA设备将所述描 述符中与接收相关的信息和所述数据封装成一个或多个RDMAput网络包,发 送到互连网络;
步骤62,在全部所述RDMA put网络包发送到互连网络上后,根据所述 描述符中与发送完成事件相关的信息,确定是否生成发送完成事件,并发送 给所述本地节点。
所述DMA命令为RDMA get命令,
所述步骤2进一步为
步骤71,将所述RDMA get命令封装为一个RDMA get网络包,发送到互 连网络;
歩骤72,在所述RDMA get网络包发送到互连网络上后,根据所述描述 符中与发送完成事件相关的信息,确定是否生成发送完成事件,并发送给所 述本地节点。
所述DMA命令为Fence命令,
所述步骤2进一步为
步骤81,生成所述Fence命令对应的网络包,发送到互连网络,并且不 生成发送完成事件。步骤91,不生成网络包,直接生成发送完成事件。
所述步骤3进一步为,
步骤101,根据所述网络包中保存的与接收相关的信息将网络包中的数 据写入对应通道的DMA数据接收缓存区中; z
步骤102,在所述网络包中的全部数据己经写入接收缓存区中后,在所 述网络包中保存的信息指示需要生成接收完成事件时,生成接收完成事件。
所述步骤3进一步为,
步骤111,根据所述RDMAput网络包中保存的用于接收的内存空间的首 地址和长度的信息将所述数据包中的数据写入对应的内存空间;
步骤112,在标记为尾包的RDMAput网络包中的全部数据己经写入内存 中,并且所述网络包中保存的信息指示需要生成接收完成事件时,生成接收 完成事件。
所述步骤3进一步为,
步骤121,根据所述网络包中信息读取所述远端节点内存中待传输的数 据,将所述数据封装成一个或多个RDMA put网络包,发送给所述本地节点。 所述步骤3进一步为,
步骤131,接收完所述网络包后,直接生成接收完成事件。
本发明还公开了多计算机系统中节点的DMA设备,DMA设备包括用于连 接所述DMA设备和互连网络的交换机接口模块和用于连接所述DMA设备和所 述节点的处理器和内存的系统总线接口模块,DMA设备还包括
DMA启动模块,用于接收包含DMA命令的描述符的内存位置信息的门铃, 将所述门铃传给描述符读取模块,启动一次DMA传输;
所述描述符读取模块,用于根据所述门铃中信息读取所述描述符,以使 数据读取模块、匿A发送引擎模块和DMA发送完成通知模块获得所述描述符;
所述数据读取模块,用于获得当前操作相关的描述符,根据所述描述符 读取内存中待传输的数据,以使DMA发送引擎模块获得所述数据;
所述DMA发送引擎模块,用于获得当前操作相关的描述符,按照所述描 述符中信息生成网络包,并将所述网络包发送到互连网络;
所述DMA发送完成通知模块,用于获得当前操作相关的描述符,根据所 述描述符进行生成发送完成事件和/或发送完成中断的操作;DMA接收引擎模块,用于从互连网络上接收网络包,根据所述网络包的
类型进行保存所述网络包中数据的操作,并在在所述网络包中DMA命令指示 从所述DMA设备所在节点提取数据时,以所述网络包中描述符为当前操作相 关的描述符,启动所述数据读取模块;'"
DMA接收完成通知模块,用于根据所述描述符进行生成接收完成事件和/ 或接收完成中断的操作。
所述DMA设备支持多个通道。
所述DMA启动模块包括门铃缓冲区,
所述DMA启动模块进一步用于接收所述门铃,如果所述DMA设备的描述 符读取模块处于空闲状态,则将所述门铃传给所述描述符读取模块以启动一 次DMA传输,如果所述DMA设备的描述符读取模块处于工作状态,则将所述 门铃暂存到所述门铃缓冲区,等到DMA设备的描述符读取模块处于空闲时, 将所述门铃传给所述描述符读取模块以启动一次DMA传输。
所述描述符读取模块包括描述符缓冲区,
所述描述符读取模块进一步用于接收所述门铃,按所述门铃信息从内存 中读取所述描述符,将所述描述符存储到所述描述符缓冲区以供所述数据读 取模块、所述DMA发送引擎模块和所述DMA发送完成通知模块使用时读取。
所述数据读取模块包括数据缓冲区,
所述数据读取模块进一步用于获得当前操作相关的描述符,在需要传输 数据时,根据所述描述符中信息从内存中读取所述待传输的数据,将所述数 据存储到所述数据缓冲区以供所述DMA发送引擎模块读取。
所述DMA发送引擎模块进一步用于获得当前操作相关的描述符,并在需 要传输数据时,读取所述数据缓冲区,获得所述待传输的数据,生成网络包 发送到互连网络;在不需要传输数据时,直接生成网络包发送到互连网络。
所述DMA发送引擎模块还包括网络包缓冲区,
所述DMA发送引擎模块还用于在互连网络无法接收网络包时,将整个或 部分所述网络包缓存到网络包缓冲区。
所述DMA发送完成通知模块,用于获得当前操作相关的描述符,根据所 述描述符的信息,确定是否需要生成发送完成事件和/或发送完成中断,如果 需要生成发送完成事件,则在一次DMA发送操作完成后,根据描述符信息生成相应的发送完成事件并将所述发送完成事件写入对应通道的发送完成事件
缓冲区;如果需要生成发送完成中断,则在一次DMA发送操作完成后,根据 描述符生成相应的发送完成中断。
DMA 1t收引擎模块进一步用于从互连网络上接收网络包,并在所述网络 包中包含数据时根据所述网络包的类型选择将所述网络包中的数据通过写内 存命令写入所述网络包指定的内存空间或者写入对应通道的DMA数据接收缓 冲区。
所述DMA接收引擎模块还包括写内存命令缓冲区;
所述DMA接收引擎模块还用于在总线忙碌时将所述写内存命令缓存到所 述写内存命令缓冲区。
所述DMA接收完成通知模块进一步用于根据所述网络包中的控制信息, 确定是否需要生成接收完成事件和/或接收完成中断,如果需要生成接收完成 事件,则在一次DMA接收操作完成后,根据网络包中控制信息生成相应的接 收完成事件并写入对应通道的接收完成事件缓冲区;如果需要生成接收完成 中断,则在一次匿A接收操作完成后,根据网络包中的相关信息生成相应的 接收完成中断。
所述DMA设备还包括DMA接收缓冲区管理模块,用于为DMA设备支持的 每个通道分配多个用以记录所述通道的接收完成事件缓冲区和DMA数据接收 缓冲区的状态信息的寄存器,以管理所述通道的接收完成事件缓冲区和DMA 数据接收缓冲区。
所述DMA设备支持的DMA命令包括NAP立即数命令、NAP间接数命令、 RDMA get命令、RDMA put命令、Flush命令和Fence命令。
本发明的有益效果在于,通过采用DMA方式通信,能够有效降低处理 器在通信过程中的参与时间,节约处理器的处理能力;通过使用描述符,能 够使源节点上多个任意起始地址、任意长度的数据,可以在一次DMA操作 中传输到目标节点上多个任意起始地址、任意长度的位置;DMA设备在提 供高效的通信能力的同时,有效地节约了硬件资源;通过在DMA设备上使 用本发明,处理器和DMA设备之间高效的流量控制方法,保证网络的拥塞 情况不会影响处理器;为应用程序提供灵活高效的通信接口 。


图1是多计算机系统的结构示意图; 图2是本发明的门铃的结构图3是本发明多计算机系统中节点的DMA设备的结构图; 图4是本发明方法中DMA设备的发送流程图; 图5是本发明方法中DMA设备的接收流程图6是描述符的结构示意图7是网络包的结构示意图。
具体实施例方式
下面结合附图,对本发明做进一步的详细描述。
本发明的多计算机系统中节点的DMA设备的结构如图3所示。DMA设备 包括系统总线接口模块301、交换机接口模块302、 DMA启动模块303、描 述符读取模块304、数据读取模块305、謹A发送引擎模块306、 DMA发送完 成通知模块307、 DMA接收引擎模块308、 DMA接收完成通知模块309、 DMA接 收缓冲区管理模块310。
系统总线接口模块301,用于连接所述DMA设备和所述节点的处理器和 内存。
系统总线接口模块301为系统总线接口 。 DMA启动模块303、描述符读取 模块304、数据读取模块305、 DMA发送完成通知模块307、 DMA接收引擎模 块308、DMA接收缓冲区管理模块310和DMA接收完成通知模块309都要通过 系统总线接口模块进行内存存取,由系统总线接口模块301负责系统总线接 口的仲裁和分发。
交换机接口模块302,用于连接所述DMA设备和互连网络。
交换机接口模块302,包含有交换机接口。匿A发送引擎模块306、 DMA 接收引擎模块308都要通过交换机接口模块302连接互连网络。
DMA启动模块303,用于接收包含DMA命令的描述符的内存位置信息的门 铃,将所述门铃传给描述符读取模块304,启动一次DMA传输。
当DMA设备的描述符读取模块304处于空闲状态时,DMA启动模块303 将门铃交给描述符读取模块304,从而启动DMA设备;当固A设备的描述符读取模块304处于工作状态时,DMA启动模块303暂存门铃,等待DMA设备 的描述符读取模块304空闲时,再将门铃传给描述符读取模块304以启动一 次DMA传输。DMA启动模块303包含一块门铃缓冲区用于暂存门铃,该门铃 缓冲区由DMA启动模块303负责管理。本发明具体实施方式
中,门铃的结构 如图2所示,其中包括描述符的首地址和描述符的长度。
描述符读取模块304,用于根据所述门铃中信息读取所述描述符,以使 数据读取模块305、DMA发送引擎模块306和DMA发送完成通知模块307获得 所述描述符。
描述符读取模块304处理DMA启动模块303交给它的门铃,门铃中包含 一次DMA传输所需的描述符在内存空间中的存放位置。描述符读取模块304 根据门铃中的首地址和长度信息,生成对该内存空间的一次或者多次读操作, 并将返回的数据整理成描述符供给数据读取模块305、 DMA发送引擎模块306 和DMA发送完成通知模块307使用。描述符读取模块304包含描述符缓冲区, 描述符缓冲区用于暂存描述符,该描述符缓冲区由描述符读取模块304负责 写入,由其它相关模块负责读取。
数据读取模块305,用于当前操作相关的描述符,根据所述描述符读取 内存中待传输的数据,以使DMA发送引擎模块306获得所述数据。
数据读取模块305根据描述符中源数据所在内存空间的首地址和长度信 息,生成对该内存空间的一次或者多次读操作,并将返回的数据暂存起来。 在数据读取模块305中包含有一块数据缓冲区,数据缓冲区由数据读取模块 305负责写入,由DMA发送引擎模块306负责读取。
DMA发送引擎模块306,用于获得当前操作相关的描述符,按照所述描述 符中信息生成网络包,并将所述网络包发送到互连网络。
DMA发送引擎模块306根据描述符缓冲区中的描述符信息,读取描述符 缓冲区和数据缓冲区的内容来构造网络包并发送到互连网络上。根据DMA命 令类型的不同, 一条DMA命令可以对应一个或者多个网络包。DMA发送引擎 模块306包含一块网络包缓冲区,用来在互连网络无法接收网络包时缓存部 分或者整个网络包。
DMA发送完成通知模块307,用于获得当前操作相关的描述符,根据所述 描述符进行生成发送完成事件和/或发送完成中断的操作。DMA发送完成通知模块307根据描述符信息,判断是否需要生成一个发 送完成事件和/或一个发送完成中断;如果需要生成一个发送完成事件,则在 一次DMA发送操作完成后根据描述符生成相应的发送完成事件并写入对应通 道的发送完成事件缓冲区;如果需要生成一个发送完成中断,则在一次DMA 发送操作完成后根据描述符生成相应的发送完成中断。
在具体实现中,每个发送完成事件的大小均为8字节,并8字节对齐写 入发送完成事件缓冲区。DMA发送完成通知模块307负责维护每个通道的发 送完成事件缓冲区。每次生成一个发送完成事件,发送完成事件缓冲区当前 指针寄存器就会加8字节,同时发送完成事件缓冲区可用大小寄存器减一。 当发送完成事件缓冲区当前指针的值等于发送完成事件缓冲区终止地址寄存 器,并且有新的完成事件生成时,发送完成事件缓冲区当前指针寄存器会重 新指向发送完成事件缓冲区起始地址寄存器。此外,DMA发送完成通知模块 307会根据描述符中的相关信息增加发送完成事件缓冲区可用大小寄存器, 一次增加的数量由通信库软件设置。
DMA接收引擎模块308,用于从互连网络上接收网络包,根据所述网络包 的类型进行保存所述网络包中数据的操作,并在在所述网络包中DMA命令指 示从所述DMA设备所在节点提取数据时,以所述网络包中描述符为当前操作 相关的描述符,启动数据读取模块305。
DMA接收引擎模块308从互连网络上接收网络包,在网络包包含数据时, 根据网络包的类型选择将网络包中的数据写入网络包指定的内存空间或者写 入对应通道的DMA数据接收缓冲区。 一个网络包中的数据可以分解为对内存 的一次或者多次写操作。DMA接收引擎模块308包含一块写内存命令缓冲区, 用来在系统总线忙碌时缓存写内存命令。
画A接收完成通知模块309,用于根据所述描述符进行生成接收完成事件 和/或接收完成中断的操作。
DMA接收完成通知模块309根据网络包中的控制信息,判断是否需要生 成一个接收完成事件和/或一个接收完成中断,如果需要生成一个接收完成事 件,则在一次DMA接收操作完成后根据网络包中的控制信息生成相应的接收 完成事件并写入接收完成事件缓冲区;如果需要生成一个接收完成中断,则 一次DMA接收操作完成后根据网络包中的相关信息生成相应的接收完成中断。
在DMA设备的接收时,由通信库软件保证每个通道的接收完成事件缓冲
区的项数要大于等于DMA数据接收缓冲区的项数,从而只需要接收完成事件 缓冲区有流量控制,而DMA数据接收缓冲区就不需要有流量控制。因为NAP 命令一定会生成接收完成事件,而DMA数据接收缓冲区只用于暂存NAP命令 的数据。接收完成事件缓冲区的流量控制与发送完成事件缓冲区的流量控制 相同。通信库软件在描述符中会携带相关信息增加接收完成事件缓冲区可用 大小寄存器,通信库也可以用Flush命令对接收完成事件缓冲区进行流量控 制。
DMA接收缓冲区管理模块310,用于为DMA设备支持的每个通道分配多个 用以记录所述通道的接收完成事件缓冲区和DMA数据接收缓冲区的状态信息 的寄存器,以管理所述通道的接收完成事件缓冲区和DMA数据接收缓冲区。
DMA接收缓冲区管理模块310会根据DRB索引空间当前指针寄存器,从 索引空间读取多个数据接收缓冲区所在的页面地址,并将这些页面地址暂存 在DRB寄存器组中。当DRB寄存器组中可用的页面数量小于一个阈值时,DMA 接收缓冲区管理模块310就会再次读取新的数据接收缓冲区的页面地址。数 据接收缓冲区以2KB为单位划分为多个暂存空间,每个NAP命令使用一个2KB 大小的暂存空间,而不管实际携带数量的多少。
该DMA设备主要支持四种方式的DMA命令
NAP (No Address Packet,无地址)立即数方式、NAP间接数方式、RDMA (Remote Direct Memory Access,远程内存直接存取)put方式禾口 RDMA get 方式。
其中,NAP立即数操作和NAP间接数操作对应互连网络上一个NAP网络 包,RDMA put操作对应互连网络上一个或者多个RDMA put网络包,RDMA get 操作对应一个RDMA get网络包。
DMA设备的每个通道均支持上述四种方式的DMA命令。 NAP立即数方式,用于将数据从本地节点传送到远端节点;其描述符中 包含有具体的源数据所在内存空间的信息和目标节点在多机系统中的编号, 没有具体的目标内存空间的信息;需要传输的数据位于描述符内;每个NAP 立即数命令对应一个NAP网络包,DMA接收引擎模块308将NAP网络包中的数据暂存在DMA接收缓冲区。
NAP间接数方式,用于将数据从本地节点传送到远端节点;其描述符 中包含有具体的源数据所在内存空间的信息和目标节点在多机系统中的编 号,没有具体的目标内存空间的地址;需要传输的数据在本地节点的一块或
者多块内存空间中,该些内存空间的首地址和长度位于描述符内,具体的数
据需要数据读取模块305根据描述符中的相关信息读取;每个NAP间接数命 令对应一个NAP网络包,DMA接收引擎模块308将NAP网络包中的数据暂存 在DMA数据接收缓冲区。
RDMAput方式,用于将数据从本地节点传送到远端节点;其描述符中包 含有具体的源和目标内存空间的信息;需要传输的数据在本地节点的一块或 者多块内存空间中,该些内存空间的首地址和长度位于描述符内,具体的数 据需要数据读取模块305根据描述符中的相关信息从本地节点读取;每个 RDMA put命令对应一个或者多个RDMA put网络包。
RDMAget方式,用于将数据从远端节点读取到本地节点;其描述符中包 含有具体的源和目标内存空间的信息;需要传输的数据在远端节点的一块或 者多块内存空间中,而目标内存空间的首地址和长度位于本地节点内,具体 的数据需要目标节点的数据读取模块305根据描述符中的相关信息从远端节 点读取;每个RDMA get命令对应一个RDMA get网络包。
D區设备支持Flush命令,不会生成网络包;不需要数据的存取; 一定 会生成发送完成事件。
D區设备还支持Fence命令,会生成一个Fence网络包,不会发生数据 的存取, 一定会生成接收完成事件。
此外,固A设备还包括如下寄存器。
命令窗口起始地址寄存器和命令窗口终止地址寄存器,用于通信库软件 配置DMA设备的命令窗口在I/O空间上的位置,使得DMA设备能够从系统总 线上接收DMA命令。
用于维护每个通道的SCEB (发送完成事件缓冲区)的寄存器,SCEB起始 地址寄存器、SCEB终止地址寄存器、SCEB当前指针寄存器和SCEB可用大小 寄存器。SCEB起始地址寄存器和SCEB终止地址寄存器由通信库软件设置, SCEB当前指针寄存器初始时指向发送完成事件缓冲区起始地址,SCEB可用大小寄存器初始时为发送完成事件缓冲区能容纳发送完成事件数量的最大值。
用于维护每个通道的RCEB(接收完成事件缓冲区)的寄存器,RCEB起始 地址寄存器、RCEB终止地址寄存器、RCEB当前指针寄存器和RCEB可用大小 寄存器。RCEB起始地址寄存器和RCEB终止地址寄存器由通信库软件设置, RCEB当前指针寄存器初始时指向接收完成事件缓冲区起始地址,RCEB可用大 小寄存器初始时为接收完成事件缓冲区能容纳发送完成事件数量的最大值。
用于维护每个通道的DRB (DMA数据接收缓冲区)的寄存器,DRB索引空 间起始地址寄存器、DRB索引空间终止地址寄存器、DRB索引空间当前指针寄 存器和DRB寄存器组。由于DMA数据接收缓冲区非常大,因此它通常由许多 个内存页面构成,该些内存页面的信息又存放在一段连续的地址空间内,这 段地址空间称为索引空间。DRB索引空间起始地址寄存器和DRB索引空间终 止地址寄存器由通信库软件设置,DRB索引空间当前指针寄存器初始时指向 DMA数据接收缓冲区索引空间的起始地址,DRB寄存器组用来存放多个接收缓 冲区所在页面的地址。
此外,还包括状态寄存器供通信库软件观察每个通道的状态,状态包括 是否接收到错误的网络包,和已经处理的网络包的个数。
DMA设备支持多个通道,体现在命令窗口上。写入命令窗口的同一位置 的多个门铃会被DMA设备认作是同一个应用程序的多个DMA命令,写入命令 窗口的不同位置的多个门铃会被DMA设备认作是不同应用程序的多个DMA命 令。謹A设备接收到门铃时如果处于空闲状态就会处理门铃;否则DMA设备 会将门铃暂时缓存,等待当前DMA命令完成后再处理缓存的门铃。命令窗口 的大小与门铃的大小的比值就是匿A设备支持的最大通道数,命令窗口的大 小应为8字节的整数倍。
本发明多计算机系统中节点的通信方法包括.-
步骤100,本地节点的通信库软件根据应用程序生成DMA命令,将所述 DMA命令的描述符存储到内存中,将包含所述DMA命令的描述符内存位置信 息的门铃传送给本地节点的DMA设备。
步骤200,本地节点的DMA设备根据所述门铃读取所述描述符;根据所 述描述符中信息进行生成网络包发送到互连网络和生成发送完成事件的操 作,或仅进行生成发送完成事件的操作。步骤300,远端节点的DMA设备从互连网络上接收网络包,根据所述网 络包的类型进行保存所述网络包中数据和生成接收完成事件的操作,或仅进 行生成接收完成事件的操作,或根据所述网络包的类型进行将所述远端节点 的数据装入网络包发送给所述本地节点的操作。
本发明多计算机系统中节点的通信方法中DMA设备的发送流程如图4所示。
步骤S401, DMA设备初始化。
DMA设备初始化包括为DMA设备在处理器I/O地址空间上映射一段用 于接收门铃的命令窗口,命令窗口的大小与DMA设备支持的通道数成正比; 为DMA设备的每个通道在内存中分配发送完成事件缓冲区、接收完成事件缓 冲区和DMA数据接收缓冲区。
三个缓冲区均环状使用,其中发送完成事件缓冲区用于暂存DMA命令的 发送完成事件,接收完成事件缓冲区用于暂存DMA命令的接收完成事件,DMA 数据接收缓冲区用于暂存DMA设备接收到的NAP网络包中的数据。
在DMA设备,通信库软件通过使用基于信用的流量控制保证发送给每个 通道的门铃数量不会超过该通道能够暂存的最大数量。通信库软件在通道初 始化时会获得该通道的信用。每发起一次DMA数据传输后,通信库软件自动 将"信用"值减1,当"信用"值为0时,通信库软件不再发起DMA数据传 输;通信库软件接收到发送完成事件时,会根据完成事件的内容将信用增加 1或者多个。此处,要求DMA设备按照时间的顺序处理DMA命令。
步骤S402,本地节点的通信库软件根据数据传输的需要选择DMA命令的 类型,并将DMA命令的相关信息按照该命令类型对应的描述符的格式写入一 块连续的、8字节对齐的内存空间。
步骤S403,本地节点的通信库软件将存放有描述符的内存空间的首地址 和长度以门铃方式发送给DMA设备。
步骤S404,本地节点的DMA设备根据门铃中关于描述符所在内存空间的 首地址和长度信息,从相应的内存空间读取出描述符信息。
步骤S405,本地节点的DMA设备根据描述符中DMA命令的类型选择对应 的处理的方式。
如果DMA命令是NAP立即数命令,则描述符中就包含有需要传输的数据,DMA设备将描述符中与接收相关的信息和需要传输的数据封装成一个NAP 网络包,发送到互连网络上。
如果DMA命令是NAP间接数命令,则描述符中会包含有需要传输的数 据所在的一个或者多个内存空间的首地址和长度,DMA设备根据首地址和长 度信息读取相应的内存空间,并将描述符中与接收相关的信息和读取回来的 数据封装成一个NAP网络包,发送到互连网络上。
如果DMA命令是RDMA put命令,则描述符中会包含有本地需要传输的 数据所在的一个或者多个内存空间的首地址和长度及远端用于接收数据的一 个或者多个内存空间的首地址和长度,DMA设备根据源的首地址和长度信息 读取相应的内存空间,并将描述符中与接收相关的信息和读取回来的数据封 装成一个或者多个RDMA put网络包,发送到互连网络上。
如果DMA命令是RDMA get命令,则描述符中会包含有远端需要传输的 数据所在的一个或者多个内存空间的首地址和长度及本地用于接收数据的一 个或者多个内存空间的首地址和长度,DMA设备将RDMA get命令封装成一个 RDMA get网络包,发送到互连网络上。
如果DMA命令是Fence命令,DMA设备则生成网络包。
如果DMA命令是Flush命令,DMA设备则不生成网络包,直接生成发 送完成事件。
步骤S406,在DMA命令对应的全部网络包发送到互连网络上以后,DMA 设备根据描述符中与发送完成事件相关的信息,选择是否生成发送完成事件 发送给本地节点。
本发明方法中DMA设备的接收流程如图5所示。
步骤S501,远端节点的DMA设备从互连网络上接收网络包,根据网络包 的类型选择对应的处理的方式。
如果网络包是NAP包,则DMA设备会根据网络包中保存的与接收相关的 信息将网络包中的数据写入对应的接收缓存区中。
如果网络包是RDMA put网络包,则DMA设备会根据网络包中保存的用于 接收的内存空间的首地址和长度的信息将包中的数据写入对应的内存空间。
如果网络包是RDMA get网络包,则DMA设备会将其理解为本地发起的 RDMA put命令,根据描述符中源的首地址和长度信息读取相应的内存空间,并将描述符中与接收相关的信息和读取回来的数据封装成一个或者多个
R匿A put网络包,发送到互连网络上。
如果是Fence命令,则接收该网络包。
步骤S502, DMA接收操作完成后,选择是否生成发送完成事件。 DMA设备在下列情况下会生成接收完成事件。
NAP包中的全部数据己经写入内存,或者标记为尾包的RDMA put包中的 全部数据已经写入内存且网络包中保存的信息指示需要生成接收完成事件。 如果是Fence命令,则在接收完成后生成接收完成事件。 DMA设备在接收完RDMA get网络包后不会生成接收完成事件。 描述符的结构如图6所示,整个描述符可以分为6个部分 类型区,用来标识DMA命令的类型,根据DMA命令类型的不同,DMA设 备执行的方式也会不同。具体地讲,DMA命令的类型可以为NAP立即数命令、 NAP间接数命令、RDMA put命令、RDMA get命令、Flush命令和Fence命令 共6种类型。
控制信息1区,该部分对于所有类型的DMA命令都相同。该部分主要包 括接收事件环流控位、发送完成事件控制位、接收完成事件控制位、发送 完成中断控制位、接收完成中断控制位、本地节点编号、远端节点编号、本 地通道号和远端通道号等。
控制信息2区,该部分根据DMA命令的类型的不同而不同。对于NAP立 即数命令,该部分是传输数据总长度信息;对于NAP间接数命令,该部分是 源内存空间的个数信息;对于RDMA put和RDMA get命令,该部分是源内存 空间和目标内存空间的个数信息;对于Flush命令和Fence命令,该部分无 意义。
控制信息3区,该部分根据DMA命令的类型的不同而不同。对于NAP立 即数命令,该部分是需要传输的数据;对于NAP间接数命令,该部分是源内 存空间的首地址和长度信息;对于RDMA put和RDMA get命令,该部分是源 内存空间和目标内存空间的首地址和长度信息;对于Flush命令和Fence命 令,该部分不存在。
控制信息4区,对于NAP间接数命令、RDMA put命令和RDMA get命令, 该部分为传输数据总长度信息;而对于NAP立即数命令、Flush命令和Fence命令,该部分不存在。
软件信息区,该部分由软件填写,DMA设备用其生成发送完成事件和接
收完成事件。
网络包的结构如图7所示,整个网络包可以分为6个部分
类型区,用来标识网络包的类型,根据网络包类型的不同,DMA设备处 理的方式也会不同。具体地讲,网络包的类型可以为NAP、 RDMAput、 RDMA get 和Fence共4种类型。
控制信息1区,该部分对于所有类型的网络包都是相同的。
该部分主要包括网络包总长度、数据总长度、接收事件环流控位、接 收完成事件控制位、接收完成中断控制位、本地节点编号、远端节点编号、 本地通道号和远端通道号等。
控制信息2区,只有当网络包为RDMAput网络包时该部分存在。该部分 是用于接收的内存空间的首地址信息。
控制信息3区,对于Fence网络包,该部分不存在;而对于其它网络包, 这部分是8字节对齐的传输的数据。
控制信息4区,只有当网络包为RDMAput尾包时该部分存在,该部分是 RDMA put命令传输的数据的总长度。
软件信息区,该部分就是描述符中的软件信息区,DMA设备用其生成接 收完成事件。
控制信息5区,该部分是网络包的校验信息,通常为整个网络包的CRC值。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条 件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限 于以上的说明,而是由权利要求书的范围来确定的。
权利要求
1.一种多计算机系统中节点的通信方法,其特征在于,所述方法包括步骤1,本地节点的通信库软件根据应用程序生成DMA命令,将所述DMA命令的描述符存储到内存中,将包含所述DMA命令的描述符内存位置信息的门铃传送给本地节点的DMA设备;步骤2,本地节点的DMA设备根据所述门铃读取所述描述符;根据所述描述符中信息将网络包发送到互连网络并在发送完成后生成发送完成事件,或仅生成发送完成事件;步骤3,远端节点的DMA设备从互连网络上接收网络包,根据所述网络包的类型保存所述网络包中数据并在接收完成后生成接收完成事件,或仅生成接收完成事件,或将所述远端节点的数据装入网络包发送给所述本地节点。
2. 如权利要求l所述的多计算机系统中节点的通信方法,其特征在于, 所述DMA设备支持通道,所述步骤1前还包括,步骤21,在处理器1/0地址空间上映射用于接收所述门铃的命令窗口。
3. 如权利要求2所述的多计算机系统中节点的通信方法,其特征在于, 所述命令窗口的大小与所述DMA设备支持的通道数成正比。
4. 如权利要求2所述的多计算机系统中节点的通信方法,其特征在于, 所述步骤21还包括步骤41,为所述DMA设备支持的每个通道在内存中分配用于暂存DMA命 令的发送完成事件的发送完成事件缓冲区、用于暂存DMA命令的接收完成事 件的接收完成事件缓冲区和用于暂存DMA设备接收到的NAP网络包中数据的 DMA数据接收缓冲区。
5. 如权利要求4所述的多计算机系统中节点的通信方法,其特征在于, 所述DMA命令为NAP立即数命令或NAP间接数命令, 所述步骤2进一步为步骤51,根据所述描述符获得待传输的数据,DMA设备将所述描述符中 与接收相关的信息和所述数据封装成一个NAP网络包,发送到互连网络;步骤52,在所述NAP网络包发送到互连网络上后,根据所述描述符中与 发送完成事件相关的信息,确定是否生成发送完成事件,并发送给所述本地节点。
6. 如权利要求4所述的多计算机系统中节点的通信方法,其特征在于,所述DMA命令为RDMA put命令, 所述步骤2进一步为"步骤61,根据所述描述符读取内存中待传输的数据,DMA设备将所述描 述符中与接收相关的信息和所述数据封装成一个或多个RDMAput网络包,发 送到互连网络;步骤62,在全部所述RDMA put网络包发送到互连网络上后,根据所述 描述符中与发送完成事件相关的信息,确定是否生成发送完成事件,并发送 给所述本地节点。
7. 如权利要求4所述的多计算机系统中节点的通信方法,其特征在于, 所述DMA命令为RDMA get命令,所述步骤2迸一步为步骤71,将所述RDMA get命令封装为一个RDMA get网络包,发送到互 连网络;步骤72,在所述RDMA get网络包发送到互连网络上后,根据所述描述 符中与发送完成事件相关的信息,确定是否生成发送完成事件,并发送给所 述本地节点。
8. 如权利要求4所述的多计算机系统中节点的通信方法,其特征在于, 所述DMA命令为Fence命令,所述步骤2进一步为步骤81,生成所述Fence命令对应的网络包,发送到互连网络,并且不生成发送完成事件。
9. 如权利要求4所述的多计算机系统中节点的通信方法,其特征在于, 所述DMA命令为Flush命令,所述步骤2进一步为步骤91,不生成网络包,直接生成发送完成事件。
10. 如权利要求5所述的多计算机系统中节点的通信方法,其特征在于, 所述歩骤3进一步为,据写入对应通道的DMA数据接收缓存区中;步骤102,在所述网络包中的全部数据已经写入接收缓存区中后,在所 述网络包中保存的信息指示需要生成接收完成事件时,生成接收完成事件。
11. 如权利要求6所述的多计算机系统中节点的通信方法,其特征在于,所述步骤3进一步为,步骤111,根据所述RDMAput网络包中保存的用于接收的内存空间的首 地址和长度的信息将所述数据包中的数据写入对应的内存空间;步骤112,在标记为尾包的RDMAput网络包中的全部数据己经写入内存 中,并且所述网络包中保存的信息指示需要生成接收完成事件时,生成接收 完成事件。
12. 如权利要求7所述的多计算机系统中节点的通信方法,其特征在于, 所述步骤3进一步为,步骤121,根据所述网络包中信息读取所述远端节点内存中待传输的数 据,将所述数据封装成一个或多个RDMA put网络包,发送给所述本地节点。
13. 如权利要求8所述的多计算机系统中节点的通信方法,其特征在于, 所述步骤3进一步为,步骤131,接收完所述网络包后,直接生成接收完成事件。
14. 一种多计算机系统中节点的DMA设备,匿A设备包括用于连接所述 DMA设备和互连网络的交换机接口模块和用于连接所述DMA设备和所述节点 的处理器和内存的系统总线接口模块,其特征在于,DMA设备还包括DMA启动模块,用于接收包含DMA命令的描述符的内存位置信息的门铃, 将所述门铃传给描述符读取模块,启动一次DMA传输;所述描述符读取模块,用于根据所述门铃中信息读取所述描述符,以使 数据读取模块、DMA发送引擎模块和DMA发送完成通知模块获得所述描述符;所述数据读取模块,用于获得当前操作相关的描述符,根据所述描述符 读取内存中待传输的数据,以使DMA发送引擎模块获得所述数据;所述DMA发送引擎模块,用于获得当前操作相关的描述符,按照所述描 述符中信息生成网络包,并将所述网络包发送到互连网络;所述DMA发送完成通知模块,用于获得当前操作相关的描述符,根据所 述描述符进行生成发送完成事件和/或发送完成中断的操作;DMA接收引擎模块,用于从互连网络上接收网络包,根据所述网络包的类型进行保存所述网络包中数据的操作,并在在所述网络包中DMA命令指示 从所述DMA设备所在节点提取数据时,以所述网络包中描述符为当前操作相 关的描述符,启动所述数据读取模块; 'DMA接收完成通知模块,用于根据所述描述符进行生成接收完成事件和/ 或接收完成中断的操作。
15. 如权利要求14所述的多计算机系统中节点的DMA设备,其特征在于, 所述DMA设备支持多个通道。
16. 如权利要求15所述的多计算机系统中节点的DMA设备,其特征在于, 所述DMA启动模块包括门铃缓冲区,所述DMA启动模块进一步用于接收所述门铃,如果所述DMA设备的描述 符读取模块处于空闲状态,则将所述门铃传给所述描述符读取模块以启动一 次固A传输,如果所述DMA设备的描述符读取模块处于工作状态,则将所述 门铃暂存到所述门铃缓冲区,等到DMA设备的描述符读取模块处于空闲时, 将所述门铃传给所述描述符读取模块以启动一次DMA传输。
17. 如权利要求16所述的多计算机系统中节点的DMA设备,其特征在于, 所述描述符读取模块包括描述符缓冲区,所述描述符读取模块进一步用于接收所述门铃,按所述门铃信息从内存 中读取所述描述符,将所述描述符存储到所述描述符缓冲区以供所述数据读 取模块、所述DMA发送引擎模块和所述DMA发送完成通知模块使用时读取。
18. 如权利要求17所述的多计算机系统中节点的DMA设备,其特征在于, 所述数据读取模块包括数据缓冲区,所述数据读取模块进一步用于获得当前操作相关的描述符,在需要传输 数据时,根据所述描述符中信息从内存中读取所述待传输的数据,将所述数 据存储到所述数据缓冲区以供所述DMA发送引擎模块读取。
19. 如权利要求18所述的多计算机系统中节点的DMA设备,其特征在于, 所述DMA发送引擎模块进一步用于获得当前操作相关的描述符,并在需要传输数据时,读取所述数据缓冲区,获得所述待传输的数据,生成网络包 发送到互连网络;在不需要传输数据时,直接生成网络包发送到互连网络。
20. 如权利要求19所述的多计算机系统中节点的DMA设备,其特征在于,所述DMA发送引擎模块还包括网络包缓冲区,所述DMA发送引擎模块还用于在互连网络无法接收网络包时,将整个或部分所述网络包缓存到网络包缓冲区。
21. 如权利要求19所述的多计算机系统中节点的DMA设备,其特征在于, 所述DMA发送完成通知模块,用于获得当前操作相关的描述符,根据所述描述符的信息,确定是否需要生成发送完成事件和/或发送完成中断,如果 需要生成发送完成事件,则在一次DMA发送操作完成后,根据描述符信息生 成相应的发送完成事件并将所述发送完成事件写入对应通道的发送完成事件 缓冲区;如果需要生成发送完成中断,则在一次DMA发送操作完成后,根据 描述符生成相应的发送完成中断。
22. 如权利要求21所述的多计算机系统中节点的DMA设备,其特征在于, DMA接收引擎模块进一步用于从互连网络上接收网络包,并在所述网络包中包含数据时根据所述网络包的类型选择将所述网络包中的数据通过写内 存命令写入所述网络包指定的内存空间或者写入对应通道的DMA数据接收缓 冲区。
23. 如权利要求22所述的多计算机系统中节点的DMA设备,其特征在于, 所述DMA接收引擎模块还包括写内存命令缓冲区;所述匿A接收引擎模块还用于在总线忙碌时将所述写内存命令缓存到所 述写内存命令缓冲区。
24. 如权利要求22所述的多计算机系统中节点的DMA设备,其特征在于, 所述DMA接收完成通知模块进一步用于根据所述网络包中的控制信息,确定是否需要生成接收完成事件和/或接收完成中断,如果需要生成接收完成 事件,则在一次DMA接收操作完成后,根据网络包中控制信息生成相应的接 收完成事件并写入对应通道的接收完成事件缓冲区;如果需要生成接收完成 中断,则在一次DMA接收操作完成后,根据网络包中的相关信息生成相应的 接收完成中断。
25. 如权利要求24所述的多计算机系统中节点的DMA设备,其特征在于, 所述DMA设备还包括DMA接收缓冲区管理模块,用于为DMA设备支持的每个通道分配多个用以记录所述通道的接收完成事件缓冲区和DMA数据接收 缓冲区的状态信息的寄存器,以管理所述通道的接收完成事件缓冲区和DMA数据接收缓冲区。
26.如权利要求25所述的多计算机系统中节点的DMA设备,其特征在于, 所述DMA设备支持的DMA命令包括NAP立即数命令、NAP间接数命令、 RDMA g6t命令、RDMA put命令、Flush命令和Fence命令。
全文摘要
本发明涉及多计算机系统中节点的DMA设备及通信方法,方法包括步骤1,本地节点根据应用程序生成DMA命令,将DMA命令的描述符存储到内存中,将包含DMA命令的描述符内存位置信息的门铃传送给本地节点;步骤2,本地节点根据门铃读取描述符;根据描述符中信息生成网络包发送到互连网络和生成发送完成事件,或仅生成发送完成事件;步骤3,远端节点的DMA设备从互连网络上接收网络包,根据网络包的类型保存网络包中数据和生成接收完成事件,或仅生成接收完成事件,或将所述远端节点的数据装入网络包发送给所述本地节点。本发明能够提供多计算机系统中节点的信息传输方式,同时保证多计算机系统的高效通信。
文档编号G06F13/20GK101539902SQ20091008345
公开日2009年9月23日 申请日期2009年5月5日 优先权日2009年5月5日
发明者孙凝晖, 安学军, 政 曹, 凯 王, 涛 胡 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1