CN105260332A - 一种对cpld数据包进行有序存储的方法及系统 - Google Patents

一种对cpld数据包进行有序存储的方法及系统 Download PDF

Info

Publication number
CN105260332A
CN105260332A CN201510573588.4A CN201510573588A CN105260332A CN 105260332 A CN105260332 A CN 105260332A CN 201510573588 A CN201510573588 A CN 201510573588A CN 105260332 A CN105260332 A CN 105260332A
Authority
CN
China
Prior art keywords
cpld
packet
label
dma
pciexpress
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.)
Granted
Application number
CN201510573588.4A
Other languages
English (en)
Other versions
CN105260332B (zh
Inventor
苗全
刘晓东
张岳公
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Sansec Technology Development Co Ltd
Original Assignee
Beijing Sansec Technology Development Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Sansec Technology Development Co Ltd filed Critical Beijing Sansec Technology Development Co Ltd
Priority to CN201510573588.4A priority Critical patent/CN105260332B/zh
Publication of CN105260332A publication Critical patent/CN105260332A/zh
Application granted granted Critical
Publication of CN105260332B publication Critical patent/CN105260332B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

本发明涉及一种对CPLD数据包进行有序存储的方法及系统,所述方法包括利用标签有序分发体制将由PCI?Express端点设备向主机内存发起的DMA读请求分割成带有连续标签的多个子DMA读请求发送至主机;接收主机返回的CPLD数据包,根据CPLD数据包的标签确定所述CPLD数据包在PCIExpress端点设备内的存储基址;对带有相同标签的CPLD数据包进行偏移地址计算,确定所述CPLD数据包的偏移地址;根据确定的所述CPLD数据包在PCI?Express端点设备内的存储基址和偏移地址对相应CPLD数据包进行存储。本发明建立了标签有序分发体制,实现大数据量的DMA读操作,建立基址与偏移地址计算体制,实现PCI?Express端点设备高速DMA读和CPLD数据在RAM中有序存储的高效高速无延迟存储方案,大大提高了数据吞吐率。

Description

一种对CPLD数据包进行有序存储的方法及系统
技术领域
本发明涉及基于PCIExpress高速总线的数据存储领域,尤其涉及一种针对由PCIExpress端点设备向主机内存发起DMA读请求而返回的CPLD(CompletionData)数据包有序存储的方法及系统。
背景技术
第一代I/O总线包括ISA、EISA、VESA和微通道(MicroChannel)总线,而第二代I/O总线则包括了PCI、AGP和PCI-X。而PCIExpress是用来互联诸如计算和通信平台应用中的外围设备的第三代高性能I/O总线。
前两代的I/O总线是并行总线,多台设备共享一条总线。而第三代总线PCIExpress继承了第二代总线体系结构最有用的特点,并且采用了计算机体系结构中新的研究成果,它能够实现用于两台设备之间通信的串行、点对点类型的互连。多台PCIExpress设备可以使用交换器(Switch)实现互连。PCIExpress总线规范目前已经得到了广泛的应用,规范也从初始的PCI-E1.0发展到目前的PCI-E3.0版本,总线数据传输速度,也从开始的2Gbits/每通道(PCI-E1.0),提高到目前的8Gbits/s(PCI-E3.0)。
PCIExpress规范定义了一种分层的设备设计体系结构,分别是处理层(TransactionLayer)、数据链路层(DataLinkLayer)和物理层(PhysicalLayer)。对于绝大多数应用PCIExpress芯片或者基于PCIExpressIP核进行开发的设计者来说,主要关注的内容集中在处理层。处理层主要完成以下事务:存储器读或写,IO读或写,配置读或写以及消息处理。
在目前很多高速数据处理应用场景中,针对存储器的读写事物处理占主导地位。在基于PCIExpress的高速数据传输应用中,PCIExpress端点(Endpoint)设备要发挥出最大的数据传输效能,同时尽可能的减少主机CPU的占用率,就要采用DMA方式,就是由PCIExpress端点设备主动地向主机内存发起DMA读请求,然后接收传输进来的数据;或者由PCIExpress端点设备主动地对主机内存发起DMA写请求,以完成数据传输功能。
PCIExpress设备适合大数据量的高速传输,正常工作时DMA传输的数据量比较大,所以每次DMA读请求时的数据包也比较大。但是PCIExpress规范有个限制,一次DMA读请求所能允许的最大数据传输量不能超过MaxRequestSize,而MaxRequestSize在PCIExpress端点设备中一般为512,最大不能超过4096字节。但是很多应用中,要求DMA读传输的数据是这个参数的几十倍甚至上百倍。
发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供一种针对由PCIExpress端点设备向主机内存发起DMA读请求而返回的CPLD(CompletionData)数据包有序存储的方法及系统。
本发明解决上述技术问题的技术方案如下:
一种对CPLD数据包进行有序存储的方法,包括如下步骤:
步骤1,利用标签有序分发体制将PCIExpress端点设备向主机内存发起的DMA读请求分割成带有连续标签的多个子DMA读请求发送至主机;
步骤2,接收主机返回的CPLD数据包,根据CPLD数据包的标签确定所述CPLD数据包在PCIExpress端点设备的存储基址;
步骤3,对带有相同标签的CPLD数据包进行偏移地址计算,确定所述CPLD数据包的偏移地址;
步骤4,根据确定的所述CPLD数据包在PCIExpress端点设备的存储基址和偏移地址对相应CPLD数据包进行存储。
本发明的有益效果是:本发明建立了标签有序分发体制,将大数据量DMA读请求分割成多个子DMA读请求,并以标签标记,实现大数据量的DMA读操作,但由于CPLD数据包的返回并非全部按照标签的顺序返回的,这样对于采用FIFO存储或者顺序RAM存储的方案就会存在数据存储地址乱序的问题,本发明建立了针对完成数据包(CPLD)的同一标签数据的偏移地址计算体制,实现了PCIExpress端点设备高速DMA读和CPLD数据在RAM中有序存储的高效高速无延迟存储方案,大大提高了数据吞吐率。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,步骤1的具体实现为:当PCIExpress端点设备向主机内存发起DMA读请求时,根据DMA读请求包的大小和PCIExpress总线规范中的MaxRequestSize的大小将DMA读请求包分割成多个子DMA读请求包,多个子DMA读请求包对内存的寻址地址前后衔接,每个子DMA读请求包按照发送顺序依次被标签有序分发体制分配以连续的标签号码Tag以区别不同的寻址空间。
采用上述进一步方案的有益效果:将一个大的DMA请求包分割成多个子DMA读请求包,实现了数据的分散传输,进而实现了大数据量的DMA读操作。
进一步,当PCIExpress端点设备一次发起的DMA读的寻址范围超过所述标签有序分发体制所有标签的一次最大寻址量时,启动标签页指针体制,以区分不同的寻址空间,其中每个标签具有一个页指针;当启动所述标签页指针体制后,步骤2中根据CPLD数据包的标签及相应标签的页指针确定所述CPLD数据包在PCIExpress端点设备的存储基址。
采用上述进一步方案的有益效果:基于标签有序分发体制中的标签数量有限,每一个标签代表一定数量的寻址范围,可能出现PCIEExpress端点设备一次发起的DMA读的寻址范围超过了这一套标签分发体制所能分发的最大数量,通过建立一套标签页指针体制,来区分不同的寻址空间,以扩大寻址范围。
进一步,所述标签页指针体制具体为:如果一个标签未被使用时,将该标签对应的页指针为零,如果该标签被使用过一次,那么该标签对应的页指针自动加一。
进一步,所述步骤3的具体实现为:带有相同标签的第一个收到的CPLD数据包的偏移地址为0,第二个收到的CPLD数据包的偏移地址为第一收到的CPLD数据包的数据长度,第i个收到的CPLD的数据包的偏移地址为第一至第i-1个收到的CPLD数据包的数据长度之和,其中i为大于等于3的整数。
采用上述进一步方案的有益效果:每个标签对应的子DMA读请求获取的数据可能需要多次CPLD才能接收到全部数据,这些多次返回的CPLD数据对应的是同一个标签的DMA读请求,但这些CPLD数据并不能保证是按照标签的顺序返回的,因此需要对这些先后返回的带着相同标签的CPLD数据进行偏移地址计算以实现准确的存储。
一种对CPLD数据包进行有序存储的系统,包括DMA请求发送模块、存储基址计算模块、偏移地址计算模块和数据包存储模块;
所述DMA请求发送模块,其用于利用标签有序分发体制将PCIExpress端点设备向主机内存发起的DMA读请求分割成带有连续标签的多个子DMA请求发送至主机;
所述存储基址计算模块,其用于接收主机返回的CPLD数据包,根据CPLD数据包的标签确定所述CPLD数据包在PCIExpress端点设备的存储基址;
所述偏移地址计算模块,其用于对带有相同标签的CPLD数据包进行偏移地址计算,确定所述CPLD数据包的偏移地址;
所述数据包存储模块,其用于根据确定的所述CPLD数据包在PCIExpress端点设备的存储基址和偏移地址对相应CPLD数据包进行存储。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述DMA请求发送模块包括DMA请求分割单元和标签分发单元;
所述DMA请求分割单元,其用于在PCIExpress端点设备向主机内存发起DMA读请求时,根据DMA读请求包的大小和PCIExpress总线规范中的MaxRequestSize的大小将DMA读请求包分割成多个子DMA读请求包,多个子DMA读请求包对内存的寻址地址前后衔接;
所述标签分发单元,其用于为子DMA读请求包按照发送顺序依次分配以连续的标签号码Tag以区别不同的寻址空间
进一步,还包括页指针触发模块,其用于在PCIExpress端点设备一次发起的DMA读的寻址范围超过所述标签有序分发体制所有标签的最大寻址量时,启动标签页指针体制,以区分不同的寻址空间,其中每个标签具有一个页指针;当启动所述标签页指针体制后,所述存储基址计算模块根据CPLD数据包的标签及相应标签的页指针确定所述CPLD数据包的存储基址。
进一步,所述标签页指针体制具体为:如果一个标签未被使用时,将该标签对应的页指针为零,如果该标签被使用过一次,那么该标签对应的页指针自动加一。
进一步,所述偏移地址计算模块计算偏移地址具体为::带有相同标签的第一个收到的CPLD数据包的偏移地址为0,第二个收到的CPLD数据包的偏移地址为第一收到的CPLD数据包的数据长度,第i个收到的CPLD的数据包的偏移地址为第一至第i-1个收到的CPLD数据包的数据长度之和,其中i为大于等于3的整数。
附图说明
图1为本发明所述标签有序分发机制示意图;
图2为本发明所述标签页指针机制示意图;
图3为本发明所述CPLD数据包返回流程示意图;
图4为本发明所述一种对CPLD数据包进行有序存储的方法流程图;
图5为本发明所述一种对CPLD数据包进行有序存储的系统框图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
本发明针对因PCIExpress端点设备发起的DMA读而返回的完成数据包(CPLD)存在乱序的问题,提出了一种基于Tag的寻址方案,从而实现对完成数据包CPLD的有序存储。为了实现大数据量的DMA读操作,需要将整个DMA读传输分割成连续的多个小的DMA读操作来组合完成,每个DMA读数据传输长度为MaxRequestSize大小,连续的小的DMA读操作,分别以连续的Tag来区分。
基本上大多数每个DMA读请求而返回的数据CPLD是依顺序返回的(依Tag顺序),但是也存在后发的DMA读请求返回的数据领先于前一个DMA读请求的返回数据,这样对于一个采用FIFO存储或者顺序RAM存储的方案就会存在数据存储地址乱序的问题,本发明就是针对这种乱序问题,提出一种基于Tag的方案,来实现对DMA读请求而返回的CPLD数据的有序存储。
PCIExpress端点设备往主机内存发起DMA读请求时,首先要向主机发起DMA读数据包,这个数据包包括如下内容:访问目标内存的物理地址、目标内存需要传回的数据长度,请求者ID号和标记Tag等内容。主机内存返回给PCIExpress端点设备完成数据包CPLD(CompletionData),PCIExpress端点设备接收到该数据包后,对数据包进行解析,然后将有效数据进行存储。
本发明技术方案如下:
一、建立一套标签(Tag)有序分发体制。
当PCIExpress端点设备向主机内存发起DMA读请求时,根据DMA请求包的大小和PCIExpress总线规范中的MaxRequestSize的大小将DMA请求包分割成多个子DMA请求包,多个子DMA请求包对内存的寻址地址前后衔接,每个子DMA请求包按照发送顺序依次被标签有序分发体制分配以连续的标签号码Tag以区别不同的寻址空间。
如图1所示,当主机对一个PCIExpress端点设备发送一个DMA读命令时,这个读命令要求端点设备主动发起对系统内存的某一区域进行读访问,然后把那一区域的数据传送入端点设备内部的存储器。为了增加有效数据吞吐效率,这个读命令一般都是要求访问比较大的区域。但是受制于PCIExpress总线规范的约束,PCIExpress端点设备一次读请求包所能访问的区域不能超过MaxRequestSize的大小。通常MaxRequestSize等于512,也就是说,端点设备一次读请求所能访问的空间也就是512字节。这样一个8K字节的DMA读访问命令,要在PCIExpress端点设备里要拆分成16个DMA读请求包(每个512字节)连续发送出去。
每个DMA读请求包都需要一个独立的标签(Tag)来区分不同的访问地址,本发明中设计了一套标签有序分发机制,该机制总共有16个标签,从0到15。0赋给第一个子DMA读请求,要求访问目标地址的第一个512字节,1赋给第二个DMA读请求,对应目标地址紧邻的第二个512字节,15赋给最后一个DMA读请求包,去访问目标地址的最后一个512字节。
二、建立一套标签(Tag)页指针体制。
根据PCIExpress规范的要求,标签(Tag)的个数是有限的,每一个标签代表一定数量的寻址范围,如果PCIExpress端点设备一次发起的DMA读的寻址范围超过了这一套标签分发体制所能寻址的最大数量,就需要引入一套标签页指针体制,来区分不同的寻址空间,以扩大寻址范围。具体来说,如果一个标签(Tag)未被使用的话,那么该标签对应的页指针即为零,如果该标签被使用过一次,那么该标签对应的页指针就会自动加一以进行区别。这样,标签有序分发体制有多少个标签,就对应多少个标签页指针。
图2为标签页指针体制示意图。当端点设备接收的DMA读的命令在8K字节以内,标签是足够用的。但是当接收的读命令是访问超过8K字节的空间时,这16个标签就不够用了。因此需要增加一套机制来处理访问目标大于8K字节的访问。于是引入了一套标签页指针体制,每个标签对应一个页指针,当该标签未被使用时,该标签对应的页指针为0,当该标签被使用过一次后,其对应的页指针就自动加一。这样通过标签(Tag)以及该标签所对应的标签页指针Tagrepeat可以实现对大包DMA读访问而返回的CPLD数据的有序存储。
三、建立一套针对完成数据包(CPLD)的同一标签数据的偏移地址计算体制
PCIExpress端点设备进行DMA读时,依据MaxRequestSize的大小,将整个DMA读分割成多个子DMA读请求分别发送出去,一般来说每个子DMA读的数据大小就是MaxRequestSize大小,比如512字节,返回的CPLD数据包一般受制于PCIExpress链路上分配的MaxPayload的大小,大多数主板的MaxPayload的大小不超过256字节,或为128,或为256。这样一个PCIExpress端点设备的DMA读(比如512字节的读),至少需要2次CPLD才能接收到全部数据(每次CPLD的数据为256字节)。在某些慢速主板或者系统繁忙时需要更多次CPLD才能接收到全部数据。这些多次返回的CPLD数据对应的是同一个标签(Tag)的DMA读请求,因此需要对这些先后返回的带着相同标签的CPLD数据进行偏移地址计算以实现准确的存储。
图3为CPLD返回数据包乱序示意图。PCIExpress端点设备发起DMA读请求时,如图所示,端点设备将DMA读拆分成多个子DMA读请求,比如两个连续的512字节读请求,分别用Tag0、Tag1来标识。相应的,对应于这些用Tag标识的DMA读请求,相应的返回数据CPLD也以相应的Tag标识,比如对应于Tag0的DMA读请求,返回的CPLD由三个TLP组成(有效数据分别为256字节、128字节、128字节);对应于Tag1的DMA读请求,其返回的CPLD数据由2个TLP组成(有效数据分别为256字节、256字节)。从图上可以看到,Tag1的CPLD数据先于Tag0的CPLD返回,而不是按照先返回Tag0数据再返回Tag1的数据的顺序,这在PCIExpress总线上是经常发生的现象,因此对这些数据进行有序存储是非常重要的事情。
PCIExpress端点设备发送DMA请求时,通过标签Tag将不同地址的DMA读访问用以标识,当CPLD数据返回时,根据返回CPLD的Tag以及其对应的页指针Tagrepeat决定某一特定标签Tag的CPLD在PCIExpress端点设备的内部存储基址。从图3中可以看到,某个Tag(比如Tag0)的CPLD往往由多个CPLD组成,这些相同Tag的CPLD对应于内部存储的基址是相同的,但是他们相对于基址的偏移地址是不同的,因此需要计算这些相同Tag的CPLD对应于基址的偏移地址,以实现正确存储。
如图4所示,一种对CPLD数据包进行有序存储的方法,包括如下步骤:
步骤1,利用标签有序分发体制将PCIExpress端点设备向主机内存发起的DMA读请求以分割的带有连续标签的多个子DMA请求发送至主机。
步骤2,接收主机返回的CPLD数据包,根据CPLD数据包的标签确定所述CPLD数据包在PCIExpress端点设备的存储基址。
其中,带有相同标签的CPLD数据包具有相同的在PCIExpress端点设备的存储基址。当启动标签页指针体制后,则根据CPLD数据包的标签及相应标签的页指针确定所述CPLD数据包在PCIExpress端点设备的存储基址。
步骤3,对带有相同标签的CPLD数据包进行偏移地址计算,确定所述CPLD数据包的偏移地址;
具体地,带有相同标签的第一个收到的CPLD数据包的偏移地址为0,第二个收到的CPLD数据包的偏移地址为第一收到的CPLD数据包的数据长度,第i个收到的CPLD的数据包的偏移地址为第一至第i-1个收到的CPLD数据包的数据长度之和,其中i为大于等于3的整数。
步骤4,根据确定的所述CPLD数据包在PCIExpress端点设备的存储基址和偏移地址对相应CPLD数据包进行存储。
如对于带有相同标签的CPLD,第一个接收到的CPLD对应的内部存储首地址为基地址+偏移地址0,第二个CPLD对应的内部存储首地址为基地址+第一个CPLD包的数据长度,第三个CPLD对应的内部存储首地址为基地址+前两个CPLD包的数据长度之和。不管针对某个特定标签Tag的DMA读请求而返回的CPLD数据包有多少个,都是用类似原理来计算该CPLD存储的地址。
当一个子DMA请求包发出去以后(对应的标签假若为Tag0),目标地址所返回的完成数据包(CPLD),往往由多个CPLD组成,图3中Tag0标识的DMA读请求分成3个CPLD来完成DMA读请求所需要的数据。第一个接收到的CPLD对应的内部存储首地址为基地址+偏移地址0,第二个CPLD对应的内部存储首地址为基地址+第一个CPLD包的数据长度,第三个CPLD对应的内部存储首地址为基地址+前两个CPLD包的数据长度之和。不管针对某个特定Tag的DMA读请求而返回的CPLD数据包有多少个,都是用类似原理来计算该CPLD存储的地址。
以上实施过程在已经在XilinxKC705开发板上已经进行了验证,并取得高数据吞吐率的指标。本发明建立了标签有序分发体制,建立了标签页指针体制,建立了针对完成数据包(CPLD)的同一标签数据的偏移地址计算体制,并成为一套完整实现了PCIExpress端点设备高速DMA读和CPLD数据在RAM中有序存储的高效高速无延迟存储方案。
如图5所示,一种对CPLD数据包进行有序存储的系统,包括DMA请求发送模块、存储基址计算模块、偏移地址计算模块和数据包存储模块;
所述DMA请求发送模块,其用于利用标签有序分发体制将PCIExpress端点设备向主机内存发起的DMA读请求以分割的带有连续标签的多个子DMA请求发送至主机;
所述存储基址计算模块,其用于接收主机返回的CPLD数据包,根据CPLD数据包的标签确定所述CPLD数据包在PCIExpress端点设备的存储基址;
所述偏移地址计算模块,其用于对带有相同标签的CPLD数据包进行偏移地址计算,确定所述CPLD数据包的偏移地址;
所述数据包存储模块,其用于根据确定的所述CPLD数据包在PCIExpress端点设备的存储基址和偏移地址对相应CPLD数据包进行存储。
具体地,所述DMA请求发送模块包括DMA请求分割单元和标签分发单元;所述DMA请求分割单元,其用于在PCIExpress端点设备向主机内存发起DMA读请求时,根据DMA请求包的大小和PCIExpress总线规范中的MaxRequestSize的大小将DMA请求包分割成多个子DMA请求包,多个子DMA请求包对内存的寻址地址前后衔接;所述标签分发单元,其用于为子DMA请求包按照发送顺序依次分配以连续的标签号码Tag以区别不同的寻址空间
上述技术方案还包括页指针触发模块,其用于在PCIExpress端点设备一次发起的DMA读的寻址范围超过所述标签有序分发体制所有标签的最大寻址量时,启动标签页指针体制,以区分不同的寻址空间,其中每个标签具有一个页指针;当启动所述标签页指针体制后,所述存储基址计算模块根据CPLD数据包的标签及相应标签的页指针确定所述CPLD数据包的存储基址。
所述标签页指针体制具体为:如果一个标签未被使用时,将该标签对应的页指针为零,如果该标签被使用过一次,那么该标签对应的页指针自动加一。
所述偏移地址计算模块计算偏移地址具体为:带有相同标签的第一个收到的CPLD数据包的偏移地址为0,第二个收到的CPLD数据包的偏移地址为第一收到的CPLD数据包的数据长度,第i个收到的CPLD的数据包的偏移地址为第一至第i-1个收到的CPLD数据包的数据长度之和,其中i为大于等于3的整数。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种对CPLD数据包进行有序存储的方法,其特征在于,包括如下步骤:
步骤1,利用标签有序分发体制将PCIExpress端点设备向主机内存发起的DMA读请求分割成带有连续标签的多个子DMA读请求发送至主机;
步骤2,接收主机返回的CPLD数据包,根据CPLD数据包的标签确定所述CPLD数据包在PCIExpress端点设备的存储基址;
步骤3,对带有相同标签的CPLD数据包进行偏移地址计算,确定所述CPLD数据包的偏移地址;
步骤4,根据确定的所述CPLD数据包在PCIExpress端点设备的存储基址和偏移地址对相应CPLD数据包进行存储。
2.根据权利要求1所述一种对CPLD数据包进行有序存储的方法,其特征在于,步骤1的具体实现为:当PCIExpress端点设备向主机内存发起DMA读请求时,根据DMA读请求包的大小和PCIExpress总线规范中的MaxRequestSize的大小将DMA读请求包分割成多个子DMA读请求包,多个子DMA读请求包对内存的寻址地址前后衔接,每个子DMA读请求包按照发送顺序依次被标签有序分发体制分配以连续的标签号码Tag以区别不同的寻址空间。
3.根据权利要求2所述一种对CPLD数据包进行有序存储的方法,其特征在于,当PCIExpress端点设备一次发起的DMA读的寻址范围超过所述标签有序分发体制所有标签的一次最大寻址量时,启动标签页指针体制,以区分不同的寻址空间,其中每个标签具有一个页指针;当启动所述标签页指针体制后,步骤2中根据CPLD数据包的标签及相应标签的页指针确定所述CPLD数据包在PCIExpress端点设备的存储基址。
4.根据权利要求3所述一种对CPLD数据包进行有序存储的方法,其特征在于,所述标签页指针体制具体为:如果一个标签未被使用时,将该标签对应的页指针为零,如果该标签被使用过一次,那么该标签对应的页指针自动加一。
5.根据权利要求1所述一种对CPLD数据包进行有序存储的方法,其特征在于,所述步骤3的具体实现为:带有相同标签的第一个收到的CPLD数据包的偏移地址为0,第二个收到的CPLD数据包的偏移地址为第一个收到的CPLD数据包的数据长度,第i个收到的CPLD的数据包的偏移地址为第一至第i-1个收到的CPLD数据包的数据长度之和,其中i为大于等于3的整数。
6.一种对CPLD数据包进行有序存储的系统,其特征在于,包括DMA请求发送模块、存储基址计算模块、偏移地址计算模块和数据包存储模块;
所述DMA请求发送模块,其用于利用标签有序分发体制将PCIExpress端点设备向主机内存发起的DMA读请求分割成带有连续标签的多个子DMA读请求发送至主机;
所述存储基址计算模块,其用于接收主机返回的CPLD数据包,根据CPLD数据包的标签确定所述CPLD数据包在PCIExpress端点设备的存储基址;
所述偏移地址计算模块,其用于对带有相同标签的CPLD数据包进行偏移地址计算,确定所述CPLD数据包的偏移地址;
所述数据包存储模块,其用于根据确定的所述CPLD数据包在PCIExpress端点设备的存储基址和偏移地址对相应CPLD数据包进行存储。
7.根据权利要求6所述一种对CPLD数据包进行有序存储的系统,其特征在于,所述DMA请求发送模块包括DMA请求分割单元和标签分发单元;
所述DMA请求分割单元,其用于在PCIExpress端点设备向主机内存发起DMA读请求时,根据DMA读请求包的大小和PCIExpress总线规范中的MaxRequestSize的大小将DMA读请求包分割成多个子DMA读请求包,多个子DMA读请求包对内存的寻址地址前后衔接;
所述标签分发单元,其用于为子DMA读请求包按照发送顺序依次分配以连续的标签号码Tag以区别不同的寻址空间。
8.根据权利要求7所述一种对CPLD数据包进行有序存储的系统,其特征在于,还包括页指针触发模块,其用于在PCIExpress端点设备一次发起的DMA读的寻址范围超过所述标签有序分发体制所有标签的一次最大寻址量时,启动标签页指针体制,以区分不同的寻址空间,其中每个标签具有一个页指针;当启动所述标签页指针体制后,所述存储基址计算模块根据CPLD数据包的标签及相应标签的页指针确定所述CPLD数据包的存储基址。
9.根据权利要求8所述一种对CPLD数据包进行有序存储的系统,其特征在于,所述标签页指针体制具体为:如果一个标签未被使用时,将该标签对应的页指针为零,如果该标签被使用过一次,那么该标签对应的页指针自动加一。
10.根据权利要求6所述一种对CPLD数据包进行有序存储的系统,其特征在于,所述偏移地址计算模块计算偏移地址具体为:带有相同标签的第一个收到的CPLD数据包的偏移地址为0,第二个收到的CPLD数据包的偏移地址为第一收到的CPLD数据包的数据长度,第i个收到的CPLD的数据包的偏移地址为第一至第i-1个收到的CPLD数据包的数据长度之和,其中i为大于等于3的整数。
CN201510573588.4A 2015-09-09 2015-09-09 一种对cpld数据包进行有序存储的方法及系统 Active CN105260332B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510573588.4A CN105260332B (zh) 2015-09-09 2015-09-09 一种对cpld数据包进行有序存储的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510573588.4A CN105260332B (zh) 2015-09-09 2015-09-09 一种对cpld数据包进行有序存储的方法及系统

Publications (2)

Publication Number Publication Date
CN105260332A true CN105260332A (zh) 2016-01-20
CN105260332B CN105260332B (zh) 2018-04-20

Family

ID=55100030

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510573588.4A Active CN105260332B (zh) 2015-09-09 2015-09-09 一种对cpld数据包进行有序存储的方法及系统

Country Status (1)

Country Link
CN (1) CN105260332B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106527653A (zh) * 2016-10-12 2017-03-22 东软集团股份有限公司 调整cpu频率的方法及装置
CN109885509A (zh) * 2019-02-26 2019-06-14 京信通信系统(中国)有限公司 非易失性存储器的访问方法及装置
CN111694777A (zh) * 2019-03-11 2020-09-22 苏州微影激光技术有限公司 基于PCIe接口的DMA传输方法
CN112328519A (zh) * 2020-09-30 2021-02-05 郑州信大捷安信息技术股份有限公司 一种pcie设备、基于sr-iov的数据包有序传输方法和系统
CN112328520A (zh) * 2020-09-30 2021-02-05 郑州信大捷安信息技术股份有限公司 一种pcie设备、基于pcie设备的数据传输方法和系统
CN113157610A (zh) * 2021-05-20 2021-07-23 浙江大华技术股份有限公司 数据保存方法及装置、存储介质、电子装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060090015A1 (en) * 2004-10-26 2006-04-27 Bradfield Travis A Pipelined circuit for tag availability with multi-threaded direct memory access (DMA) activity
US7114014B2 (en) * 2003-06-27 2006-09-26 Sun Microsystems, Inc. Method and system for data movement in data storage systems employing parcel-based data mapping
CN101523359A (zh) * 2006-08-18 2009-09-02 Mips技术公司 具有减小数据高速缓存访问功率的微标签阵列的处理器及其应用
CN101634975A (zh) * 2009-08-20 2010-01-27 广东威创视讯科技股份有限公司 一种实现dma数据传输的方法及装置
CN101645832A (zh) * 2009-05-07 2010-02-10 曙光信息产业(北京)有限公司 一种基于fpga的虚拟机网络数据包处理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7114014B2 (en) * 2003-06-27 2006-09-26 Sun Microsystems, Inc. Method and system for data movement in data storage systems employing parcel-based data mapping
US20060090015A1 (en) * 2004-10-26 2006-04-27 Bradfield Travis A Pipelined circuit for tag availability with multi-threaded direct memory access (DMA) activity
CN101523359A (zh) * 2006-08-18 2009-09-02 Mips技术公司 具有减小数据高速缓存访问功率的微标签阵列的处理器及其应用
CN101645832A (zh) * 2009-05-07 2010-02-10 曙光信息产业(北京)有限公司 一种基于fpga的虚拟机网络数据包处理方法
CN101634975A (zh) * 2009-08-20 2010-01-27 广东威创视讯科技股份有限公司 一种实现dma数据传输的方法及装置

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106527653A (zh) * 2016-10-12 2017-03-22 东软集团股份有限公司 调整cpu频率的方法及装置
CN109885509A (zh) * 2019-02-26 2019-06-14 京信通信系统(中国)有限公司 非易失性存储器的访问方法及装置
CN111694777A (zh) * 2019-03-11 2020-09-22 苏州微影激光技术有限公司 基于PCIe接口的DMA传输方法
CN111694777B (zh) * 2019-03-11 2022-03-29 苏州微影激光技术有限公司 基于PCIe接口的DMA传输方法
CN112328519A (zh) * 2020-09-30 2021-02-05 郑州信大捷安信息技术股份有限公司 一种pcie设备、基于sr-iov的数据包有序传输方法和系统
CN112328520A (zh) * 2020-09-30 2021-02-05 郑州信大捷安信息技术股份有限公司 一种pcie设备、基于pcie设备的数据传输方法和系统
CN112328520B (zh) * 2020-09-30 2022-02-11 郑州信大捷安信息技术股份有限公司 一种pcie设备、基于pcie设备的数据传输方法和系统
CN112328519B (zh) * 2020-09-30 2022-02-18 郑州信大捷安信息技术股份有限公司 一种pcie设备、基于sr-iov的数据包有序传输方法和系统
CN113157610A (zh) * 2021-05-20 2021-07-23 浙江大华技术股份有限公司 数据保存方法及装置、存储介质、电子装置
CN113157610B (zh) * 2021-05-20 2023-03-14 浙江大华技术股份有限公司 数据保存方法及装置、存储介质、电子装置

Also Published As

Publication number Publication date
CN105260332B (zh) 2018-04-20

Similar Documents

Publication Publication Date Title
CN105260332A (zh) 一种对cpld数据包进行有序存储的方法及系统
CN108363670B (zh) 一种数据传输的方法、装置、设备和系统
US9934173B1 (en) Pseudo cut-through architecture between non-volatile memory storage and remote hosts over a fabric
US6813653B2 (en) Method and apparatus for implementing PCI DMA speculative prefetching in a message passing queue oriented bus system
CN104903868B (zh) 数据存储装置、用于进行直接用户空间通信的方法和系统
CN100592273C (zh) 执行dma数据传输的设备和方法
US11635902B2 (en) Storage device processing stream data, system including the same, and operation method
KR20190096801A (ko) SSD 스토리지의 NVMe 명령간 연관을 위한 시스템 및 방법
CN100438524C (zh) 基于硬件支持的虚拟接口结构用户层网络通信系统
US9697111B2 (en) Method of managing dynamic memory reallocation and device performing the method
KR102317657B1 (ko) Nvdimm을 포함하는 장치 및 그것의 엑세스 방법
CN102968386B (zh) 数据供给设备、缓存设备及数据供给方法
WO2011160094A2 (en) Scalable storage devices
CN103647807A (zh) 一种信息缓存方法、装置和通信设备
CN104636186A (zh) 虚拟机内存管理方法、物理主机、pcie设备及其配置方法以及迁移管理设备
US7469309B1 (en) Peer-to-peer data transfer method and apparatus with request limits
CN103150278A (zh) 基于pio和dma混合的网络接口卡描述符提交方法
US20060064568A1 (en) Integrated circuit capable of mapping logical block address data across multiple domains
WO2018125384A1 (en) Techniques for coalescing doorbells in a request message
CN100476775C (zh) 用于总线通信设备的主机控制器以及总线通信设备
CN109478171A (zh) 提高openfabrics环境中的吞吐量
US9727521B2 (en) Efficient CPU mailbox read access to GPU memory
CN111666235B (zh) 用于高速互连网络接口芯片的pio通信装置,芯片,设备及方法
CN104123173A (zh) 一种实现虚拟机间通信的方法及装置
WO2019174206A1 (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
CB03 Change of inventor or designer information

Inventor after: Zhang Yuegong

Inventor before: Miao Quan

Inventor before: Liu Xiaodong

Inventor before: Zhang Yuegong

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: Room 1406, 14 / F, building 2, yard 16, Guangshun North Street, Chaoyang District, Beijing

Patentee after: Sanwei Xin'an Technology Co., Ltd

Address before: 100029 22, building 3, building 170, Beiyuan Road, No. 1, Beijing, Chaoyang District, 2602

Patentee before: BEIJING SANSEC TECHNOLOGY DEVELOPMENT Co.,Ltd.

CP03 Change of name, title or address