掌桥专利:专业的专利平台
掌桥专利
首页

一种数据处理方法、装置及处理芯片

文献发布时间:2023-06-19 13:45:04


一种数据处理方法、装置及处理芯片

技术领域

本申请涉及通信技术领域,特别是涉及一种数据处理方法、装置及处理芯片。

背景技术

由于网络芯片高速数据传输的要求,对基于芯片间高速传输数据(Interlaken,ILKN)协议传输的数据的数据传输带宽要求越来越高。目前,面对数据传输带宽不断提高的需求,通过扩展数据传输通道数量的方式来提高数据传输带宽。例如,每一数据通道传输的带宽(即每一数据传输通道的宽度)为67比特(bit),将8个数据传输通道拓展为16个数据传输通道,数据传输带宽将增加一倍,即数据传输带宽增加了(16-8)*67bit。

但是,在相关技术中,Interlaken协议外侧(Interlaken Look-Aside,ILKN_LA)的处理芯片需要在一个时钟周期内完成对接收到的数据的数据包开始(Start Of Packet,SOP)和数据包结束(End Of Packet,EOP)位置的检索,浮标位置的计算,残余数据的获取等操作。这使得在对数据传输通道的数量进行增加时,处理芯片需要在一个时钟周期内完成对接收到的数据的所有操作,对处理芯片的单位时钟周期内的数据处理能力提出了较高的要求。也就是处理芯片需要具有较高时序处理能力。然而,随着数据传输通道数量的不断增大,数据传输带宽与处理芯片的时序处理能力将无法匹配,这将导致芯片ILKN_LA的接收设计无法实现,影响数据的正常传输。

发明内容

本申请实施例的目的在于提供一种数据处理方法、装置及处理芯片,以在多数据通道传输的情况下,保证数据传输带宽与处理芯片的时序处理能力的匹配,从而实现芯片ILKN_LA的接收设计,维持数据传输的正常进行。具体技术方案如下:

本申请实施例还提供了一种数据处理方法,应用于ILKN-LA的处理芯片,所述方法包括:

在当前的第一时钟周期组的第一个时钟周期内,分别从多个数据传输通道获取第一数据;所述第一数据中通过每一数据传输通道所获得的数据中包括该数据传输通道对应的有效的(VALID)标识;

将所述第一数据中的无效数据移位至有效数据之后,得到第二数据,其中,所述有效数据为VALID标识为第一数值的数据传输通道所传输的数据,所述无效数据为VALID标识为第二数值的数据传输通道所传输的数据;

在所述第一时钟周期组的第二个时钟周期内,将所述第二数据缓存至先入先出(First Input First Output,FIFO)缓存中,并对所述FIFO缓存中的缓存数据进行EOP位置检索,得到第一检索结果;

在所述第一时钟周期组的第三个时钟周期内,根据第二时钟周期组对应的第一浮标位置,对第一残余数据、预设浮标和所述FIFO缓存输出的缓存数据进行拼接,得到所述第一时钟周期组的第一拼接数组,以使得所述预设浮标在所述第一拼接数组中的位置为所述第一浮标位置,所述第一拼接数组中所述预设浮标之前的数据为所述第一残余数据中的有效数据,所述第一拼接数组中所述预设浮标之后的数据为所述FIFO缓存输出的缓存数据;其中,所述第二时钟周期组为所述第一时钟周期组的上一时钟周期组,所述第一残余数据为所述第二时钟周期组的第二拼接数组中未输出的数据;

对所述第一拼接数组中的所述第一残余数据进行EOP位置检索,得到第二检索结果;

根据所述第一检索结果和所述第二检索结果,在所述第一拼接数组满足预设输出条件时输出目标数据,所述目标数据为所述第一拼接数组的首位至首个EOP所在目标位置之间的有效数据。

本申请实施例还提供了一种数据处理装置,应用于ILKN-LA的处理芯片,所述装置包括:

第一获取模块,用于在当前的第一时钟周期组的第一个时钟周期内,分别从多个数据传输通道获取第一数据;所述第一数据中通过每一数据传输通道所获得的数据中包括该数据传输通道对应的VALID标识;

移位模块,用于将所述第一数据中的无效数据移位至有效数据之后,得到第二数据,其中,所述有效数据为VALID标识为第一数值的数据传输通道所传输的数据,所述无效数据为VALID标识为第二数值的数据传输通道所传输的数据;

第一检索模块,用于在所述第一时钟周期组的第二个时钟周期内,将所述第二数据缓存至FIFO缓存中,并对所述FIFO缓存中的缓存数据进行EOP位置检索,得到第一检索结果;

拼接模块,用于在所述第一时钟周期组的第三个时钟周期内,根据第二时钟周期组对应的第一浮标位置,对第一残余数据、预设浮标和所述FIFO缓存输出的缓存数据进行拼接,得到所述第一时钟周期组的第一拼接数组,以使得所述预设浮标在所述第一拼接数组中的位置为所述第一浮标位置,所述第一拼接数组中所述预设浮标之前的数据为所述第一残余数据中的有效数据,所述第一拼接数组中所述预设浮标之后的数据为所述FIFO缓存输出的缓存数据;其中,所述第二时钟周期组为所述第一时钟周期组的上一时钟周期组,所述第一残余数据为所述第二时钟周期组的第二拼接数组中未输出的数据;

第二检索模块,用于对所述第一拼接数组中的所述第一残余数据进行EOP位置检索,得到第二检索结果;

输出模块,用于根据所述第一检索结果和所述第二检索结果,在所述第一拼接数组满足预设输出条件时输出目标数据,所述目标数据为所述第一拼接数组的首位至首个EOP所在目标位置之间的有效数据。

本申请实施例还提供了一种处理芯片,所述处理芯片用于执行上述任一所述的数据处理方法步骤。

本申请实施例还提供了一种机器可读存储介质,所述机器可读存储介质存储有能够被处理芯片执行的机器可执行指令,所述处理芯片被所述机器可执行指令促使:实现上述任一所述的数据处理方法步骤。

本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的数据处理方法。

本申请实施例提供的技术方案中,在当前的第一时钟周期组的第一个时钟周期内,通过将接收到的第一数据中的无效数据移位到有效数据之后,得到第二数据;在第一时钟周期组的第二个时钟周期内,将第二数据缓存至FIFO缓存中,并对FIFO缓存中的缓存数据进行EOP位置检索,得到第一检索结果;在第一时钟周期组的第三个时钟周期内,对第一残余数据、预设浮标以及FIFO缓存输出的缓存数据进行拼接,得到第一时钟周期组的第一拼接数组;通过对第一拼接数组中的第一残余数据进行EOP位置检索,得到第二检索结果;根据第一检索结果和第二检索结果,在第一拼接数组满足预设输出条件时输出目标数据。

相比于相关技术,处理芯片通过第一时钟周期组包括的三个时钟周期对接收到的数据进行处理,也就是通过上述第一个时钟周期、第二个时钟周期和第三个时钟周期,分别对接收到的数据进行有效数据的位置调整、数据缓存、EOP位置检索和目标数据输出等操作,完成对接收到的数据的处理,这使得处理芯片可以在第一时钟周期组中完成数据处理过程,在满足数据接收带宽的前提下,通过多时钟周期的分时处理,提高了处理芯片的时序收敛能力,保证了在多数据通道传输的情况下,保证数据传输带宽与处理芯片的时序收敛能力间的匹配。

再者,在第二个时钟周期和第三个时钟周期内,分别对第一拼接数组中的缓存数据部分和残余数据部分进行EOP位置检索,实现了数据的分段处理,提高了处理芯片的时序收敛能力,保证了在多数据通道传输的情况下,保证数据传输带宽与处理芯片的时序收敛能力间的匹配。

此外,在第一个时钟周期内,通过对接收到的数据中有效数据的位置调整,可以避免无效数据排列在前的情况,便于后期仅对接收到的有效数据进行处理,提高了处理芯片的时序收敛能力,保证了在多数据通道传输的情况下,保证数据传输带宽与处理芯片的时序收敛能力间的匹配。

因此,采用本申请实施例提供的技术方案,在多数据通道传输的情况下,保证数据传输带宽与处理芯片的时序处理能力间的匹配,从而实现芯片ILKN_LA的接收设计,维持数据传输的正常进行。

当然,实施本申请的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的数据处理方法的第一种流程示意图;

图2为本申请实施例提供的数据处理方法的第二种流程示意图;

图3为本申请实施例提供的数据处理方法的第三种流程示意图;

图4为本申请实施例提供的数据处理方法的第四种流程示意图;

图5为本申请实施例提供的数据处理方法的第五种流程示意图;

图6为本申请实施例提供的数据处理方法的第六种流程示意图;

图7为本申请实施例提供的数据处理装置的一种结构示意图;

图8为本申请实施例提供的处理芯片的一种结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

相关技术中,在利用ILKN协议进行数据传输时,两个处理芯片(即发送侧的处理芯片和接收侧的处理芯片)间可以设置有多个数据传输通道。为便于理解,以两个处理芯片间的数据传输通道的数量为8(即通道0-通道8)为例进行说明。每一数据传输通道的带宽为67bit。

发送侧的处理芯片在向接收侧的处理芯片发送多个数据包时,可以将每一数据包拆分为大小为64bit的有效数据,并通过其与接收侧的处理芯片间的8个数据传输通道,在每一时钟周期内向接收侧的处理芯片发送8*67bit的数据,每一67bit的数据中除了包括64bit的有效数据外,还包括每一数据通道的VALID标识。除此以外,每一67bit的数据中还可以包括数据包所对应的SOP或EOP。

接收侧的处理芯片在接收到的发送侧的处理芯片通过每一数据通道发送的67bit的数据后,可以对8个数据传输通道所对应的数据进行合并,得到8*67bit的数据,也就是得到一个1*536bit的数据,并将该数据存储至FIFO缓存。

接收侧的处理芯片根据上一时钟周期对应的残余数据和浮标位置,对该残余数据、预设浮标以及FIFO缓存在当前时钟周期输出的8*67bit的数据进行拼接,得到当前时钟周期的拼接数组。

接收侧的处理芯片通过对当前时钟周期的拼接数组进行SOP位置检索和EOP位置检索,在确定该拼接数组中首个SOP所在的位置和首个EOP所在的位置后,输出首个SOP所在的位置至首个EOP所在的位置间的所有有效数据。

接收侧的处理芯片根据当前时钟周期的拼接数组中数据的输出情况,确定当前时钟周期对应的残余数据和浮标位置。

在上述数据处理过程中,接收侧的处理芯片需要在一个时钟周期内,完成上述SOP位置检索、EOP位置检索、拼接数组构建、数据输出、残余数据确定、浮标位置确定等操作。在对上述发送侧和接收侧的处理芯片间的数据传输通道的数量进行扩展后,如将数据传输通道的数量由8扩展到16时,采用相关技术时,接收侧的处理芯片在同一时间周期内接收到的数据量将大大提高,这将导致接收侧的处理芯片在一个时间周期内无法完成对数据的处理过程,造成数据传输带宽与处理芯片的时序收敛能力无法匹配,从而导致芯片ILKN_LA的接收设计无法实现,影响数据的正常传输。

为了解决相关技术的技术问题,本申请实施例提供了一种数据处理方法,该方法应用于ILKN-LA的处理芯片,该处理芯片可以为网络芯片,该处理芯片可以集成在多种网络设备中,如路由器、网关等网络设备,在此,对处理芯片以及处理芯片所集成的网络设备不作具体限定。如图1所示,图1为本申请实施例提供的数据处理方法的第一种流程示意图。该方法包括以下步骤。

步骤S101,在当前的第一时钟周期组的第一个时钟周期内,分别从多个数据传输通道获取第一数据;第一数据中通过每一数据传输通道所获得的数据中包括该数据传输通道对应的VALID标识。

步骤S102,将第一数据中的无效数据移位至有效数据之后,得到第二数据,其中,有效数据为VALID标识为第一数值的数据传输通道所传输的数据,无效数据为VALID标识为第二数值的数据传输通道所传输的数据。

步骤S103,在第一时钟周期组的第二个时钟周期内,将第二数据缓存至FIFO缓存中,并对FIFO缓存中的缓存数据进行EOP位置检索,得到第一检索结果。

步骤S104,在第一时钟周期组的第三个时钟周期内,根据第二时钟周期组对应的第一浮标位置,对第一残余数据、预设浮标和FIFO缓存输出的缓存数据进行拼接,得到第一时钟周期组的第一拼接数组,以使得预设浮标在第一拼接数组中的位置为第一浮标位置,第一拼接数组中预设浮标之前的数据为第一残余数据中的有效数据,第一拼接数组中预设浮标之后的数据为FIFO缓存输出的缓存数据。

其中,第二时钟周期组为第一时钟周期组的上一时钟周期组,第一残余数据为第二时钟周期组的第二拼接数组中未输出的数据。

步骤S105,对第一拼接数组中的第一残余数据进行EOP位置检索,得到第二检索结果。

步骤S106,根据第一检索结果和第二检索结果,在第一拼接数组满足预设输出条件时输出目标数据,目标数据为第一拼接数组的首位至首个EOP所在目标位置之间的有效数据。

在本申请实施例中,上述发送侧的处理芯片和接收侧的处理芯片既可以用于数据发送,也可以用于数据接收。在此,对上述发送侧的处理芯片和接收侧的处理芯片并不起任何限定作用。

通过图1所示的方法,在当前的第一时钟周期组的第一个时钟周期内,通过将接收到的第一数据中的无效数据移位到有效数据之后,得到第二数据;在第一时钟周期组的第二个时钟周期内,将第二数据缓存至FIFO缓存中,并对FIFO缓存中的缓存数据进行EOP位置检索,得到第一检索结果;在第一时钟周期组的第三个时钟周期内,对第一残余数据、预设浮标以及FIFO缓存输出的缓存数据进行拼接,得到第一时钟周期组的第一拼接数组;通过对第一拼接数组中的第一残余数据进行EOP位置检索,得到第二检索结果;根据第一检索结果和第二检索结果,在第一拼接数组满足预设输出条件时输出目标数据。

相比于相关技术,处理芯片通过第一时钟周期组包括的三个时钟周期对接收到的数据进行处理,也就是通过上述第一个时钟周期、第二个时钟周期和第三个时钟周期,分别对接收到的数据进行有效数据的位置调整、数据缓存、EOP位置检索和目标数据输出等操作,完成对接收到的数据的处理,这使得处理芯片可以在第一时钟周期组中完成数据处理过程,在满足数据接收带宽的前提下,通过多时钟周期的分时处理,提高了处理芯片的时序收敛能力,保证了在多数据通道传输的情况下,保证数据传输带宽与处理芯片的时序收敛能力间的匹配。

再者,在第二个时钟周期和第三个时钟周期内,分别对第一拼接数组中的缓存数据部分和残余数据部分进行EOP位置检索,实现了数据的分段处理,提高了处理芯片的时序收敛能力,保证了在多数据通道传输的情况下,保证数据传输带宽与处理芯片的时序收敛能力间的匹配。

此外,在第一个时钟周期内,通过对接收到的数据中有效数据的位置调整,可以避免无效数据排列在前的情况,便于后期仅对接收到的有效数据进行处理,提高了处理芯片的时序收敛能力,保证了在多数据通道传输的情况下,保证数据传输带宽与处理芯片的时序收敛能力间的匹配。

下面通过具体的实施例,对本申请实施例进行说明。为便于描述,下文仅以接收侧的处理芯片(下文简称为处理芯片)为执行主体,对数据处理过程进行说明。

针对上述步骤S101,即在当前的第一时钟周期组的第一个时钟周期内,分别从多个数据传输通道获取第一数据;第一数据中通过每一数据传输通道所获得的数据中包括该数据传输通道对应的VALID标识。

在本步骤中,发送侧的处理芯片与处理芯片(即接收侧的处理芯片)通过多个数据传输通道通信连接。发送侧的处理芯片在当前的第一时钟周期组的第一个时钟周期内,可以通过每一数据传输通道向处理芯片发送数据。发送侧的处理芯片通过每一数据传输通道发送的数据中包括该数据传输通道对应的VALID标识。此时,处理芯片将接收到发送侧的处理芯片通过每一数据传输通道发送的数据,即第一数据。

为便于理解,以发送侧的处理芯片与处理芯片间的数据传输通道的数量为16,每一数据传输通道的带宽为67bit为例进行说明。

发送侧的处理芯片可以将一个数据包或多个数据包中的数据拆分成多个64bit的数据,并通过每一输出传输通道向处理芯片发送拆分得到的每一64bit的数据,也就是发送侧的处理芯片每一次发送16*67bit的数据。在每一67bit的数据中,除了包括数据包拆分得到的64bit的数据以外,还包括每一数据传输通道对应的VALID标识。此时,处理芯片可以从16个数据传输通道中获取16个67bit的数据,这16*67bit的数据即为上述第一数据。

上述发送侧的处理芯片与处理芯片之间可以有多个数据传输通道,具体可以根据用户需求进行拓展,在此,对发送侧的处理芯片和处理芯片之间的数据传输通道的数量不作具体限定。为便于理解,下面仅以数据传输通道的数量为16,每一数据传输通道的带宽为67bit为例进行说明,并不起任何限定作用。

在本申请实施例中,针对每一数据包,在该数据包所对应的至少一个64bit的数据中,第一个数据中包括该数据包的SOP,最后一个数据包括该数据包的EOP。

为便于理解,以某一数据包被拆分为5个64bit的数据,即数据1-数据5为例进行说明。发送侧的处理芯片可以分别利用5个数据传输通道,如通道1-通道5,将该数据包所对应的数据1-数据5发送至处理芯片。每一数据传输通道传输的数据量为67bit,每一67bit的数据中包括该数据所对应的数据传输通道的VALID标识,并且,通道1所传输的67bit的数据还包括该数据包的SOP,通道5所传输的67bit的数据中还包括该数据包的EOP。

上述发送侧的处理芯片在通过每一数据通道向处理芯片发送数据时,由于该数据可以为某一数据包中的任意一段数据,因此,在该数据中除了包括数据包拆分到的数据和VALID标识以外,还可以包括数据包的SOP和/或EOP。在此,对上述每一数据传输通道所传输的数据包括的内容不作具体限定。

在本申请实施例中,上述发送侧的处理芯片在通过多个数据传输通道进行数据发送时,可以按照预先约定的发送方式,将每一数据包拆分得到的至少一个数据发送至处理芯片。

例如,某一数据包被拆分得到16个64bit的数据,即数据0-数据15。数据0-数据15的排列顺序即为每一64bit的数据在数据包中的排列顺序。发送侧的处理芯片在向处理芯片发送数据0-数据15,可以按照每一64bit的数据在数据包中的顺序依次通过不同的数据传输通道向处理芯片发送数据。如,数据0通过数据传输通道0发送,数据1通过数据传输通道1发送,以此类推,将16个64bit的数据通过对应的数据传输通道发送给处理芯片。

处理芯片按照预先约定的接收方式,对接收到的每一67bit的数据进行排序,得到上述第一数据。

发送侧的处理芯片和处理芯片根据预先约定的发送方式和接收方式,可以有效保证数据传输的有序性。

在本申请实施例中,上述VALID标识用于指示数据通道数据是否有效。例如,当某一数据传输通道对应的VALID标识为第一数值时,该数据传输通道有效,该数据传输通道传输的数据为有效数据;当某一数据传输通道对应的VALID标识为第二数值时,该数据传输通道无效,相应地,该数据通道传输的数据为无效数据。

一个可选的实施例中,上述第一数值可以为1,第二数值可以为0。在此,对上述第一数值和第二数值不作具体限定。

在本申请实施例中,由于发送侧的处理芯片向处理芯片发送的数据包中的数据可能来自多个数据包,因此,发送侧的处理芯片在向处理芯片发送数据时,可以在两个数据包之间发送一段无效数据,如67bit的无效数据。也就是发送侧的处理芯片在向处理芯片发送一个数据包后,可以发送一段无效数据,并在无效数据发送完成后,向处理芯片发送另一数据包,从而实现对不同数据包区分。

上述发送侧的处理芯片可以为与处理芯片通信连接的任一设备中的芯片,该设备包括但不限于用户终端、服务器等。在此,对上述发送侧的处理芯片所在的设备不作具体限定。

上述发送侧的处理芯片可以为数据的发送端,也可以为数据的接收端。为便于理解,在本申请实施例中仅以发送侧的处理芯片为数据的发送端为例进行说明,并不起任何限定作用。

在本申请实施例中,处理芯片与发送侧的处理芯片通信连接。其中,发送侧的处理芯片的数量可以为一个或多个。当发送侧的处理芯片的数量为多个时,每一发送侧的处理芯片在向处理芯片发送数据时,基于上述Interlaken协议,路由协议进行数据传输。处理芯片根据接收到的数据中携带的路由信息,确定接收到的每一第一数据所对应的发送侧的处理芯片。

针对上述步骤S102,即将第一数据中的无效数据移位至有效数据之后,得到第二数据,其中,有效数据为VALID标识为第一数值的数据传输通道所传输的数据,无效数据为VALID标识为第二数值的数据传输通道所传输的数据。

在本步骤中,由于处理芯片所接收到的第一数据中可能同时包括有效数据和无效数据,因此,在上述第一个时钟周期内,处理芯片针对其从每一数据传输通道获取到的数据,根据该数据传输通道的VALID标识,确定该数据为有效数据还是无效数据。当第一数据中包括无效数据时,处理芯片可以对第一数据中的无效数据的位置和有效数据的位置进行调整,得到第二数据。也就是处理芯片可以将第一数据中的无效数据移动到有效数据之后,得到第二数据。

为便于理解,对上述无效数据的位置调整过程进行举例说明。

上述发送侧的处理芯片与处理芯片间的16个数据传输通道为通道0-通道15。现假设通道3和通道4所对应的VALID标识为上述第二数值,其他14个数据传输通道的VALID标识为上述第一数值。当处理芯片接收到上述第一数据后,可以确定第一数据中通过通道3和通道4所传输的数据为无效数据,通过其他14个数据传输通道所传输的数据为有效数据。

以数据传输通道的排列顺序表示处理芯片所接收到的各数据传输通道所传输的数据。若第一数据中通过每一数据传输通道所传输的数据所对应的排列顺序表示为:通道0、通道1、通道2、通道3、通道4、通道5、通道6、通道7、通道8、通道9、通道10、通道11、通道12、通道13、通道14、通道15。处理芯片在确定通过通道3和通道4所传输的数据为无效数据后,可以将通过通道3和通道4所传输的数据调整到所有有效数据之后,得到第二数据。此时,在第二数据中通过每一数据传输通道所传输的数据所对应的排列顺序表示为:通道0、通道1、通道2、通道5、通道6、通道7、通道8、通道9、通道10、通道11、通道12、通道13、通道14、通道15、通道3、通道4。

在本申请实施例中,由于上述无效数据是在一个数据包发送完成,另一个数据包发送前发送的,因此,无效数据是介于两个数据包的EOP和SOP之间的,前一个数据包的EOP和后一个数据包的SOP之间。处理芯片对第一数据中的无效数据所在位置的调整,可以使得调整得到第二数据中有效数据始终位于无效数据之前,避免了后期在第一时钟周期组的第三个时钟周期内确定出的第二残余数据的首位为无效数据的情况,从而避免在第三个时钟周期内对第二残余数据中的无效数据所在的位置进行调整的过程,使得无效数据位置调整前置,在平衡第一时钟周期组的各时钟周期内数据处理过程的同时,缓解后期数据处理的压力,缩短了后期数据处理所需的时间,提高了处理芯片的时序收敛能力。

在本申请实施例中,上述步骤S101-步骤S102均在上述第一时钟周期组的第一个时钟周期内执行。

针对上述步骤S103,即在第一时钟周期组的第二个时钟周期内,将第二数据缓存至FIFO缓存中,并对FIFO缓存中的缓存数据进行EOP位置检索,得到第一检索结果。

在本申请实施例中,处理芯片中包括寄存器模块。该寄存器模块可以按照预设的时钟周期进行采样。

在上述第一时钟周期组中,上述寄存器模块每进行一次采样,则进入一个新的时钟周期。在上述第一个时钟周期后,寄存器模块进行一次采样,将进入该第一时钟周期组的第二个时钟周期。此时,处理芯片可以将上述第二数据缓存至FIFO缓存。

一个可选的实施例中,由于上述第二数据为多个数据传输通道所传输的数据,因此,第二数据所对应的带宽为所有数据传输通道带宽的和值,如上述16*67bit。为便于对第二数据的缓存,处理芯片可以将多个数据传输通道所传输的第二数据合并为一个数据传输通道所对应的数据,并将该数据缓存至FIFO缓存。

例如,将上述16*67bit的数据(该数据的长度为16)合并为1*1072bit的数据(该数据的长度为1)。

在本申请实施例中,上述FIFO缓存满足先入先出的输出特征。也就是在FIFO缓存中,先存入的数据将优先输出。

处理芯片在将上述第二数据缓存至上述FIFO缓存后,可以对该FIFO缓存中的缓存数据进行EOP位置检索,得到第一检索结果。

一个可选的实施例中,处理芯片在对FIFO缓存中的缓存数据进行EOP位置检索时,可以按照FIFO缓存中缓存的每一数据所对应的先后顺序,依次确定该数据是否为EOP。若检索到首个EOP,则终止EOP检索过程,此时,处理芯片将得到指示FIFO缓存中的缓存数据中首个EOP所在的位置的第一检索结果。若FIFO缓存中未检索到的首个EOP,则终止EOP检索过程,此时,处理芯片将得到指示FIFO缓存中的缓存数据中未包括EOP的第一检索结果。

一个可选的实施例中,为了提高EOP位置检索的效率,上述在对FIFO缓存中的缓存数据进行EOP位置检索时,可以FIFO缓存中前预设数量个缓存数据进行EOP位置检索。其中,FIFO缓存中前预设数量个缓存数据为FIFO缓存在第一时钟周期组的第三个时钟周期输出的缓存数据。

上述预设数量是根据发送侧的处理芯片在每一时钟周期发送的数据量确定的。例如,发送侧的处理芯片每一时钟周期发送16*67bit的数据,此时,上述预设数量可以为16*67bit。在此,对上述预设数量不作具体限定。

在本申请实施例中,上述第二数据的缓存步骤和缓存数据的EOP位置检索步骤均在第一时钟周期组的第一个时钟周期内执行。

针对上述步骤S104,即在第一时钟周期组的第三个时钟周期内,根据第二时钟周期组对应的第一浮标位置,对第一残余数据、预设浮标和FIFO缓存输出的缓存数据进行拼接,得到第一时钟周期组的第一拼接数组,以使得预设浮标在第一拼接数组中的位置为第一浮标位置,第一拼接数组中预设浮标之前的数据为第一残余数据中的有效数据,第一拼接数组中预设浮标之后的数据为FIFO缓存输出的缓存数据。

在本步骤中,在上述第一时钟周期组的第二个时钟周期后,当上述寄存器模块再次进行采样时,将进入该第一时钟周期组的第三个时钟周期。此时,上述FIFO缓存将在该第三个时钟周期内输出缓存数据。处理芯片可以获取第一时钟周期组的上一时钟周期组(即第二时钟周期组)所对应的第一残余数据和第一浮标位置,从而根据第一浮标位置,对第一残余数据、预设浮标和FIFO缓存在第三个时钟周期输出的缓存数据进行拼接,得到上述第一时钟周期组的第一拼接数组。关于该第一拼接数组的构建方式可参见下文描述,在此不作具体说明。

上述第一拼接数组中包括第一残余数据中的有效数据、预设浮标和FIFO缓存输出的缓存数据。在该第一拼接数组中,预设浮标所在的位置为上述第一浮标位置,该预设浮标之前的数据为第一残余数据中的有效数据,该预设浮标之后的数据为FIFO缓存输出的缓存数据。

上述第二时钟周期组为第一时钟周期组的上一时钟周期组。第一残余数据为第二时钟周期组的第二拼接数组中未输出的数据。

在本申请实施例中,在第二时钟周期组的第三个时钟周期内,处理芯片在确定第一残余数据后,可以将该第一残余数据缓存至残余缓存中。在上述第一时钟周期组的第三个时钟周期内,FIFO缓存输出缓存数据后,寄存器模块进行采样后,处理芯片对残余缓存中的第一残余数据、预设浮标和FIFO缓存输出缓存数据进行拼接,得到第一拼接数组。

上述拼接处理前寄存器模块进行采样是用于保证对第一残余数据、预设浮标和FIFO缓存输出缓存数据的同步处理。

上述预设浮标可以为预设标识,如预设字符、预设数值等。在此,对上述预设浮标不作具体限定。

在本申请实施例中,上述FIFO缓存在第三个时钟周期输出的缓存数据时,可以将其缓存的数据重新拆分成上述多个数据通道所对应传输的数据。例如,将上述1*1072bit的数据重新拆分为16*67bit的数据。

上述FIFO缓存在输出其缓存的缓存数据时,按照先入先出的顺序进行数据输出。每一第三个时钟周期内输出的缓存数据的数据量是相同的,即输出的缓存数据的数据量即为上述预设数量。

在本申请实施例中,FIFO缓存在每一第三个时钟周期内输出的缓存数据后,该缓存数据仍缓存在该FIFO缓存,也就是FIFO缓存在进行缓存数据输出时并未丢弃其输出的缓存数据。

上述第一拼接数组的带宽是根据预设数据输出长度确定的。该预设数据输出长度与预设数据输出宽度的乘积用于指示每一数据包所包括的有效数据的最大数据量。例如,若预先设定每一数据包所包括的有效数据的最大数据量为9*64bit的有效数据,则预设数据传输长度Q为9,预设数据输出宽度为64bit。也就是针对每一数据包,发送侧的处理芯片最多可以将该数据包拆分为9个64bit的数据,并通过9个数据传输通道发送至处理芯片。

由于FIFO缓存每一次输出的缓存数据的数据量与上述第二数据的数据量相同,即16*67bit。上述第一拼接数组的长度L可以为残余缓存的深度B与数据传输通道的和值,即L=B+16。

上述残余缓存是用于存储每一时钟周期组对应的残余数据。该残余缓存的深度为B,即该残余缓存所能容纳的残余数据的长度为B。该残余缓存的深度B可以根据上述预设数据输出长度以及数据传输通道的数量确定,即B≥16+Q-1。

为便于理解,以预设数据输出长度为9,即Q=9为例进行说明。残余缓存的深度B≥16+9-1=24,也就是残余缓存的最小深度为24。此时,上述第一拼接数组的长度L=24+16=40。也就是上述第一拼接数组所对应的长度至少为40。以每一长度的数据的数据量(即宽度)为67bit为例,残余缓存至少可以存储24*67bit的数据,第一拼接数组所对应的带宽至少为40*67bit。

在本申请实施例中,对上述第一拼接数组的长度、预设数据输出长度,残余缓存的深度不作具体限定。

针对上述步骤S105,即对第一拼接数组中的第一残余数据进行EOP位置检索,得到第二检索结果。

在本步骤中,在上述第一时钟周期组的第三个时钟周期内,处理芯片拼接得到上述第一拼接数组后,可以对该第一拼接数组中的第一残余数据进行EOP位置检索,也就是对上述第一拼接数组中的有效数据进行EOP位置检索,得到第二检索结果。

上述第一拼接数组中的第一残余数据进行EOP位置检索过程与上述FIFO缓存中的缓存数据的EOP位置检索过程相似,在此,对上述第一拼接数组中的第一残余数据进行EOP位置检索过程不作具体说明。

在本申请实施例中,上述第二检索结果可以指示第一拼接数组中的第一残余数据中首个EOP所在的位置,也可以指示第一拼接数组中的第一残余数据未包括EOP。在此,对上述第二检索结果不作具体限定。

针对上述步骤S106,即根据第一检索结果和第二检索结果,在第一拼接数组满足预设输出条件时输出目标数据,目标数据为第一拼接数组的首位至首个EOP所在目标位置之间的有效数据。

在本步骤中,处理芯片可以根据上述第一检索结果和第二检索结果,判断第一拼接数组是否满足预设输出条件。也就是判断第一拼接数组是否命中预设输出条件。当第一拼接数组满足预设输出条件时,处理芯片可以确定命中预设输出条件,此时,处理芯片进行输出操作,也就是处理芯片输出第一拼接数组中的目标数据。关于上述目标数据的输出可参见下文描述,在此不作具体说明。

上述目标数据为第一拼接数组的首位至首个EOP所在目标位置之间的有效数据。

一个可选的实施例中,当第一拼接数组未满足预设输出条件时,处理芯片可以确定未命中预设输出条件,此时,处理芯片不进行输出操作。

在本申请实施例中,上述步骤S104-步骤S106均在上述第一时钟周期组中的第三个时钟周期内执行。

上述第一时钟周期组包括上述第一个时钟周期、第二个时钟周期和第三个时钟周期,每一个时钟周期所对应的时长相同,均由上述寄存器采样确定。在此,对上述第一时钟周期组中的每一个时钟周期所对应的时长不作具体限定。

在本申请实施例中,处理芯片对其接收到的数据的处理过程均按照上述步骤S101-步骤S106执行,为便于理解,在本申请实施例中,仅以第一时钟周期组内对接收到的数据的处理过程进行说明。关于其他时钟周期组,如上述第二时钟周期组中接收到的数据的数据处理过程,均可参照上述第一时钟周期组中接收到的数据的数据处理过程,在此不作具体说明。

一个可选的实施例中,根据图1所示的方法,本申请实施例还提供了一种数据处理方法。如图2所示,图2为本申请实施例提供的数据处理方法的第二种流程示意图。在该方法中具体将上述步骤S104细化为以下步骤,即步骤S1041-步骤S1043。

步骤S1041,在第一时钟周期组的第三个时钟周期内,获取FIFO缓存输出的缓存数据。

在本步骤中,在上述第一时钟周期组的第三个时钟周期内,FIFO缓存输出缓存数据。此时,处理芯片将获取到FIFO缓存所输出的缓存数据。

步骤S1042,获取第二时钟周期组对应的第一残余数据和第一浮标位置。

在本申请实施例中,在每一时钟周期组的第三个时钟周期内,无论该时钟周期组的拼接数组是否输出数据,该拼接数组中剩余的数据都将被确定为该时钟周期组对应的残余数据。并且,处理芯片也会根据该时钟周期组的拼接数组的输出情况,以及该时钟周期组的上一时钟周期组的FIFO缓存中缓存数据的丢弃情况,计算该时钟周期组所对应的浮标位置。该浮标位置用于指示该时钟周期组的下一时钟周期组的拼接数组中预设浮标所在的位置。关于浮标位置的确定方法可参照下文第二浮标位置的确定方法,在此不作具体说明。

在上述第一时钟周期组的第三个时钟周期内,处理芯片可以获取第一时钟周期组的上一时钟周期组(即上述第二时钟周期组)所对应的第一残余数据和第一浮标位置。其中,第一残余数据可以从上述残余缓存得到。

步骤S1043,将第一残余数据填充至预设拼接数组中,并将预设浮标填充至预设拼接数组中与第一浮标位置对应的位置处,在预设浮标后填充FIFO缓存输出的缓存数据,得到第一时钟周期组的第一拼接数组。

在本步骤中,处理芯片根据上述第二时钟周期组对应的第一浮标位置,从预设拼接数组的首位开始填充第二时钟周期组对应的第一残余数据,并根据第一浮标位置,将预设浮标填充至预设拼接数组中与该第一浮标位置对应的位置处。此时,处理芯片可以在预设拼接数组所包括的预设浮标后填充FIFO缓存所输出的缓存数据,得到第一时钟周期组的第一拼接数组。

在本申请实施例中,上述第二时钟周期组所对应的第一残余数据中可能包括无效数据,也可能不包括无效数据。当第一残余数据中包括无效数据时,在上述第一拼接数组中第一残余数据仅包括有效数据,第一残余数据的有效数据后为上述预设浮标,预设浮标后为FIFO缓存输出的缓存数据;当第一残余数据中不包括无效数据时,在上述第一拼接数组中全部的第一残余数据,第一残余数据后为上述预设浮标,预设浮标后为FIFO缓存输出的缓存数据。

通过上述步骤S1041-步骤S1043,处理芯片可以准确的对上述第一残余数据、预设浮标和FIFO缓存输出的缓存数据进行拼接得到第一拼接数组,并且,通过上述第一浮标位置,有效保证了第一拼接数组中不包括第一残余数据中的无效数据,从而避免第一残余数据中的无效数据对第一拼接数组的影响。

一个可选的实施例中,根据上述图1所示的方法,本申请实施例还提供了一种数据处理方法。如图3所示,图3为本申请实施例提供的数据处理方法的第三种流程示意图。在该方法中具体将上述步骤S106细化为以下步骤。即步骤S1061-步骤S1062。

步骤S1061,当第二检索结果指示第一残余数据中首个EOP所在的位置时,或者,当第二检索结果指示第一残余数据未包括EOP,且第一检索结果指示FIFO缓存中的缓存数据中首个EOP所在的位置时,获取第一拼接数组中首位至目标位置之间的有效数据,作为目标数据。

在本申请实施例中,如表1所示,上述第一检索结果和第二检索结果存在以下4中组合情况。

表1

在表1中,第二检索结果为位置1时表示第一拼接数组中的第一残余数据中首个EOP所在的位置为位置1,第二检索结果为-时表示第一拼接数组中的第一残余数据不包括EOP。第一检索结果为-时表示FIFO缓存中的缓存数据不包括EOP,第一检索结果为位置2时表示FIFO缓存中的缓存数据中首个EOP所在的位置为位置2。

根据上述第一检索结果和第二检索结果,上述第一拼接数组至少具有四种情况。

情况一,第一拼接数组所包括的残余数据部分(即预设浮标前的所有数据)中包括首个EOP,但第一拼接数组所包括的缓存数据部分(即预设浮标后的所有数据)中不包括EOP。

上述情况一与上述表1所示的情况1对应。此时,第一拼接数组中首个EOP所在的位置即为残余数据部分中首个EOP所在的位置,如表1所示的位置1。

情况二,第一拼接数组所包括的残余数据部分中包括首个EOP,且第一拼接数组所包括的缓存数据部分中包括首个EOP。

上述情况二与上述表1所示的情况2对应。此时,第一拼接数组中首个EOP所在的位置即为残余数据部分中首个EOP所在的位置。

情况三,第一拼接数组所包括的残余数据部分中未包括EOP,但第一拼接数组所包括的缓存数据部分中包括首个EOP所在的位置。

上述情况三与上述表1所示的情况3对应。此时,第一拼接数组中首个EOP所在的位置可以根据第一拼接数组所包括的残余数据部分的有效数据的长度(也就是上述第一残余数据包中有效数据的长度),以及第一检索结果所指示的首个EOP所在的位置确定。

一个可选的实施例中,当出现上述情况三时,第一拼接数组中首个EOP所在的位置可以表示为:第一残余数据的有效数据的长度与第一检索结果所指示位置的和值,如第一残余数据的有效数据的长度+位置2。

上述位置1和位置2均数据的长度表示。例如,上述位置2为2时表示FIFO缓存输出的缓存数据中,首个EOP所在的位置为第二个67bit数据的末尾。除此以外,上述位置1和位置2还可以表示为数据的数据量。例如,上述位置2为2时表示FIFO缓存输出的缓存数据中,首个EOP所在的位置为第2*67个数据所在的位置。

情况四,第一拼接数组所包括的残余数据部分中未包括EOP,但第一拼接数组所包括的缓存数据部分中包括EOP。

上述情况四与上述表1所示的情况4对应。此时,第一拼接数组中不包括EOP。

在本申请实施例中,上述预设输出条件可以表示为:第二检索结果指示第一残余数据中首个EOP所在的位置;也可以表示为:第二检索结果指示第一残余数据未包括EOP,且第一检索结果指示FIFO缓存中的缓存数据中首个EOP所在的位置。

一个可选的实施例中,当第一拼接数组满足上述情况一、情况二或情况三中的任意一种情况时,处理芯片可以确定第一拼接数组满足上述预设输出条件,此时,处理芯片可以输出第一拼接数组中的目标数据。

另一个可选的实施例中,当第一拼接数组满足上述情况四时,处理芯片可以确定第一拼接数组不满足上述预设输出条件,此时,处理芯片可以确定未命中预设输出条件,处理芯片不会进行数据输出。

一个可选的实施例中,当处理芯片确定第一拼接数组满足上述预设输出条件,针对上述情况一或情况二,处理芯片可以获取第一拼接数组中首位至第二检索结果所指示的首个EOP所在位置间的有效数据,作为目标数据。

另一个可选的实施例中,当处理芯片确定第一拼接数组满足上述预设输出条件,针对上述情况三,处理芯片可以获取第一拼接数组中首位至第一检索结果所指示的首个EOP所在位置间的所有有效数据,作为目标数据。也就是将第一拼接数组中残余数据所包括的全部数据,以及缓存数据部分中首位至首个EOP间的有效数据,确定为目标数据。此时,该目标数据中不包括第一拼接数组中的预设浮标。

步骤S1062,输出目标数据。

在本申请实施例中,上述目标数据为发送侧的处理芯片所发送的一个完整数据包所包括的全部有效数据,因此,处理芯片在每一第三个时钟周期内仅输出一个数据包所包括的有效数据。

通过上述步骤S1061-步骤S1062,处理芯片可以在第一拼接数组满足预设输出条件时,准确的确定出第一拼接数组中的目标数据,从而输出目标数据,提高了确定出的目标数据的准确性,保证了处理芯片输出数据的准确性。

一个可选的实施例中,根据图1所示的方法,本申请实施例还提供了一种数据处理方法。如图4所示,图4为本申请实施例提供的数据处理方法的第四种流程示意图。该方法包括以下步骤。

步骤S401,在当前的第一时钟周期组的第一个时钟周期内,分别从多个数据传输通道获取第一数据;第一数据中通过每一数据传输通道所获得的数据中包括该数据传输通道对应的VALID标识。

步骤S402,将第一数据中的无效数据移位至有效数据之后,得到第二数据,其中,有效数据为VALID标识为第一数值的数据传输通道所传输的数据,无效数据为VALID标识为第二数值的数据传输通道所传输的数据。

步骤S403,在第一时钟周期组的第二个时钟周期内,将第二数据缓存至FIFO缓存中,并对FIFO缓存中的缓存数据进行EOP位置检索,得到第一检索结果。

步骤S404,在第一时钟周期组的第三个时钟周期内,根据第二时钟周期组对应的第一浮标位置,对第一残余数据、预设浮标和FIFO缓存输出的缓存数据进行拼接,得到第一时钟周期组的第一拼接数组,以使得预设浮标在第一拼接数组中的位置为第一浮标位置,第一拼接数组中预设浮标之前的数据为第一残余数据中的有效数据,第一拼接数组中预设浮标之后的数据为FIFO缓存输出的缓存数据。

步骤S405,对第一拼接数组中的第一残余数据进行EOP位置检索,得到第二检索结果。

步骤S406,根据第一检索结果和第二检索结果,在第一拼接数组满足预设输出条件时输出目标数据,目标数据为第一拼接数组的首位至首个EOP所在目标位置之间的有效数据。

上述步骤S401-步骤S406与上述步骤S101-步骤S106相同。

步骤S407,统计第三个时钟周期内FIFO缓存输出的缓存数据中有效数据的第一长度,以及第一拼接数组中未输出的残余数据中有效数据的第二长度。

在本申请实施例中,在上述第一时钟周期组的第三个时钟周期内,处理芯片可以统计FIFO缓存输出的缓存数据中的有效数据的长度,记为第一长度。

在每一时钟周期组中,由于FIFO缓存中的缓存数据可能包括无效数据,也可能不包无效数据,因此,在每一时钟周期组的第三个时钟周期内,该FIFO缓存输出的缓存数据中包括的有效数据的长度也有所不同。

在本申请实施例中,在上述第一时钟周期组的第三个时钟周期内,根据第一拼接数组与预设输出条件的匹配情况的不同,第一拼接数组可能输出上述目标数据,也可能未输出上述目标数据。此时,无论第一拼接数组是否进行数据输出,处理芯片都将统计第一拼接数组中未输出的残余数据中有效数据的长度,记为第二长度。

一个可选的实施例中,当上述第一拼接数组在第一时钟周期组的第三个时钟周期内输出上述目标数据时,上述第二长度为第一拼接数组中有效数据的长度与第一拼接数组中目标数据的长度的差值,具体表示为:第二长度=第一拼接数组中有效数据的长度-第一拼接数组中目标数据的长度。

另一个可选的实施例中,当上述第一拼接数组在第一时钟周期组的第三个时钟周期内未进行数据输出时,上述第二长度为第一拼接数组中有效数据的长度。

在本申请实施例中,在确定上述第一长度和第二长度后,处理芯片可以确定上述第二时钟周期组内上述FIFO缓存是否进行了数据丢弃,以及第一时钟周期组的第三个时钟周期内上述FIFO缓存的当前状态。具体如表2所示,可以包括以下情况。

表2

在本申请实施例中,由于上述步骤S407是在步骤S406之后执行,也就是在FIFO缓存输出缓存数据后执行。

步骤S408,若第二时钟周期组内对FIFO缓存进行了数据丢弃,或者在第三个时钟周期内FIFO缓存的当前状态由空变为非空,则在第一长度与第二长度的和值小于等于预设长度阈值时,对FIFO缓存进行数据丢弃。

在本步骤中,当FIFO缓存在上述第二时钟周期组的数据丢弃情况,以及FIFO缓存在第一时钟周期组的第三个时钟周期内的当前状态,与上述表2所示的情况1、情况2和情况3中的任意一种情况匹配时,处理芯片可以计算上述第一长度和第二长度的和值,并将该和值与预设长度阈值进行比较。当第一长度和第二长度的和值小于等于该预设长度阈值时,处理芯片可以对FIFO缓存中的缓存数据进行丢弃操作,也就是从FIFO缓存中丢弃预设数量个缓存数据。

一个可选的实施例中,当FIFO缓存在上述第二时钟周期的数据丢弃情况,以及FIFO缓存在第一时钟周期组的第三个时钟周期内的当前状态,与上述表2所示的情况1、情况2和情况3中的任意一种情况匹配时,若上述第一长度与第二长度的和值大于上述预设长度阈值时,处理芯片可以确定不需要对FIFO缓存中的缓存数据进行丢弃操作。

上述在对FIFO缓存进行数据丢弃时,每一次丢弃的缓存数据的数量可以为上述预设数量。

上述预设长度阈值可以为上述残余缓存所对应的深度。例如,残余缓存的深度为上述24时,该预设长度阈值为24。在此,对上述预设长度阈值不作具体限定。

一个可选的实施例中,上述对FIFO缓存中的数据进行丢弃操作具体表示表示为对FIFO缓存中的数据进行去(POP)操作。

步骤S409,若第二时钟周期组内未对FIFO缓存进行数据丢弃,且在第三个时钟周期内FIFO缓存未进行数据缓存,则在第二长度小于等于预设长度阈值时,对FIFO缓存进行数据丢弃。

在本步骤中,当FIFO缓存在上述第二时钟周期的数据丢弃情况,以及FIFO缓存在第一时钟周期组的第三个时钟周期内的当前状态,与上述表2所示的情况4匹配时,处理芯片可以将上述第二长度与上述预设长度阈值进行比较。当第二长度小于等于上述预设长度阈值时,处理芯片可以对FIFO缓存中的缓存数据进行丢弃操作,也就是从FIFO缓存中丢弃预设数量个缓存数据。

一个可选的实施例中,当FIFO缓存在上述第二时钟周期的数据丢弃情况,以及FIFO缓存在第一时钟周期组的第三个时钟周期内的当前状态,与上述表2所示的情况4匹配时,若上述第二长度大于预设长度阈值时,处理芯片可以确定不需要对FIFO缓存中的数据进行丢弃操作。

上述步骤S408和步骤S409均是对FIFO缓存中的缓存数据进行丢弃操作,针对不同的情况执行不同的步骤。也就是在满足表2所示的情况1、情况2或情况3时,执行上述步骤S408,当满足表2所示的情况4时,执行上述步骤S409。在此,对上述步骤S408和步骤S409的执行不作具体限定。

上述步骤S407-步骤S409均在上述第一时钟周期组的第三个时钟周期内执行。也就是上述FIFO缓存是在每个时钟周期组的第三个时钟周期内进行数据丢弃操作。

通过上述步骤S407-步骤S409,处理芯片可以确定在每一时钟周期组内是否对FIFO缓存中的数据进行丢弃,在保证已经输出的数据被丢弃的同时,有效保证了该时钟周期组所对应的残余数据的长度不会超过上述预设长度阈值,从而保证残余缓存中不会出现溢出的情况。

一个可选的实施例中,根据图1所示的方法,本申请实施例还提供了一种数据处理方法。如图5所示,图5为本申请实施例提供的数据处理方法的第五种流程示意图。该方法包括以下步骤。

步骤S501,在当前的第一时钟周期组的第一个时钟周期内,分别从多个数据传输通道获取第一数据;第一数据中通过每一数据传输通道所获得的数据中包括该数据传输通道对应的VALID标识。

步骤S502,将第一数据中的无效数据移位至有效数据之后,得到第二数据,其中,有效数据为VALID标识为第一数值的数据传输通道所传输的数据,无效数据为VALID标识为第二数值的数据传输通道所传输的数据。

步骤S503,在第一时钟周期组的第二个时钟周期内,将第二数据缓存至FIFO缓存中,并对FIFO缓存中的缓存数据进行EOP位置检索,得到第一检索结果。

步骤S504,在第一时钟周期组的第三个时钟周期内,根据第二时钟周期组对应的第一浮标位置,对第一残余数据、预设浮标和FIFO缓存输出的缓存数据进行拼接,得到第一时钟周期组的第一拼接数组,以使得预设浮标在第一拼接数组中的位置为第一浮标位置,第一拼接数组中预设浮标之前的数据为第一残余数据中的有效数据,第一拼接数组中预设浮标之后的数据为FIFO缓存输出的缓存数据。

步骤S505,对第一拼接数组中的第一残余数据进行EOP位置检索,得到第二检索结果。

步骤S506,根据第一检索结果和第二检索结果,在第一拼接数组满足预设输出条件时输出目标数据,目标数据为第一拼接数组的首位至首个EOP所在目标位置之间的有效数据。

上述步骤S501-步骤S506与上述步骤S101-步骤S106相同。

步骤S507,获取第三个时钟周期内第一拼接数组中未输出的数据,作为第一时钟周期组对应的第二残余数据。

在本步骤中,在上述第一时钟周期组的第三个时钟周期内,无论第一拼接数组是否进行数据输出,处理芯片都将获取第一拼接数组中未输出的残余数据,得到该第一时钟周期组对应的第二残余数据。

上述第二时钟周期组对应的第一残余数据的获取方式可参照上述第二残余数据的获取方式,在此不作具体说明。

步骤S508,根据第三个时钟周期内第一拼接数组的输出情况,以及第二时钟周期组内FIFO缓存中缓存数据的丢弃情况,确定第一时钟周期组对应的第二浮标位置。

在本步骤中,在上述第一时钟周期组的第三个时钟周期内,处理芯片可以根据该第三个时钟周期内第一拼接数组的输出情况,以及上述第二时钟周期组内FIFO缓存的缓存数据丢弃情况,确定第一时钟周期组对应的第二浮标位置。也就是确定第一时钟周期组的下一时钟周期组的拼接数组中预设浮标所在的位置。关于上述第二浮标位置的确定可见下文描述,在此不作具体说明。

上述步骤S507与步骤S508均在上述第一时钟周期组的第三个时钟周期内执行。也就是每一时钟周期组所对应的残余数据和浮标位置均是在该时钟周期组的第三个时钟周期内确定的。在此,对上述步骤S507和步骤S508的执行顺序不作具体限定。

通过上述步骤S507和步骤S508,处理芯片可以准确确定出当前的第一时钟周期组所对应的第二残余数据和第二浮标位置,从而便于在第一时钟周期组的下一时钟周期组(记为第三时钟周期组)的第三个时钟周期内,根据第二浮标位置,对第二残余数据、预设浮标和FIFO缓存在第三时钟周期组的第三个时钟周期内输出的缓存数据进行拼接,得到第三个时钟周期组所对应的第三拼接数组,从而进行第三时钟周期组的数据输出。第三拼接数组的获得方式可参照上述第一拼接数组的获得方式,在此不作具体说明。

一个可选的实施例中,基于图5所示的方法,本申请实施例还提供了一种数据处理方法。如图6所示,图6为本申请实施例提供的数据处理方法的第六种流程示意图。在该方法中具体将上述步骤S508细化为以下步骤,即步骤S5081-步骤S5084。

步骤S5081,若第三个时钟周期内第一拼接数组中未输出数据,且第二时钟周期组内未对FIFO缓存进行数据丢弃,则确定第一时钟周期组对应的第二浮标位置为第一浮标位置。

在本步骤中,当第三个时钟周期内第一拼接数组中未输出数据,且第二时钟周期组内未对FIFO缓存进行数据丢弃时,处理芯片可以将上述第一浮标位置确定为第一时钟周期组对应的第二浮标位置。也就是预设浮标所在的位置未发生变化。

步骤S5082,若第三个时钟周期内第一拼接数组中输出了目标数据,但第二时钟周期组内未对FIFO缓存进行数据丢弃,则将第一浮标位置与第三长度之间的差值所指示的位置,确定为第一时钟周期组对应的第二浮标位置,第三长度为第三个时钟周期内第一拼接数组中输出的有效数据的长度。

在本步骤中,当第三个时钟周期内第一拼接数组中输出了目标数据,但第二时钟周期组内未对FIFO缓存进行数据丢弃时,处理芯片可以统计第一时钟周期组的第三个时钟周期内第一拼接数组中输出的有效数据的长度(记为第三长度),也就是统计上述步骤S506输出的目标数据的长度,计算上述第一浮标位置与第三长度的差值,并将该差值所指示的位置确定为第一时钟周期组对应的第二浮标位置。也就是第二浮标位置可以表示为:第一浮标位置-第二长度。

步骤S5083,若第三个时钟周期内第一拼接数组中未输出数据,但第二时钟周期组内对FIFO缓存进行了数据丢弃,则将第一拼接数组中有效数据的第四长度的值所指示的位置,确定为第一时钟周期组对应的第二浮标位置。

在本步骤中,当第三个时钟周期内第一拼接数组中未输出数据,但第二时钟周期组内对FIFO缓存进行了数据丢弃时,处理芯片可以将上述第一拼接数组中有效数据的第四长度的值所指示的位置,确定为第一时钟周期组对应的第二浮标位置。也就是第二浮标位置可以表示为:第四长度。

步骤S5084,若第三个时钟周期内第一拼接数组中输出了目标数据,且第二时钟周期组内对FIFO缓存进行了数据丢弃,则将第四长度与第三长度之间的差值所指示的位置,确定为第一时钟周期组对应的第二浮标位置。

在本步骤中,当第三个时钟周期内第一拼接数组中输出了目标数据,且第二时钟周期组内对FIFO缓存进行了数据丢弃时,处理芯片可以计算上述第四长度和第三长度的差值,并将该差值所指示的位置确定为第一时钟周期组对应的第二浮标位置。也就是第一时钟周期组对应的第二浮标位置为第一拼接数组中有效数据的长度与输出的目标数据的长度的差值,具体表示为:第四长度-第三长度。

上述第二时钟周期组所对应的第一浮标位置的确定方式可参照上述第二浮标位置的确定方式,在此,对上述第二时钟周期组所对应的第一浮标位置的确定不作具体说明。

针对上述步骤S5081-步骤S5084,根据第三个时钟周期内第一拼接数组的输出情况,以及第二时钟周期组内FIFO缓存的缓存数据丢弃情况的不同,执行不同的步骤。在此,对上述步骤S5081-步骤S5084的执行不作具体限定。

通过上述步骤S5081-步骤S5084,处理芯片可以准确确定出每一时钟周期组对应的浮标位置,从而用于指示当前时钟周期组的下一时钟周期组所对应的拼接数组中预设浮标所在的位置,在保证确定出的预设浮标所在的位置的准确性的同时,可以使得下一时钟周期组所对应的拼接数组中预设浮标前的数据仅为当前时钟周期组所对应残余数据中的有效数据部分,也就是下一时钟周期组所对应的拼接数组中当前时钟周期组所对应残余数据中的无效数据部分被预设浮标以及下一时钟周期组FIFO缓存所输出的缓存数据覆盖,保证了在下一时钟周期组内基于该浮标位置拼接得到的拼接数组中的残余数据部分不包括无效数据,提高了拼接数组的准确性,便于后期目标数据的输出。

基于同一种发明构思,根据上述本申请实施例提供的数据处理方法,本申请实施例还提供了一种数据处理装置。如图7所示,图7为本申请实施例提供的数据处理装置的一种结构示意图。该装置包括以下模块。

第一获取模块701,用于在当前的第一时钟周期组的第一个时钟周期内,分别从多个数据传输通道获取第一数据;第一数据中通过每一数据传输通道所获得的数据中包括该数据传输通道对应的VALID标识;

移位模块702,用于将第一数据中的无效数据移位至有效数据之后,得到第二数据,其中,有效数据为VALID标识为第一数值的数据传输通道所传输的数据,无效数据为VALID标识为第二数值的数据传输通道所传输的数据;

第一检索模块703,用于在第一时钟周期组的第二个时钟周期内,将第二数据缓存至FIFO缓存中,并对FIFO缓存中的缓存数据进行EOP位置检索,得到第一检索结果;

拼接模块704,用于在第一时钟周期组的第三个时钟周期内,根据第二时钟周期组对应的第一浮标位置,对第一残余数据、预设浮标和FIFO缓存输出的缓存数据进行拼接,得到第一时钟周期组的第一拼接数组,以使得预设浮标在第一拼接数组中的位置为第一浮标位置,第一拼接数组中预设浮标之前的数据为第一残余数据中的有效数据,第一拼接数组中预设浮标之后的数据为FIFO缓存输出的缓存数据;其中,第二时钟周期组为第一时钟周期组的上一时钟周期组,第一残余数据为第二时钟周期组的第二拼接数组中未输出的数据;

第二检索模块705,用于对第一拼接数组中的第一残余数据进行EOP位置检索,得到第二检索结果;

输出模块706,用于根据第一检索结果和第二检索结果,在第一拼接数组满足预设输出条件时输出目标数据,目标数据为第一拼接数组的首位至首个EOP所在目标位置之间的有效数据。

可选的,上述输出模块706,具体可以用于当第二检索结果指示第一残余数据中首个EOP所在的位置时,或者,当第二检索结果指示第一残余数据未包括EOP,且第一检索结果指示FIFO缓存中的缓存数据中首个EOP所在的位置时,获取第一拼接数组中首位至目标位置之间的有效数据,作为目标数据;输出目标数据。

可选的,上述数据处理装置还可以包括:

统计模块,用于统计第三个时钟周期内FIFO缓存输出的缓存数据中有效数据的第一长度,以及第一拼接数组中未输出的残余数据中有效数据的第二长度;

第一丢弃模块,用于若第二时钟周期组内对FIFO缓存进行了数据丢弃,或者在第三个时钟周期内FIFO缓存的当前状态由空变为非空,则在第一长度与第二长度的和值小于等于预设长度阈值时,对FIFO缓存进行数据丢弃;

第二丢弃模块,用于若第二时钟周期组内未对FIFO缓存进行数据丢弃,且在第三个时钟周期内FIFO缓存未进行数据缓存,则在第二长度小于等于预设长度阈值时,对FIFO缓存进行数据丢弃。

可选的,上述数据处理装置还可以包括:

第二获取模块,用于获取第三个时钟周期内第一拼接数组中未输出的数据,作为第一时钟周期组对应的第二残余数据;

确定模块,用于根据第三个时钟周期内第一拼接数组的输出情况,以及第二时钟周期组内FIFO缓存中缓存数据的丢弃情况,确定第一时钟周期组对应的第二浮标位置。

可选的,上述确定模块,具体可以用于若第三个时钟周期内第一拼接数组中未输出数据,且第二时钟周期组内未对FIFO缓存进行数据丢弃,则确定第一时钟周期组对应的第二浮标位置为第一浮标位置;

若第三个时钟周期内第一拼接数组中输出了目标数据,但第二时钟周期组内未对FIFO缓存进行数据丢弃,则将第一浮标位置的值与第三长度的值之间的差值所指示的位置,确定为第一时钟周期组对应的第二浮标位置,第三长度为第三个时钟周期内第一拼接数组中输出的有效数据的长度;

若第三个时钟周期内第一拼接数组中未输出数据,但第二时钟周期组内对FIFO缓存进行了数据丢弃,则将第一拼接数组中有效数据的第四长度的值所指示的位置,确定为第一时钟周期组对应的第二浮标位置;

若第三个时钟周期内第一拼接数组中输出了目标数据,且第二时钟周期组内对FIFO缓存进行了数据丢弃,则将第四长度的值与第三长度的值之间的差值所指示的位置,确定为第一时钟周期组对应的第二浮标位置。

可选的,上述拼接模块704,具体可以用于在第一时钟周期组的第三个时钟周期内,获取FIFO缓存输出的缓存数据;

获取第二时钟周期组对应的第一残余数据和第一浮标位置;

将第一残余数据填充至预设拼接数组中,并将预设浮标填充至预设拼接数组中与第一浮标位置对应的位置处,在预设浮标后填充FIFO缓存输出的缓存数据,得到第一时钟周期组的第一拼接数组。

通过本申请实施例提供的装置,在当前的第一时钟周期组的第一个时钟周期内,通过将接收到的第一数据中的无效数据移位到有效数据之后,得到第二数据;在第一时钟周期组的第二个时钟周期内,将第二数据缓存至FIFO缓存中,并对FIFO缓存中的缓存数据进行EOP位置检索,得到第一检索结果;在第一时钟周期组的第三个时钟周期内,对第一残余数据、预设浮标以及FIFO缓存输出的缓存数据进行拼接,得到第一时钟周期组的第一拼接数组;通过对第一拼接数组中的第一残余数据进行EOP位置检索,得到第二检索结果;根据第一检索结果和第二检索结果,在第一拼接数组满足预设输出条件时输出目标数据。

相比于相关技术,处理芯片通过第一时钟周期组包括的三个时钟周期对接收到的数据进行处理,也就是通过上述第一个时钟周期、第二个时钟周期和第三个时钟周期,分别对接收到的数据进行有效数据的位置调整、数据缓存、EOP位置检索和目标数据输出等操作,完成对接收到的数据的处理,这使得处理芯片可以在第一时钟周期组中完成数据处理过程,在满足数据接收带宽的前提下,通过多时钟周期的分时处理,提高了处理芯片的时序收敛能力,保证了在多数据通道传输的情况下,保证数据传输带宽与处理芯片的时序收敛能力间的匹配。

再者,在第二个时钟周期和第三个时钟周期内,分别对第一拼接数组中的缓存数据部分和残余数据部分进行EOP位置检索,实现了数据的分段处理,提高了处理芯片的时序收敛能力,保证了在多数据通道传输的情况下,保证数据传输带宽与处理芯片的时序收敛能力间的匹配。

此外,在第一个时钟周期内,通过对接收到的数据中有效数据的位置调整,可以避免无效数据排列在前的情况,便于后期仅对接收到的有效数据进行处理,提高了处理芯片的时序收敛能力,保证了在多数据通道传输的情况下,保证数据传输带宽与处理芯片的时序收敛能力间的匹配。

基于同一种发明构思,根据上述本申请实施例提供的数据处理方法,本申请实施例还提供了一种处理芯片,该处理芯片为上述处理芯片。处理芯片用于执行上述图1-图6所示的任一步骤。

一个可选的实施例中,如图8所示,上述处理芯片可以包括芯片801和机器可读存储介质802,其中,机器可读存储介质802存储有能够被芯片801执行的机器可执行指令,芯片801被该机器可执行指令促使实现上述图1-图6所示的任一步骤。

一个可选的实施例中,如图8所示,处理芯片还可以包括:高速串行总线803;其中,芯片801、机器可读存储介质802通过高速串行总线803完成相互间的通信。

一个可选的实施例中,如图8所示,芯片801还可以通过高速串行总线803与芯片外设804通信连接。上述多个数据传输通道所传输的数据被缓存至芯片外设804,芯片外设804通过高速串行总线803将缓存的数据传输至芯片801。芯片801基于Interlaken协议将接收到的串行数据转换为并行数据,并根据上述机器可执行指令实现上述图1-图6所示的任一步骤。

基于同一种发明构思,根据上述本申请实施例提供的数据处理方法,本申请实施例还提供了一种机器可读存储介质,机器可读存储介质存储有能够被处理芯片执行的机器可执行指令。处理芯片被机器可执行指令促使实现上述图1-图6所示的任一步骤。

基于同一种发明构思,根据上述本申请实施例提供的数据处理方法,本申请实施例还提供了包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述图1-图6所示的任一步骤。

上述高速串行总线可以是通用串行总线(Universal Serial Bus,USB),串行外设接口(Serial Peripheral Interface,SPI)等。

上述机器可读存储介质可以包括RAM(Random Access Memory,随机存取存储器),也可以包括NVM(Non-Volatile Memory,非易失性存储器),例如至少一个磁盘存储器。另外,机器可读存储介质还可以是至少一个位于远离前述处理芯片的存储装置。

上述处理芯片可以是通用处理芯片,包括CPU(Central Processing Unit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(Digital SignalProcessing,数字信号处理器)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

上述芯片外设可以是外部存储器,如随机存取存储器(Random Access Memory,RAM)或静态随机存取存储器(Static Random-Access Memory,SRAM)等;也可以上述处理芯片。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于数据处理装置,处理芯片,机器可读存储介质及计算机程序产品等实施例而言,由于其数据处理方法实施例,所以描述的比较简单,相关之处参见数据处理方法实施例的部分说明即可。

以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

相关技术
  • 一种芯片测试数据处理方法、装置及芯片
  • 芯片软件烧录方法、芯片软件烧录数据处理方法和装置
技术分类

06120113792875