CN116893983A - 数据缓存方法、设备及介质 - Google Patents

数据缓存方法、设备及介质 Download PDF

Info

Publication number
CN116893983A
CN116893983A CN202311162116.0A CN202311162116A CN116893983A CN 116893983 A CN116893983 A CN 116893983A CN 202311162116 A CN202311162116 A CN 202311162116A CN 116893983 A CN116893983 A CN 116893983A
Authority
CN
China
Prior art keywords
data
port
pid
bit width
group
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
CN202311162116.0A
Other languages
English (en)
Other versions
CN116893983B (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.)
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology 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 China Mobile Communications Group Co Ltd, China Mobile Suzhou Software Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN202311162116.0A priority Critical patent/CN116893983B/zh
Publication of CN116893983A publication Critical patent/CN116893983A/zh
Application granted granted Critical
Publication of CN116893983B publication Critical patent/CN116893983B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's

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)

Abstract

本发明提供一种数据缓存方法、设备及介质,涉及传输与承载领域,其中,所述数据缓存方法包括:通过多个端口中的至少部分接收待缓存的至少一个第一数据,其中,所述多个端口分为多个端口组;根据所述第一数据接收所对应的端口以及所述多个端口的分组信息,确定每个所述第一数据的分组;对每组第一数据分别执行位宽转换,得到各组的第二数据;控制每组的所述第二数据轮流进入缓存空间,执行所述第二数据的缓存;其中,每个所述第一数据为单个端口在单位时钟周期内接收的数据,所述第二数据的位宽大于所述第一数据的位宽。通过多组分别进行位宽转换提高单位时间输出的数据位宽效率,从而提高缓存性能。

Description

数据缓存方法、设备及介质
技术领域
本发明涉及传输与承载技术领域,尤其涉及数据缓存方法、设备及介质。
背景技术
在通信网络系统中流量管理的核心是缓存管理,缓存管理会为各个数据包分配缓存空间进行缓存,当数据包完成发送,释放缓存空间。
随着通信系统的发展,流量的速率越来越高,数据类型越来越多,流量越来越大。现有技术的缓存设备的缓存模块通常只有一个缓存输入口,各个端口的数据只能通过轮询打拍方式通过一个缓存输入口,排队进入缓存模块,难以应对流量较大的复杂场景,缓存速率低,缓存性能较差。
发明内容
本发明实施例提供数据缓存方法、设备及介质,以解决现有数据缓存方式缓存性能较差的问题。
为解决上述技术问题,本发明是这样实现的:
第一方面,本发明实施例提供一种数据缓存方法,应用于缓存设备,所述方法包括:
通过多个端口中的至少部分接收待缓存的至少一个第一数据,其中,所述多个端口分为多个端口组;
根据所述第一数据接收所对应的端口以及所述多个端口的分组信息,确定每个所述第一数据的分组;
对每组第一数据分别执行位宽转换,得到各组的第二数据;
控制每组的所述第二数据轮流进入缓存空间,执行所述第二数据的缓存;
其中,每个所述第一数据为单个端口在单位时钟周期内接收的数据,所述第二数据的位宽大于所述第一数据的位宽。
第二方面,本发明实施例提供一种缓存设备,包括:
接收模块,用于通过多个端口中的至少部分接收待缓存的至少一个第一数据,其中,所述多个端口分为多个端口组;
确定模块,用于根据所述第一数据接收所对应的端口以及所述多个端口的分组信息,确定每个所述第一数据的分组;
转换模块,用于对每组第一数据分别执行位宽转换,得到各组的第二数据;
控制模块,用于控制每组的所述第二数据轮流进入缓存空间,执行所述第二数据的缓存;
其中,每个所述第一数据为单个端口在单位时钟周期内接收的数据,所述第二数据的位宽大于所述第一数据的位宽。
第三方面,本发明实施例提供一种电子设备,包括收发机和处理器,
所述收发机,用于通过多个端口中的至少部分接收待缓存的至少一个第一数据,其中,所述多个端口分为多个端口组;
所述处理器,用于根据所述第一数据接收所对应的端口以及所述多个端口的分组信息,确定每个所述第一数据的分组;
对每组第一数据分别执行位宽转换,得到各组的第二数据;
控制每组的所述第二数据轮流进入缓存空间,执行所述第二数据的缓存;
其中,每个所述第一数据为单个端口在单位时钟周期内接收的数据,所述第二数据的位宽大于所述第一数据的位宽。
第四方面,本发明实施例提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如上述第一方面所述的数据缓存方法的步骤。
第五方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面所述的数据缓存方法的步骤。
本发明实施例中,通过多个端口中的至少部分接收待缓存的至少一个第一数据,其中,所述多个端口分为多个端口组;根据所述第一数据接收所对应的端口以及所述多个端口的分组信息,确定每个所述第一数据的分组;对每组第一数据分别执行位宽转换,得到各组的第二数据;控制每组的所述第二数据轮流进入缓存空间,执行所述第二数据的缓存;其中,每个所述第一数据为单个端口在单位时钟周期内接收的数据,所述第二数据的位宽大于所述第一数据的位宽。通过多组分别进行位宽转换提高单位时间输出的数据位宽效率,从而提高缓存性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据缓存方法的流程图;
图2是本发明实施例提供的一种接口控制模块实现框图;
图3是本发明实施例提供的一种位宽转换的流程图;
图4是本发明实施例提供的一种包的编号先进先出存储器PID FIFO初始化示意图;
图5 是本发明实施例提供的一种PID分配流程;
图6是本发明实施例提供的一种数据缓存方法的实现框图;
图7是本发明实施例提供的另一种数据缓存方法的流程图;
图8是本发明实施例提供的一种缓存设备的结构示意图;
图9是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了方便理解,以下对本发明实施例涉及的一些内容进行说明:
在通信网络系统中流量管理的核心是缓存管理,缓存管理会为各个数据包分配缓存空间进行缓存,当数据包完成发送,释放缓存空间。随着通信系统的发展,流量的速率越来越高,数据类型越来越多,流量越来越大。如何对通信系统中的数据进行高效、安全地缓存管理成为了提高流量管理性能的关键。
本发明实施例中,提出了一种数据缓存方法、设备及介质,用于流量管理的高效缓存管理,以解决现有缓存机制的缓存性能较差的问题。
参见图1,图1是本发明实施例提供的一种数据缓存方法的流程图,用于缓存设备,如图1所示,所述方法包括以下步骤:
步骤101、通过多个端口中的至少部分接收待缓存的至少一个第一数据。
其中,每个所述第一数据为单个端口在单位时钟周期内接收的数据。
本发明实施例中,上述缓存设备包括多个端口,用于接收待缓存的数据,每个端口在一个时钟周期接收一个第一数据,也就是说,本发明实施例将单个端口在单位时钟周期内接收的数据称为第一数据,上述“第一”并不用于描述数据顺序,仅用于表示数据属性。
每个时钟周期的数据传输都有用于记录数据包的如下信息中的至少一项:端口号port(或者接收端口号,Receive port,rxport)、包的开始sop(Start of packet)、包的结束eop(End of packet)、错误error(err)、有效val等。
本发明实施例中,单个数据包通过单一端口进入缓存设备,不同的数据包可能通过同一端口也可能通过不同的端口进入上述缓存设备,通过同一端口进入缓存设备的不同数据包之间通常会间隔若干时钟周期。
本发明实施例中,为每个端口分配端口号port,对应端口进入的第一数据也会携带上述port号,用以区分各个端口输入的数据。其中,多个端口可以分为多个组,即所述多个端口分为多个端口组。例如,如图2所示,8个端口(port 0-7)被分为两组(port0-3和port4-7)。可选的,各个分组的端口接收待缓存数据可以采用轮询打拍方式,每个端口在完成预设时钟周期数的第一数据接收后,切换端口执行所述第一数据的接收。对于一个端口组内,单个时钟周期仅一个端口执行接收数据的处理或输出。
例如,在当前端口存在数据接收时,从数据接收的第一个时钟周期开始,N拍(N个时钟周期)之内由端口i执行数据接收和处理,第N+1个时钟周期判断下一个端口是否存在待接收数据,如果存在,第N+1至2N时钟周期由下一端口执行数据接收和处理,如果不存在判断再下一端口是否存在待接收数据,如此在端口组内循环。
本发明实施例考虑到数据包的通常设置数据长度上限,例如256字节。更长的数据会在进入端口前,依据上述数据长度上限划分为不同的数据包,例如,1024待传输数据被划分为4个256的数据包。为了提高数据包接收的连续性,本发明实施例中,轮询打拍的拍数设置参考数据包的长度上限和单个端口在单位时钟周期内接收的数据长度确定。例如,每个端口接收的数据为64字节(或者,每个输入接口的数据位宽为64字节),数据包长度在256字节之内,可以设置每4拍执行一次端口切换,保证一个数据包能在一次轮询周期中接收和处理完成。
即本发明实施例中,将划分后的每组端口的4个端口的数据,采用轮询打拍的方式合成一路数据输出。轮询打拍机制如下:为了尽可能减少端口延迟,应当根据业务需要控制端口打拍的时钟周期数。本发明考虑到每个端口常发的数据包长为256字节以内,则采用每4拍切换一次端口,每个时钟周期接收64字节的数据,4个时钟周期共接收单个端口256字节的数据。使得单端口的数据能够连续输入缓存空间,尽可能保证数据连续,减少后续数据片段查找的延迟。
可选的,所述通过多个端口中的至少部分接收待缓存的第一数据,包括:
每个端口在完成预设时钟周期数的第一数据接收后,切换端口执行所述第一数据的接收;
所述预设时钟周期数根据待接收数据包的最大长度和单个端口在单位时钟周期内接收的数据长度确定。
可选的,端口在数据包已经接收完成了,N拍时间尚未结束,数据包接收完成到N拍结束之间的时间的接收机会仍然不会转移,也就是会等待N拍结束之后才会执行端口切换,从而避免数据缠绕。
以4拍轮询打拍为例,进行端口轮询的时候,会首先判断对应的端口有没有数据,没有数据就切换到下个端口。若当前端口已经接收了2拍数据时,第3拍没有数据时,则将等待剩余2拍结束,再切换到写个端口。保证4拍内数据时连续的,不会缠绕。
X个(例如,图2所示2个)输入接口中的每个输入接口采用轮询打拍的方式进行端口切换,实现Y个端口(例如,图2所示4个)的数据的接收,这样可以实现X*Y个端口(例如,图2所示端口0-7)的数据的高效接收。采用多路并行的缓存方式提高了缓存管理的效率,应用场景更广。
可选的,所述多个端口中存在由至少一个第一端口和至少一个第二端口组成的端口组;所述至少一个第一数据包括多个第一数据;
所述通过多个端口中的至少部分接收待缓存的至少一个第一数据,包括:
在所述第一端口存在需要接收的第一子数据的情况下,通过所述第一端口接收并处理所述第一子数据,并将每个所述第二端口待接收的第二子数据缓存到每个所述第二端口对应的接口先进先出存储器FIFO;
在所述第一端口接收并处理所述第一子数据完成的情况下,依次从每个所述第二端口的对应接口FIFO中取出所述第二子数据缓并处理;
其中,所述第一子数据为至少一个所述第一数据,所述第二子数据为至少一个所述第一数据。
本发明实施例中,增加了端口优先级控制,保证优先级高的数据先缓存处理,保证系统的稳定性和处理速率。可选的,在轮询打拍的基础上,进一步设置高优先级端口(第一端口),可以在每组端口中将其中至少一个端口设置为第一端口,也可以在部分端口组中设置第一端口。高优先级的第一端口可以理解为不需要按轮询顺序排队接收和处理数据的端口,可以优先进行数据接收和处理。
本发明实施例中,接收后的处理可以理解为对接收后的数据进行排队输出、或执行输出前的其他处理。
可选的,所述第一端口包括配置端口。
本发明实施例中,通过将接收配置数据的端口设置为高优先级的端口,保证配置数据传输优先,能够提高通信可靠性。可以理解的是,本发明实施例中高优先级端口(第一端口)不限于配置端口,还可以是其他有高传输需求的端口。
示例性的,若端口0是优先级最高的配置端口,当包括端口0在内的4个端口同时有数据时,则先将其他三个端口的数据缓存到各自的接口fifo,先输缓存端口0的数据,使得系统能尽快完成配置。当优先级高的端口没有数据输入时,则依据顺序,先从端口1中每个时钟取64字节的数据,连续取4个时钟共256字节的数据进行输出(用于位宽转换);然后再从端口2中每个时钟取64字节的数据,连续取4个时钟共256字节的数据进行输出;然后再从端口3中每个时钟取64字节的数据,连续取4个时钟共256字节的数据进行输出,以此类推,进行端口之间的轮询。这样可以有效防止单个端口长时间有数据输入,造成其他端口的堵塞。
可选的,所述多个端口的分组根据各端口的待接收数据量确定。
本发明实施例中,不同的端口通常接收特定类型的数据,例如配置端口接收配置数据,数据端口接收业务数据,不同端口对应的数据量不同,上述数据量可以根据历史传输数据确定,也可以根据数据类型估计得到。根据各端口的待接收数据量对多个端口进行分组,从而提高各组端口的数据接收的均衡性。
例如,本发明根据业务量将8个端口分为2组,从2个输入口输入缓存空间。更具体的,如端口0常发大包数据,端口4也会常发大包数据,则将端口0放在第一组,端口4放在第2组,这样可以减少端口的数据缓存时间,尽可能提高两组数据的输出速率,提高数据传输效率。
步骤102、根据所述第一数据接收所对应的端口以及所述多个端口的分组信息,确定每个所述第一数据的分组。
本发明实施例中,不同端口组接收的第一数据分别执行位宽转换。通过同一组端口接收的第一数据为同一组数据。
示例性的,如附图2所示,端口port0-3为一个端口组,端口port4-7为一个端口组,端口port0-3接收的第一数据对应为同一分组,端口port4-7接收的第一数据对应为同一分组。
本发明实施例中上述示例中实现了同时接收8个端口的数据,并转换成两路并行输入口(入队)控制模块,将缓存的输入效率提升了一倍。
步骤103、对每组第一数据分别执行位宽转换,得到各组的第二数据。
其中第二数据的位宽大于第一数据的位宽。
端口接收数据的位宽,可以理解为单个端口在单位时钟周期内接收的数据长度,与其硬件和/或配置有关。通过将第一数据执行位宽转换得到第二数据,可以理解为,对第一数据的数据长度进行扩宽。
可选的,所述对每组第一数据分别执行位宽转换,得到各组的第二数据,包括:
对每组第一数据依次进行数据拼接,得到各组的第二数据;
其中,所述第二数据的位宽为第一数据位宽的K倍,K为大于等于2的正整数。
本发明实施例中,通过多个组分别对第一数据进行拼接,使得单个时钟周期传输的数据效率得以提高,从而提高缓存效率和性能。
本发明实施例中,可以是按组内第一数据的接收顺序,将每K个第一数据进行拼接得到位宽为第一数据位宽的K倍的第二数据。
为了加速数据缓存的速率,本发明为每个输入口添加了一个位宽转换模块,通过增加数据缓存的位宽,实现一个时钟周期内,缓存多个输入接口的数据。位宽转换模块的输出数据的位宽等于输入数据位宽乘上输入接口的个数。假设输入接口是2个,则每个时钟周期内,需要由配置模块将位宽转换模块输出的数据位宽配置为原来的2倍——128字节。若输入接口是4个,则位宽转换模块输出的数据位宽是原来的4倍,用户可以根据实际需求配置。位宽转换模块通过状态机的方式,实现数据的拼接以实现位宽拓宽。
示例性的,假设多个端口分为两组,即对应得到两组第一数据,第一数据位宽为64字节。第一组进行数据拼接两个第一数据(对应两个时钟周期),输出的数据位宽配置为原来的2倍(128字节),第二组进行数据拼接两个第一数据,同样输出的数据位宽配置为原来的2倍(128字节),即在两个时钟周期内容输出256字节,单个时钟周期输出128字节,相对于现有的单位时钟周期输出64字节,输出的数据位宽效率翻倍。
可以理解的是,上述分组仅是示例性的。也可以是分为M组,每组对K个第一数据进行拼接,进一步提高传输效率,M和K均为大于等于2的正整数,M可以等于K。
可选的,所述对每组第一数据依次进行数据拼接,得到各组的第二数据,包括:
在拼接的第i个所述第一数据为数据包的包尾的情况下,将第i个所述第一数据之后的数据位补0得到位宽为第一数据位宽的K倍的第二数据,其中,i<K。
本发明实施例中,进一步考虑到数据拼接的合理性,在保证拼接的第一数据属于同一个数据包。在第一数据为数据包的包尾的情况下,其后不与其他第一数据拼接。
假设第一数据位宽为m,第二数据位宽为Km,若K=2,在执行当前第二数据拼接时,确定第1个第一数据不为数据包的包尾的情况下,将第1个第一数据和第2个第一数据进行拼接,则拼接完成;确定第1个第一数据为数据包的包尾的情况下,则2m位宽的第二数据前m字节是由第一数据填充,后m字节由空数据填充,下一个第一数据则用于下一个第二数据的拼接。
对于K为大于2的情况,在执行当前第二数据拼接时,确定第1个第一数据为数据包的包尾的情况下,则2m位宽的第二数据前m字节是由第一数据填充,后(k-1)m字节由空数据填充;确定第1个第一数据不为数据包的包尾的情况下,将第1个第一数据和第2个第一数据进行拼接,进一步判断第2个第一数据是否为数据包的包尾,以此类推。
本发明实施例中,上述第一数据的拼接可以是第一数据与第一数据之间的拼接,也可以是第一数据与空数据之间的拼接。
如下图3所示,以K=2进行示例,位宽转换模块首先运用状态机对偏移状态进行跳转,生成位宽转换的写标志shift_wren,写标志shift_wren表示第二数据生成完成。
偏移状态shift_idel表示是空闲状态,表示上个时钟周期没有数据输入。
偏移状态shift_1表示上个时钟周期已经接收过数据。
初始状态下状态机是处于空闲状态shift_idel,为了方面后面数据缓存的管理,本发明首先保证拼接的2个64字节的数据属于一个数据包,需要首先判断数据的eop信号是否为高:
eop为高,表示一个数据包接收完毕,则不改变偏移状态,仍为shift_idel。并使能位宽转换的写标志shift_wren,不等待下一个64字节,将该64字节的数据直接输出,这样防止了不同数据包的数据拼接在一起。
eop为低,则判断数据的val,看是否有数据输入:
当数据的val信号处于低位,表示当前没有数据输入,则不改变偏移状态,仍为shift_idel,等待数据的输入;
当数据的val信号处于高位,表示当前有数据输入,shift_idel跳转为shift_1,shift_1状态下,判断下一个数据的val信号是否为高:
当下一个数据的val信号处于高位,表示当前有数据输入,则使能位宽转换的写标志shift_wren,将已接收的2个64字节的数据拼接在一起,输出。并将shift_1跳转为shift_idel,等待下一个64字节的数据输入;
当下一个数据的val信号处于低位,表示当前无数据输入,表示eop丢失,shift_1转换为shift_idel,不等待下一个64字节,将该64字节的数据直接输出,并使能位宽转换的写标志shift_wren,这样防止了不同数据包的数据拼接在一起。
本发明实施例中,如图3所示,下一个数据的val信号是否为高,无论是否高都会使能位宽转换的写标志shift_wren以及将shift_1转换为shift_idel,区别在于,下一个数据的val信号是高的情况下,当前第二数据由两个第一数据拼接得到,下一个数据的val信号是高的情况下,当前第二数据由一个第一数据和空数据位拼接得到。
本发明实施例中,位宽转换会根据偏移状态进行数据拼接。数据拼接后的位宽为原来的两倍——128字节,拼接的数据会存放在shift_data中。
如图3所示,在shift_idel状态下,将输入的64字节的数据赋值给shift_data的高64字节,同时刷新shift_data的低64字节为0。sop信号原本是伴随数据包的首个64字节,拓宽位宽后,sop信号需要伴随首个128字节。因此,本发明对sop也进行了拼接,将sop输入shift_sop。
shift_1状态下,输入的数据会缓存在shift_data的低64字节中,同时用上个时钟的shift_data的高64字节,刷新shift_data的高64字节。并将上个时钟的shift_sop赋值给shift_sop,即拼接后的第二数据的sop取值为高位字节的sop取值。
两次状态赋值完成后,将获得一个2倍位宽即128字节的shift_data。使得每个时钟周期可以换成2倍的数据量,大大提高了缓存效率。最后位宽转换模块会结合之前所获的位宽转换的写标志shift_wren,将shift_data缓存至fifo中,缓存的同时还将数据的状态信号sop、eop、port、err、pid存入fifo,用于后续的数据解析。
本发明实施例生成多端口并行缓存机制,使得缓存设备有多个输入接口,在内部加入位宽转换步骤,拓宽缓存数据位宽,提高缓存速率,实现每个时钟周期内实现两个端口的数据并行输入。
可选的,所述对每组第一数据分别执行位宽转换,得到各组的第二数据之前,所述方法还包括:
为每个第一数据分配包的编号PID;
其中,属于同一个数据包的第一数据的PID相同,属于不同的数据包的第一数据的PID不同。
本发明实施例中,为了进一步提高缓存数据提取的效率,在数据位扩宽或者或第一数据拼接之前,为第一数据分配包的编号PID(Packet Identity document)。
可选的,拼接的第一数据属于同一个数据包的情况下,还可以是在数据位扩宽或者或第一数据拼接之后,为第二数据分配PID。
可选的,所述为每个第一数据分配包的编号PID,包括:
在第三数据为包的开始的情况下,通过每组第一数据对应的包的编号先进先出存储器PID FIFO,为所述第三数据分配第一PID;
所述第三数据之后组内的非包的开始的第一数据沿用所述第一PID;
所述第三数据为所述第一数据中的任意一个。
本发明实施例中,当数据的sop处于高位时,表示接收到一个新的数据包,此时入口控制的PID管理模块会为该数据包分配一个空闲的PID,并将该PID输出入口控制模块,存入不需要缓存的对应的包头中,便于后期包头处理完成后,用PID取出对应的数据。
本发明实施例中,可选的,数据包头和数据实体分开,前者不用于缓存,后者缓存,通过为两者之间建立关联关系,提高数据存储和提取的效率。
本发明实施例中,不同组的第一数据通过不同的PID FIFO(First Input FirstOutput,先进先出存储器)执行PID分配。在当前第一数据为包的开始的情况下,当前第一数据对应的PID FIFO为所述第一数据分配第一PID,当前第一数据之后组内的第一数据沿用上述第一PID。
可选的,通过每组第一数据对应的PID FIFO,为所述第三数据分配第一PID之前,所述方法包括:
控制总PID FIFO为每组第一数据对应的PID FIFO分配预设数量的PID;
在通过每组第一数据对应的PID FIFO,为所述第三数据分配第一PID之后,所述方法包括:
控制总PID FIFO为分配所述第一PID的PID FIFO补齐预设数量的PID。
为了保证每个输入接口同时有数据输入的情况下,每个输入端口都可以同时获取PID。如下图4所示,本发明实施例中,在初始化的时候,预估整个缓存空间可以缓存的PID数,存到总PID FIFO中,然后再从总PID FIFO中交错的取出 PID,预存到各个输入接口的PID FIFO中,即总PID FIFO预先每个组的PID FIFO(PID FIFO_0~PID FIFO_N-1)分配空闲的PID。
示例性的,如图4,初始状态下,总PID FIFO(图示左侧的PID FIFO),将空闲的PID交替分配给每个组的PID FIFO,N=2的情况下,图示PID FIFO_0为第一组端口(例如,port0-3)对应的PID FIFO,图示PID FIFO_1为第二组端口(例如,port4-7)对应的PID FIFO。
在每组PID FIFO中的空闲PID被分配给第一数据的情况下,总PID FIFO会对分配出去的PID进行补充。
可选的,所述方法还包括:
在所述缓存设备输出缓存数据时,对输出的缓存数据的PID进行回收;
在总PID FIFO需要为每组第一数据对应的PID FIFO补齐预设数量的PID的情况下,回收的PID用于补齐预设数量的PID;
在总PID FIFO不需要为每组第一数据对应的PID FIFO补齐预设数量的PID的情况下,回收的PID存储至所述总PID FIFO。
本发明实施例中,用于补充各组的PID FIFO的空闲PID的PID可以是总PID FIFO中剩余的,也可以是缓存空间中释放的。
上述PID分配和回收过程可以通过PID管理模块执行控制,可以动态地保证每个输入口有充足的PID,最大化的利用PID,不会因为某个输入口输入数据包较多,导致该输入口缺少PID。
示例性的,如图5所示,当输入口0有数据输入时,会从该输入口0对应的PID FIFO_0中读取空闲PID,然后总的PID FIFO会为PID FIFO_0分配新的空闲PID。当某个数据输出缓存管理模块,释放了PID时,PID管理模块会回收该PID,如果此时刚好PID FIFO_0需要补PID时,就会将这个释放的PID存入PID FIFO_0中,这样减少了一次FIFO读操作。
可选的,所述方法还包括:
在所述总PID FIFO中待分配的PID数量小于或等于预设阈值时,停止通过多个端口中的至少部分接收待缓存的至少一个第一数据。
本发明实施例中,在初始化的时候,存到总PID FIFO中的PID数量是通过预估整个缓存空间可以缓存的PID数确定的,即总PID FIFO的深度是由用户根据缓存空间进行设置,当用于PID预分配的总PID FIFO中的空闲PID数量较少时,可以认为当前缓存空间可能不足,此时可以停止端口处的数据接收。
示例性的,当总PID FIFO中没有空闲的PID,即总PID FIFO中空闲PID数量为0时,表示缓存空间不够,则入口控制模块会发送流控信号给接口控制模块,停止数据接收,起到了流控的作用。
步骤104、控制每组的所述第二数据轮流进入缓存空间,执行所述第二数据的缓存。
本发明实施例中,通过步骤104将步骤103中的多路数据合成一路,示例性的,如图6所示,步骤103-104共同相当于执行了入口控制,将两路数据分别执行位宽转换后通过一路输入缓存空间。可以理解的是,图6所示的接口控制、入口控制、缓存空间管理和出口控制等单元可以理解为执行动作的描述,也可以理解为处理模块的描述。入口控制也可以称为入队控制,出口控制也可以称为出队控制。且上述命名仅为了方便理解,本发明实施例并不局限于上述描述。
为了方便理解,以下从模块角度,对图6中各个节点进行说明。
其中,配置模块用于配置接口控制模块的端口轮询的时钟周期数和入口控制模块的位宽转换后的数据位宽。
接口控制模块用于接收8个端口的数据,本发明运用轮询打拍的方式将8个端口输入的数据分为两组并行输入输入入口控制模块。
入口控制模块接收2路输入数据,内部的PID分配机制会为各个数据包分配PID。并运用位宽转换对2路数据分别进行位宽转换合成一路,输入至缓存空间管理模块。具体而言,入口控制模块主要用于接收多端口合成的2路数据,管理并分配PID,为每个数据包分配空闲的PID,并会对数据进行位宽转换,提高数据的缓存带宽。入口控制模块可以由PID管理模块、位宽转换模块构成。
缓存空间管理模块主要校验接收数据的合法性、分配空间缓存数据,进行入队和出队的操作。
出口控制模块用于负责当数据需要入队出队操作时,根据外部输入的数据包的PID,控制对应的包数据进行入队出队操作,从缓存空间有序输出,并对数据做位宽转换从对应的输出口输出。
其中,出口控制模块的数据位宽转换即将第二数据进行拆分,得到恢复第一数据。
可选的,所述缓存设备包括M个输入接口,M个输入接口对应M个位宽转换模块,不同分组的第一数据通过不同的输入接口进入对应的位宽转换模块进行位宽转换。
参考图6,入口控制模块之前具备2个数据接口,入口控制模块为其对应配置两个位宽转换模块,结合图2的示例可以理解为,端口port0-3接收的第一数据通过一个位宽转换模块进行转换,端口port4-7接收的第一数据通过另一个位宽转换模块进行转换。
经过位宽转换后,每个输入接口的数据位宽都由原来的64字节,拓宽至128字节。入口控制模块会交替的从两个位宽转换模块中提取出数据。这样可以使得时间被复用,当一个输入口的位宽转换模块在进行位宽拼接时,另一个输入口的位宽转换模块已经完成数据拼接,并输出shift_fifo,进行数据缓存。本发明最终实现了拓宽缓存数据的位宽,使得缓存速率得到了大大的提高。
可选的,本发明实施例,将第二数据的长度定义为一个字段,数据经过入口控制模块的转换后,两个输入口的数据以128字节的位宽交替输入到缓存管理模块。本发明以128字节为一个字段,每个数据包的数据长度不同,可能由一个字段或多个字段组成。
由于本发明运用轮询的方法将各个端口的数据交替输入,并将数据拼接为一个字段(例如128字节)。为了便于缓存空间分配,本发明根据字段中的port信号区分端口,然后本发明运用图7的流程,根据包的sop、eop信号判断各个端口的每个字段在数据包中的状态,包括数据包的状态信号ongoing和当前字段在包中的字段位置word_length。并且运用字段状态判断流程,可以解析出错误的数据包,丢弃过长的数据包和sop、eop状态有错误的数据包,使得缓存空间缓存正确的数据包,大大提高缓存的准确度和利用率。
为了进一步提高缓存空间的利用率,本发明的缓存管理模块根据端口每次轮询的数据长度,以256字节为最小单位CELL进行存储。每4拍轮询一次端口,每个时钟周期所传输的数据位宽是64字节,因此每个端口每次轮询共输入256字节。经过入口控制模块的位宽转换,这256字节会分两个128字节依次输入缓冲空间。本发明通过设置字段偏移信号cell_offset,将这两个128字节的数据有序的存入位宽为256字节的CELL中,既保证CELL中的数据是连续的,最大化利用缓存空间,又减少了数据读写时的操作,极大的提高了数据读写速率。
本发明会对缓存空间的CELL进行编号,即CELL ID。数据缓存空间中的空闲CELLID用链表的方式加以组织,例如,每次分配空间时,从链表的头部删除链表的一个节点;而每次释放空间时,在链表的尾部插入一个节点。
本发明将缓存空间看作一个整体,缓存空间的缓存单元由第二数据字节(例如,128)拓宽至第二数据字节数倍(例如,256)的CELL组成。本发明通过为每个数据包分配CELL号,并使用链表管理CELL,以实现对整个缓存空间的管理和读写,极大化的提高了缓存空间的利用率。
本发明会为各个字段分发空闲的CELL ID,并结合word_length信号生成cell_offset。cell_offset为高位表示当前字段存储于CELL的高128字节,cell_offset为低位表示当前字段存储于CELL的低128字节。
首先判断各个端口的字段的word_length信号的最低位:
word_length最低位为低位,表示当前字段为数据包中的奇数个字段,本发明则会向缓存空间申请一个空闲的CELL ID,作为该字段的存储地址,并将该CELL ID,以port为地址存入fifo中,进行缓存,用于下一个字段。并将该字段的cell_offset赋值0,表示存储于该CELL的低128字节。
word_length最低位为高位,表示当前字段为数据包中的偶数个字段,以port号为读地址,从fifo中,取出上个字段的CELL ID,作为该字段的存储地址。并将该字段的cell_offset赋值1,表示存储于该CELL的高128字节。
这样就实现了将两个128字节的字段存储于一个CELL ID中,大大提高了缓存空间的利用率。
当缓存管理模块将数据包缓存入对应的CELL ID后,本发明为了管理缓存地址,首先将各个包首字段中的PID信号,分别赋值给该包的各个字段,使得所有字段都记录着PID。然后以PID为缓存地址,依次缓存该PID字段的CELL ID号。当包头处理完成后,出口控制根据PID,获得对应的包的缓存地址,依次从CELL ID中取出缓存的数据,取出数据后释放CELLID和PID。
本发明实施例中,通过多组分别进行位宽转换提高单位时间输出的数据位宽效率,进一步轮流进入缓存空间,可以是一组进行位宽转换时,另一组进入缓存空间,各组交替执行,通过单一通道进入缓存空间,无需对缓存空间进行区域划分,保证缓存空间的完整性,提高缓存资源利用率。
可选的,所述缓存空间包括多个缓存单元,每个缓存单元用于存储多个第二数据,存入同一缓存单元的第二数据的第一信息相同;
其中,所述第二数据的第一信息,包括如下至少一项:
所述第二数据的PID;
所述第二数据的接收对应的端口;
所述第二数据在数据包中的位置。
本发明实施例中,在缓存单元进行存储时,对数据来源进行判断,保障同一缓存单元中的数据来自同一数据包,从而,在从各个缓存单元中提取待输出缓存数据执行缓存输出时,提高输出效率。
本发明实施例中生成双端口并行缓存机制,使得缓存单元有两个输入口,在内部加入位宽转换单元,拓宽缓存数据位宽,提高缓存速率。采用多路并行的缓存方式提高了缓存管理的效率,应用场景更广。
本发明实施例中将缓存空间看作一个整体,通过为每个数据包分配CELL号,通过管理片段号,以实现对整个缓存空间的管理和读写,极大化的提高了缓存空间的利用率。
本发明实施例中的数据缓存方法,通过多个端口中的至少部分接收待缓存的至少一个第一数据,其中,所述多个端口分为多个端口组;根据所述第一数据接收所对应的端口以及所述多个端口的分组信息,确定每个所述第一数据的分组;对每组第一数据分别执行位宽转换,得到各组的第二数据;控制每组的所述第二数据轮流进入缓存空间,执行所述第二数据的缓存;其中,每个所述第一数据为单个端口在单位时钟周期内接收的数据,所述第二数据的位宽大于所述第一数据的位宽。通过多组分别进行位宽转换提高单位时间输出的数据位宽效率,提高缓存性能。
参见图8,图8是本发明实施例提供的一种缓存设备的结构示意图,如图8所示,缓存设备800包括:
接收模块801,用于通过多个端口中的至少部分接收待缓存的至少一个第一数据,其中,所述多个端口分为多个端口组;
确定模块802,用于根据所述第一数据接收所对应的端口以及所述多个端口的分组信息,确定每个所述第一数据的分组;
转换模块803,用于对每组第一数据分别执行位宽转换,得到各组的第二数据;
控制模块804,用于控制每组的所述第二数据轮流进入缓存空间,执行所述第二数据的缓存;
其中,每个所述第一数据为单个端口在单位时钟周期内接收的数据,所述第二数据的位宽大于所述第一数据的位宽。
可选的,所述接收模块801,包括:
切换模块,用于每个端口在完成预设时钟周期数的第一数据接收后,切换端口执行所述第一数据的接收;
所述预设时钟周期数根据待接收数据包的最大长度和单个端口在单位时钟周期内接收的数据长度确定。
可选的,所述多个端口中存在由至少一个第一端口和至少一个第二端口组成的端口组;所述至少一个第一数据包括多个第一数据;
所述接收模块801,包括:
第一接收子模块,用于在所述第一端口存在需要接收的第一子数据的情况下,通过所述第一端口接收并处理所述第一子数据,并将每个所述第二端口待接收的第二子数据缓存到每个所述第二端口对应的接口先进先出存储器FIFO;
读取模块,用于在所述第一端口接收并处理所述第一子数据完成的情况下,依次从每个所述第二端口对应的接口FIFO中取出所述第二子数据缓并处理;
其中,所述第一子数据为至少一个所述第一数据,所述第二子数据为至少一个所述第一数据。
可选的,所述第一端口包括配置端口。
可选的,所述转换模块803,包括:
拼接模块,用于对每组第一数据依次进行数据拼接,得到各组的第二数据;
其中,所述第二数据的位宽为第一数据位宽的K倍,K为大于等于2的正整数。
可选的,所述拼接模块,包括:
补位模块,用于在拼接的第i个所述第一数据为数据包的包尾的情况下,将第i个所述第一数据之后的数据位补0得到位宽为第一数据位宽的K倍的第二数据,其中,i<K。
可选的,所述缓存设备包括M个输入接口,M个输入接口对应M个位宽转换模块,不同分组的第一数据通过不同的输入接口进入对应的位宽转换模块进行位宽转换。
可选的,缓存设备800还包括:
第一分配模块,用于为每个第一数据分配包的编号PID;
其中,属于同一个数据包的第一数据的PID相同,属于不同的数据包的第一数据的PID不同。
可选的,所述第一分配模块,包括:
分配子模块,用于在第三数据为包的开始的情况下,通过每组第一数据对应的包的编号先进先出存储器PID FIFO,为所述第三数据分配第一PID;
所述第三数据之后组内的非包的开始的第一数据沿用所述第一PID;
所述第三数据为所述第一数据中的任意一个。
可选的,缓存设备800还包括:
第二分配模块,用于控制总PID FIFO为每组第一数据对应的PID FIFO分配预设数量的PID;
第三分配模块,用于控制总PID FIFO为分配所述第一PID的PID FIFO补齐预设数量的PID。
可选的,缓存设备800还包括:
回收模块,用于在所述缓存设备输出缓存数据时,对输出的缓存数据的PID进行回收;
在总PID FIFO需要为每组第一数据对应的PID FIFO补齐预设数量的PID的情况下,回收的PID用于补齐预设数量的PID;
在总PID FIFO不需要为每组第一数据对应的PID FIFO补齐预设数量的PID的情况下,回收的PID存储至所述总PID FIFO。
可选的,缓存设备800还包括:
停止模块,用于在所述总PID FIFO中待分配的PID数量小于或等于预设阈值时,停止通过多个端口中的至少部分接收待缓存的至少一个第一数据。
可选的,所述缓存空间包括多个缓存单元,每个缓存单元用于存储多个第二数据,存入同一缓存单元的第二数据的第一信息相同;
其中,所述第二数据的第一信息,包括如下至少一项:
所述第二数据的PID;
所述第二数据的接收对应的端口;
所述第二数据在数据包中的位置。
可选的,所述多个端口的分组根据各端口的待接收数据量确定。
需要说明的是,本发明实施例提供的缓存设备是能够执行上述数据缓存方法的装置,则上述数据缓存方法实施例中的所有实现方式均适用于该电子设备,且均能达到相同或相似的有益效果。为避免重复说明,本实施例不再赘述。
具体的,参见图9所示,本发明实施例还提供了一种电子设备,包括总线901、收发机902、天线903、总线接口904、处理器905和存储器906。
收发机902,用于通过多个端口中的至少部分接收待缓存的至少一个第一数据,其中,所述多个端口分为多个端口组。
进一步地,处理器905,用于根据所述第一数据接收所对应的端口以及所述多个端口的分组信息,确定每个所述第一数据的分组;
对每组第一数据分别执行位宽转换,得到各组的第二数据;
控制每组的所述第二数据轮流进入缓存空间,执行所述第二数据的缓存;
其中,每个所述第一数据为单个端口在单位时钟周期内接收的数据,所述第二数据的位宽大于所述第一数据的位宽。
可选的,所述通过多个端口中的至少部分接收待缓存的第一数据,包括:
每个端口在完成预设时钟周期数的第一数据接收后,切换端口执行所述第一数据的接收;
所述预设时钟周期数根据待接收数据包的最大长度和单个端口在单位时钟周期内接收的数据长度确定。
可选的,所述多个端口中存在由至少一个第一端口和至少一个第二端口组成的端口组,所述至少一个第一数据包括多个第一数据;
所述通过多个端口中的至少部分接收待缓存的至少一个第一数据,包括:
在所述第一端口存在需要接收的第一子数据的情况下,通过所述第一端口接收并处理所述第一子数据,并将每个所述第二端口待接收的第二子数据缓存到每个所述第二端口对应的接口先进先出存储器FIFO;
在所述第一端口接收并处理所述第一子数据完成的情况下,依次从每个所述第二端口对应的接口FIFO中取出所述第二子数据缓并处理;
其中,所述第一子数据为至少一个所述第一数据;所述第二子数据为至少一个所述第一数据。
可选的,所述第一端口包括配置端口。
可选的,所述对每组第一数据分别执行位宽转换,得到各组的第二数据,包括:
对每组第一数据依次进行数据拼接,得到各组的第二数据;
其中,所述第二数据的位宽为第一数据位宽的K倍,K为大于等于2的正整数。
可选的,所述对每组第一数据依次进行数据拼接,得到各组的第二数据,包括:
在拼接的第i个所述第一数据为数据包的包尾的情况下,将第i个所述第一数据之后的数据位补0得到位宽为第一数据位宽的K倍的第二数据,其中,i<K。
可选的,所述缓存设备包括M个输入接口,M个输入接口对应M个位宽转换模块,不同分组的第一数据通过不同的输入接口进入对应的位宽转换模块进行位宽转换。
可选的,所述对每组第一数据分别执行位宽转换,得到各组的第二数据之前,所述处理器还用于:
为每个第一数据分配包的编号PID;
其中,属于同一个数据包的第一数据的PID相同,属于不同的数据包的第一数据的PID不同。
可选的,所述为每个第一数据分配包的编号PID,包括:
在第三数据为包的开始的情况下,通过每组第一数据对应的包的编号先进先出存储器PID FIFO,为所述第三数据分配第一PID;
所述第三数据之后组内的非包的开始的第一数据沿用所述第一PID;
所述第三数据为所述第一数据中的任意一个。
可选的,通过每组第一数据对应的PID FIFO,为所述第三数据分配第一PID之前,所述处理器还用于:
控制总PID FIFO为每组第一数据对应的PID FIFO分配预设数量的PID;
在通过每组第一数据对应的PID FIFO,为所述第三数据分配第一PID之后,所述处理器还用于:
控制总PID FIFO为分配所述第一PID的PID FIFO补齐预设数量的PID。
可选的,所述处理器还用于:
在所述缓存设备输出缓存数据时,对输出的缓存数据的PID进行回收;
在总PID FIFO需要为每组第一数据对应的PID FIFO补齐预设数量的PID的情况下,回收的PID用于补齐预设数量的PID;
在总PID FIFO不需要为每组第一数据对应的PID FIFO补齐预设数量的PID的情况下,回收的PID存储至所述总PID FIFO。
可选的,收发机还用于:
在所述总PID FIFO中待分配的PID数量小于或等于预设阈值时,停止通过多个端口中的至少部分接收待缓存的至少一个第一数据。
可选的,述缓存空间包括多个缓存单元,每个缓存单元用于存储多个第二数据,存入同一缓存单元的第二数据的第一信息相同;
其中,所述第二数据的第一信息,包括如下至少一项:
所述第二数据的PID;
所述第二数据的接收对应的端口;
所述第二数据在数据包中的位置。
可选的,所述多个端口的分组根据各端口的待接收数据量确定。
在图9中,总线架构(用总线901来代表),总线901可以包括任意数量的互联的总线和桥,总线901将包括由处理器905代表的一个或多个处理器和存储器906代表的存储器的各种电路链接在一起。总线901还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口904在总线901和收发机902之间提供接口。收发机902可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器905处理的数据通过天线903在无线介质上进行传输,进一步,天线903还接收数据并将数据传送给处理器905。
处理器905负责管理总线901和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器906可以被用于存储处理器905在执行操作时所使用的数据。
可选的,处理器905可以是CPU、ASIC、FPGA或CPLD。
需要说明的是,本发明实施例提供的电子设备是能够执行上述数据缓存方法的装置,则上述数据缓存方法实施例中的所有实现方式均适用于该电子设备,且均能达到相同或相似的有益效果。为避免重复说明,本实施例不再赘述。
本发明实施例还提供了一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现上述数据缓存方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述数据缓存方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。

Claims (18)

1.一种数据缓存方法,应用于缓存设备,其特征在于,所述方法包括:
通过多个端口中的至少部分接收待缓存的至少一个第一数据,其中,所述多个端口分为多个端口组;
根据所述第一数据接收所对应的端口以及所述多个端口的分组信息,确定每个所述第一数据的分组;
对每组第一数据分别执行位宽转换,得到各组的第二数据;
控制每组的所述第二数据轮流进入缓存空间,执行所述第二数据的缓存;
其中,每个所述第一数据为单个端口在单位时钟周期内接收的数据,所述第二数据的位宽大于所述第一数据的位宽。
2.根据权利要求1所述的方法,其特征在于,所述通过多个端口中的至少部分接收待缓存的第一数据,包括:
每个端口在完成预设时钟周期数的第一数据接收后,切换端口执行所述第一数据的接收;
所述预设时钟周期数根据待接收数据包的最大长度和单个端口在单位时钟周期内接收的数据长度确定。
3.根据权利要求1或2所述的方法,其特征在于,所述多个端口中存在由至少一个第一端口和至少一个第二端口组成的端口组,
所述至少一个第一数据包括多个第一数据;所述通过多个端口中的至少部分接收待缓存的至少一个第一数据,包括:
在所述第一端口存在需要接收的第一子数据的情况下,通过所述第一端口接收并处理所述第一子数据,并将每个所述第二端口待接收的第二子数据缓存到每个所述第二端口对应的接口先进先出存储器FIFO;
在所述第一端口接收并处理所述第一子数据完成的情况下,依次从每个所述第二端口对应的接口FIFO中取出所述第二子数据缓并处理;
其中,所述第一子数据为至少一个所述第一数据;所述第二子数据为至少一个所述第一数据。
4.根据权利要求3所述的方法,其特征在于,所述第一端口包括配置端口。
5.根据权利要求1所述的方法,其特征在于,所述对每组第一数据分别执行位宽转换,得到各组的第二数据,包括:
对每组第一数据依次进行数据拼接,得到各组的第二数据;
其中,所述第二数据的位宽为第一数据位宽的K倍,K为大于等于2的正整数。
6.根据权利要求5所述的方法,其特征在于,所述对每组第一数据依次进行数据拼接,得到各组的第二数据,包括:
在拼接的第i个所述第一数据为数据包的包尾的情况下,将第i个所述第一数据之后的数据位补0得到位宽为第一数据位宽的K倍的第二数据,其中,i<K。
7.根据权利要求1所述的方法,其特征在于,所述缓存设备包括M个输入接口,M个输入接口对应M个位宽转换模块,不同分组的第一数据通过不同的输入接口进入对应的位宽转换模块进行位宽转换。
8.根据权利要求1或5所述的方法,其特征在于,所述对每组第一数据分别执行位宽转换,得到各组的第二数据之前,所述方法还包括:
为每个第一数据分配包的编号PID;
其中,属于同一个数据包的第一数据的PID相同,属于不同的数据包的第一数据的PID不同。
9.根据权利要求8所述的方法,其特征在于,所述为每个第一数据分配包的编号PID,包括:
在第三数据为包的开始的情况下,通过每组第一数据对应的包的编号先进先出存储器PID FIFO,为所述第三数据分配第一PID;
其中,所述第三数据之后组内的非包的开始的第一数据沿用所述第一PID;
所述第三数据为所述第一数据中的任意一个。
10.根据权利要求9所述的方法,其特征在于,
通过每组第一数据对应的PID FIFO,为所述第三数据分配第一PID之前,所述方法包括:
控制总PID FIFO为每组第一数据对应的PID FIFO分配预设数量的PID;
在通过每组第一数据对应的PID FIFO,为所述第三数据分配第一PID之后,所述方法包括:
控制总PID FIFO为分配所述第一PID的PID FIFO补齐预设数量的PID。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
在所述缓存设备输出缓存数据时,对输出的缓存数据的PID进行回收;
在总PID FIFO需要为每组第一数据对应的PID FIFO补齐预设数量的PID的情况下,回收的PID用于补齐预设数量的PID;
在总PID FIFO不需要为每组第一数据对应的PID FIFO补齐预设数量的PID的情况下,回收的PID存储至所述总PID FIFO。
12.根据权利要求10所述的方法,其特征在于,所述方法还包括:
在所述总PID FIFO中待分配的PID数量小于或等于预设阈值时,停止通过多个端口中的至少部分接收待缓存的至少一个第一数据。
13.根据权利要求1所述的方法,其特征在于,所述缓存空间包括多个缓存单元,每个缓存单元用于存储多个第二数据,存入同一缓存单元的第二数据的第一信息相同;
其中,所述第二数据的第一信息,包括如下至少一项:
所述第二数据的PID;
所述第二数据的接收对应的端口;
所述第二数据在数据包中的位置。
14.根据权利要求1所述的方法,其特征在于,所述多个端口的分组根据各端口的待接收数据量确定。
15.一种缓存设备,其特征在于,包括:
接收模块,用于通过多个端口中的至少部分接收待缓存的至少一个第一数据,其中,所述多个端口分为多个端口组;
确定模块,用于根据所述第一数据接收所对应的端口以及所述多个端口的分组信息,确定每个所述第一数据的分组;
转换模块,用于对每组第一数据分别执行位宽转换,得到各组的第二数据;
控制模块,用于控制每组的所述第二数据轮流进入缓存空间,执行所述第二数据的缓存;
其中,每个所述第一数据为单个端口在单位时钟周期内接收的数据,所述第二数据的位宽大于所述第一数据的位宽。
16.一种电子设备,其特征在于,包括收发机和处理器,
所述收发机,用于通过多个端口中的至少部分接收待缓存的至少一个第一数据,其中,所述多个端口分为多个端口组;
所述处理器,用于根据所述第一数据接收所对应的端口以及所述多个端口的分组信息,确定每个所述第一数据的分组;
对每组第一数据分别执行位宽转换,得到各组的第二数据;
控制每组的所述第二数据轮流进入缓存空间,执行所述第二数据的缓存;
其中,每个所述第一数据为单个端口在单位时钟周期内接收的数据,所述第二数据的位宽大于所述第一数据的位宽。
17.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如权利要求1至14中任一项所述的数据缓存方法的步骤。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至14中任一项所述的数据缓存方法的步骤。
CN202311162116.0A 2023-09-11 2023-09-11 数据缓存方法、设备及介质 Active CN116893983B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311162116.0A CN116893983B (zh) 2023-09-11 2023-09-11 数据缓存方法、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311162116.0A CN116893983B (zh) 2023-09-11 2023-09-11 数据缓存方法、设备及介质

Publications (2)

Publication Number Publication Date
CN116893983A true CN116893983A (zh) 2023-10-17
CN116893983B CN116893983B (zh) 2023-12-12

Family

ID=88313838

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311162116.0A Active CN116893983B (zh) 2023-09-11 2023-09-11 数据缓存方法、设备及介质

Country Status (1)

Country Link
CN (1) CN116893983B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118101582A (zh) * 2024-04-28 2024-05-28 华中光电技术研究所(中国船舶集团有限公司第七一七研究所) 一种基于汇聚分发模式的多端口udp帧交换方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102118304A (zh) * 2010-01-05 2011-07-06 中兴通讯股份有限公司 一种信元交换方法和装置
CN103701712A (zh) * 2013-12-03 2014-04-02 中国电子科技集团公司第三十研究所 一种将多个e1线路绑定且实现逻辑通道分离的方法
CN103780506A (zh) * 2012-10-26 2014-05-07 中兴通讯股份有限公司 一种用于以太网设备的数据缓存系统及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102118304A (zh) * 2010-01-05 2011-07-06 中兴通讯股份有限公司 一种信元交换方法和装置
CN103780506A (zh) * 2012-10-26 2014-05-07 中兴通讯股份有限公司 一种用于以太网设备的数据缓存系统及方法
CN103701712A (zh) * 2013-12-03 2014-04-02 中国电子科技集团公司第三十研究所 一种将多个e1线路绑定且实现逻辑通道分离的方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118101582A (zh) * 2024-04-28 2024-05-28 华中光电技术研究所(中国船舶集团有限公司第七一七研究所) 一种基于汇聚分发模式的多端口udp帧交换方法及装置
CN118101582B (zh) * 2024-04-28 2024-06-28 华中光电技术研究所(中国船舶集团有限公司第七一七研究所) 一种基于汇聚分发模式的多端口udp帧交换方法及装置

Also Published As

Publication number Publication date
CN116893983B (zh) 2023-12-12

Similar Documents

Publication Publication Date Title
EP2222004B1 (en) Dynamic bandwidth allocation circuit, dynamic bandwidth allocation method, dynamic bandwidth allocation program and recording medium
JP2788577B2 (ja) フレーム変換方法及び装置
JP5863076B2 (ja) パケットを再構築し再順序付けするための方法、装置、およびシステム
US5214642A (en) ATM switching system and adaptation processing apparatus
US5572522A (en) Asynchronous transfer mode switch with multicasting ability
US5592476A (en) Asynchronous transfer mode switch with multicasting ability
US6757791B1 (en) Method and apparatus for reordering packet data units in storage queues for reading and writing memory
CN116893983B (zh) 数据缓存方法、设备及介质
US6414961B1 (en) ATM switching with virtual circuit FIFO buffers
US7240347B1 (en) Systems and methods for preserving the order of data
CN108462649B (zh) 降低onu中拥塞状态下高优先级数据传输时延的方法和装置
US6324164B1 (en) Asynchronous transfer mode (A.T.M.) protocol adapter for a high speed cell switching system
US7565496B2 (en) Sharing memory among multiple information channels
CN101064697B (zh) 一种实现异步传输模式网络服务质量控制的装置和方法
CN116955247B (zh) 一种缓存描述符管理装置及其方法、介质、芯片
CN115002052B (zh) 一种分层的缓存控制器、控制方法及控制设备
Baiocchi et al. The ACCI access protocol for a twin bus ATM metropolitan area network
JP3435244B2 (ja) 通信制御装置
CN117041186B (zh) 数据传输方法、芯片系统、计算设备及存储介质
CN116028398B (zh) 一种互连网络仲裁系统、装置、方法及存储介质
JPH1155276A (ja) シェーピング装置
CN117354268A (zh) 一种报文的缓存方法、装置、电子设备及存储介质
CN113626216A (zh) 优化基于远程直接数据存取的网络应用性能的方法及系统
CN118631766A (zh) 一种交换机高效多端口并行共享缓存管理系统
CN117692410A (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
GR01 Patent grant
GR01 Patent grant