CN118101138A - 一种用于在应用层控制数据重传的方法和相关产品 - Google Patents

一种用于在应用层控制数据重传的方法和相关产品 Download PDF

Info

Publication number
CN118101138A
CN118101138A CN202211496930.1A CN202211496930A CN118101138A CN 118101138 A CN118101138 A CN 118101138A CN 202211496930 A CN202211496930 A CN 202211496930A CN 118101138 A CN118101138 A CN 118101138A
Authority
CN
China
Prior art keywords
data
information
receiving end
sender
transmitting
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.)
Pending
Application number
CN202211496930.1A
Other languages
English (en)
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.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp 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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN202211496930.1A priority Critical patent/CN118101138A/zh
Priority to PCT/CN2023/112582 priority patent/WO2024109174A1/zh
Publication of CN118101138A publication Critical patent/CN118101138A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1809Selective-repeat protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)

Abstract

本公开提供一种在应用层控制数据重传的方法和相关产品,其中该方法可以包括在组合处理装置中,该组合处理装置还可以包括通用互联接口和其他处理装置。所述计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与设备和其他处理装置连接,用于存储该设备和其他处理装置的数据。

Description

一种用于在应用层控制数据重传的方法和相关产品
技术领域
本公开涉及芯片领域,更具体地,涉及片间通信领域。
背景技术
随着神经网络规模的扩大,单机环境无法更好地独立完成训练任务,例如,单机的内存不足以放下整个神经网络模型、数据量太大无法加载等。在此情况下,通常需要引入分布式训练,即多个训练设备之间协同进行工作,通过互相之间的通信,作为整体***来完成协同任务。
但是,分布式***的基础是通信,而通信需要建立在通信介质之上。有些通信介质是可靠传输,如socket,PCIe等,应用层只要下发通信需求即可,在链路上的传输是可靠传输。可靠传输指的是接收方应用收到了完整且正确的数据。但是也存在不可靠传输,例如IP协议本身是不可靠的网络层传输协议,在数据发送之后,可能存在丢包,也可能存在出错,还可能存在丢回应。如何在不可靠的链路上进行可靠的传输,是所有通信都要面对的问题。
目前的主流做法是,在通信传输层来执行可靠的通信协议,来完成可靠传输。比较典型的是TCP协议,其通过确认应答和序列号、超时重传、流量控制、拥塞控制这4种主要机制,来保证传输的可靠性。在其他的链路上,NVIDIA采用NVlink,从链路层和协议层上保证了可靠传输。公开号为CN 110278094的专利申请则公开了一种基于链路延迟的超时重传装置,用来降低聚合链路重传时的丢包概率。公开号为CN 112312513 B的专利申请则在一种用于链路失败恢复的装置中,提高重传恢复的性能。
申请人发现,上述现有方案存在如下技术缺陷:
1.重传行为发生在传输层,需要在传输层维护更多的冗余信息,来标记重传的位置;
2.传输层需要额外的缓存区来存储已发送的信息用于重传,这增加了存储资源的消耗;
3.在传输层重传时,由于应用层对这一行为并不感知,因此可能依然要进行大流量通信,这需要流控模块来协调处理。
发明内容
本公开的目的在于解决现有技术中传输层重传所带来的缺陷,提供一种能够在应用层进行重传的方案。
根据本公开第一方面,提供一种用于在应用层控制数据重传的方法,包括:预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;接收并记录第一接收端信息,所述第一接收端信息表示数据被接收端接收到并反馈的第二数量,其中第二数量不大于第一数量;根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
根据本公开第二方面,提供一种用于在应用层控制数据重传的设备,包括:发送单元,用于预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;发送端信息更新单元,用于响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;接收单元,用于接收并记录第一接收端信息,所述第一接收端信息表示数据被接收端接收到并反馈的第二数量,其中第二数量不大于第一数量;重传判断单元,用于根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
根据本公开第三方面,提供一种用于在通信***中在应用层控制数据重传的方法,所述通信***包括:发送端,接收端和连接所述发送端与接收端的通信链路,所述方法包括:在发送端,向接收端预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;通过所述通信链路来传输所述数据;在接收端,如果接收到所述数据,则记录所述计数值;根据所述计数值来生成第二数量,所述第二数量表示所述数据被接收端接收到并反馈的数量;向发送端反馈第一接收端信息,所述第一接收端信息包括第二数量,并且第二数量不大于第一数量;在发送端,接收并记录所述第一接收端信息;根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
根据本公开第四方面,提供一种在应用层控制数据重传的通信***,所述通信***包括:发送端,接收端和连接所述发送端与接收端的通信链路,其中,所述发送端向接收端预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;所述发送端响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;所述通信链路用于传输所述数据;所述接收端如果接收到所述数据,则记录所述计数值;所述接收端根据所述计数值来生成第二数量,所述第二数量表示所述数据被接收端数据被接收端接收到并反馈的第二数量;所述接收端向发送端反馈第一接收端信息,所述第一接收端信息包括第二数量,并且第二数量不大于第一数量;所述发送端接收并记录所述第一接收端信息;所述发送端根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
根据本公开第五方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如上所述的方法。
根据本公开第六方面,提供一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。
根据本公开的技术方案,所带来的有益效果至少包括:在应用层进行软件层面的重传设计,可以降低传输层的硬件设计,因此开发快,硬件定制成本低。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1示出本披露实施例的一种板卡的结构示意图;
图2是示出此实施例的组合处理装置中的示意图;
图3示出了计算装置的内部结构示意图;
图4示出了处理核的内部架构;
图5示出了根据本公开一个实施方式的包括发送端和接收端的通信***的示意图;
图6示出了根据本公开一个实施方式的在通信***中在应用层控制数据重传的方法;
图7示出了根据本公开一个实施方式的正常通信过程的示意图;
图8示出了丢包/出错重传过程的示意图;
图9示出了接收端反馈的ACK被丢失的情况;
图10示出了根据本公开另一个方面的用于在应用层控制数据重传的方法的流程图;以及
图11示出了根据本公开一个方面的用于在应用层控制数据重传的设备。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。“第一”、“第二”、“第三”和“第四”等也不仅仅表示一个,而是也可以表示多个。第一本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
下面结合附图来详细描述本披露的具体实施方式。
现今的半导体制程是从一块完整的晶圆(wafer)开始的,晶圆由纯硅构成的圆形薄片,一般分为6英寸、8英寸、12英寸等多种规格,晶圆会被切割成一个个的小块,这小块称为晶粒(die)。每个晶粒上会贴装有芯片(chip),并布置好接线,以实现特定的电气功能。接着以晶粒为单位封装成为一个颗粒,封装的目的是安放、固定、密封、保护芯片和增强电热性能的作用,同时在芯片的触点上用导线连接到封装外壳的引脚上,一个芯片封装结构便完成了。
内存用于暂时存放片上***所需的运算数据,以及与外部存储器交换的数据。在此实施例中,内存可以是高宽带内存(high bandwidth memory,HBM),这是一种基于3D堆栈工艺制作的高性能DRAM,适用于高存储器带宽需求的应用场合,像是图形处理器、网上交换及转发设备(如路由器、交换器)等。
片上***(SoC)指的是在单个芯片上集成一个完整的***,对所有或部分必要的电子电路进行包分组的技术。在此实施例中,片上***装配在板卡上。图1示出本披露实施例的一种板卡10的结构示意图。如图1所示,板卡10包括组合处理装置101,其是一种人工智能运算单元,用以支持各类深度学***台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和大量的计算能力。
组合处理装置101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至组合处理装置101。组合处理装置101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如PCIe接口等。
板卡10还包括用于存储数据的外部存储器104,其包括一个或多个存储单元105。外部存储器104通过总线与控制器件106和组合处理装置101进行连接和数据传输。板卡10中的控制器件106配置用于对组合处理装置101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(Micro Controller Unit,MCU)。
图2是示出此实施例的组合处理装置101中的示意图。如图2中所示,组合处理装置101包括计算装置201、接口装置202、处理装置203和DRAM 204。在一种应用场景中,计算装置201、接口装置202、处理装置203整合成前述的片上***。在另一种应用场景中,计算装置201本身即为前述的片上***。
计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器、图形处理器或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(applicationspecific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
DRAM 204即为前述的高宽带内存,用以存储待处理的数据,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了计算装置201的内部结构示意图。计算装置201用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,图中的计算装置201采用多核分层结构设计,其包括外部存储控制器301、外设通信模块302、片上互联模块303、同步模块304以及多个集群305。
外部存储控制器301可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的DRAM204,从而自片外读取数据或是将数据写入。外设通信模块302用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块303将外部存储控制器301、外设通信模块302及多个集群305连接起来,用以在各个模块间传输数据和控制信号。同步模块304是一种全局同步屏障控制器(global barrier controller,GBC),用以协调各集群的工作进度,确保信息的同步。多个集群305是计算装置201的计算核心,在图中示例性地展示4个,随着硬件的发展,本披露的计算装置201还可以包括8个、16个、64个、甚至更多的集群305。集群305用以高效地执行深度学习算法。
每个集群305包括多个处理器核(IPU core)306及一个存储核(MEM core)307。
处理器核306在图中示例性地展示4个,本披露不限制处理器核306的数量。其内部架构如图4所示。每个处理器核306包括三大模块:控制模块41、运算模块42及存储模块43。
控制模块41用以协调并控制运算模块42和存储模块43的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)411及指令译码单元(instructiondecode unit,IDU)412。取指单元411用以获取来自处理装置203的指令,指令译码单元412则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块42和存储模块43。
运算模块42包括向量运算单元421及矩阵运算单元422。向量运算单元421用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元422负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块43用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)431、权值存储单元(weight RAM,WRAM)432、输入/输出直接内存访问模块(input/outputdirect memory access,IODMA)433、搬运直接内存访问模块(move direct memoryaccess,MVDMA)434。NRAM 431用以存储供处理器核306计算的输入、输出数据及中间结果;WRAM 432则用以存储深度学习网络的权值;IODMA 433通过广播总线309控制NRAM 431/WRAM 432与DRAM 204的访存;MVDMA 434则用以控制NRAM 431/WRAM 432与SRAM 308的访存。
回到图3,存储核307主要用以存储和通信,即存储处理器核306间的共享数据或中间结果、以及执行集群305与DRAM 204之间的通信、集群305间彼此的通信、处理器核306间彼此的通信等。在其他实施例中,存储核307具有标量运算的能力,用以执行标量运算。
存储核307包括共享存储单元(SRAM)308、广播总线309、集群直接内存访问模块(cluster direct memory access,CDMA)310及全局直接内存访问模块(global directmemory access,GDMA)311。SRAM 308承担高性能数据中转站的角色,在同一个集群305内不同处理器核306之间所复用的数据不需要通过处理器核306各自向DRAM 204获得,而是经SRAM 308在处理器核306间中转,存储核307只需要将复用的数据从SRAM 308迅速分发给多个处理器核306即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
广播总线309、CDMA 310及GDMA 311则分别用来执行处理器核306间的通信、集群305间的通信和集群305与DRAM 204的数据传输。以下将分别说明。
广播总线309用以完成集群305内各处理器核306间的高速通信,此实施例的广播总线309支持核间通信方式包括单播、多播与广播。单播是指点对点(即单一处理器核至单一处理器核)的数据传输,多播是将一份数据从SRAM 308传输到特定几个处理器核306的通信方式,而广播则是将一份数据从SRAM 308传输到所有处理器核306的通信方式,属于多播的一种特例。
CDMA 310用以控制在同一个计算装置201内不同集群305间的SRAM 308的访存。GDMA 311与外部存储控制器301协同,用以控制集群305的SRAM 308到DRAM 204的访存,或是将数据自DRAM 204读取至SRAM 308中。
图5示出了根据本公开一个实施方式的包括发送端和接收端的通信***的示意图。
通信***可以按照功能进行组件划分,分为发送端1和接收端2。发送端1可以包括第一存储模块11,第一指令执行模块12,第一发送模块13,第一接收模块14和第一控制模块15,接收端2包括第二存储模块21,第二指令执行模块22,第二发送模块23,第二接收模块24和第二控制模块25。
对于发送端1,每个模块的功能为:
第一存储模块11:用于存储数据和指令。其中,数据来源可以是本地原有数据,也可以是上游设备发送来的数据(多级发送时),也可以是上游设备发送来的数据与本地数据计算后的结果数据。
第一指令执行模块12:用于执行第一存储模块11中的指令,负责完成应用层逻辑的执行处理。在本通信***中,发送请求由指令发起,即由应用层发起通信行为。此外,第一指令执行模块12还可以根据指令来完成本地运算。
第一发送模块13:发送端1通过第一发送模块13与物理链路直接相连。第一发送模块13用于发送数据和控制信息。该第一发送模块13可以对发送的通信包进行统计,并对每个包的响应进行接收。如果接收到NACK(negative acknowledgment,意为异常的响应)或长时间未收到ACK(Acknowledgement,意为正向反馈,表示接收端已正确接收相应的包),则记录该异常状态,并向第一控制模块15上报中断。如果在规定时间内接收到ACK,则可以对该ACK再回复ACK。
第一接收模块14:发送端可以通过第一接收模块14与物理链路直接相连。第一接收模块14在发送端1上仅用于接收控制信息。
第一控制模块15:用于对任务进行下发,接收第一发送模块13的中断,中止第一指令执行模块12的运行,重新下发任务让第一指令执行模块12进行重传。
对于接收端2,每个模块的功能为:
第二存储模块21:用于存储数据和指令。其中,数据来源可以是本地原有数据,也可以是上游发送端发送来的数据,也可以是上游发送端发送来的数据与本地数据计算后的结果数据。
第二指令执行模块22:用于执行第二存储模块21中的指令,负责完成应用层逻辑的执行处理。在本通信***中,发送请求由指令发起,即由应用层发起通信行为。此外,第二指令执行模块22还可以根据指令,完成本地运算。
第二接收模块24:接收端2通过第二接收模块24与物理链路直接相连。该第二接收模块24会接收收到的数据包,并根据数据包的类型,完成内存同步操作。对接收的包进行校验和纠错,若发生无法纠错的情况,则向发送端的发送模块回复NACK。对每一个包的正确的接收,都要回复ACK。如果第二接收模块24发出的ACK没有得到ACK应答,则记录该异常状态,并向第二控制模块25上报中断。
第二发送模块23:接收端通过第二接收模块23与物理链路直接连接。第二发送模块23在接收端上仅用于发送控制信息。
第二控制模块25:用于对任务进行下发,根据第二接收模块24发出的中断,中止第二指令执行模块22的运行,重新下发任务让第二指令执行模块22进行重传。
下面将详细描述应用层在执行数据的发送任务时的各项规范。
在应用层进行发送任务时,需要显式地发送数据和控制信息。其中,控制信息在发送端1表示的含义为:当前发送端1已经发送的数据分片的数量;在接收端2表示的含义为,当前接收端2已经处理的数据分片的数量。
参照队列的数据结构,可以将发送端的控制信息记为Tail,将接收端2的控制信息记为Head。需要注意的是,接收端2接收到数据与接收端2处理了数据是两个概念。即使是接收端2仅接收数据,如果发送端1没有直接发送到接收端2的目标存储空间(记为DstSpace),而是发送到了接收端2的接收缓冲区(记为RecvBuffer),那么接收端2同样还需要做一次把数据从RecvBuffer到DstSpace的数据拷贝操作。只有接收端2确认数据在DstSpace后,才会更新Head的值。RecvBuffer是对接收端的缓存硬件存储空间的功能命名。
由此,Head与Tail需要满足以下约束:
1.在没有进行数据的重传时,Head与Tail均是单调递增的,每次增加值为此次发送或接收的Data分片数量。
2.在任意时刻,Head不大于Tail。
3.若发送端1发送到接收端2的数据是写入的RecvBuffer,Head与Tail的差值不应超过半个RecvBuffer大小。假设,将接收端的RecvBuffer的整体容量表示为m,即最多容许m个tail与head的差值的数据分片。那么可以设想两个设备A和B将执行通信算法AllReduce算法,这两个设备A和B首先各自发送自己的x个数据给对方,然后从RecvBuffer中获取上游的x个数据,并与本地数据完成计算;然后再次发给对方x个数据给对方。这里,第一个约束条件是x必须小于m,因为如果x大于m的话会产生数据的越界。然后,如果x=m,则每个设备如果再进行第二个步骤“从RecvBuffer中获取上游的x个数据,并与本地数据完成计算,再次发给对方x个数据”,会发现对方的RecvBuffer已经被第一步任务的“各自发送自己的x个数据给对方”给全部占满,因此无法进行第二步,从而两个设备都无法进入第二阶段,就会形成死锁。因此,在x<m的约束上,经过性能测试,x=1/2m是最优值,可以让发送和处理获得均衡。
4.Head与Tail的发送目标地址不变,后发送的Head和Tail会覆盖设备存储空间上的原始值。换言之,不允许存在多个Head值或者多个Tail值,而只能是前一个Head值被新Head值覆盖,或者前一个Tail值被新Tail值覆盖。
5.Head与Tail均具有内存同步语义,每个Head/Tail写入设备内存时,该Head/Tail前序由同一个物理链路发射的Data、Head、Tail均一定应写入设备存储空间。这里的设备,在本文中,通常是指发送设备和接收设备的硬件。
在不可靠链路下,可能会发生如下三种错误:
1.发送过程中丢失数据包或者数据包出错,这里丢失的数据包可以是丢失有效载荷数据,也可以是丢失所发送的Tail,或者是有效载荷数据出错或者tail出错。在此情况下,会引发链路的包序列号错误(Packet Sequence Number Error,PSN Error),当接收端的PSN校验不通过时,会向发送端回NACK。此外,这种情况下也可能是触发超时机制,主动结束通信。
2.发送过程中产生误码,且接收端纠错无法纠正,此时接收端会向发送端反馈NACK。
3.发送过程均正常,但接收端返回的ACK被丢失,此时发送端依然会触发超时机制。
以上三种情况发生时,通过从异常位置开始进行重传,有可能会重传成功,也可能会重传失败。只有当连续多次(例如连续三次)进行重传都依然无法完成正确的通信时,才会认为是发生了不可重传的异常。在此情况下,通常需要应用彻底停止数据传输,以便于检查链路是否发生异常。
为了处理上述的三种可以重传的情况,在应用层执行的异常处理方法需要有以下关键点:
1.由于链路上发生异常是小概率事件,因此应用层的异常处理逻辑应该对正常的应用层任务逻辑干涉较小。
2.同样基于异常发生是小概率事件,当异常发生进行重传时,重传算法的功能正确性为优先考虑,性能需求相对降低。即,优先要保证重传的正确性,对重传算法执行过程的性能要求并非优先考虑。
3.应用层重传时,可以容许进行冗余的重传,即重传发送的内容比实际的丢失/出错的内容更多。
4.应用层重传时,即使在发送端的重传发送可能有更多冗余,接收端应仅处理出错位置起始的数据包。这样是因为,接收端可能执行过原位(in-place)的运算操作,此时计算结果已经覆盖了原始的本地数据区域。如果再次计算,会导致应用任务的结果出错,因此是不允许的。
5.由于Head/Tail是覆盖写入的方式进行通信的,所以设备(发送端和接收端)需要对Head/Tail的值进行备份,这里可以称为checkpoint(检查点,备份点),后续的重传恢复时要从checkpoint处作为起点。因此,每个设备本地同样应有记录此前已经发送的位置信息,后续的重传恢复需要把此前已发送位置作为重传的终点。
在介绍了上述的规范和约束之后,下面详细介绍根据本公开一个实施方式的用于在通信***中在应用层控制数据重传的方法。
图6示出了根据本公开一个实施方式的在通信***中在应用层控制数据重传的方法,所述通信***包括:发送端1,接收端2和连接所述发送端1与接收端2的通信链路3,所述方法包括:在发送端1处,在操作S6110,向接收端2预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;在操作S6120,响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;在操作S6130,通过所述通信链路来传输所述数据;在接收端2处,在操作S6210,如果接收到所述数据,则记录所述计数值;在操作S6220,根据所述计数值来生成第二数量,所述第二数量表示所述数据被接收端接收到并反馈的数量;在操作S6230,向发送端反馈第一接收端信息,所述第一接收端信息包括第二数量,并且第二数量不大于第一数量;在发送端1处,在操作S6140,接收并记录所述第一接收端信息;以及,在操作S6150,根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
下面将结合一系列附图来解释本公开的上述实施方式。
图7示出了根据本公开一个实施方式的正常通信过程的示意图。在图7中,假设从发送端1向接收端2发送数据,为了方便描述,将发送端1中的第一发送模块13标记为tx,将接收端2的第二接收模块24记为rx。将Head/Tail用于通信的地址记为ptr,将Head/Tail的checkpoint记为ckpt,将Head/Tail当前已发送的最大值记为cache。根据本公开的一个实施方式,可以构建以下关键变量:
1.tx_tail,发送端1发送的tail信息。上文中已经介绍过tail信息,这里将不再赘述。
2.tx_tail_cache:发送端1已经发送,但尚未被接收端2确认接收到的tx_tail,该tx_tail可以存储在发送端1的存储空间内以备发送(例如Recybuffer发送端1的缓存中)。tx_tail_cache可以表示发送端1“以为已发送但实际可能没有发送到接收端2”。在本公开中,可以将发送端1“已经发送但实际上可能没有发送到接收端2”的数据称为预发送数据,预发送数据可以包括有效载荷和用于所述有效载荷的计数值,这里的计数值即为上文所述的tail信息。当发送端1已经预发送了数据之后,无论数据是否发送成功,均可以更新上述参数tx_tail_cache(即响应于所述数据处于预发送状态,更新第一发送端信息)。
根据本公开的一个实施方式,响应于所述数据处于预发送状态,记录第一发送端信息可以包括:响应于被置于预发送状态的数据递增,相应地对第一数量进行递增,而无论所述数据是否发送成功,和/或无论是否接收到针对所述数据的应答。
在本实施方式中,每当有一个数据进入“预发送”状态,则该数据携带的tail值则递增一次,tail值的递增并不考虑该数据是否确实被发送成功,也不考虑发送端1是否接收到针对该数据的应答(即head)值。
需要理解的是,本文中记录第一发送端信息可以是每当第一发送端信息被更新后即进行记录,也可以直接记录具有最大值的第一发送端信息。例如,发送端可以每隔一段时间来轮询当前tail的最大值,在此情况下,可能存在直接轮询到最大的tail值或其中某些tail值的情况,而不必然轮询到当前发送的数据所对应的tail值。
3.tx_tail_ckpt:发送端1已发送,并且已经被接收端2确认的tx_tail。一般是指接收端2通过回复Head的方式进行了确认。如果接收端2通过Head的方式进行了确认,则表明接收端已经接收到发送端1所发送的数据。可以通过参数tx_tail_ckpt来确定数据重传时的断点。
4.rx_head:接收端2向发送端1发送的head信息。当接收端2接收到包含tail的数据之后,将记录该tail值(即上文所述的计数值)。接收端2可以通过向发送端1回复或反馈head值来确认已经接收到数据,即该head值可以反映接收端2接收到的数据(即tail)的数量。
随着接收端2接收到数据并对数据处理之后,head值也相应地增加。但head值小于等于接收到的tail值。例如,包含tail值为1-3的数据均顺利到达接收端2处,则接收端2每接收到并处理一个tail值后,则head值也对应地更新,即head值等于tail值;但是,如果包含tail值为4的数据发生阻塞,即接收端2处没有接收到tail值为4的数据,接收端2处生成的head值最大为3。
5.rx_head_cache:接收端2已发送,但尚未被发送端1确认收到的rx_head。一般来说,rx_head的发送不需要接收端1额外的确认,只要不发生超时即认为已送达。在本申请中,可以用参数rx_head_cache来表示第一接收端信息,即可以表示数据被接收端2接收到并已经做出反馈的第二数量。
6.rx_head_ckpt:接收端2已发送,并且已被接收端1确认收到的rx head。
7.rx_tail_cache:接收端2本次访问DRAM检查Tail时收到的Tail值,即接收端2实际上接收到的Tail值。
根据本公开的一个实施方式,如果接收到所述数据,则记录所述计数值包括:以新的计数值来覆盖旧的计数值。
根据本实施方式,接收端2可以记录每个接收到的Tail值,并且用最新的tail值来覆盖之前的tail值,由此,接收端2将保持Tail值处于最大值。
根据本公开的一个实施方式,如果接收到所述数据,则记录所述计数值包括:在接收到的数据中搜索最大的计数值;以及仅记录所述最大的计数值。
根据本实施方式,接收端2可以每隔一段时间来轮询接收到的tail的最大值,在此情况下,可能存在直接轮询到最大的tail值或其中某些tail值的情况,而不必然轮询到当前发送的数据所对应的tail值,在这些情况下,可以直接记录最大的tail值,而无需记录其他tail值。通过这种方式,只需要关注最大的tail值即可,无需记录所有的tail值。
8.tx_head_cache:发送端1本次访问DRAM检查Head时收到的Head值,即接收端2实际上发送并且发送端1实际接收到的Head值。
如图7所示,在发送端1中可以存储有记录各参数状态的第一状态表,第一状态表可以至少包括三个参数,即tx_tail_cache,tx_tail-ckpt和tx_head_cache。在初始状态下,这些参数的值均为0,如图7中的状态1所示。
类似地,在接收端2处,可以存储有记录各参数状态的第二状态表,第二状态表可以至少包括三个参数,即rx_head_cache,rx_head_ckpt和rx_tail_cache。在初始状态下,这些参数的值均为0,如图7中的状态1’所示。
接下来,假设发送端1向接收端2发送5个数据,那么参数tx_tail_cache的值变为5,即表示发送端1已经发送了5个数据,但这5个数据是否到达接收端2尚未被确认。同时,在发送端1发送数据时,还把每个数据的tail也发送到接收端,每发送一个数据,tail值发生递增。如图7中的状态2所示。
在接收端2处,当数据被接收到时,可以记录为参数rx_tail_cache,该参数rx_tail_cache可以随着tail值的增加而增加,随着5个数据接收完毕,参数rx_tail_cache的值更新为5;该参数rx_tail_cache也可以直接记录并反映接收到的tail的最大值,而不是逐步递增。如图7的状态2’所示。
当接收端2处对数据处理过之后,将反馈head值给发送端1,但发送端1是否接收到该head值尚不知晓。在此情况下,参数rx_head_cache的状态更新为5,这表示接收端2已发送了5个head信息(rx_head),但尚未被发送端1确认收到5个head信息。
当发送端1接收到head信息之后,将向接收端2发送反馈信号。当接收端2接收到反馈信号之后,更新参数rx_head_ckpt。如图7中状态3’所示,参数rx_head_ckpt被更新为5。
如图7中的状态3所示,可以将参数rx_head_cache的值反馈到发送端1处,从而参数tx_head_cache被更新为5。
进一步如图7中的状态3所示,返回发送端1处,参数tx_tail_ckpt也被更新为5,这表示发送端1已发送了5个数据之后,已经被接收端2确认的tx_tail的数量,如图7的状态3所示。
通过图7可以看出,通过检查发送端1中的参数tx_tail_cache、tx_tail_ckpt以及tx_head_cache以及接收端2中的参数rx_head_cache、rx_head_ckpt以及rx_tail_cache,能够对数据的发送和接收情况,tail和head值的发送和接收情况以及断点的情况进行了解。
上面结合图7介绍了数据正常传输时的情况,下面将结合其他附图来详细描述数据传输发生错误时的情形。
图8示出了丢包/出错重传过程的示意图。需要理解的是,为简化起见,在图8中,仅仅表示了数据的发送和接收方向,并未示出发送模块和接收模块。
如图8所示,在发送端1中可以存储有记录各参数状态的第一状态表,第一状态表可以至少包括三个参数,即tx_tail_cache,tx_tail-ckpt和tx_head_cache。在初始状态下,这些参数的值均为0,如图8中的状态1所示。
类似地,在接收端2处,可以存储有记录各参数状态的第二状态表,第二状态表可以至少包括三个参数,即rx_head_cache,rx_head_ckpt和rx_tail_cache。在初始状态下,这些参数的值均为0,如图8中的状态1’所示。
接下来,假设发送端1向接收端2发送5个数据,即数据[1,2,3,4,5],那么参数tx_tail_cache的值变为5,即表示发送端1已经发送了5个数据,但这5个数据是否到达接收端2尚未被确认。同时,在发送端1发送数据时,还把每个数据的tail也发送到接收端,每发送一个数据,tail值发生递增。如图8中的状态2所示。
在接收端2处,当数据被接收到时,参数rx_tail_cache会随着tail值的增加而增加。与图7所示的实施方式不同的是,在本实施方式中,从第4个数据开始发生了数据丢失或出错,即仅有数据[1,2,3]成功发送到了接收端2处。因此,参数rx_tail_cache的值更新为3。如图8的状态2’所示。
由于在传输过程中数据被丢失或者出错,因此链路可以向发送端1发送中断请求,发送端1中的控制模块可以判断上报的中断是因为什么引起的,然后再根据具体的中断原因来确定是否要进行重传。
接收端2在接收到数据[1,2,3]之后,将head信息发送回发送端1处,但发送端1是否接收到该head值尚不知晓。由于接收端2处仅接收到3个数据,因此接收端2发送head为1-3的信息。在此情况下,参数rx_head_cache的状态更新为3,这表示接收端2已发送了3个head信息(rx_head),但尚未被发送端1确认收到3个head信息。如图8中的状态3’所示。
当发送端1接收到head信息之后,将向接收端2发送反馈信号。当接收端2接收到反馈信号之后,更新参数rx_head_ckpt。如图8中状态3’所示,由于接收端仅接收到3个数据,并且接收端反馈的head值为1-3,因此参数rx_head_ckpt被更新为3。
返回发送端1处,接收端2将参数rx_head_cache反馈给发送端1,发送端1在接收到该反馈之后将参数tx_head_cache更新为3,这表示发送端1已发送了5个数据之后,接收端2确认接收到并通过head反馈了3个数据,如图8的状态3所示。
进一步如图8中的状态3所示,参数tx_tail_ckpt相应地被更新为3,这表示重传应该从第4个数据开始。
根据本公开的一个实施方式,响应于来自于通信链路上报的中断信号,根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
如上文所述,如果通信链路上报了中断信号,则可能有多种中断类型,一些中断类型需要进行数据的重传,而另一些中断类型不需要对数据进行重传。根据本公开的一个实施方式,根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传包括:根据第一发送端信息和第一接收端信息来确定中断的类型;根据所述中断的类型来确定是否进行所述数据的重传。
根据本公开的一个实施方式,根据第一发送端信息和第一接收端信息来确定中断的类型可以包括:如果第一数量大于第二数量,则确定中断的类型为从发送端到接收端的数据丢失或错误。根据本公开的一个实施方式,从发送端到接收端的数据丢失或错误包括有效载荷的丢失和/或计数值的丢失或错误。需要理解的是,这里的数据丢失,不仅仅是有效载荷数据的丢失,还可能是tail值等其他信息的丢失。例如,即使有效载荷数据正确地从发送端1传送到了接收端2,但所携带的tail值被丢失,也应当认为是数据丢失。
还需要理解的是,本文中所称的第一接收端信息,是指接收到已经接收到数据,并且已经通过head进行了反馈,因此可以接收端信息可以反映接收端实际接收到的数据的数量,并且反映接收端已经针对此次接收反馈的head值的数量,这与所反馈的head值是有所不同的。
具体而言,通过比较参数tx_tail_cache和参数tx_head_cache的值,发送端1可以确定是否要发起数据的重传,例如,在图8所示的示例中,发送端1会发现其发送了5个数据(参数tx_tail_cache的值等于5),但接收端2处仅接收到3个数据(参数tx_head_cache的值等于3),因此发送端1可以确认通信链路上报的中断信号是因为发生了数据的丢失或者出错。
根据本公开的一个实施方式,根据所述中断的类型来确定是否进行所述数据的重传包括:如果确定中断的类型为从发送端到接收端的数据丢失,则根据第二数量来确定所述中断的断点;从所述断点开始对数据进行重传。
进一步地,如上文所述,当参数tx_head_cache的值变为3时,参数tx_tail_ckpt的值也相应地被更新为3,因此发送端1可以知晓已有三个数据发送成功,而重传应当从第4个数据开始。需要理解的是,上文所述的根据第二数量来确定中断的断点,本质上是根据由第二数量确定的断点位置来确定中断的断点,参数tx_tail_ckpt即可以标识断点位置。
接下来,如图8所示,在确定要继续重传数据之后,开始对数据[4,5]进行重传,此时,状态4和状态3保持相同。
接下来,当数据[4,5]重传成功之后,接收端2的参数rx_tail_cache的值从3更新为5,这表示接收端2已成功接收到数据[4,5],如图8中的状态4’所示。
接收端2在接收到数据[4,5]之后,将向发送端反馈head信号。因此,参数rx_head_cache的值从3更新为5,如状态5’所示。如上文所述,参数rx_head_cache表示接收端2已发送,但尚未被发送端1确认收到的rx_head。一般来说,rx_head的发送不需要接收端1额外的确认,只要不发生超时即认为已送达。
此外,如图8中的状态5’所示,参数rx_head_ckpt的值也更新为5,这表示接收端2在向发送端1发送了head信号之后,又接收到了来自于发送端1的确认。
进一步地,在发送端1,根据接收端2反馈的rx_head_cache的值来更新tx_head_cache的值,从而tx_head_cache的值更新为5,由此,参数tx_tail_ckpt的值也相应地更新为5,如图8的状态5所示。在此情况下,参数tx_tail_cache的值与参数tx_head_cache的值相同,这表示发送端1发送的数据的数量与接收端2接收到的数据的数量是相同的,因此无需进行数据的重传。
根据本公开的一个实施方式,根据第一发送端信息和第一接收端信息来确定中断的类型包括:如果第一数量等于第二数量,则确定中断的类型为从接收端向发送端反馈的、针对所述数据的应答丢失。
下面结合图9来描述以上实施方式的具体情形。图9示出了接收端2反馈的ACK被丢失的情况。需要理解的是,为简化起见,在图9中,仅仅表示了数据的发送和接收方向,并未示出发送模块和接收模块。
如图9所示,在发送端1中可以存储有记录各参数状态的第一状态表,第一状态表可以至少包括三个参数,即tx_tail_cache,tx_tail-ckpt和tx_head_cache。在初始状态下,这些参数的值均为0,如图9中的状态1所示。
类似地,在接收端2处,可以存储有记录各参数状态的第二状态表,第二状态表可以至少包括三个参数,即rx_head_cache,rx_head_ckpt和rx_tail_cache。在初始状态下,这些参数的值均为0,如图9中的状态1’所示。
接下来,假设发送端1向接收端2发送5个数据,即数据[1,2,3,4,5],那么参数tx_tail_cache的值变为5,即表示发送端1已经发送了5个数据,但这5个数据是否到达接收端2尚未被确认。同时,在发送端1发送数据时,还把每个数据的tail也发送到接收端,每发送一个数据,tail值发生递增。如图9中的状态2所示。
在接收端2处,当数据被接收到时,参数rx_tail_cache会随着tail值的增加而增加。与图8所示的实施方式不同的是,在本实施方式中,所有数据[1,2,3,4,5]均成功发送到了接收端2处。因此,参数rx_tail_cache的值更新为5。如图9的状态2’所示。
接收端2在接收到数据[1,2,3,4,5]之后,对数据进行处理,并将head信息发送回发送端1处,但发送端1是否接收到该head值尚不知晓。由于接收端2处接收到5个数据,因此接收端2发送head为1-5的信息。在此情况下,参数rx_head_cache的状态更新为5,这表示接收端2已发送了5个head信息(rx_head),但尚未被发送端1确认收到5个head信息,如图9中的状态3’所示。
但是,在如图9所示的实施方式中,第4个数据包的(ACK)信息被丢失,即发送端1仅接收到3个ack信息,但是实际上所有的数据包均已经在接收端2完成接收并处理。
当接收端2处理完数据后,rx_head_cache会更新为5,并向发送端1发送。发送端1收到head并发送反馈信号之后,接收端更新参数rx_head_ckpt。如图9中状态3’所示,参数rx_head_ckpt被更新为5,如图9中的状态3’所示。
而发送端1,由于没有收到数据包4和5的ack信息,将触发超时机制,由控制模块重新启动任务。发送端1的新任务启动后,检查接收到的来自接收端2的head值,并将tx_head_cache更新为5,这表示发送端1已发送了5个数据之后,接收端2确认接收到5个数据,所以发送端1确认自己此前的超时是由丢失ack导致,无需重新发送任何数据,可以直接结束,如图9的状态3所示。
进一步如图9中的状态3所示,参数tx_head_ckpt相应地被更新为5。
如上,图9状态3'中的rx_head_ckpt的值应为5。
由此,根据本公开的一个实施方式,根据第一发送端信息和第一接收端信息来确定中断的类型包括:如果第一数量等于第二数量,则确定中断的类型为从接收端向发送端反馈的、针对所述数据的应答丢失。
在此情况下,参数tx_tail_cache的值与参数tx_head_cache的值相同,这表示发送端1发送的数据的数量与接收端2接收到的数据的数量是相同的,因此发送端1可以意识到,中断的类型为从接收端向发送端反馈的、针对所述数据的应答丢失。根据办本公开的一个实施方式,如果确定中断的类型为从接收端向发送端反馈的、针对所述数据的应答丢失,则确定无需进行数据的重传。
根据本公开的一个实施方式,通过应用层的缓存区来存储待重传的数据。根据本实施方式,传输层不再需要额外的空间来用来重传,应用层直接将应用层直接使用的缓存区(例如RecvBuffer)进行复用,不再需要额外的空间,从而节省了传输层的存储开销。
根据本公开的一个实施方式,通过应用层来发送重传指示,以进行所述数据的重传。
根据本实施方式,可以在发送端的应用层提供数据重传的指示,由此,应用层重传可以正确地完成链路出错情况,并通过重传完成数据可靠性的保证。
图10示出了根据本公开另一个方面的用于在应用层控制数据重传的方法的流程图,包括:在操作S1010,预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;在操作S1020,响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;在操作S1030,接收并记录第一接收端信息,所述第一接收端信息表示数据被接收端接收到并反馈的第二数量,其中第二数量不大于第一数量;以及,在操作S1040,根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
图10示出了发送端所进行的操作,这在上文中结合图6-9进行了描述,这里将不再赘述。
根据本公开的一个实施方式,预发送数据包括:将所述数据放置于发送端的存储空间内以备发送。这里的存储空间,是指位于发送端的底层硬件存储空间。
根据本公开的一个实施方式,响应于所述数据处于预发送状态,记录第一发送端信息包括:响应于被置于预发送状态的数据递增,相应地对第一数量进行递增,而无论所述数据是否发送成功,和/或无论是否接收到针对所述数据的应答。
根据本公开的一个实施方式,其中,接收并记录第一接收端信息包括:随着第一接收端信息的变化而更新第二数量。
根据本公开的一个实施方式,其中,接收并记录第一接收端信息包括:记录具有最大的第二数量的第二接收端信息。
根据本公开的一个实施方式,其中,响应于来自于通信链路上报的中断信号,根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
根据本公开的一个实施方式,其中,根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传包括:根据第一发送端信息和第一接收端信息来确定中断的类型;根据所述中断的类型来确定是否进行所述数据的重传。
根据本公开的一个实施方式,其中,根据第一发送端信息和第一接收端信息来确定中断的类型包括:如果第一数量大于第二数量,则确定中断的类型为从发送端到接收端的数据丢失或错误。
根据本公开的一个实施方式,其中,从发送端到接收端的数据丢失或错误包括有效载荷的丢失或错误,和/或计数值的丢失或错误。
根据本公开的一个实施方式,其中,根据所述中断的类型来确定是否进行所述数据的重传包括:如果确定中断的类型为从发送端到接收端的数据丢失,则根据第二数量来确定所述中断的断点;从所述断点开始对数据进行重传。
根据本公开的一个实施方式,其中,根据第一发送端信息和第一接收端信息来确定中断的类型包括:如果第一数量等于第二数量,则确定中断的类型为从接收端向发送端反馈的、针对所述数据的应答丢失。
根据本公开的一个实施方式,其中,根据所述中断的类型来确定是否进行所述数据的重传包括:如果确定中断的类型为从接收端向发送端反馈的、针对所述数据的应答丢失,则确定无需进行所述数据的重传。
根据本公开的一个实施方式,其中,通过应用层的缓存区(例如Recvbuffer)来存储待重传的数据。
根据本公开的一个实施方式,其中,通过应用层来发送重传指示,以进行所述数据的重传。
图11示出了根据本公开一个方面的用于在应用层控制数据重传的设备,包括:发送单元1110,用于预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;发送端信息更新单元1120,用于响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;接收单元1130,用于接收并记录第一接收端信息,所述第一接收端信息表示数据被接收端接收到并反馈的第二数量,其中第二数量不大于第一数量;以及,重传判断单元1140,用于根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
根据本公开的一个方面,还提供一种在应用层控制数据重传的通信***,所述通信***包括:发送端,接收端和连接所述发送端与接收端的通信链路,其中,所述发送端向接收端预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;所述发送端响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;所述通信链路用于传输所述数据;所述接收端如果接收到所述数据,则记录所述计数值;所述接收端根据所述计数值来生成第二数量,所述第二数量表示所述数据被接收端接收到并反馈的第二数量;所述接收端向发送端反馈第一接收端信息,所述第一接收端信息包括第二数量,并且第二数量不大于第一数量;所述发送端接收并记录所述第一接收端信息;所述发送端根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
根据本公开的另一个方面,还提供一种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如上所述的方法。
根据本公开的又一个方面,还提供一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。
本公开基于Head、Tail和数据(Data)的通信流及相应的装置,用Head/Tail的相对关系来执行应用层的重传,保证了通信的可靠性。
同时,相比于现有的传输层来执行重传,在应用层中进行数据重传的有益效果在于:
在本公开中,通过应用层的信息,可以知晓数据的起始点和结束点,因此,通信协议不再需要维护需要重传的起始点和结束点,只要忠实的执行应用层下发的每一笔传输请求即可。
此外,传输层不再需要额外的空间来用来重传,应用层直接将应用层直接使用的缓存区(例如RecvBuffer)进行复用,不再需要额外的存储空间。
在本公开中,由应用层来进行重传,应用层会显式地感知重传的发生,这样应用层在进行重传时,可以保证同一任务不会同时进行正常的发送,避免出现重传流量与正常任务流量同时在链路竞争的情况,从而降低了链路拥塞和丢包的概率。
根据本公开的技术方案,在应用层进行软件层面的重传设计,可以降低传输层的硬件设计,因此开发快,硬件定制成本低。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。
通过以下条款,能够更好地理解本公开的技术方案。
条款1.一种用于在应用层控制数据重传的方法,包括:
预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;
响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;
接收并记录第一接收端信息,所述第一接收端信息表示数据被接收端接收到并反馈的第二数量,其中第二数量不大于第一数量;
根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
条款2.根据条款1所述的方法,其中,预发送数据包括:将所述数据放置于发送端的存储空间内以备发送。
条款3.根据条款1或2所述的方法,其中,响应于所述数据处于预发送状态,记录第一发送端信息包括:
响应于被置于预发送状态的数据递增,相应地对第一数量进行递增,而无论所述数据是否发送成功,和/或无论是否接收到针对所述数据的应答。
条款4.根据条款1-3中任意一项所述的方法,其中,接收并记录第一接收端信息包括:随着第一接收端信息的变化而更新第二数量。
条款5.根据条款1-3中任意一项所述的方法,其中,接收并记录第一接收端信息包括:记录具有最大的第二数量的第二接收端信息。
条款6.根据条款1-5中任意一项所述的方法,其中,响应于来自于通信链路上报的中断信号,根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
条款7.根据条款6所述的方法,其中,根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传包括:
根据第一发送端信息和第一接收端信息来确定中断的类型;
根据所述中断的类型来确定是否进行所述数据的重传。
条款8.根据条款7所述的方法,其中,根据第一发送端信息和第一接收端信息来确定中断的类型包括:
如果第一数量大于第二数量,则确定中断的类型为从发送端到接收端的数据丢失或错误。
条款9.根据条款8所述的方法,其中,从发送端到接收端的数据丢失或错误包括有效载荷的丢失或错误,和/或计数值的丢失或错误。
条款10.根据条款8或9所述的方法,其中,根据所述中断的类型来确定是否进行所述数据的重传包括:
如果确定中断的类型为从发送端到接收端的数据丢失,则根据第二数量来确定所述中断的断点;
从所述断点开始对数据进行重传。
条款11.根据条款7所述的方法,其中,根据第一发送端信息和第一接收端信息来确定中断的类型包括:
如果第一数量等于第二数量,则确定中断的类型为从接收端向发送端反馈的、针对所述数据的应答丢失。
条款12.根据条款11所述的方法,其中,根据所述中断的类型来确定是否进行所述数据的重传包括:
如果确定中断的类型为从接收端向发送端反馈的、针对所述数据的应答丢失,则确定无需进行所述数据的重传。
条款13.根据条款1-12中任意一项所述的方法,其中,通过应用层的缓存区来存储待重传的数据。
条款14.根据条款1-13中任意一项所述的方法,其中,通过应用层来发送重传指示,以进行所述数据的重传。
条款15.一种用于在应用层控制数据重传的设备,包括:
发送单元,用于预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;
发送端信息更新单元,用于响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;
接收单元,用于接收并记录第一接收端信息,所述第一接收端信息表示数据被接收端接收到并反馈的第二数量,其中第二数量不大于第一数量;
重传判断单元,用于根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
条款16.一种用于在通信***中在应用层控制数据重传的方法,所述通信***包括:发送端,接收端和连接所述发送端与接收端的通信链路,所述方法包括:
在发送端,
向接收端预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;
响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;
通过所述通信链路来传输所述数据;
在接收端,
如果接收到所述数据,则记录所述计数值;
根据所述计数值来生成第二数量,所述第二数量表示所述数据被接收端接收到并反馈的数量;
向发送端反馈第一接收端信息,所述第一接收端信息包括第二数量,并且第二数量不大于第一数量;
在发送端,
接收并记录所述第一接收端信息;
根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
条款17.根据条款16所述的方法,其中,向接收端预发送数据包括:将所述数据放置于发送端的存储空间内以备发送。
条款18.根据条款16或17所述的方法,其中,响应于所述数据处于预发送状态,记录第一发送端信息包括:
响应于被置于预发送状态的数据递增,相应地对第一数量进行递增,而无论所述数据是否发送成功,和/或无论是否接收到针对所述数据的应答。
条款19.根据条款16-18中任意一项所述的方法,其中,如果接收到所述数据,则记录所述计数值包括:以新的计数值来覆盖旧的计数值。
条款20.根据条款16-18中任意一项所述的方法,其中,如果接收到所述数据,则记录所述计数值包括:
在接收到的数据中搜索最大的计数值;以及
仅记录所述最大的计数值。
条款21.根据条款16-20中任意一项所述的方法,其中,接收并记录第一接收端信息包括:随着第一接收端信息的变化而更新第二数量。
条款22.根据条款16-20中任意一项所述的方法,其中,接收并记录第一接收端信息包括:记录具有最大的第二数量的第二接收端信息。
条款23.根据条款16-22中任意一项所述的方法,其中,响应于特定事件的发生,所述通信链路向发送端上报中断信号。
条款24.根据条款23所述的方法,其中,响应于从发送端到接收端的数据丢失或错误,则所述通信链路向发送端上报中断信号。
条款25.根据条款24所述的方法,其中,从发送端到接收端的数据丢失或错误包括有效载荷的丢失或错误,和/或计数值的丢失或错误。
条款26.根据条款23所述的方法,其中,响应于从接收端向发送端反馈的、针对所述数据的应答丢失,则所述通信链路向发送端上报中断信号。
条款27.根据条款16-26中任意一项所述的方法,其中,响应于来自于通信链路上报的中断信号,根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
条款28.根据条款27所述的方法,其中,根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传包括:
根据第一发送端信息和第一接收端信息来确定中断的类型;
根据所述中断的类型来确定是否进行所述数据的重传。
条款29.根据条款28所述的方法,其中,根据第一发送端信息和第一接收端信息来确定中断的类型包括:
如果第一数量大于第二数量,则确定中断的类型为从发送端到接收端的数据丢失或错误。
条款30.根据条款29所述的方法,其中,根据所述中断的类型来确定是否进行所述数据的重传包括:
如果确定中断的类型为从发送端到接收端的数据丢失,则根据第二数量来确定所述中断的断点;
从所述断点开始对数据进行重传。
条款31.根据条款28所述的方法,其中,根据第一发送端信息和第一接收端信息来确定中断的类型包括:
如果第一数量等于第二数量,则确定中断的类型为从接收端向发送端反馈的、针对所述数据的应答丢失。
条款32.根据条款31所述的方法,其中,根据所述中断的类型来确定是否进行所述数据的重传包括:
如果确定中断的类型为从接收端向发送端反馈的、针对所述数据的应答丢失,则确定无需进行所述数据的重传。
条款33.根据条款16-32中任意一项所述的方法,其中,通过应用层的缓存区来存储待重传的数据。
条款34.根据条款16-33中任意一项所述的方法,其中,通过应用层来发送重传指示,以进行所述数据的重传。
条款35.一种在应用层控制数据重传的通信***,所述通信***包括:发送端,接收端和连接所述发送端与接收端的通信链路,其中,
所述发送端向接收端预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;
所述发送端响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;
所述通信链路用于传输所述数据;
所述接收端如果接收到所述数据,则记录所述计数值;
所述接收端根据所述计数值来生成第二数量,所述第二数量表示所述数据被接收端数据被接收端接收到并反馈的第二数量;
所述接收端向发送端反馈第一接收端信息,所述第一接收端信息包括第二数量,并且第二数量不大于第一数量;
所述发送端接收并记录所述第一接收端信息;
所述发送端根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
条款36.一种电子设备,包括:
一个或多个处理器;以及
存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如条款1-14或16-34中任意一项所述的方法。
条款37.一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如条款1-14或16-34中任意一项所述的方法。

Claims (37)

1.一种用于在应用层控制数据重传的方法,包括:
预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;
响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;
接收并记录第一接收端信息,所述第一接收端信息表示数据被接收端接收到并反馈的第二数量,其中第二数量不大于第一数量;
根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
2.根据权利要求1所述的方法,其中,预发送数据包括:将所述数据放置于发送端的存储空间内以备发送。
3.根据权利要求1或2所述的方法,其中,响应于所述数据处于预发送状态,记录第一发送端信息包括:
响应于被置于预发送状态的数据递增,相应地对第一数量进行递增,而无论所述数据是否发送成功,和/或无论是否接收到针对所述数据的应答。
4.根据权利要求1-3中任意一项所述的方法,其中,接收并记录第一接收端信息包括:随着第一接收端信息的变化而更新第二数量。
5.根据权利要求1-3中任意一项所述的方法,其中,接收并记录第一接收端信息包括:记录具有最大的第二数量的第二接收端信息。
6.根据权利要求1-5中任意一项所述的方法,其中,响应于来自于通信链路上报的中断信号,根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
7.根据权利要求6所述的方法,其中,根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传包括:
根据第一发送端信息和第一接收端信息来确定中断的类型;
根据所述中断的类型来确定是否进行所述数据的重传。
8.根据权利要求7所述的方法,其中,根据第一发送端信息和第一接收端信息来确定中断的类型包括:
如果第一数量大于第二数量,则确定中断的类型为从发送端到接收端的数据丢失或错误。
9.根据权利要求8所述的方法,其中,从发送端到接收端的数据丢失或错误包括有效载荷的丢失或错误,和/或计数值的丢失或错误。
10.根据权利要求8或9所述的方法,其中,根据所述中断的类型来确定是否进行所述数据的重传包括:
如果确定中断的类型为从发送端到接收端的数据丢失,则根据第二数量来确定所述中断的断点;
从所述断点开始对数据进行重传。
11.根据权利要求7所述的方法,其中,根据第一发送端信息和第一接收端信息来确定中断的类型包括:
如果第一数量等于第二数量,则确定中断的类型为从接收端向发送端反馈的、针对所述数据的应答丢失。
12.根据权利要求11所述的方法,其中,根据所述中断的类型来确定是否进行所述数据的重传包括:
如果确定中断的类型为从接收端向发送端反馈的、针对所述数据的应答丢失,则确定无需进行所述数据的重传。
13.根据权利要求1-12中任意一项所述的方法,其中,通过应用层的缓存区来存储待重传的数据。
14.根据权利要求1-13中任意一项所述的方法,其中,通过应用层来发送重传指示,以进行所述数据的重传。
15.一种用于在应用层控制数据重传的设备,包括:
发送单元,用于预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;
发送端信息更新单元,用于响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;
接收单元,用于接收并记录第一接收端信息,所述第一接收端信息表示数据被接收端接收到并反馈的第二数量,其中第二数量不大于第一数量;
重传判断单元,用于根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
16.一种用于在通信***中在应用层控制数据重传的方法,所述通信***包括:发送端,接收端和连接所述发送端与接收端的通信链路,所述方法包括:
在发送端,
向接收端预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;
响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;
通过所述通信链路来传输所述数据;
在接收端,
如果接收到所述数据,则记录所述计数值;
根据所述计数值来生成第二数量,所述第二数量表示所述数据被接收端接收到并反馈的数量;
向发送端反馈第一接收端信息,所述第一接收端信息包括第二数量,并且第二数量不大于第一数量;
在发送端,
接收并记录所述第一接收端信息;
根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
17.根据权利要求16所述的方法,其中,向接收端预发送数据包括:将所述数据放置于发送端的存储空间内以备发送。
18.根据权利要求16或17所述的方法,其中,响应于所述数据处于预发送状态,记录第一发送端信息包括:
响应于被置于预发送状态的数据递增,相应地对第一数量进行递增,而无论所述数据是否发送成功,和/或无论是否接收到针对所述数据的应答。
19.根据权利要求16-18中任意一项所述的方法,其中,如果接收到所述数据,则记录所述计数值包括:以新的计数值来覆盖旧的计数值。
20.根据权利要求16-18中任意一项所述的方法,其中,如果接收到所述数据,则记录所述计数值包括:
在接收到的数据中搜索最大的计数值;以及
仅记录所述最大的计数值。
21.根据权利要求16-20中任意一项所述的方法,其中,接收并记录第一接收端信息包括:随着第一接收端信息的变化而更新第二数量。
22.根据权利要求16-20中任意一项所述的方法,其中,接收并记录第一接收端信息包括:记录具有最大的第二数量的第二接收端信息。
23.根据权利要求16-22中任意一项所述的方法,其中,响应于特定事件的发生,所述通信链路向发送端上报中断信号。
24.根据权利要求23所述的方法,其中,响应于从发送端到接收端的数据丢失或错误,则所述通信链路向发送端上报中断信号。
25.根据权利要求24所述的方法,其中,从发送端到接收端的数据丢失或错误包括有效载荷的丢失或错误,和/或计数值的丢失或错误。
26.根据权利要求23所述的方法,其中,响应于从接收端向发送端反馈的、针对所述数据的应答丢失,则所述通信链路向发送端上报中断信号。
27.根据权利要求16-26中任意一项所述的方法,其中,响应于来自于通信链路上报的中断信号,根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
28.根据权利要求27所述的方法,其中,根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传包括:
根据第一发送端信息和第一接收端信息来确定中断的类型;
根据所述中断的类型来确定是否进行所述数据的重传。
29.根据权利要求28所述的方法,其中,根据第一发送端信息和第一接收端信息来确定中断的类型包括:
如果第一数量大于第二数量,则确定中断的类型为从发送端到接收端的数据丢失或错误。
30.根据权利要求29所述的方法,其中,根据所述中断的类型来确定是否进行所述数据的重传包括:
如果确定中断的类型为从发送端到接收端的数据丢失,则根据第二数量来确定所述中断的断点;
从所述断点开始对数据进行重传。
31.根据权利要求28所述的方法,其中,根据第一发送端信息和第一接收端信息来确定中断的类型包括:
如果第一数量等于第二数量,则确定中断的类型为从接收端向发送端反馈的、针对所述数据的应答丢失。
32.根据权利要求31所述的方法,其中,根据所述中断的类型来确定是否进行所述数据的重传包括:
如果确定中断的类型为从接收端向发送端反馈的、针对所述数据的应答丢失,则确定无需进行所述数据的重传。
33.根据权利要求16-32中任意一项所述的方法,其中,通过应用层的缓存区来存储待重传的数据。
34.根据权利要求16-33中任意一项所述的方法,其中,通过应用层来发送重传指示,以进行所述数据的重传。
35.一种在应用层控制数据重传的通信***,所述通信***包括:发送端,接收端和连接所述发送端与接收端的通信链路,其中,
所述发送端向接收端预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;
所述发送端响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;
所述通信链路用于传输所述数据;
所述接收端如果接收到所述数据,则记录所述计数值;
所述接收端根据所述计数值来生成第二数量,所述第二数量表示所述数据被接收端数据被接收端接收到并反馈的第二数量;
所述接收端向发送端反馈第一接收端信息,所述第一接收端信息包括第二数量,并且第二数量不大于第一数量;
所述发送端接收并记录所述第一接收端信息;
所述发送端根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
36.一种电子设备,包括:
一个或多个处理器;以及
存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如权利要求1-14或16-34中任意一项所述的方法。
37.一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如权利要求1-14或16-34中任意一项所述的方法。
CN202211496930.1A 2022-11-25 2022-11-25 一种用于在应用层控制数据重传的方法和相关产品 Pending CN118101138A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211496930.1A CN118101138A (zh) 2022-11-25 2022-11-25 一种用于在应用层控制数据重传的方法和相关产品
PCT/CN2023/112582 WO2024109174A1 (zh) 2022-11-25 2023-08-11 一种用于在应用层控制数据重传的方法和相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211496930.1A CN118101138A (zh) 2022-11-25 2022-11-25 一种用于在应用层控制数据重传的方法和相关产品

Publications (1)

Publication Number Publication Date
CN118101138A true CN118101138A (zh) 2024-05-28

Family

ID=91153676

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211496930.1A Pending CN118101138A (zh) 2022-11-25 2022-11-25 一种用于在应用层控制数据重传的方法和相关产品

Country Status (2)

Country Link
CN (1) CN118101138A (zh)
WO (1) WO2024109174A1 (zh)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140050454A (ko) * 2012-10-19 2014-04-29 삼성전자주식회사 서버, 클라이언트 디바이스 및 그 제어 방법
CN114499749B (zh) * 2020-11-13 2024-06-11 上海华为技术有限公司 一种数据发送方法及其相关设备

Also Published As

Publication number Publication date
WO2024109174A1 (zh) 2024-05-30

Similar Documents

Publication Publication Date Title
JP2503086B2 (ja) デ―タ・リンク制御方法
EP0145318B1 (en) Communications method
EP0969629A2 (en) System and method for sharing resources among a plurality of host computers
US11889255B2 (en) Communication method between earphones and charging box, charging box, earphones and readable storage medium
CN104660627A (zh) 一种上位机与下位机的通信方法和***
US7191356B2 (en) Method for asynchronous support of fault-tolerant and adaptive communication
CN112068963B (zh) 一种嵌入式***分布式调度***
CN113852445B (zh) 一种提高数据传输可靠性的方法、***、设备和存储介质
CN118101138A (zh) 一种用于在应用层控制数据重传的方法和相关产品
EP0094177B1 (en) Apparatus for direct memory-to-memory intercomputer communication
CN107222379A (zh) 一种串口通信的方法和装置
US20030154288A1 (en) Server-client system and data transfer method used in the same system
CN113992740B (zh) 一种基于自主可控的中间件及数据传输方法
CN110928828B (zh) 处理器间业务处理***
US20070230347A1 (en) Communication interface device and communication method
WO2024119869A1 (zh) 一种执行片间通信任务的方法和相关产品
US20230345490A1 (en) Method for Determining Hybrid Automatic Repeat Request-Acknowledgement HARQ-ACK Codebook and Apparatus
US6711179B1 (en) Signal processing apparatus with three layer processing sections, and signal processing system with said two signal processing apparatuses
US20240214131A1 (en) Storage device for transmitting frame sequence number and credit information faster, and method of operating the same
EP4120766A1 (en) Method and apparatus for retransmission under multiple transmission reception point architecture
JP2776274B2 (ja) 中継計算機における仮想バッファ制御システム
KR930006033B1 (ko) 전전자 교환 시스템에서의 프로세서간 메세지 송수신 기능 구현방법
JP2003186767A (ja) 対向接続試験方法
JP2523184B2 (ja) デ―タ転送装置
KR950010483B1 (ko) 전전자교환기의 신호단말망에 접속된 신호버스정합보드에서의 메시지 송신방법

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