CN108733598B - 一种数据传输方法和数据传输装置 - Google Patents

一种数据传输方法和数据传输装置 Download PDF

Info

Publication number
CN108733598B
CN108733598B CN201810427027.7A CN201810427027A CN108733598B CN 108733598 B CN108733598 B CN 108733598B CN 201810427027 A CN201810427027 A CN 201810427027A CN 108733598 B CN108733598 B CN 108733598B
Authority
CN
China
Prior art keywords
data
packet
length
address
srio
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.)
Active
Application number
CN201810427027.7A
Other languages
English (en)
Other versions
CN108733598A (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.)
Inspur Group Co Ltd
Original Assignee
Inspur Group 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 Inspur Group Co Ltd filed Critical Inspur Group Co Ltd
Priority to CN201810427027.7A priority Critical patent/CN108733598B/zh
Publication of CN108733598A publication Critical patent/CN108733598A/zh
Application granted granted Critical
Publication of CN108733598B publication Critical patent/CN108733598B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

本发明提供了一种数据传输方法和数据传输装置,包括:利用预设SRIO接口,接收发送端发送的待传输数据和所述待传输数据对应的存储空间信息;将所述待传输数据划分为至少一个SRIO数据包;针对每一个所述SRIO数据包,确定所述SRIO数据包的分包信息;根据所述存储空间信息和所述分包信息,确定所述SRIO数据包的包头信息;利用所述SRIO接口,根据所述包头信息,将所述SRIO数据包发送给所述接收端;确定是否存在至少一个未发送的所述SRIO数据包;如果否,生成结束标识包;利用所述SRIO接口,将所述结束标识包发送给所述接收端。本方案能够提高数据传输的可靠性。

Description

一种数据传输方法和数据传输装置
技术领域
本发明涉及计算机技术领域,特别涉及一种数据传输方法和数据传输装置。
背景技术
电子系统中各功能芯片间的数据交互对系统整体功能有着重要影响。而芯片间高速互连通信对于速度、资源占用、数据可靠性等多方面也有很高要求。SRIO接口的出现可以较好的实现系统内芯片间数据高速可靠交互。
目前,发送端和接收端在通过SRIO接口传输数据时,发送端需要使用如NWRITE_R类的需要回复的SRIO包格式。但是,对于无法处理DOORBELL类的SRIO包的接收端,接收到交互数据后,无法判断是否已接收到全部的交互数据,因此无法立即处理交互数据,从而降低了数据传输的可靠性。
发明内容
本发明实施例提供了一种数据传输方法和数据传输装置,能够提高数据传输的可靠性。
第一方面,本发明实施例提供了一种数据传输方法,应用于SRIO接口,包括:
利用预设SRIO接口,接收发送端发送的待传输数据和所述待传输数据对应的存储空间信息;
将所述待传输数据划分为至少一个SRIO数据包;
针对每一个所述SRIO数据包,确定所述SRIO数据包的分包信息;
根据所述存储空间信息和所述分包信息,确定所述SRIO数据包的包头信息;
利用所述SRIO接口,根据所述包头信息,将所述SRIO数据包发送给所述接收端;
确定是否存在至少一个未发送的所述SRIO数据包;
如果否,生成结束标识包;
利用所述SRIO接口,将所述结束标识包发送给所述接收端。
优选地,所述根据所述存储空间信息和所述分包信息,确定所述SRIO数据包的包头信息,包括:
根据所述存储空间信息,确定所述SRIO数据包的包头地址;
所述SRIO数据包的包头信息,包括:所述包头地址和所述分包信息;
则,
所述根据所述包头信息,将所述SRIO数据包发送给所述接收端,包括:
将所述SRIO数据包按照所述包头信息中的所述包头地址发送给所述接收端。
优选地,所述存储空间信息,包括:存储空间的地址和所述存储空间的地址范围;
所述接收发送端发送的待传输数据和所述待传输数据对应的存储空间信息,包括:
接收发送端发送的待传输数据、存储空间地址和所述存储空间地址的地址范围;
所述根据所述存储空间信息,确定所述SRIO数据包的包头地址,包括:
将所述存储空间的地址作为起始地址,向后偏移所述数据长度的地址;
确定所述数据长度的地址是否大于所述地址范围;
如果否,确定所述数据长度的地址为包头地址。
优选地,所述将所述存储空间的地址作为起始地址,向后偏移所述数据长度的地址,包括:
从所述起始地址,向后偏移预留字节长度的地址;
从所述预留字节长度的地址处,向后偏移所述数据长度的地址;
所述生成结束标识包,包括:
将预设的所述预留字节长度的结束标识封入SRIO数据包中,并将被封入所述结束标识的所述SRIO数据包作为结束标识包;
在所述生成结束标识包之后,在所述将所述结束标识包发送给所述接收端之前,进一步包括:
生成所述结束标识包的标识包头信息,其中,所述标识包头信息携带所述预留字节长度的地址;
所述将所述结束标识包发送给所述接收端,包括:
根据所述标识包头信息中的所述预留字节长度的地址,将所述结束标识包发送给所述接收端。
优选地,所述将所述待传输数据划分为至少一个SRIO数据包,包括:
预先设置至少两个划分长度,并将各个所述划分长度进行由大到小排序,将排序结果中的第一个所述划分长度作为当前划分长度;
将所述待传输数据作为待划分数据;
S0:确定所述待划分数据的当前长度,判断所述当前长度是否大于等于所述当前划分长度,如果是,执行S1,否则执行S3;
S1:根据下述公式,将所述当前长度作为S,将所述当前划分长度作为F,从所述待划分数据中划分出SRIO数据包B和剩余数据,其中,所述剩余数据的数据长度为剩余长度D,执行S2;
S2:将所述剩余长度作为当前长度,将所述剩余数据作为所述待划分数据,执行S3;
S3:将所述排序结果中位于所述当前划分长度的下一个所述划分长度作为当前划分长度,返回S0,直至所述当前划分长度为所述排序结果中最后一个所述划分长度,且所述当前长度小于所述当前划分长度,执行S4;
S4:将所述待划分数据划分为所述当前长度的SRIO数据包;
Figure BDA0001652390280000041
第二方面,本发明实施例提供了一种数据传输装置,包括:
分包控制模块,用于利用预设SRIO接口,接收发送端发送的待传输数据和所述待传输数据对应的存储空间信息;将所述待传输数据划分为至少一个SRIO数据包;针对每一个所述SRIO数据包,确定所述SRIO数据包的分包信息;
包头生成模块,用于根据所述分包控制模块接收的所述存储空间信息和所述分包控制模块确定的所述分包信息,确定所述SRIO数据包的包头信息;
传输及物理层模块,利用所述SRIO接口,用于根据所述包头生成模块确定的所述包头信息,将所述分包控制模块划分的所述SRIO数据包发送给所述接收端;确定是否存在至少一个未发送的所述SRIO数据包;利用所述SRIO接口,将结束标识生成模块生成的所述结束标识包发送给所述接收端;
所述结束标识生成模块,用于当所述传输及物理层模块确定不存在未发送的所述SRIO数据包时,生成结束标识包。
优选地,所述包头生成模块,用于根据所述存储空间信息,确定所述SRIO数据包的包头地址;
所述传输及物理层模块,用于将所述SRIO数据包,按照所述包头信息中的所述包头地址发送给所述接收端。
优选地,所述存储空间信息,包括:存储空间的地址和所述存储空间的地址范围;
所述分包控制模块,用于接收发送端发送的待传输数据、存储空间地址和所述存储空间地址的地址范围;
所述包头生成模块,用于将所述存储空间的地址作为起始地址,向后偏移所述数据长度的地址;确定所述数据长度的地址是否大于所述地址范围;如果否,确定所述数据长度的地址为包头地址。
优选地,所述包头生成模块,用于从所述起始地址,向后偏移预留字节长度的地址;从所述预留字节长度的地址处,向后偏移所述数据长度的地址;
所述结束标识生成模块,用于将预设的所述预留字节长度的结束标识封入SRIO数据包中,并将被封入所述结束标识的所述SRIO数据包作为结束标识包;生成所述结束标识包的标识包头信息,其中,所述标识包头信息携带所述预留字节长度的地址;根据所述标识包头信息中的所述预留字节长度的地址,将所述结束标识包发送给所述接收端。
优选地,所述分包控制模块,用于预先设置至少两个划分长度,并将各个所述划分长度进行由大到小排序,将排序结果中的第一个所述划分长度作为当前划分长度;将所述待传输数据作为待划分数据;执行:
S0:确定所述待划分数据的当前长度,判断所述当前长度是否大于等于所述当前划分长度,如果是,执行S1,否则执行S3;
S1:根据下述公式,将所述当前长度作为S,将所述当前划分长度作为F,从所述待划分数据中划分出SRIO数据包B和剩余数据,其中,所述剩余数据的数据长度为剩余长度D,执行S2;
S2:将所述剩余长度作为当前长度,将所述剩余数据作为所述待划分数据,执行S3;
S3:将所述排序结果中位于所述当前划分长度的下一个所述划分长度作为当前划分长度,返回S0,直至所述当前划分长度为所述排序结果中最后一个所述划分长度,且所述当前长度小于所述当前划分长度,执行S4;
S4:将所述待划分数据划分为所述当前长度的SRIO数据包;
Figure BDA0001652390280000051
在本发明实施例中,在利用SRIO接口接收到接收端发送的待传输数据后,需要先将待传输数据划分为SRIO数据包,以使以SRIO数据包的形式将待传输数据发送给接收端,再利用SRIO接口将SRIO数据包发送给接收端后,需要确定是否全部将SRIO数据包发送给,即确定是否存在至少一个未发送的SRIO数据包,以使确定是否将待传输数据全部发送给接收端,当且仅当在待传输数据全部发送给接收端时,生成结束标识包,并利用SRIO接口将结束标识包发送给接收端,以使接收端根据结束标识包确定待传输数据已发送完毕,即可对接收到的数据进行处理,从而提高了数据传输的可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种数据传输方法的流程图;
图2是本发明一实施例提供的另一种数据传输方法的流程图;
图3是本发明一实施例提供的一种数据传输装置的结构示意图;
图4是本发明一实施例提供的另一种数据传输装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种数据传输方法,包括:
步骤101:利用预设SRIO接口,接收发送端发送的待传输数据和所述待传输数据对应的存储空间信息;
步骤102:将所述待传输数据划分为至少一个SRIO数据包;
步骤103:针对每一个所述SRIO数据包,确定所述SRIO数据包的分包信息;
步骤104:根据所述存储空间信息和所述分包信息,确定所述SRIO数据包的包头信息;
步骤105:利用所述SRIO接口,根据所述包头信息,将所述SRIO数据包发送给所述接收端;
步骤106:确定是否存在至少一个未发送的所述SRIO数据包;
步骤107:如果否,生成结束标识包;
步骤108:利用所述SRIO接口,将所述结束标识包发送给所述接收端。
在本发明实施例中,在利用SRIO接口接收到接收端发送的待传输数据后,需要先将待传输数据划分为SRIO数据包,以使以SRIO数据包的形式将待传输数据发送给接收端,再利用SRIO接口将SRIO数据包发送给接收端后,需要确定是否全部将SRIO数据包发送给,即确定是否存在至少一个未发送的SRIO数据包,以使确定是否将待传输数据全部发送给接收端,当且仅当在待传输数据全部发送给接收端时,生成结束标识包,并利用SRIO接口将结束标识包发送给接收端,以使接收端根据结束标识包确定待传输数据已发送完毕,即可对接收到的数据进行处理,从而提高了数据传输的可靠性。
在本发明一实施例中,所述根据所述存储空间信息和所述分包信息,确定所述SRIO数据包的包头信息,包括:
根据所述存储空间信息,确定所述SRIO数据包的包头地址;
所述SRIO数据包的包头信息,包括:所述包头地址和所述分包信息;
则,
所述根据所述包头信息,将所述SRIO数据包发送给所述接收端,包括:
将所述SRIO数据包,按照所述包头信息中的所述包头地址发送给所述接收端。
在本发明实施例中,在将待传输数据划分为至少一个SRIO数据包后,需要分别确定每一个SRIO数据包包头信息中的包头地址和分包信息,以使接收端根据包头信息中的分包信息确定SRIO数据包的内容,以及SRIO接口根据包头地址将数据包发送给接收端,实现提高数据传输可靠性的目的。
举例来说,分包信息为SRIO数据包的长度为256字节,SRIO数据包的类型为N型;
存储空间信息为C盘,可以确定SRIO数据包的包头地址为C盘;
SRIO数据包的包头信息:包头地址为C盘、SRIO数据包的长度为256字节,SRIO数据包的类型为N型。
在本发明一实施例中,所述存储空间信息,包括:存储空间的地址和所述存储空间的地址范围;
所述接收发送端发送的待传输数据和所述待传输数据对应的存储空间信息,包括:
接收发送端发送的待传输数据、存储空间地址和所述存储空间地址的地址范围;
所述根据所述存储空间信息,确定所述SRIO数据包的包头地址,包括:
将所述存储空间的地址作为起始地址,向后偏移所述数据长度的地址;
确定所述数据长度的地址是否大于所述地址范围;
如果否,确定所述数据长度的地址为包头地址。
在本发明实施例中,在存储空间信息中包括待传输数据所要被存储的存储空间地址,以及存储地址的地址范围,以使根据存储空间地址确定出SRIO数据包的地址,以及确定SRIO数据包的地址是否大于地址范围,以使确定是否能存储SRIO数据包,当且仅当在数据长度的地址不大于地址范围时,将数据长度的地址作为包头地址,不仅便于SRIO接口的寻址,还能够保证数据传输可靠性。
在本发明一实施例中,所述将所述存储空间的地址作为起始地址,向后偏移所述数据长度的地址,包括:
从所述起始地址,向后偏移预留字节长度的地址;
从所述预留字节长度的地址处,向后偏移所述数据长度的地址为包头地址;
所述生成结束标识包,包括:
将预设的所述预留字节长度的结束标识封入SRIO数据包中,并将被封入所述结束标识的所述SRIO数据包作为结束标识包;
在所述生成结束标识包之后,在所述将所述结束标识包发送给所述接收端之前,进一步包括:
生成所述结束标识包的标识包头信息,其中,所述标识包头信息携带所述预留字节长度的地址;
所述将所述结束标识包发送给所述接收端,包括:
根据所述标识包头信息中的所述预留字节长度的地址,将所述结束标识包发送给所述接收端。
在本发明实施例中,在每一个SRIO数据包发送完成后,生成结束标识包,以及结束标识包的标识包头信息,以使根据标识包头信息额外发送结束标识包,接收端在检测到结束标识后即可对前面传来的数据进行处理,从而保证了数据传输的可靠性。而通过设置地址偏移,保证结束标识包写在接收端存储空间的起始位置,便于寻址的同时保证数据通信速率。在不增加额外硬件连接和软件开销的基础上,实现SRIO数据的高效可靠传输。
在本发明一实施例中,所述将所述待传输数据划分为至少一个SRIO数据包,包括:
预先设置至少两个划分长度,并将各个所述划分长度进行由大到小排序,将排序结果中的第一个所述划分长度作为当前划分长度;
将所述待传输数据作为待划分数据;
S0:确定所述待划分数据的当前长度,判断所述当前长度是否大于等于所述当前划分长度,如果是,执行S1,否则执行S3;
S1:根据下述公式,将所述当前长度作为S,将所述当前划分长度作为F,从所述待划分数据中划分出SRIO数据包B和剩余数据,其中,所述剩余数据的数据长度为剩余长度D,执行S2;
S2:将所述剩余长度作为当前长度,将所述剩余数据作为所述待划分数据,执行S3;
S3:将所述排序结果中位于所述当前划分长度的下一个所述划分长度作为当前划分长度,返回S0,直至所述当前划分长度为所述排序结果中最后一个所述划分长度,且所述当前长度小于所述当前划分长度,执行S4;
S4:将所述待划分数据划分为所述当前长度的SRIO数据包;
Figure BDA0001652390280000101
在本发明实施例中,在划分待传输数据时,需要根据待传输数据的当前长度,以及预设的至少两个划分长度划分待传输数据,以使将待传输数据划分为至少一个SRIO数据包,从而便于将待传输数据以SRIO数据包的形式发送给接收端,以使接收端能够接收到待传输数据,从而实现确保数据传输可靠性的目的。
举例来说,预先设置的划分长度和顺序依次为512字节长度、256字节长度和128字节长度;
待传输数据作为待划分数据A,确定待划分数据A的数据长度为770字节长度;
确定770字节长度大于512字节长度,因此将待划分数据A划分为512字节长度的SRIO数据包和剩余长度为258字节长度的剩余数据;
由于258字节长度大于256字节长度,因此将258字节长度的剩余数据作为待划分数据,划分为256字节长度的SRIO数据包和2字节长度的SRIO数据包。
为了更加清晰的说明本发明的技术方案及优点,对本发明实施例提供的一种数据传输方法进行详细描述,如图2所示,具体包括以下步骤:
步骤201:预先设置至少两个划分长度,并将各个所述划分长度进行由大到小排序,将排序结果中的第一个划分长度作为当前划分长度。
具体地,预设至少两个划分长度,可以使得在接收到接收端发送的待传输数据时,根据划分长度划分待传输数据。
举例来说,预先设置划分长度为256字节长度、128字节长度,64字节长度,32字节长度,16字节长度和8字节长度。
步骤202:利用SRIO接口,接收发送端发送的待传输数据和存储空间的地址和地址范围。
具体地,通过利用SRIO接口接收发送端发送的,通信双方协商的存储空间的地址和存储空间的地址范围,可以使得SRIO接口根据存储空间的地址和地址范围,确定待传输数据目的地址。
举例来说,接收发送端发送的待传输数据S、存储空间的地址为地址12和存储空间的地址范围为地址12至地址5000。
步骤203:将待传输数据作为待划分数据。
具体地,将待传输数据作为待划分数据,以使将待传输数据划分为至少一个SRIO数据包。
步骤204:确定待划分数据的当前长度,判断当前长度是否大于等于当前划分长度,如果是,执行步骤205,否则执行步骤207。
具体地,确定待划分数据的当前长度,以使根据当前长度和当前划分长度,确定是否划分待划分数据。
举例来说,待划分数据的当前长度为513字节长度,将513字节长度与256字节长度对比,确定513字节长度大于256字节长度,则将513字节长度的待划分数据划分为256字节长度的SRIO数据包s1和256字节长度的SRIO数据包s2,以及剩余长度为1字节长度的剩余数据。
步骤205:从待划分数据中划分出当前划分长度的SRIO数据包和剩余长度的剩余数据。
具体地,在确定当前长度大于当前划分长度时,则需要从待划分数据中划分出至少一个当前划分长度的SRIO数据包和剩余长度的剩余数据。
步骤206:将剩余长度作为当前长度,将剩余数据作为待划分数据。
具体地,在划分完一次待划分数据后,为了确定待划分数据是否需要继续划分,需要将剩余长度作为当前长度,以及将剩余数据作为待划分数据,继续确定是否划分待划分数据。
举例来说,将剩余长度为1字节长度作为当前长度,将1字节长度的剩余数据作为待划分数据。
步骤207:将排序结果中位于当前划分长度的下一个划分长度作为当前划分长度,返回步骤204,直至当前划分长度为排序结果中最后一个划分长度,且当前长度小于当前划分长度。
具体地,在根据当前划分长度已划分一次完待传输数据,或当前长度小于当前划分长度时,将当前长度与排序结果中的位于当前划分长度下一个划分长度进行比对,以使确定是否划分待划分数据。
举例来说,将当前划分长度为256字节长度的下一个划分长度128字节长度,作为当前划分长度;
将当前长度为1字节长度与当前划分长度为128字节长度比对,确定当前长度小于当前划分长度;
将当前划分长度为128字节长度的下一个划分长度64字节长度,作为当前划分长度;
将当前长度为1字节长度与当前划分长度为64字节长度比对,确定当前长度小于当前划分长度;
将当前划分长度为64字节长度的下一个划分长度32字节长度,作为当前划分长度;
将当前长度为1字节长度与当前划分长度为32字节长度比对,确定当前长度小于当前划分长度;
将当前划分长度为32字节长度的下一个划分长度16字节长度,作为当前划分长度;
将当前长度为1字节长度与当前划分长度为16字节长度比对,确定当前长度小于当前划分长度;
将当前划分长度为16字节长度的下一个划分长度8字节长度,作为当前划分长度;
将当前长度为1字节长度与当前划分长度为8字节长度比对,确定当前长度小于当前划分长度,由于当前划分长度8字节长度为排序结果中的最后一个划分长度,因此,将1字节长度的待划分数据划分为1字节长度的SRIO数据包,因此,待传输数据划分为2个256字节长度的SRIO数据包和1个1字节长度的SRIO数据包。
步骤208:将待划分数据划分为当前长度的SRIO数据包。
具体地,在当前划分长度为排序结果中最后一个划分长度,且当前长度小于当前划分长度时,将带互粉数据划分为当前长度的SRIO数据包,以使完成待传输数据的划分。
步骤209:针对每一个SRIO数据包,确定SRIO数据包的分包信息。
具体地,SRIO数据包的分包信息,包括SRIO数据包的长度信息、SRIO数据包的类型,以及SRIO数据包的传输内容,确定分包信息可以使得根据分包信息确定SRIO数据包的包头地址。
举例来说,256字节长度的SRIO数据包s1和256字节长度的SRIO数据包s2的分包信息均为:SRIO数据包的长度为256字节长度、类型为N包,传输内容为缓存数据;
1字节长度的SRIO数据包的分包信息为:SRIO数据包的长度为1字节长度、类型为N包,传输内容为缓存数据。
步骤210:将存储空间的地址作为起始地址,从起始地址处,向后偏移预留字节长度的地址。
具体地,通过设置地址偏移,保证结束标识包写在接收端划分的存储空间的起始位置,便于寻址的同时保证数据通信速率。
举例来说,预留字节长度的地址为8字节地址,从存储空间地址为地址12向后偏移8字节地址。
步骤211:从预留字节长度的地址处,向后偏移分包信息中的数据长度的地址。
具体地,在确定各个数据包的地址时,需要从预留字节长度的地址处,给出SRIO数据包的地址,以使接收端根据预留字节长度的地址处的结束标识包,确定待传输数据已传输完毕。
举例来说,256字节长度的SRIO数据包的数据长度为256字节长度;
1字节长度的SRIO数据包的数据长度为1字节长度;
从20字节地址处,向后偏移256字节长度的地址,获得20字节至276字节长度的地址;
将21字节至277字节长度的地址与地址范围为地址12至地址5000进行比对,确定21字节至277字节长度的地址在地址12至地址5000范围内,因此21字节至277字节长度的地址为SRIO数据包s1的包头地址;
从277字节地址处向后偏移256字节长度的地址,获得278字节地址至533字节长度的地址;
将278字节地址至533字节长度的地址与地址范围进行比对,确定278字节地址至533字节长度的地址在地址12至地址5000范围内,因此将278字节地址至533字节长度的地址作为s2的包头地址;
从534字节地址向后偏移1字节长度的地址,获取534字节地址至535字节长度的地址;
将534字节地址至535字节长度的地址与地址范围进行比对,确定534字节地址至535字节长度的地址为1字节长度的SRIO数据包的包头地址。
步骤212:确定数据长度的地址是否大于地址范围。
具体地,在向后偏移数据长度的地址后,需要确定偏移后的数据长度的地址是否大于地址范围,以使确定包头地址是否出现无效地址,避免出现无效地址导致数据传输失败。
步骤213:当数据长度的地址不大于地址范围时,确定数据长度的地址为包头地址。
具体地,在确定偏移后的数据长度的地址为有效地址后,即在地址范围内时,即可确定数据长度的地址为包头地址。
步骤214:利用SRIO接口,将SRIO数据包按照包头信息中的包头地址发送给接收端。
具体地,在确定完每一个SRIO数据包的包头信息后,即可按照包头信息中的包头地址将SRIO数据包发送给接收端。
步骤215:确定是否存在至少一个未发送的SRIO数据包。
具体地,在发送结束标识包之前,需要确定是否将所有的SRIO数据包发送给接收端,避免将结束标识包发送给接收端后,接收端处理接收的SRIO数据包,而因存在未发送的SRIO数据包,导致数据处理失败
步骤216:当不存在未发送的SRIO数据包时,将预设的预留字节长度的结束标识封入SRIO数据包中,并将被封入结束标识的SRIO数据包作为结束标识包。
具体地,在确定所有的SRIO数据包均发送给接收端时,再生成结束标识包。
举例来说,将8字节长度的“结束标识”封入SRIO数据包F中,SRIO数据包F作为结束标识包。
步骤217:生成结束标识包的标识包头信息。
具体地,由于预留字节长度的地址为结束标识包的地址,因此在包头信息中携带预留字节长度的地址。
步骤218:利用SRIO接口,根据标识包头信息中的预留字节长度的地址,将结束标识包发送给接收端。
具体地,在确定结束标识包的包头信息后,即可根据包头信息将结束标识包发送给接收端,以使接收端在接收到结束标识包后,处理接收到的SRIO数据包。
如图3所示,本发明实施例提供了一种数据传输装置,包括:
分包控制模块301,用于利用预设SRIO接口,接收发送端发送的待传输数据和所述待传输数据对应的存储空间信息;将所述待传输数据划分为至少一个SRIO数据包;针对每一个所述SRIO数据包,确定所述SRIO数据包的分包信息;
包头生成模块302,用于根据所述分包控制模块301接收的所述存储空间信息和所述分包控制模块301确定的所述分包信息,确定所述SRIO数据包的包头信息;
传输及物理层模块303,用于利用所述SRIO接口,根据所述包头生成模块302确定的所述包头信息,将所述分包控制模块301划分的所述SRIO数据包发送给所述接收端;确定是否存在至少一个未发送的所述SRIO数据包;利用所述SRIO接口,将结束标识生成模块304生成的所述结束标识包发送给所述接收端;
所述结束标识生成模块304,用于当所述传输及物理层模303块确定不存在未发送的所述SRIO数据包时,生成结束标识包。
在本发明实施例中,在通过分包控制模块,利用SRIO接口接收到接收端发送的待传输数据后,需要先将待传输数据划分为SRIO数据包,以使以SRIO数据包的形式将待传输数据发送给接收端,再通过传输即物理层模块,利用SRIO接口将SRIO数据包发送给接收端后,结束标识生成模块需要确定是否全部将SRIO数据包发送给,即确定是否存在至少一个未发送的SRIO数据包,以使确定是否将待传输数据全部发送给接收端,当且仅当在待传输数据全部发送给接收端时,生成结束标识包,并通过传输及物理层模块是,利用SRIO接口将结束标识包发送给接收端,以使接收端根据结束标识包确定待传输数据已发送完毕,即可对接收到的数据进行处理,从而提高了数据传输的可靠性。
基于图3所示的SRIO接口,如图4所示,在本发明一实施例中,所述包头生成模块302,用于根据所述分包控制模块301接收的所述存储空间信息,确定所述SRIO数据包的包头地址;
所述传输及物理层模块,用于将所述SRIO数据包,按照所述包头信息中的所述包头地址发送给所述接收端。
在本发明一实施例中,所述存储空间信息,包括:存储空间的地址和所述存储空间的地址范围;
所述分包控制模块,用于接收发送端发送的待传输数据、存储空间地址和所述存储空间地址的地址范围;
所述包头生成模块,用于将所述存储空间的地址作为起始地址,向后偏移所述数据长度的地址;确定所述数据长度的地址是否大于所述地址范围;如果否,确定所述数据长度的地址为包头地址。
在本发明一实施例中,所述包头生成模块,用于从所述起始地址,向后偏移预留字节长度的地址;从所述预留字节长度的地址处,向后偏移所述数据长度的地址;
所述结束标识生成模块,用于将预设的所述预留字节长度的结束标识封入SRIO数据包中,并将被封入所述结束标识的所述SRIO数据包作为结束标识包;生成所述结束标识包的标识包头信息,其中,所述标识包头信息携带所述预留字节长度的地址;根据所述标识包头信息中的所述预留字节长度的地址,将所述结束标识包发送给所述接收端。
在本发明一实施例中,所述分包控制模块,用于预先设置至少两个划分长度,并将各个所述划分长度进行由大到小排序,将排序结果中的第一个所述划分长度作为当前划分长度;将所述待传输数据作为待划分数据;执行:
S0:确定所述待划分数据的当前长度,判断所述当前长度是否大于等于所述当前划分长度,如果是,执行S1,否则执行S3;
S1:根据下述公式,将所述当前长度作为S,将所述当前划分长度作为F,从所述待划分数据中划分出SRIO数据包B和剩余数据,其中,所述剩余数据的数据长度为剩余长度D,执行S2;
S2:将所述剩余长度作为当前长度,将所述剩余数据作为所述待划分数据,执行S3;
S3:将所述排序结果中位于所述当前划分长度的下一个所述划分长度作为当前划分长度,返回S0,直至所述当前划分长度为所述排序结果中最后一个所述划分长度,且所述当前长度小于所述当前划分长度,执行S4;
S4:将所述待划分数据划分为所述当前长度的SRIO数据包;
Figure BDA0001652390280000181
本发明各个实施例至少具有如下有益效果:
1、在本发明一实施例中,在利用SRIO接口接收到接收端发送的待传输数据后,需要先将待传输数据划分为SRIO数据包,以使以SRIO数据包的形式将待传输数据发送给接收端,再利用SRIO接口将SRIO数据包发送给接收端后,需要确定是否全部将SRIO数据包发送给,即确定是否存在至少一个未发送的SRIO数据包,以使确定是否将待传输数据全部发送给接收端,当且仅当在待传输数据全部发送给接收端时,生成结束标识包,并利用SRIO接口将结束标识包发送给接收端,以使接收端根据结束标识包确定待传输数据已发送完毕,即可对接收到的数据进行处理,从而提高了数据传输的可靠性。
2、在本发明一实施例中,在将待传输数据划分为至少一个SRIO数据包后,需要分别确定每一个SRIO数据包包头信息中的包头地址和分包信息,以使接收端根据包头信息中的分包信息确定SRIO数据包的内容,以及SRIO接口根据包头地址将数据包发送给接收端,实现提高数据传输可靠性的目的。
3、在本发明一实施例中,在存储空间信息中包括待传输数据所要被存储的存储空间地址,以及存储地址的地址范围,以使根据存储空间地址确定出SRIO数据包的地址,以及确定SRIO数据包的地址是否大于地址范围,以使确定是否能存储SRIO数据包,当且仅当在数据长度的地址不大于地址范围时,将数据长度的地址作为包头地址,不仅便于SRIO接口的寻址,还能够保证数据传输可靠性。
4、在本发明一实施例中,在每一个SRIO数据包发送完成后,生成结束标识包,以及结束标识包的标识包头信息,以使根据标识包头信息额外发送结束标识包,接收端在检测到结束标识后即可对前面传来的数据进行处理,从而保证了数据传输的可靠性。而通过设置地址偏移,保证结束标识包写在接收端存储空间的起始位置,便于寻址的同时保证数据通信速率。在不增加额外硬件连接和软件开销的基础上,实现SRIO数据的高效可靠传输。
5、在本发明一实施例中,在划分待传输数据时,需要根据待传输数据的当前长度,以及预设的至少两个划分长度划分待传输数据,以使将待传输数据划分为至少一个SRIO数据包,从而便于将待传输数据以SRIO数据包的形式发送给接收端,以使接收端能够接收到待传输数据,从而实现确保数据传输可靠性的目的。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (2)

1.一种数据传输方法,其特征在于,包括:
利用预设SRIO接口,接收发送端发送的待传输数据和所述待传输数据对应的存储空间信息;
将所述待传输数据划分为至少一个SRIO数据包;
针对每一个所述SRIO数据包,确定所述SRIO数据包的分包信息;
根据所述存储空间信息和所述分包信息,确定所述SRIO数据包的包头信息;
利用所述SRIO接口,根据所述包头信息,将所述SRIO数据包发送给接收端;
确定是否存在至少一个未发送的所述SRIO数据包;
如果否,生成结束标识包;
利用所述SRIO接口,将所述结束标识包发送给接收端;
所述根据所述存储空间信息和所述分包信息,确定所述SRIO数据包的包头信息,包括:
根据所述存储空间信息,确定所述SRIO数据包的包头地址;
所述SRIO数据包的包头信息,包括:所述包头地址和所述分包信息;
则,
所述根据所述包头信息,将所述SRIO数据包发送给接收端,包括:
将所述SRIO数据包按照所述包头信息中的所述包头地址发送给接收端;
所述存储空间信息,包括:存储空间的地址和所述存储空间的地址范围;
所述接收发送端发送的待传输数据和所述待传输数据对应的存储空间信息,包括:
接收发送端发送的待传输数据、存储空间地址和所述存储空间地址的地址范围;
所述根据所述存储空间信息,确定所述SRIO数据包的包头地址,包括:
将所述存储空间的地址作为起始地址,向后偏移数据长度的地址;
确定所述数据长度的地址是否大于所述地址范围;
如果否,确定所述数据长度的地址为包头地址;
所述将所述存储空间的地址作为起始地址,向后偏移所述数据长度的地址,包括:
从所述起始地址,向后偏移预留字节长度的地址;
从所述预留字节长度的地址处,向后偏移所述数据长度的地址;
所述生成结束标识包,包括:
将预设的所述预留字节长度的结束标识封入SRIO数据包中,并将被封入所述结束标识的所述SRIO数据包作为结束标识包;
在所述生成结束标识包之后,在所述将所述结束标识包发送给接收端之前,进一步包括:
生成所述结束标识包的标识包头信息,其中,所述标识包头信息携带所述预留字节长度的地址;
所述将所述结束标识包发送给接收端,包括:
根据所述标识包头信息中的所述预留字节长度的地址,将所述结束标识包发送给接收端;
所述将所述待传输数据划分为至少一个SRIO数据包,包括:
预先设置至少两个划分长度,并将各个所述划分长度进行由大到小排序,将排序结果中的第一个所述划分长度作为当前划分长度;
将所述待传输数据作为待划分数据;
S0:确定所述待划分数据的当前长度,判断所述当前长度是否大于等于所述当前划分长度,如果是,执行S1,否则执行S3;
S1:根据下述公式,将所述当前长度作为S,将所述当前划分长度作为F,从所述待划分数据中划分出SRIO数据包B和剩余数据,其中,所述剩余数据的数据长度为剩余长度D,执行S2;
S2:将所述剩余长度作为当前长度,将所述剩余数据作为所述待划分数据,执行S3;
S3:将所述排序结果中位于所述当前划分长度的下一个所述划分长度作为当前划分长度,返回S0,直至所述当前划分长度为所述排序结果中最后一个所述划分长度,且所述当前长度小于所述当前划分长度,执行S4;
S4:将所述待划分数据划分为所述当前长度的SRIO数据包;
Figure FDA0002977643420000031
2.一种数据传输装置,其特征在于,包括:
分包控制模块,用于利用预设SRIO接口,接收发送端发送的待传输数据和所述待传输数据对应的存储空间信息;将所述待传输数据划分为至少一个SRIO数据包;针对每一个所述SRIO数据包,确定所述SRIO数据包的分包信息;
包头生成模块,用于根据所述分包控制模块接收的所述存储空间信息和所述分包控制模块确定的所述分包信息,确定所述SRIO数据包的包头信息;
传输及物理层模块,利用所述SRIO接口,用于根据所述包头生成模块确定的所述包头信息,将所述分包控制模块划分的所述SRIO数据包发送给接收端;确定是否存在至少一个未发送的所述SRIO数据包;利用所述SRIO接口,将结束标识生成模块生成的所述结束标识包发送给接收端;
所述结束标识生成模块,用于当所述传输及物理层模块确定不存在未发送的所述SRIO数据包时,生成结束标识包;
所述包头生成模块,用于根据所述分包控制模块接收的所述存储空间信息,确定所述SRIO数据包的包头地址;
所述传输及物理层模块,用于将所述SRIO数据包,按照所述包头信息中的所述包头地址发送给接收端;
所述存储空间信息,包括:存储空间的地址和所述存储空间的地址范围;
所述分包控制模块,用于接收发送端发送的待传输数据、存储空间地址和所述存储空间地址的地址范围;
所述包头生成模块,用于将所述存储空间的地址作为起始地址,向后偏移数据长度的地址;确定所述数据长度的地址是否大于所述地址范围;如果否,确定所述数据长度的地址为包头地址;
所述包头生成模块,用于从所述起始地址,向后偏移预留字节长度的地址;从所述预留字节长度的地址处,向后偏移所述数据长度的地址;
所述结束标识生成模块,用于将预设的所述预留字节长度的结束标识封入SRIO数据包中,并将被封入所述结束标识的所述SRIO数据包作为结束标识包;生成所述结束标识包的标识包头信息,其中,所述标识包头信息携带所述预留字节长度的地址;根据所述标识包头信息中的所述预留字节长度的地址,将所述结束标识包发送给接收端;
所述分包控制模块,用于预先设置至少两个划分长度,并将各个所述划分长度进行由大到小排序,将排序结果中的第一个所述划分长度作为当前划分长度;将所述待传输数据作为待划分数据;执行:
S0:确定所述待划分数据的当前长度,判断所述当前长度是否大于等于所述当前划分长度,如果是,执行S1,否则执行S3;
S1:根据下述公式,将所述当前长度作为S,将所述当前划分长度作为F,从所述待划分数据中划分出SRIO数据包B和剩余数据,其中,所述剩余数据的数据长度为剩余长度D,执行S2;
S2:将所述剩余长度作为当前长度,将所述剩余数据作为所述待划分数据,执行S3;
S3:将所述排序结果中位于所述当前划分长度的下一个所述划分长度作为当前划分长度,返回S0,直至所述当前划分长度为所述排序结果中最后一个所述划分长度,且所述当前长度小于所述当前划分长度,执行S4;
S4:将所述待划分数据划分为所述当前长度的SRIO数据包;
Figure FDA0002977643420000051
CN201810427027.7A 2018-05-07 2018-05-07 一种数据传输方法和数据传输装置 Active CN108733598B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810427027.7A CN108733598B (zh) 2018-05-07 2018-05-07 一种数据传输方法和数据传输装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810427027.7A CN108733598B (zh) 2018-05-07 2018-05-07 一种数据传输方法和数据传输装置

Publications (2)

Publication Number Publication Date
CN108733598A CN108733598A (zh) 2018-11-02
CN108733598B true CN108733598B (zh) 2021-05-18

Family

ID=63937063

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810427027.7A Active CN108733598B (zh) 2018-05-07 2018-05-07 一种数据传输方法和数据传输装置

Country Status (1)

Country Link
CN (1) CN108733598B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112084120A (zh) * 2020-07-30 2020-12-15 济南浪潮高新科技投资发展有限公司 一种RapidIO数据传输处理方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104391812A (zh) * 2014-12-02 2015-03-04 联想(北京)有限公司 一种通信方法及第一电子设备

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101187896B (zh) * 2007-12-14 2011-04-06 中兴通讯股份有限公司 一种现场可编程门阵列数据缓存的管理方法
US8312241B2 (en) * 2008-03-06 2012-11-13 Integrated Device Technology, Inc. Serial buffer to support request packets with out of order response packets
CN101515841B (zh) * 2009-04-03 2011-10-05 华为技术有限公司 一种基于RapidIO协议的数据包传输的方法、设备和系统
CN101540653A (zh) * 2009-04-29 2009-09-23 华为技术有限公司 数据发送和接收方法、数据传输装置和数据传输系统
CN101635744B (zh) * 2009-08-26 2012-08-29 华为技术有限公司 一种数据传输方法及数据传输系统以及相关设备
CN102123079B (zh) * 2010-12-31 2013-12-18 华为技术有限公司 一种事务报文处理方法和装置
WO2015001390A1 (en) * 2013-07-04 2015-01-08 Freescale Semiconductor, Inc. Method and device for data streaming in a mobile communication system
WO2016191990A1 (zh) * 2015-05-30 2016-12-08 华为技术有限公司 一种报文转换方法及装置
CN106844251B (zh) * 2015-12-03 2022-03-22 中兴通讯股份有限公司 数据传输方法及装置
CN105721338B (zh) * 2016-01-29 2019-08-02 浪潮(北京)电子信息产业有限公司 一种接收数据的处理方法及装置
CN107682052A (zh) * 2017-08-29 2018-02-09 深圳市沃特玛电池有限公司 一种数据分包传输方法及系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104391812A (zh) * 2014-12-02 2015-03-04 联想(北京)有限公司 一种通信方法及第一电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"A High-Performance Scalable Computing System on the RapidIO Interconnect Architecture";Y. Zhang;《2010 International Conference on Cyber-Enabled Distributed Computing and Knowledge Discovery》;20101231;第288-292页 *

Also Published As

Publication number Publication date
CN108733598A (zh) 2018-11-02

Similar Documents

Publication Publication Date Title
US20240171507A1 (en) System and method for facilitating efficient utilization of an output buffer in a network interface controller (nic)
US8009672B2 (en) Apparatus and method of splitting a data stream over multiple transport control protocol/internet protocol (TCP/IP) connections
US6526446B1 (en) Hardware only transmission control protocol segmentation for a high performance network interface card
CN106657149B (zh) 通讯协议转换方法与装置
JPH11143845A (ja) ネットワークノード間のメッセージ送信用システム及び方法
CN111930676A (zh) 多处理器间的通信方法、装置、系统及存储介质
CN112671771B (zh) 数据传输方法、装置、电子设备及介质
JP2006325054A (ja) Tcp/ip受信処理回路及びそれを具備する半導体集積回路
US7009967B1 (en) Systems and methods for transmitting data packets
WO2014135038A1 (zh) 基于pcie总线的报文传输方法与装置
US20230156102A1 (en) Packet processing method, network device, and related device
CN113992654A (zh) 一种高速的文件传输方法、系统、设备及介质
CN108733598B (zh) 一种数据传输方法和数据传输装置
US7653070B2 (en) Method and system for supporting efficient and cache-friendly TCP session lookup operations based on canonicalization tags
CN105162747B (zh) 用于压缩设备与解压缩设备探索及握手的系统和方法
WO2022111326A9 (zh) 一种数据传输方法、装置、电子设备和存储介质
WO2021036189A1 (zh) Rdma数据发送及接收方法、电子设备及可读存储介质
CN109587083B (zh) 数据传输方法及相关装置
CN115495406A (zh) 一种基于PCIe的报文传输方法、装置、设备及存储介质
CN113746647B (zh) 数据传输方法、节点、电子设备及可读存储介质
CN114629891A (zh) 文件传输方法、装置、电子设备及计算机可读存储介质
CN114679425B (zh) 一种5g网络下的报文处理方法、网络设备及存储介质
CN110278177B (zh) 一种ip包包头检测方法及装置
CN109068170A (zh) 一种弹幕消息的存储方法、装置、终端和存储介质
WO2023130801A1 (zh) 基于函数的数据发送方法、装置、设备和数据接收方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20210422

Address after: 250100 Ji'nan high tech Zone, Shandong, No. 1036 wave road

Applicant after: INSPUR GROUP Co.,Ltd.

Address before: 250100, Ji'nan province high tech Zone, Sun Village Branch Road, No. 2877, building, floor, building, on the first floor

Applicant before: JINAN INSPUR HI-TECH INVESTMENT AND DEVELOPMENT Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant