CN112230880A - 一种数据传输控制方法、装置、fpga及介质 - Google Patents

一种数据传输控制方法、装置、fpga及介质 Download PDF

Info

Publication number
CN112230880A
CN112230880A CN202011148294.4A CN202011148294A CN112230880A CN 112230880 A CN112230880 A CN 112230880A CN 202011148294 A CN202011148294 A CN 202011148294A CN 112230880 A CN112230880 A CN 112230880A
Authority
CN
China
Prior art keywords
data
kernel
frame
sent
sequence number
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
CN202011148294.4A
Other languages
English (en)
Other versions
CN112230880B (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 Beijing Electronic Information Industry Co Ltd
Original Assignee
Inspur Beijing Electronic Information Industry 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 Beijing Electronic Information Industry Co Ltd filed Critical Inspur Beijing Electronic Information Industry Co Ltd
Priority to CN202011148294.4A priority Critical patent/CN112230880B/zh
Publication of CN112230880A publication Critical patent/CN112230880A/zh
Application granted granted Critical
Publication of CN112230880B publication Critical patent/CN112230880B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本申请公开了一种数据传输控制方法、装置、FPGA、介质,该方法包括:向接收端FPGA的第二kernel发送数据帧;接收所述第二kernel发送的ACK响应帧;根据所述ACK响应帧中的接收信用使用字段、帧响应序列号、接收端缓存剩余空间大小以及本地保存的发送信用消耗数据对本地数据发送端口的数据流量进行控制,其中,所述发送信用消耗数据表示所述第一kernel已向所述第二kernel发送的数据量。这样能够根据接收端的情况对发送端的数据传输进行自动控制,能够充分利用带宽,又不造成数据丢失。

Description

一种数据传输控制方法、装置、FPGA及介质
技术领域
本申请涉及FPGA技术领域,特别涉及一种数据传输控制方法、装置、FPGA、介质。
背景技术
随着大数据、物联网、移动互联、云计算等技术的蓬勃发展,大量的数据需要高效的实时处理分析,由于数据的分析、处理等都会占用大量的服务器资源,所以异构加速平台已成为了主要选择的方向,这样可以将有关数据计算卸载到异构加速平台处理。随着FPGA(Field Programmable Gate Array现场可编程与门阵列)器件的快速发展,为实现异构加速平台的应用提供了一条新的实现途经。
利用FPGA的并行和低延时特性,不仅可从CPU卸载大量需要计算数据到FPGA的kernel中进行计算处理,也可以在分布式网络中将需要计算的数据分布到各FPGA的kernel上计算。互联的FPGA kernel在数据传输过程中,如果没有流量控制,可能会导致数据的丢失或是内存极大的消耗,也会消耗整体的处理带宽。因此在实现多路kernel互联的数据传输过程中,流量控制能够保证数据流不会造成严重的拥塞,可靠传输机制能够保证数据的正确。
如图1所示,现有的数据流控方法是在发送端实现一个类似限速器的静态限流,数据量从发送端发送出来之后,先传输到限速器中进行速率控制,对数据传输速率进行调整之后,再发送到接收端。例如发送端的速率是2MB/s,但经过限速器的限流后,发送到发送端缓存(Buffer)的速率会降到1MB/s,这样的话在数据在网络传输以及在接收端接收的数据都是以1MB/s传输,这样发送端速率和接收端速率匹配起来,能稳定的传输数据。
发明人发现上述现有技术中可能存在以下技术问题,由于不知道接收端能够承受最大的速率是多少,所以需要随时根据情况手动修改限速器的速率,而接收端可能会动态随时的波动,造成不能够及时调整,会存在流量忽大忽小的情况,导致带宽不能充分利用。若发送端发送速率太大,会造成接收端接收的数据有丢失,若发送端发送速率太小,会造成带宽使用的浪费。
发明内容
有鉴于此,本申请的目的在于提供一种数据传输控制方法、装置、FPGA、介质,能够根据接收端的情况对发送端的数据传输进行自动控制,能够充分利用带宽,又不造成数据丢失。其具体方案如下:
第一方面,本申请公开了一种数据传输控制方法,应用于发送端FPGA的第一kernel,包括:
向接收端FPGA的第二kernel发送数据帧,其中,所述数据帧中包括帧请求序列号,所述帧请求序列号表示所述第一kernel已向所述第二kernel发送的数据帧数量;
接收所述第二kernel发送的ACK响应帧,其中,所述ACK响应帧中包括接收信用使用字段、帧响应序列号、接收端缓存剩余空间大小,所述接收信用使用字段表示所述第二kernel接收到的所述第一kernel发送的数据量,所述帧响应序列号表示所述第二kernel接收到的所述第一kernel发送的数据帧数量;
根据所述接收信用使用字段、所述帧响应序列号、所述接收端缓存剩余空间大小以及本地保存的发送信用消耗数据对本地数据发送端口的数据流量进行控制,其中,所述发送信用消耗数据表示所述第一kernel已向所述第二kernel发送的数据量。
可选地,所述向接收端FPGA的第二kernel发送数据帧,包括:
对本地存储的帧请求序列号进行加1,得到当前帧请求序列号,并将当前帧请求序列号添加到待发送的数据帧中;
将所述待发送的数据帧中的数据字节数累加到所述发送信用消耗数据上;
向接收端FPGA的第二kernel发送所述待发送的数据帧,以便所述第二kernel在接收到所述数据帧后,将所述数据帧中的当前帧请求序列号与本地保存的期望帧序列号进行比对,并在当前帧请求序列号与本地保存的期望帧序列号一致时,对所述第二kernel中的帧响应序列号进行加1,以及在所述第二kernel中的接收信用使用数据累加上接收到的字节数,其中,所述期望帧序列号表示所述第二kernel当前期望接收到的帧请求序列号。
可选地,所述接收所述第二kernel发送的ACK响应帧,包括:
接收所述第二kernel在将所述待发送的数据帧对应的数据缓存到接收端缓存之后发送的ACK响应帧;
和/或,接收所述第二kernel按照预设时间间隔发送的ACK响应帧。
可选地,所述根据所述接收信用使用字段、所述帧响应序列号、所述接收端缓存剩余空间大小以及本地保存的发送信用消耗数据对本地数据发送端口的数据流量进行控制,包括:
对所述接收信用使用字段中的接收信用使用数据和本地保存的发送信用消耗数据进行比较;
如果所述接收信用使用字段中的接收信用使用数据小于本地保存的发送信用消耗数据,则根据所述帧响应序列号、所述接收端缓存剩余空间大小对本地数据发送端口的数据流量进行控制。
可选地,所述根据所述帧响应序列号、所述接收端缓存剩余空间大小对本地数据发送端口的数据流量进行控制,包括:
根据所述帧响应序列号和所述接收端缓存剩余空间大小确定出所述第一kernel已发送且所述第二kernel中未接收到的目标数据帧;
重新向所述第二kernel发送所述目标数据帧。
可选地,所述根据所述帧响应序列号和所述接收端缓存剩余空间大小确定出所述第一kernel已发送且所述第二kernel中未接收到的目标数据帧,包括:
根据所述帧响应序列号确定出所述第一kernel已发送且所述第二kernel中未接收到的第一目标数据帧;
判断所述接收端缓存剩余空间大小是否小于或等于预设缓存空间大小阈值;
如果所述接收端缓存剩余空间大小小于或等于预设缓存空间大小阈值,则从所述第一目标数据帧中确定出数据量等于所述接收端缓存剩余空间大小的第二目标数据帧。
可选地,所述根据所述帧响应序列号确定出所述第一kernel已发送且所述第二kernel中未接收到的第一目标数据帧,包括:
将所述帧响应序列号作为地址从预设RAM中读取出第一指针数值,其中,所述预设RAM中以帧请求序列号为地址存储各个帧请求序列号对应的数据的指针数值;
对所述第一指针数值与预设FIFO当前的第二指针数值进行比对;
如果所述第一指针数值与预设FIFO当前的第二指针数值不一致,则将所述预设FIFO中从所述第一指针数值对应的数据开始到所述第二指针数值对应的数据作为第一目标数据帧,其中,所述预设FIFO用于存储所述第一kernel已向所述第二kernel发送的数据。
第二方面,本申请公开了一种数据传输控制装置,应用于发送端FPGA的第一kernel,包括:
数据帧发送模块,用于向接收端FPGA的第二kernel发送数据帧,其中,所述数据帧中包括帧请求序列号,所述帧请求序列号表示所述第一kernel已向所述第二kernel发送的数据帧数量;
ACK响应帧接收模块,用于接收所述第二kernel发送的ACK响应帧,其中,所述ACK响应帧中包括接收信用使用字段、帧响应序列号、接收端缓存剩余空间大小,所述接收信用使用字段表示所述第二kernel接收到的所述第一kernel发送的数据量,所述帧响应序列号用于表示所述第二kernel接收到的所述第一kernel发送的数据帧数量;
流量控制模块,用于根据所述接收信用使用字段、所述帧响应序列号、所述接收端缓存剩余空间大小以及本地保存的发送信用消耗数据对本地数据发送端口的数据流量进行控制,其中,所述发送信用消耗数据表示所述第一kernel已向所述第二kernel发送的数据量。
第三方面,本申请公开了一种FPGA,包括:
存储单元和处理单元;
其中,所述存储单元,用于存储计算机程序;
所述处理单元,用于执行所述计算机程序,以实现前述公开的数据传输控制方法。
第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的数据传输控制方法。
可见,本申请先向接收端FPGA的第二kernel发送数据帧,其中,所述数据帧中包括帧请求序列号,所述帧请求序列号表示所述第一kernel已向所述第二kernel发送的数据帧数量,并接收所述第二kernel发送的ACK响应帧,其中,所述ACK响应帧中包括接收信用使用字段、帧响应序列号、接收端缓存剩余空间大小,所述接收信用使用字段表示所述第二kernel接收到的所述第一kernel发送的数据量,所述帧响应序列号表示所述第二kernel接收到的所述第一kernel发送的数据帧数量,然后便可以根据所述接收信用使用字段、所述帧响应序列号、所述接收端缓存剩余空间大小以及本地保存的发送信用消耗数据对本地数据发送端口的数据流量进行控制,其中,所述发送信用消耗数据表示所述第一kernel已向所述第二kernel发送的数据量。有鉴于此,发送端FPGA的第一kernel在向接收端FPGA的第二kernel发送数据帧后,会接收到接收端FPGA的第二kernel返回的ACK响应帧,便可以从接收到的ACK响应帧中可以获取到第二kernel已经接收到第一kernel发送的数据量以及数据帧数量,再结合第一kernel自身中记录的已经向第二kernel发送的数据量,对第一kernel对应的数据发送端口的数据流量进行控制,这样发送端FPGA的第一kernel可以结合自身记录的已经向接收端FPGA的第二kernel发送的数据量以及第二kernel反馈的接收到的数据量,看第二kernel是否接收到已发送的全部数据量,来进行第一kernel的数据流量进行控制,这样就可以根据接收端的情况对发送端的数据传输进行自动控制,能够充分利用带宽,又不造成数据丢失。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为一种现有的数据传输控制流程图;
图2为本申请公开的一种数据传输控制方法流程图;
图3为本申请公开的一种FPGA连接示意图;
图4为本申请公开的一种FPGA连接示意图;
图5为本申请公开的一种具体的数据传输控制方法流程图;
图6为本申请公开的一种具体的数据传输控制方法流程图;
图7为本申请公开的一种数据传输控制装置结构示意图;
图8为本申请公开的一种FPGA结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,互联的kernel之间的数据流控方法是在发送端实现一个类似限速器的静态限流,数据量从发送端发送出来之后,先传输到限速器中进行速率控制,对数据传输速率进行调整之后,再发送到接收端。例如发送端的速率是2MB/s,但经过限速器的限流后,发送到发送端缓存(Buffer)的速率会降到1MB/s,这样的话在数据在网络传输以及在接收端接收的数据都是以1MB/s传输,这样发送端速率和接收端速率匹配起来,能稳定的传输数据。由于不知道接收端能够承受最大的速率是多少,所以需要随时根据情况手动修改限速器的速率,而接收端可能会动态随时的波动,造成不能够及时调整,会存在流量忽大忽小的情况,带宽不能充分利用。若发送端发送速率太大,会造成接收端接收的数据有丢失,若发送端发送速率太小,会造成带宽使用的浪费。有鉴于此,本申请提出了一种数据传输控制方法,能够根据接收端的情况对发送端的数据传输进行自动控制,能够充分利用带宽,又不造成数据丢失。
参见图2所示,本申请实施例公开了一种数据传输控制方法,应用于发送端FPGA的第一kernel,该方法包括:
步骤S11:向接收端FPGA的第二kernel发送数据帧,其中,所述数据帧中包括帧请求序列号,所述帧请求序列号表示所述第一kernel已向所述第二kernel发送的数据帧数量。
参见图3所示,各个FPGA之间可以直接互联。参见图4所示,各个FPGA之间也可以通过交换机互联。
在具体的实施过程中,所述第一kernel会向接收端FPGA的第二kernel发送数据帧,其中,所述数据帧的头信息中一般包括帧类型、帧请求序列号以及ID(identity,身份)信息。帧类型表示当期帧是数据帧还是ACK响应帧,帧请求序列号表示所述第一kernel已向所述第二kernel发送的数据帧数量,ID信息包括所述发送端FPGA的ID信息,以及所述第一kernel的ID信息,所述接收端FPGA的ID信息,以及所述第二kernel的ID信息。所述发送端FPGA可以包括多个kernel,所述接收端FPGA也可以包括多个kernel。
具体的,向接收端FPGA的第二kernel发送数据帧,包括:对本地存储的帧请求序列号进行加1,得到当前帧请求序列号,并将当前帧请求序列号添加到待发送的数据帧中;将所述待发送的数据帧中的数据字节数累加到所述发送信用消耗数据上;向接收端FPGA的第二kernel发送所述待发送的数据帧,以便所述第二kernel在接收到所述数据帧后,将所述数据帧中的当前帧请求序列号与本地保存的期望帧序列号进行比对,并在当前帧请求序列号与本地保存的期望帧序列号一致时,对所述第二kernel中的帧响应序列号进行加1,以及在所述第二kernel中的接收信用使用数据累加上接收到的字节数,其中,所述期望帧序列号表示所述第二kernel当前期望接收到的帧请求序列号。
根据配置的接收端ID信息,发送端FPGA的第一kernel开始发送数据帧给所对应的接收端FPGA的第二kernel,第一kernel在每发送一个数据帧时会将帧请求序列号做累加操作,并将该数值添加到帧头信息的帧请求序列号字段中,同时内部累计所发送的字节个数,即发送信用消耗数据。
所述接收端的第二kernel内部有一个期望帧序列号(从0开始),每接收到一帧数据帧就会将此帧的帧请求序列号与期望帧序列号做对比,如果一样,则将此帧接收缓存并对帧响应序列号加1操作,如果不一样,则该帧丢弃处理并期望帧序列号保持接收到该帧之间的原值。当接收到正确帧请求序列号时,则在所述第二kernel中的接收信用使用数据累加上接收到该帧中的字节数。
步骤S12:接收所述第二kernel发送的ACK响应帧,其中,所述ACK响应帧中包括接收信用使用字段、帧响应序列号、接收端缓存剩余空间大小,所述接收信用使用字段表示所述第二kernel接收到的所述第一kernel发送的数据量,所述帧响应序列号表示所述第二kernel接收到的所述第一kernel发送的数据帧数量。
在所述第二kernel接收所述第一kernel发送的数据帧之后,如果本次接收到的数据帧中的帧请求序列号和之前接收到的数据帧中的帧请求序列号不相同,则向所述第一kernel发送ACK响应帧,和/或,按照预设时间间隔向所述第一kernel发送ACK响应帧。所以所述接收所述第二kernel发送的ACK响应帧,包括:接收所述第二kernel在将所述待发送的数据帧对应的数据缓存到接收端缓存之后发送的ACK响应帧;和/或,接收所述第二kernel按照预设时间间隔发送的ACK响应帧。其中,所述ACK响应帧中包括接收信用使用字段、帧响应序列号、接收端缓存剩余空间大小,所述接收信用使用字段表示所述第二kernel接收到的所述第一kernel发送的数据量,所述帧响应序列号表示所述第二kernel接收到的所述第一kernel发送的数据帧数量,此外,所述ACK响应帧中还需要包括ID信息,包括接收端FPGA的ID信息,接收端FPGA的kernel信息,以及发送端FPGA的ID信息,发送端FPGA的kernel信息,当所述第二kernel向所述第一kernel发送ACK响应帧时,接收端FPGA的kernel便是所述第一kernel,发送端FPGA的kernel便是所述第二kernel。
步骤S13:根据所述接收信用使用字段、所述帧响应序列号、所述接收端缓存剩余空间大小以及本地保存的发送信用消耗数据对本地数据发送端口的数据流量进行控制,其中,所述发送信用消耗数据表示所述第一kernel已向所述第二kernel发送的数据量。
在接收到所述ACK响应帧之后,所述第一kernel便可以根据所述接收信用使用字段、所述帧响应序列号、所述接收端缓存剩余空间大小以及本地保存的发送信用消耗数据对本地数据发送端口的数据流量进行控制,其中,所述发送信用消耗数据表示所述第一kernel已向所述第二kernel发送的数据量。
也即,第一kernel便可以根据所述接收信用使用字段、所述帧响应序列号、所述接收端缓存剩余空间大小以及本地保存的发送信用消耗数据进行重发控制等数据流量控制操作。
可见,本申请先向接收端FPGA的第二kernel发送数据帧,其中,所述数据帧中包括帧请求序列号,所述帧请求序列号表示所述第一kernel已向所述第二kernel发送的数据帧数量,并接收所述第二kernel发送的ACK响应帧,其中,所述ACK响应帧中包括接收信用使用字段、帧响应序列号、接收端缓存剩余空间大小,所述接收信用使用字段表示所述第二kernel接收到的所述第一kernel发送的数据量,所述帧响应序列号用于表示所述第二kernel接收到的所述第一kernel发送的数据帧数量,然后便可以根据所述接收信用使用字段、所述帧响应序列号、所述接收端缓存剩余空间大小以及本地保存的发送信用消耗数据对本地数据发送端口的数据流量进行控制,其中,所述发送信用消耗数据表示所述第一kernel已向所述第二kernel发送的数据量。有鉴于此,发送端FPGA的第一kernel在向接收端FPGA的第二kernel发送数据帧后,会接收到接收端FPGA的第二kernel返回的ACK响应帧,便可以从接收到的ACK响应帧中可以获取到第二kernel已经接收到第一kernel发送的数据量以及数据帧数量,再结合第一kernel自身中记录的已经向第二kernel发送的数据量,对第一kernel对应的数据发送端口的数据流量进行控制,这样发送端FPGA的第一kernel可以结合自身记录的已经向接收端FPGA的第二kernel发送的数据量以及第二kernel反馈的接收到的数据量,看第二kernel是否接收到已发送的全部数据量,来进行第一kernel的数据流量进行控制,这样就可以根据接收端的情况对发送端的数据传输进行自动控制,能够充分利用带宽,又不造成数据丢失。
参见图5所示,本申请实施例公开了一种具体的数据传输控制方法,应用于发送端FPGA的第一kernel,该方法包括:
步骤S21:向接收端FPGA的第二kernel发送数据帧,其中,所述数据帧中包括帧请求序列号,所述帧请求序列号表示所述第一kernel已向所述第二kernel发送的数据帧数量。
步骤S22:接收所述第二kernel发送的ACK响应帧,其中,所述ACK响应帧中包括接收信用使用字段、帧响应序列号、接收端缓存剩余空间大小,所述接收信用使用字段表示所述第二kernel接收到的所述第一kernel发送的数据量,所述帧响应序列号表示所述第二kernel接收到的所述第一kernel发送的数据帧数量。
步骤S21和步骤S22的具体实施方式可以参考前述实施例中公开的内容,在此不再进行赘述。
步骤S23:对所述接收信用使用字段中的接收信用使用数据和本地保存的的发送信用消耗数据进行比较。
在所述第一kernel接收到所述ACK响应帧之后,还需要根据将所述接收信用使用字段、所述帧响应序列号、所述接收端缓存剩余空间大小以及本地保存的发送信用消耗数据对本地数据发送端口的数据流量进行控制。
具体的,就是先对所述接收信用使用字段中的接收信用使用数据和本地保存的的发送信用消耗数据进行比较,这样可以判断出所述第二kernel是否接收到所述第一kernel发送的全部数据。
步骤S24:如果所述接收信用使用字段中的接收信用使用数据小于本地保存的发送信用消耗数据,则根据所述帧响应序列号、所述接收端缓存剩余空间大小对本地数据发送端口的数据流量进行控制。
如果所述接收信用使用字段中的接收信用使用数据小于本地保存的发送信用消耗数据,则表示所述第二kernel没有全部接收到所述第一kernel发送的数据,所以需要根据所述帧响应序列号、所述接收端缓存剩余空间大小对本地数据发送端口的数据流量进行控制。
具体的,就是需要根据所述帧响应序列号和所述接收端缓存剩余空间大小确定出所述第一kernel已发送且所述第二kernel中未接收到的目标数据帧;重新向所述第二kernel发送所述目标数据帧。
具体的,所述根据所述帧响应序列号和所述接收端缓存剩余空间大小确定出所述第一kernel已发送且所述第二kernel中未接收到的目标数据帧,包括:根据所述帧响应序列号确定出所述第一kernel已发送且所述第二kernel中未接收到的第一目标数据帧;判断所述接收端缓存剩余空间大小是否小于或等于预设缓存空间大小阈值;如果所述接收端缓存剩余空间大小小于或等于预设缓存空间大小阈值,则从所述第一目标数据帧中确定出数据量等于所述接收端缓存剩余空间大小的第二目标数据帧。
也即,先根据所述帧响应序列号确定出所述第二kernel接收到了哪些所述第一kernel发送的数据帧,再结合所述第一kernel中的所述帧请求序列号便可以确定出哪些数据帧是所述第一kernel已经发送出去但是所述第二kernel没有接收到的,将这些数据帧作为第一目标数据帧。由于在实际过程中,需要考虑所述第二kernel中的接收端缓存剩余空间大小可能不能存储全部的所述第一目标数据帧,所以还需要判断所述接收端缓存剩余空间大小是否小于或等于预设缓存空间大小阈值,当所述接收端缓存剩余空间大小小于或等于预设缓存空间大小阈值时,表明所述第二kernel中的接收端缓存剩余空间大小不能存储全部的所述第一目标数据帧,所以需要从所述第一目标数据帧中确定出数据量等于所述接收端缓存剩余空间大小的第二目标数据帧,重新向所述第二kernel发送所述第二目标数据帧,当所述接收端缓存剩余空间大小大于预设缓存空间大小阈值时,表明所述第二kernel中的接收端缓存剩余空间大小可以存储全部的所述第一目标数据帧,所以直接将所述第一目标数据帧重新发送到所述第二kernel便可以。
在实际应用中,所述根据所述帧响应序列号确定出所述第一kernel已发送且所述第二kernel中未接收到的第一目标数据帧,包括:将所述帧响应序列号作为地址从预设RAM中读取出第一指针数值,其中,所述预设RAM中以帧请求序列号为地址存储各个帧请求序列号对应的数据的指针数值;对所述第一指针数值与预设FIFO当前的第二指针数值进行比对;如果所述第一指针数值与预设FIFO当前的第二指针数值不一致,则将所述预设FIFO中从所述第一指针数值对应的数据开始到所述第二指针数值对应的数据作为第一目标数据帧,其中,所述预设FIFO用于存储所述第一kernel已向所述第二kernel发送的数据。
也即,需要预设FIFO(First Input First Output,先进先出队列)以及RAM(random access memory,随机存取存储器),其中,预设FIFO中存储已经向第二kernel发送的数据,预设RAM中以帧请求序列号为地址,存储各个数据帧对应的指针数值。例如,帧请求序列号为1的数据存储到所述预设FIFO中的1到100位置上,则帧请求序列号为1对应的指针数值为100,以1为地址,将100存储到所述预设RAM中地址为1的存储空间中。帧请求序列号为2的数据存储到所述预设FIFO中的101到200位置上,则帧请求序列号为2对应的指针数值为200,以2为地址,将200存储到所述预设RAM中地址为2的存储空间中。这样便可以先根据所述响应帧序列号从预设RAM中读取出第一指针数值,然后对所述第一指针数值与预设FIFO当前的第二指针数值进行比对,如果所述第一指针数值与预设FIFO当前的第二指针数值不一致,则表明所述第二kernel未全部接收到所述第一kernel发送的数据,需要将所述预设FIFO中从所述第一指针数值对应的数据开始到所述第二指针数值对应的数据的这部分数据作为第一目标数据帧。如果所述第一指针数值与预设FIFO当前的第二指针数值一致,则表明所述第二kernel接收到所述第一kernel发送的全部数据。
向所述第二kernel发送所述第一目标数据帧或所述第二目标数据帧之后,直到所述第二kernel发送的ACK响应帧中的接收端信用使用字段中的数据等于所述第一kernel中保存的发送信用消耗数据时,再向所述第二kernel发送新的数据帧,所述新的数据帧为之前所述第一kernel没有向所述第二kernel发送过的数据。
每块FPGA的每一路kernel都有自己一套数据传输控制机制,不仅互不干扰,也能充分利用传输带宽。通过发送端的kernel中的发送信用消耗与接收端ACK响应帧的接收信用使用所表示的链路状态进行流量控制;通过对数据帧中的帧请求序列号和ACK响应帧的帧响应序列号作对比,保证数据传输的正确性。这样实现了各kernel的有效流量控制及可靠性传输,提高FPGA异构加速平台算法处理效率。
参见图6所示,为数据传输控制流程示意图。发送端的kernel在向接收端的kernel发送数据帧之后,接收端的kernel根据数据帧中的帧请求序列号等确定是否对接收端的kernel中的接收信用使用(图中的信用使用)以及接收端缓存剩余空间(图中的Rx缓存空间)以及帧响应序列号进行更新,便根据结果向发送端的kernel发送ACK响应帧,发送端的kernel根据ACK响应帧中的数据确定是否需要进行数据帧重传等数据流量控制。
参见图7所示,本申请实施例公开了一种数据传输控制装置,应用于发送端FPGA的第一kernel,包括:
数据帧发送模块11,用于向接收端FPGA的第二kernel发送数据帧,其中,所述数据帧中包括帧请求序列号,所述帧请求序列号表示所述第一kernel已向所述第二kernel发送的数据帧数量;
ACK响应帧接收模块12,用于接收所述第二kernel发送的ACK响应帧,其中,所述ACK响应帧中包括接收信用使用字段、帧响应序列号、接收端缓存剩余空间大小,所述接收信用使用字段表示所述第二kernel接收到的所述第一kernel发送的数据量,所述帧响应序列号表示所述第二kernel接收到的所述第一kernel发送的数据帧数量;
流量控制模块13,用于根据将所述接收信用使用字段、所述帧响应序列号、所述接收端缓存剩余空间大小以及本地保存的发送信用消耗数据对本地数据发送端口的数据流量进行控制,其中,所述发送信用消耗数据表示所述第一kernel已向所述第二kernel发送的数据量。
可见,本申请先向接收端FPGA的第二kernel发送数据帧,其中,所述数据帧中包括帧请求序列号,所述帧请求序列号表示所述第一kernel已向所述第二kernel发送的数据帧数量,并接收所述第二kernel发送的ACK响应帧,其中,所述ACK响应帧中包括接收信用使用字段、帧响应序列号、接收端缓存剩余空间大小,所述接收信用使用字段表示所述第二kernel接收到的所述第一kernel发送的数据量,所述帧响应序列号表示所述第二kernel接收到的所述第一kernel发送的数据帧数量,然后便可以根据所述接收信用使用字段、所述帧响应序列号、所述接收端缓存剩余空间大小以及本地保存的发送信用消耗数据对本地数据发送端口的数据流量进行控制,其中,所述发送信用消耗数据表示所述第一kernel已向所述第二kernel发送的数据量。有鉴于此,发送端FPGA的第一kernel在向接收端FPGA的第二kernel发送数据帧后,会接收到接收端FPGA的第二kernel返回的ACK响应帧,便可以从接收到的ACK响应帧中可以获取到第二kernel已经接收到第一kernel发送的数据量以及数据帧数量,再结合第一kernel自身中记录的已经向第二kernel发送的数据量,对第一kernel对应的数据发送端口的数据流量进行控制,这样发送端FPGA的第一kernel可以结合自身记录的已经向接收端FPGA的第二kernel发送的数据量以及第二kernel反馈的接收到的数据量,看第二kernel是否接收到已发送的全部数据量,来进行第一kernel的数据流量进行控制,这样就可以根据接收端的情况对发送端的数据传输进行自动控制,能够充分利用带宽,又不造成数据丢失。
具体的,所述数据帧发送模块11,用于:
对本地存储的帧请求序列号进行加1,得到当前帧请求序列号,并将当前帧请求序列号添加到待发送的数据帧中;
将所述待发送的数据帧中的数据字节数累加到所述发送信用消耗数据上;
向接收端FPGA的第二kernel发送所述待发送的数据帧,以便所述第二kernel在接收到所述数据帧后,将所述数据帧中的当前帧请求序列号与本地保存的期望帧序列号进行比对,并在当前帧请求序列号与本地保存的期望帧序列号一致时,对所述第二kernel中的帧响应序列号进行加1,以及在所述第二kernel中的接收信用使用数据累加上接收到的字节数,其中,所述期望帧序列号表示所述第二kernel当前期望接收到的帧请求序列号。
进一步的,所述ACK响应帧接收模块12,用于:
接收所述第二kernel在将所述待发送的数据帧对应的数据缓存到接收端缓存之后发送的ACK响应帧;
和/或,接收所述第二kernel按照预设时间间隔发送的ACK响应帧。
具体的,所述流量控制模块13,用于:
对所述接收信用使用字段中的接收信用使用数据和本地保存的的发送信用消耗数据进行比较;
如果所述接收信用使用字段中的接收信用使用数据小于本地保存的的发送信用消耗数据,则根据所述帧响应序列号、所述接收端缓存剩余空间大小对本地数据发送端口的数据流量进行控制。
具体的,所述流量控制模块13,用于:
根据所述帧响应序列号和所述接收端缓存剩余空间大小确定出所述第一kernel已发送且所述第二kernel中未接收到的目标数据帧;
重新向所述第二kernel发送所述目标数据帧。
具体的,所述流量控制模块13,用于:
根据所述帧响应序列号确定出所述第一kernel已发送且所述第二kernel中未接收到的第一目标数据帧;
判断所述接收端缓存剩余空间大小是否小于或等于预设缓存空间大小阈值;
如果所述接收端缓存剩余空间大小小于或等于预设缓存空间大小阈值,则从所述第一目标数据帧中确定出数据量等于所述接收端缓存剩余空间大小的第二目标数据帧。
具体的,所述流量控制模块13,用于:
将所述帧响应序列号作为地址从预设RAM中读取出第一指针数值,其中,所述预设RAM中以帧请求序列号为地址存储各个帧请求序列号对应的数据的指针数值;
对所述第一指针数值与预设FIFO当前的第二指针数值进行比对;
如果所述第一指针数值与预设FIFO当前的第二指针数值不一致,则将所述预设FIFO中从所述第一指针数值对应的数据开始到所述第二指针数值对应的数据作为第一目标数据帧,其中,所述预设FIFO用于存储所述第一kernel已向所述第二kernel发送的数据。
进一步的,参见图8所示,本申请实施例还公开了一种FPGA,包括:处理单元21和存储单元22。
其中,所述存储单元22,用于存储计算机程序;所述处理单元21,用于执行所述计算机程序,以实现前述实施例中公开的数据传输控制方法。
其中,关于上述数据传输控制方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
进一步的,本申请实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述任一实施例中公开的数据传输控制方法。
其中,关于上述数据传输控制方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得一系列包含其他要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种数据传输控制方法、装置、FPGA、介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种数据传输控制方法,其特征在于,应用于发送端FPGA的第一kernel,包括:
向接收端FPGA的第二kernel发送数据帧,其中,所述数据帧中包括帧请求序列号,所述帧请求序列号表示所述第一kernel已向所述第二kernel发送的数据帧数量;
接收所述第二kernel发送的ACK响应帧,其中,所述ACK响应帧中包括接收信用使用字段、帧响应序列号、接收端缓存剩余空间大小,所述接收信用使用字段表示所述第二kernel接收到的所述第一kernel发送的数据量,所述帧响应序列号表示所述第二kernel接收到的所述第一kernel发送的数据帧数量;
根据所述接收信用使用字段、所述帧响应序列号、所述接收端缓存剩余空间大小以及本地保存的发送信用消耗数据对本地数据发送端口的数据流量进行控制,其中,所述发送信用消耗数据表示所述第一kernel已向所述第二kernel发送的数据量。
2.根据权利要求1所述的数据传输控制方法,其特征在于,所述向接收端FPGA的第二kernel发送数据帧,包括:
对本地存储的帧请求序列号进行加1,得到当前帧请求序列号,并将当前帧请求序列号添加到待发送的数据帧中;
将所述待发送的数据帧中的数据字节数累加到所述发送信用消耗数据上;
向接收端FPGA的第二kernel发送所述待发送的数据帧,以便所述第二kernel在接收到所述数据帧后,将所述数据帧中的当前帧请求序列号与本地保存的期望帧序列号进行比对,并在当前帧请求序列号与本地保存的期望帧序列号一致时,对所述第二kernel中的帧响应序列号进行加1,以及在所述第二kernel中的接收信用使用数据累加上接收到的字节数,其中,所述期望帧序列号表示所述第二kernel当前期望接收到的帧请求序列号。
3.根据权利要求2所述的数据传输控制方法,其特征在于,所述接收所述第二kernel发送的ACK响应帧,包括:
接收所述第二kernel在将所述待发送的数据帧对应的数据缓存到接收端缓存之后发送的ACK响应帧;
和/或,接收所述第二kernel按照预设时间间隔发送的ACK响应帧。
4.根据权利要求1至3任一项所述的数据传输控制方法,其特征在于,所述根据所述接收信用使用字段、所述帧响应序列号、所述接收端缓存剩余空间大小以及本地保存的发送信用消耗数据对本地数据发送端口的数据流量进行控制,包括:
对所述接收信用使用字段中的接收信用使用数据和本地保存的发送信用消耗数据进行比较;
如果所述接收信用使用字段中的接收信用使用数据小于本地保存的发送信用消耗数据,则根据所述帧响应序列号、所述接收端缓存剩余空间大小对本地数据发送端口的数据流量进行控制。
5.根据权利要求4所述的数据传输控制方法,其特征在于,所述根据所述帧响应序列号、所述接收端缓存剩余空间大小对本地数据发送端口的数据流量进行控制,包括:
根据所述帧响应序列号和所述接收端缓存剩余空间大小确定出所述第一kernel已发送且所述第二kernel中未接收到的目标数据帧;
重新向所述第二kernel发送所述目标数据帧。
6.根据权利要求5所述的数据传输控制方法,其特征在于,所述根据所述帧响应序列号和所述接收端缓存剩余空间大小确定出所述第一kernel已发送且所述第二kernel中未接收到的目标数据帧,包括:
根据所述帧响应序列号确定出所述第一kernel已发送且所述第二kernel中未接收到的第一目标数据帧;
判断所述接收端缓存剩余空间大小是否小于或等于预设缓存空间大小阈值;
如果所述接收端缓存剩余空间大小小于或等于预设缓存空间大小阈值,则从所述第一目标数据帧中确定出数据量等于所述接收端缓存剩余空间大小的第二目标数据帧。
7.根据权利要求6所述的数据传输控制方法,其特征在于,所述根据所述帧响应序列号确定出所述第一kernel已发送且所述第二kernel中未接收到的第一目标数据帧,包括:
将所述帧响应序列号作为地址从预设RAM中读取出第一指针数值,其中,所述预设RAM中以帧请求序列号为地址存储各个帧请求序列号对应的数据的指针数值;
对所述第一指针数值与预设FIFO当前的第二指针数值进行比对;
如果所述第一指针数值与预设FIFO当前的第二指针数值不一致,则将所述预设FIFO中从所述第一指针数值对应的数据开始到所述第二指针数值对应的数据作为第一目标数据帧,其中,所述预设FIFO用于存储所述第一kernel已向所述第二kernel发送的数据。
8.一种数据传输控制装置,其特征在于,应用于发送端FPGA的第一kernel,包括:
数据帧发送模块,用于向接收端FPGA的第二kernel发送数据帧,其中,所述数据帧中包括帧请求序列号,所述帧请求序列号表示所述第一kernel已向所述第二kernel发送的数据帧数量;
ACK响应帧接收模块,用于接收所述第二kernel发送的ACK响应帧,其中,所述ACK响应帧中包括接收信用使用字段、帧响应序列号、接收端缓存剩余空间大小,所述接收信用使用字段表示所述第二kernel接收到的所述第一kernel发送的数据量,所述帧响应序列号表示所述第二kernel接收到的所述第一kernel发送的数据帧数量;
流量控制模块,用于根据所述接收信用使用字段、所述帧响应序列号、所述接收端缓存剩余空间大小以及本地保存的发送信用消耗数据对本地数据发送端口的数据流量进行控制,其中,所述发送信用消耗数据表示所述第一kernel已向所述第二kernel发送的数据量。
9.一种FPGA,其特征在于,包括:
存储单元和处理单元;
其中,所述存储单元,用于存储计算机程序;
所述处理单元,用于执行所述计算机程序,以实现权利要求1至7任一项所述的数据传输控制方法。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的数据传输控制方法。
CN202011148294.4A 2020-10-23 2020-10-23 一种数据传输控制方法、装置、fpga及介质 Active CN112230880B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011148294.4A CN112230880B (zh) 2020-10-23 2020-10-23 一种数据传输控制方法、装置、fpga及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011148294.4A CN112230880B (zh) 2020-10-23 2020-10-23 一种数据传输控制方法、装置、fpga及介质

Publications (2)

Publication Number Publication Date
CN112230880A true CN112230880A (zh) 2021-01-15
CN112230880B CN112230880B (zh) 2023-08-11

Family

ID=74110247

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011148294.4A Active CN112230880B (zh) 2020-10-23 2020-10-23 一种数据传输控制方法、装置、fpga及介质

Country Status (1)

Country Link
CN (1) CN112230880B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113992317A (zh) * 2021-09-28 2022-01-28 山东云海国创云计算装备产业创新中心有限公司 一种spi通信方法、装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101115008A (zh) * 2007-08-24 2008-01-30 中国科学院计算技术研究所 一种基于信誉的流量控制***、装置和方法
CN101534173A (zh) * 2009-04-20 2009-09-16 福建星网锐捷网络有限公司 一种数据流量控制方法和***
CN107864099A (zh) * 2017-10-23 2018-03-30 中国科学院空间应用工程与技术中心 一种异构fc网络的流量控制方法及***
CN108092908A (zh) * 2016-11-23 2018-05-29 华为技术有限公司 控制流量的方法和发送端设备
CN110213168A (zh) * 2018-02-28 2019-09-06 中航光电科技股份有限公司 一种fc转以太网的数据转换流量控制方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101115008A (zh) * 2007-08-24 2008-01-30 中国科学院计算技术研究所 一种基于信誉的流量控制***、装置和方法
CN101534173A (zh) * 2009-04-20 2009-09-16 福建星网锐捷网络有限公司 一种数据流量控制方法和***
CN108092908A (zh) * 2016-11-23 2018-05-29 华为技术有限公司 控制流量的方法和发送端设备
CN107864099A (zh) * 2017-10-23 2018-03-30 中国科学院空间应用工程与技术中心 一种异构fc网络的流量控制方法及***
CN110213168A (zh) * 2018-02-28 2019-09-06 中航光电科技股份有限公司 一种fc转以太网的数据转换流量控制方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113992317A (zh) * 2021-09-28 2022-01-28 山东云海国创云计算装备产业创新中心有限公司 一种spi通信方法、装置及存储介质

Also Published As

Publication number Publication date
CN112230880B (zh) 2023-08-11

Similar Documents

Publication Publication Date Title
CN108173938B (zh) 服务器负载分流方法及装置
JP2022552986A (ja) 情報送信方法、装置、読み取り可能な記憶媒体及び電子装置
US9569742B2 (en) Reducing costs related to use of networks based on pricing heterogeneity
CN113169896B (zh) 网络度量的连续校准
CN109218369B (zh) 远程过程调用请求控制方法及装置
CN110460412A (zh) 用于数据传输的方法和rdma网卡
US9130740B2 (en) Variable acknowledge rate to reduce bus contention in presence of communication errors
CN113300817B (zh) 数据传输方法以及装置
EP3952233A1 (en) Tcp congestion control method, apparatus, terminal, and readable storage medium
CN114039703A (zh) 数据传输方法、装置、设备和介质
JP2019106697A (ja) 相互接続ネットワークでのメッセージ再送遅延を動的に管理するための方法及びデバイス
CN112230880B (zh) 一种数据传输控制方法、装置、fpga及介质
WO2013163818A1 (en) Context-aware http compression
EP3886396A1 (en) Methods for dynamically controlling transmission control protocol push functionality and devices thereof
CN114390054A (zh) 一种核心网网络加速方法、电子设备及计算机存储介质
CN117375776A (zh) 一种数据超时重传方法及加速单元
CN109660589B (zh) 请求处理方法及装置、电子设备
CN110855510A (zh) 数据传输优化方法、装置、设备及介质
CN115913473A (zh) 一种数据选择性重传方法及其***、存储介质、电子设备
CN113259490B (zh) 基于udp传输协议的多级节点网络数据传输方法
CN111669431B (zh) 消息传输方法、装置、计算机设备和存储介质
CN114422425A (zh) 多链路聚合的数据传输方法、***、装置及存储介质
US11368400B2 (en) Continuously calibrated network system
US10601444B2 (en) Information processing apparatus, information processing method, and recording medium storing program
US20140237136A1 (en) Communication system, communication controller, communication control method, and medium

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
GR01 Patent grant
GR01 Patent grant