CN101539902B - 多计算机系统中节点的dma设备及通信方法 - Google Patents
多计算机系统中节点的dma设备及通信方法 Download PDFInfo
- Publication number
- CN101539902B CN101539902B CN2009100834549A CN200910083454A CN101539902B CN 101539902 B CN101539902 B CN 101539902B CN 2009100834549 A CN2009100834549 A CN 2009100834549A CN 200910083454 A CN200910083454 A CN 200910083454A CN 101539902 B CN101539902 B CN 101539902B
- Authority
- CN
- China
- Prior art keywords
- dma
- descriptor
- network packet
- data
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000006854 communication Effects 0.000 title claims abstract description 50
- 238000004891 communication Methods 0.000 title claims abstract description 49
- 238000000034 method Methods 0.000 title claims abstract description 16
- 230000005540 biological transmission Effects 0.000 claims abstract description 101
- 239000000872 buffer Substances 0.000 claims description 116
- 238000005538 encapsulation Methods 0.000 claims description 10
- 238000000605 extraction Methods 0.000 claims description 3
- 238000012856 packing Methods 0.000 claims description 3
- 238000013500 data storage Methods 0.000 claims description 2
- 238000013507 mapping Methods 0.000 claims description 2
- 238000012545 processing Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 239000002699 waste material Substances 0.000 description 4
- 230000000977 initiatory effect Effects 0.000 description 3
- 230000003760 hair shine Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Communication Control (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及多计算机系统中节点的DMA设备及通信方法,方法包括:步骤1,本地节点根据应用程序生成DMA命令,将DMA命令的描述符存储到内存中,将包含DMA命令的描述符内存位置信息的门铃传送给本地节点;步骤2,本地节点根据门铃读取描述符;根据描述符中信息生成网络包发送到互连网络和生成发送完成事件,或仅生成发送完成事件;步骤3,远端节点的DMA设备从互连网络上接收网络包,根据网络包的类型保存网络包中数据和生成接收完成事件,或仅生成接收完成事件,或将所述远端节点的数据装入网络包发送给所述本地节点。本发明能够提供多计算机系统中节点的信息传输方式,同时保证多计算机系统的高效通信。
Description
技术领域
本发明涉及DMA(Direct Memory Access,直接内存存取)领域,尤其涉及多计算机系统中节点的DMA设备及通信方法。
背景技术
在多计算机系统内部,任意节点间经常需要进行数据的交换,因此数据交换的性能会影响通信的新能。灵活高效地将数据从一个节点的内存复制到另一个节点的内存中,能够为多计算机系统提供的强大的通信能力。由处理器直接处理内存数据的存取会带来巨大的处理器开销,而DMA技术能够避免处理器将处理能力浪费在简单重复的内存读写操作中,因此多计算机系统的节点间在通信时也会使用DMA技术。实现DMA技术的专用硬件称为DMA设备。
现在通用的微处理器在发出一条或者几条读内存指令后就会处于等待状态,直到数据返回。当微处理器处于等待状态时不会执行其它指令,这会造成处理器的吞吐能力和运算能力的浪费。如果需要读取的数据的物理地址是连续的,微处理器中cache的预取机制可以极大地降低处理器的等待时间,从而有效地提高处理器的吞吐能力。但是在处理器读内存时,处理器中的运算部件会长时间空闲,因而造成处理器的运算能力的浪费。同样地,在处理器写内存时,处理器中的运算部件也会长时间空闲,造成处理器的运算能力的浪费。
DMA设备能够取代处理器从事简单重复的内存读写操作,避免处理器的处理能力的浪费。因此,DMA设备广泛应用在单计算机系统和多计算机系统中。在单计算机系统中,DMA设备能够实现内存到自身、内存到I/O接口的数据传送。而在多计算机系统中,DMA设备能够按照处理器的命令,读取源节点的内存中的数据,并写入目标节点的内存中。
在单计算机系统中,处理器通常通过一组寄存器实现对DMA设备的使用。这组寄存器包括:源地址寄存器、目标地址寄存器、数据长度寄存器和状态寄存器。源地址寄存器存放需要传送的数据在内存中的首地址;目标地址寄存器存放用于接收数据的内存空间的首地址;数据长度寄存器存放需要传送的数据的长度;状态寄存器存放DMA设备的状态。处理器在进行一次DMA数据传输之前要先检查状态寄存器的值,如果DMA设备处于空闲状态,就设置好源地址寄存器、目标地址寄存器和数据长度寄存器,然后将状态寄存器设置为工作状态;如果DMA设备已经处于工作状态,处理器就需要等待。DMA设备在空闲时如果看到状态寄存器被设置为工作状态就会自动启动,完成DMA数据传输后又会将状态寄存器设置成空闲状态。
在多计算机系统中,通过类似单计算机系统的一组寄存器来实现对DMA设备的控制通常是不够的。这是由于多计算机系统中一次DMA数据传输需要传输的数据量经常很大,并且这些数据在内存空间上是不连续的。此时需要使用较为复杂的数据结构描述一次DMA数据传输需要的源地址、目标地址和数据长度等信息,该些按照一定的数据结构组成的信息称为DMA描述符。同时为了实现通信与计算的重叠,处理器可能会连续发出多次DMA数据传输,这就需要多计算机系统中DMA设备的启动方式也要与单计算机系统有所不同。多计算机系统的结构如图1所示,一个节点包括处理器、内存、桥接芯片和DMA设备,各个节点通过互连网络相互通信。
本领域中常用术语如下。
在多计算机系统中,发起一次DMA数据传输的节点称为本地节点;接收DMA数据传输的节点称为远端节点。
多计算机系统中的DMA设备通常支持通道,从而实现多个应用程序对单个DMA设备的共享,使得每个应用程序逻辑上独立拥有能够进行DMA方式数据传输的设备。
通信库软件,是位于DMA设备和应用程序之间的程序,它根据本发明中的DMA设备和方法为应用程序提供标准的程序接口。这些标准的程序接口满足一种或者多种编程模型规范,例如消息传递接口(MPI)规范。
DMA描述符,是将描述一次DMA数据传输需要的源地址、目标地址和数据长度等信息,按照一定的数据结构组成的信息。
命令窗口,是DMA设备在处理器的I/O空间上映射的一段地址区间,用于启动DMA设备。处理器将一条DMA命令的描述符填写到一块8字节对齐、物理地址连续的内存区域,然后将这块内存区域的首地址和长度发送到DMA设备的命令窗口,以启动一次DMA数据传输。
门铃,是用于启动DMA设备进行一次DMA传输的消息。
一次DMA发送操作,是指DMA设备按照描述符中的相关信息,将全部需要传送的数据从内存中读出来,并将数据按照网格包的格式封装成一个或者多个网络包,最后发送到互连网络上的过程。
一次DMA接收操作,是指DMA设备接收互连网络上的网络包,并将其中的数据写入内存,直到将一个标记为尾包的网络包中的全部数据写入内存的过程。
发明内容
为解决上述问题,本发明提供了多计算机系统中节点的DMA设备及通信方法,能够提供多计算机系统中节点的信息传输方式,同时保证多计算机系统的高效通信。
本发明公开了多计算机系统中节点的通信方法,所述方法包括:
步骤1,本地节点的通信库软件根据应用程序生成DMA命令,将所述DMA命令的描述符存储到内存中,将包含所述DMA命令的描述符内存位置信息的门铃传送给本地节点的DMA设备;
步骤2,本地节点的DMA设备根据所述门铃读取所述描述符;根据所述描述符中信息将网络包发送到互连网络并在发送完成后生成发送完成事件,或仅生成发送完成事件;
步骤3,远端节点的DMA设备从互连网络上接收网络包,根据所述网络包的类型保存所述网络包中数据并在接收完成后生成接收完成事件,或仅生成接收完成事件,或将所述远端节点的数据装入网络包发送给所述本地节点。
所述DMA设备支持通道,所述步骤1前还包括,
步骤21,在处理器I/O地址空间上映射用于接收所述门铃的命令窗口。
所述命令窗口的大小与所述DMA设备支持的通道数成正比。
所述步骤21还包括:
步骤41,为所述DMA设备支持的每个通道在内存中分配用于暂存DMA命令的发送完成事件的发送完成事件缓冲区、用于暂存DMA命令的接收完成事件的接收完成事件缓冲区和用于暂存DMA设备接收到的NAP网络包中数据的DMA数据接收缓冲区。
所述DMA命令为NAP立即数命令或NAP间接数命令,
所述步骤2进一步为:
步骤51,根据所述描述符获得待传输的数据,DMA设备将所述描述符中与接收相关的信息和所述数据封装成一个NAP网络包,发送到互连网络;
步骤52,在所述NAP网络包发送到互连网络上后,根据所述描述符中与发送完成事件相关的信息,确定是否生成发送完成事件,并发送给所述本地节点。
所述DMA命令为RDMA put命令,
所述步骤2进一步为:
步骤61,根据所述描述符读取内存中待传输的数据,DMA设备将所述描述符中与接收相关的信息和所述数据封装成一个或多个RDMA put网络包,发送到互连网络;
步骤62,在全部所述RDMA put网络包发送到互连网络上后,根据所述描述符中与发送完成事件相关的信息,确定是否生成发送完成事件,并发送给所述本地节点。
所述DMA命令为RDMA get命令,
所述步骤2进一步为:
步骤71,将所述RDMA get命令封装为一个RDMA get网络包,发送到互连网络;
步骤72,在所述RDMA get网络包发送到互连网络上后,根据所述描述符中与发送完成事件相关的信息,确定是否生成发送完成事件,并发送给所述本地节点。
所述DMA命令为Fence命令,
所述步骤2进一步为:
步骤81,生成所述Fence命令对应的网络包,发送到互连网络,并且不生成发送完成事件。
所述DMA命令为Flush命令,
所述步骤2进一步为:
步骤91,不生成网络包,直接生成发送完成事件。
所述步骤3进一步为,
步骤101,根据所述网络包中保存的与接收相关的信息将网络包中的数据写入对应通道的DMA数据接收缓存区中;
步骤102,在所述网络包中的全部数据已经写入接收缓存区中后,在所述网络包中保存的信息指示需要生成接收完成事件时,生成接收完成事件。
所述步骤3进一步为,
步骤111,根据所述RDMA put网络包中保存的用于接收的内存空间的首地址和长度的信息将所述数据包中的数据写入对应的内存空间;
步骤112,在标记为尾包的RDMA put网络包中的全部数据已经写入内存中,并且所述网络包中保存的信息指示需要生成接收完成事件时,生成接收完成事件。
所述步骤3进一步为,
步骤121,根据所述网络包中信息读取所述远端节点内存中待传输的数据,将所述数据封装成一个或多个RDMA put网络包,发送给所述本地节点。
所述步骤3进一步为,
步骤131,接收完所述网络包后,直接生成接收完成事件。
本发明还公开了多计算机系统中节点的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发送引擎模块和所述DMA发送完成通知模块使用时读取。
所述数据读取模块包括数据缓冲区,
所述数据读取模块进一步用于获得当前操作相关的描述符,在需要传输数据时,根据所述描述符中信息从内存中读取所述待传输的数据,将所述数据存储到所述数据缓冲区以供所述DMA发送引擎模块读取。
所述DMA发送引擎模块进一步用于获得当前操作相关的描述符,并在需要传输数据时,读取所述数据缓冲区,获得所述待传输的数据,生成网络包发送到互连网络;在不需要传输数据时,直接生成网络包发送到互连网络。
所述DMA发送引擎模块还包括网络包缓冲区,
所述DMA发送引擎模块还用于在互连网络无法接收网络包时,将整个或部分所述网络包缓存到网络包缓冲区。
所述DMA发送完成通知模块,用于获得当前操作相关的描述符,根据所述描述符的信息,确定是否需要生成发送完成事件和/或发送完成中断,如果需要生成发送完成事件,则在一次DMA发送操作完成后,根据描述符信息生成相应的发送完成事件并将所述发送完成事件写入对应通道的发送完成事件缓冲区;如果需要生成发送完成中断,则在一次DMA发送操作完成后,根据描述符生成相应的发送完成中断。
DMA接收引擎模块进一步用于从互连网络上接收网络包,并在所述网络包中包含数据时根据所述网络包的类型选择将所述网络包中的数据通过写内存命令写入所述网络包指定的内存空间或者写入对应通道的DMA数据接收缓冲区。
所述DMA接收引擎模块还包括写内存命令缓冲区;
所述DMA接收引擎模块还用于在总线忙碌时将所述写内存命令缓存到所述写内存命令缓冲区。
所述DMA接收完成通知模块进一步用于根据所述网络包中的控制信息,确定是否需要生成接收完成事件和/或接收完成中断,如果需要生成接收完成事件,则在一次DMA接收操作完成后,根据网络包中控制信息生成相应的接收完成事件并写入对应通道的接收完成事件缓冲区;如果需要生成接收完成中断,则在一次DMA接收操作完成后,根据网络包中的相关信息生成相应的接收完成中断。
所述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、DMA发送引擎模块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,包含有交换机接口。DMA发送引擎模块306、DMA接收引擎模块308都要通过交换机接口模块302连接互连网络。
DMA启动模块303,用于接收包含DMA命令的描述符的内存位置信息的门铃,将所述门铃传给描述符读取模块304,启动一次DMA传输。
当DMA设备的描述符读取模块304处于空闲状态时,DMA启动模块303将门铃交给描述符读取模块304,从而启动DMA设备;当DMA设备的描述符读取模块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包含一块写内存命令缓冲区,用来在系统总线忙碌时缓存写内存命令。
DMA接收完成通知模块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数据接收缓冲区。
RDMA put方式,用于将数据从本地节点传送到远端节点;其描述符中包含有具体的源和目标内存空间的信息;需要传输的数据在本地节点的一块或者多块内存空间中,该些内存空间的首地址和长度位于描述符内,具体的数据需要数据读取模块305根据描述符中的相关信息从本地节点读取;每个RDMA put命令对应一个或者多个RDMA put网络包。
RDMA get方式,用于将数据从远端节点读取到本地节点;其描述符中包含有具体的源和目标内存空间的信息;需要传输的数据在远端节点的一块或者多块内存空间中,而目标内存空间的首地址和长度位于本地节点内,具体的数据需要目标节点的数据读取模块305根据描述符中的相关信息从远端节点读取;每个RDMA get命令对应一个RDMA get网络包。
DMA设备支持Flush命令,不会生成网络包;不需要数据的存取;一定会生成发送完成事件。
DMA设备还支持Fence命令,会生成一个Fence网络包,不会发生数据的存取,一定会生成接收完成事件。
此外,DMA设备还包括如下寄存器。
命令窗口起始地址寄存器和命令窗口终止地址寄存器,用于通信库软件配置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命令。DMA设备接收到门铃时如果处于空闲状态就会处理门铃;否则DMA设备会将门铃暂时缓存,等待当前DMA命令完成后再处理缓存的门铃。命令窗口的大小与门铃的大小的比值就是DMA设备支持的最大通道数,命令窗口的大小应为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命令,根据描述符中源的首地址和长度信息读取相应的内存空间,并将描述符中与接收相关的信息和读取回来的数据封装成一个或者多个RDMA 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、RDMA put、RDMA get和Fence共4种类型。
控制信息1区,该部分对于所有类型的网络包都是相同的。
该部分主要包括:网络包总长度、数据总长度、接收事件环流控位、接收完成事件控制位、接收完成中断控制位、本地节点编号、远端节点编号、本地通道号和远端通道号等。
控制信息2区,只有当网络包为RDMA put网络包时该部分存在。该部分是用于接收的内存空间的首地址信息。
控制信息3区,对于Fence网络包,该部分不存在;而对于其它网络包,这部分是8字节对齐的传输的数据。
控制信息4区,只有当网络包为RDMA put尾包时该部分存在,该部分是RDMA put命令传输的数据的总长度。
软件信息区,该部分就是描述符中的软件信息区,DMA设备用其生成接收完成事件。
控制信息5区,该部分是网络包的校验信息,通常为整个网络包的CRC值。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。
Claims (26)
1.一种多计算机系统中节点的通信方法,其特征在于,所述方法包括:
步骤1,本地节点的通信库软件根据应用程序生成DMA命令,将所述DMA命令的描述符存储到内存中,将包含所述DMA命令的描述符内存位置信息的门铃传送给本地节点的DMA设备;
步骤2,本地节点的DMA设备根据所述门铃读取所述描述符;根据所述描述符中信息,将网络包发送到互连网络并在发送完成后生成发送完成事件,或不生成网络包仅生成发送完成事件;
步骤3,远端节点的DMA设备从互连网络上接收网络包,根据所述网络包的类型,仅在接收完成后生成接收完成事件,或保存所述网络包中数据并在接收完成后生成接收完成事件,或将所述远端节点的数据装入网络包发送给所述本地节点。
2.如权利要求1所述的多计算机系统中节点的通信方法,其特征在于,
所述DMA设备支持通道,所述步骤1前还包括,
步骤21,在处理器I/O地址空间上映射用于接收所述门铃的命令窗口。
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设备将所述描述符中与接收相关的信息和所述数据封装成一个或多个RDMA put网络包,发送到互连网络;
步骤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进一步为,
步骤101,根据所述网络包中保存的与接收相关的信息将网络包中的数 据写入对应通道的DMA数据接收缓存区中;
步骤102,在所述网络包中的全部数据已经写入接收缓存区中后,在所述网络包中保存的信息指示需要生成接收完成事件时,生成接收完成事件。
11.如权利要求6所述的多计算机系统中节点的通信方法,其特征在于,
所述步骤3进一步为,
步骤111,根据所述RDMA put网络包中保存的用于接收的内存空间的首地址和长度的信息将所述数据包中的数据写入对应的内存空间;
步骤112,在标记为尾包的RDMA put网络包中的全部数据已经写入内存中,并且所述网络包中保存的信息指示需要生成接收完成事件时,生成接收完成事件。
12.如权利要求7所述的多计算机系统中节点的通信方法,其特征在于,
所述步骤3进一步为,
步骤121,根据所述网络包中信息读取所述远端节点内存中待传输的数据,将所述数据封装成一个或多个RDMA put网络包,发送给所述本地节点。
13.如权利要求8所述的多计算机系统中节点的通信方法,其特征在于,
所述步骤3进一步为,
步骤131,接收完所述网络包后,直接生成接收完成事件。
14.一种多计算机系统中节点的DMA设备,DMA设备包括用于连接所述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设备的描述符读取模块处于空闲状态,则将所述门铃传给所述描述符读取模块以启动一次DMA传输,如果所述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接收引擎模块还包括写内存命令缓冲区;
所述DMA接收引擎模块还用于在总线忙碌时将所述写内存命令缓存到所述写内存命令缓冲区。
24.如权利要求22所述的多计算机系统中节点的DMA设备,其特征在于,
所述DMA接收完成通知模块进一步用于根据所述网络包中的控制信息,确定是否需要生成接收完成事件和/或接收完成中断,如果需要生成接收完成事件,则在一次DMA接收操作完成后,根据网络包中控制信息生成相应的接收完成事件并写入对应通道的接收完成事件缓冲区;如果需要生成接收完成中断,则在一次DMA接收操作完成后,根据网络包中的相关信息生成相应的接收完成中断。
25.如权利要求24所述的多计算机系统中节点的DMA设备,其特征在于,
所述DMA设备还包括DMA接收缓冲区管理模块,用于为DMA设备支持的每个通道分配多个用以记录所述通道的接收完成事件缓冲区和DMA数据接收缓冲区的状态信息的寄存器,以管理所述通道的接收完成事件缓冲区和DMA 数据接收缓冲区。
26.如权利要求25所述的多计算机系统中节点的DMA设备,其特征在于,
所述DMA设备支持的DMA命令包括:NAP立即数命令、NAP间接数命令、RDMA get命令、RDMA put命令、Flush命令和Fence命令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100834549A CN101539902B (zh) | 2009-05-05 | 2009-05-05 | 多计算机系统中节点的dma设备及通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100834549A CN101539902B (zh) | 2009-05-05 | 2009-05-05 | 多计算机系统中节点的dma设备及通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101539902A CN101539902A (zh) | 2009-09-23 |
CN101539902B true CN101539902B (zh) | 2012-03-28 |
Family
ID=41123094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100834549A Expired - Fee Related CN101539902B (zh) | 2009-05-05 | 2009-05-05 | 多计算机系统中节点的dma设备及通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101539902B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184150B (zh) * | 2011-04-01 | 2013-08-28 | 昆山酷威微电子科技有限公司 | 高功能环形缓冲缓存系统及其控制方法 |
CN102446156B (zh) * | 2011-09-14 | 2014-06-25 | 中国科学院计算技术研究所 | 用于并行多处理器系统的通信行为获取装置 |
US9311225B2 (en) * | 2013-01-04 | 2016-04-12 | Microsoft Technology Licensing, Llc | DMA channels |
CN103227778B (zh) * | 2013-03-26 | 2016-09-14 | 华为技术有限公司 | 内存访问方法、设备和系统 |
US10394786B2 (en) | 2015-04-20 | 2019-08-27 | Futurewei Technologies, Inc. | Serialization scheme for storing data and lightweight indices on devices with append-only bands |
US10936533B2 (en) * | 2016-10-18 | 2021-03-02 | Advanced Micro Devices, Inc. | GPU remote communication with triggered operations |
CN107391403A (zh) * | 2017-07-28 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种存储设备中多路控制器间的通信方法及装置 |
CN109669911A (zh) * | 2018-11-12 | 2019-04-23 | 珠海慧联科技有限公司 | 一种芯片系统通信方法及其芯片通信系统 |
CN109753461B (zh) * | 2019-01-31 | 2022-02-18 | 郑州云海信息技术有限公司 | 一种dma设备及数据传输的方法 |
CN112650558B (zh) * | 2020-12-29 | 2022-07-05 | 优刻得科技股份有限公司 | 数据处理方法、装置、可读介质和电子设备 |
CN113986791B (zh) * | 2021-09-13 | 2024-02-02 | 西安电子科技大学 | 一种智能网卡快速dma设计方法、系统、设备及终端 |
CN114090483A (zh) * | 2021-09-30 | 2022-02-25 | 上海浦东发展银行股份有限公司 | 一种基于协程的rdma通信方法、装置及存储介质 |
CN115497273B (zh) * | 2022-04-22 | 2024-01-09 | 北京临近空间飞行器系统工程研究所 | 装订描述方法和基于装订参数链表的无线指令控制方法 |
CN115422101A (zh) * | 2022-11-04 | 2022-12-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种dma驱动系统、方法、设备及可读存储介质 |
-
2009
- 2009-05-05 CN CN2009100834549A patent/CN101539902B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101539902A (zh) | 2009-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101539902B (zh) | 多计算机系统中节点的dma设备及通信方法 | |
US4933846A (en) | Network communications adapter with dual interleaved memory banks servicing multiple processors | |
US7478390B2 (en) | Task queue management of virtual devices using a plurality of processors | |
US6667920B2 (en) | Scratchpad memory | |
US8549521B2 (en) | Virtual devices using a plurality of processors | |
CN101267361B (zh) | 一种基于零拷贝技术的高速网络数据包捕获方法 | |
US6795886B1 (en) | Interconnect switch method and apparatus | |
CN102255794B (zh) | 远程消息收发吞吐量优化和等待时间缩短用系统和方法 | |
KR910017798A (ko) | 동기 링크 인터페이스 및 비동기 호스트 프로세서 인터페이스를 갖는 종합 데이터 링크 제어기 | |
CN100464318C (zh) | 一种实现高效dma传输的dma控制器及传输方法 | |
CN106648896B (zh) | 一种Zynq芯片在异构称多处理模式下双核共享输出外设的方法 | |
JP2003178039A (ja) | 分散共有仮想メモリーとその構成方法 | |
WO2004109432A2 (en) | Method and apparatus for local and distributed data memory access ('dma') control | |
CN102197384A (zh) | 用于改进串行端口存储器通信等待时间和可靠性的方法和系统 | |
JPH09251437A (ja) | 計算機装置及び連続データサーバ装置 | |
EP3077914B1 (en) | System and method for managing and supporting virtual host bus adaptor (vhba) over infiniband (ib) and for supporting efficient buffer usage with a single external memory interface | |
CN105868134A (zh) | 高性能多口ddr控制器及其实现方法 | |
CN112416823B (zh) | 一种突发模式下的传感器数据读写控制方法、系统及芯片 | |
WO2024082944A1 (zh) | 一种多处理器数据交互方法、装置、设备及存储介质 | |
US20060047754A1 (en) | Mailbox interface between processors | |
WO2021019378A1 (en) | Two-layered deterministic inter-process communication scheduler for input output determinism in solid state drives | |
CN102291298A (zh) | 一种高效的面向长消息的计算机网络通信方法 | |
USRE39026E1 (en) | Bus protocol | |
US11645005B2 (en) | Near-memory computing systems and methods | |
CN204496486U (zh) | 扩展功能单元及计算设备扩展系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120328 |