避免多通道数据传输过程中队头阻塞的系统及方法与流程

文档序号:18339222发布日期:2019-08-03 16:04阅读:234来源:国知局
避免多通道数据传输过程中队头阻塞的系统及方法与流程

本发明涉及网络通信领域,尤其涉及一种避免多通道数据传输过程中队头阻塞的系统及方法。



背景技术:

在网络交换芯片中,当多个通道的报文需要从同一个端口输出时,该端口通常会建立一个FIFO(英文First In First Out的缩写)队列排队处理多通道的报文。FIFO是在ASIC或FPGA设计中经常会用到的数据缓冲器,所述FIFO在数据转存过程中执行先进先出的策略;由于FIFO先进先出的特性,如果队头的通道不满足输出的条件,后面的通道即使满足输出条件也不能输出,造成了带宽的严重损失。

如图1所示,报文按照到达FIFO队列的先后顺序进行排队,先进的报文先出,由于通道#0不满足输出条件,即使通道#1 满足输出条件也会被队头阻塞在FIFO中。

传统的解决办法,为多个通道配置多个FIFO,将不同通道的报文存储在不同的FIFO队列中,并对所有通道进行调度来解决了队头阻塞的问题。但是随着带宽的提高,通道数量增加,FIFO数量也对应增加,导致前后端设计的复杂度增加,资源占用太多,大大提高了芯片的面积和成本;同时,每个通道占用的资源相对固定,无法共享给其他的通道,从而导致资源的浪费。



技术实现要素:

为解决上述技术问题,本发明的目的在于提供一种避免多通道数据传输过程中队头阻塞的系统及方法。

为实现上述发明目的之一,本发明一实施方式提供的避免多通道数据传输过程中队头阻塞的方法包括:在传输芯片中,对应多个传输通道增加一个RAM单元,及与所述RAM单元深度相同的一个RA单元;

所述RAM单元用于集中缓存各个传输通道发送的数据;所述RA单元用于存储地址链表;

所述地址链表包括:

对应所述RAM单元设置,并用于记录所述RAM单元剩余空间的剩余空间链表;

对应各个传输通道分别设置,并用于记录各个传输通道中数据输出顺序的通道链表;

以及用于记录满足输出条件的数据的发送顺序的输出链表;

轮询各个传输通道,当监测传输通道中存在数据转发时,将当前传输的数据转存至所述RAM单元中,并记录所述数据对应所述RAM单元的链接地址;

判断各个传输通道的通道链表的起始地址所对应的数据是否满足输出条件;

若是,将当前数据对应的链接地址更新至所述输出链表中;

并根据所述输出链表的链接顺序,将所述RAM单元中的数据发送至输出端口进行输出;

若否,继续监测对应各个传输通道的通道链表起始地址的数据是否满足输出条件;

其中,所述数据转存至所述RAM单元以及从所述RAM单元发送至所述输出端口后,均对RA单元中各个地址链表进行更新。

作为本发明实施方式的进一步改进,所述方法还包括:

在接收第一个转发的数据之前,对所述RAM单元及所述RA单元初始化;

所述初始化包括:将所述RAM单元的全部存储地址通过链表进行链接形成剩余空间链表,并记录所述剩余空间链表的起始地址、结束地址以及链接顺序;

数据转发过程中,当前转发的数据暂存至所述RAM单元对应的所述剩余空间链表的起始地址中后,更新所述剩余空间链表;

若当前剩余空间链表仅具有1个链接地址,则更新后的所述剩余空间链表为空;

若当前剩余空间链表具有2个或2个以上的链接地址,则将与当前被占用的剩余空间链表起始地址相邻的链接地址作为新的剩余空间链表的起始地址。

作为本发明实施方式的进一步改进,所述方法还包括:

数据转发过程中,若当前传输的数据不满足输出条件,则更新当前数据所在传输通道所对应的通道链表;

若当前不满足输出条件的数据所在通道所对应的通道链表为空,则将当前数据对应所述RAM单元的链接地址设置为当前通道对应的通道链表的起始地址;

若当前不满足输出条件的数据所在通道所对应的通道链表不为空,则将当前数据对应所述RAM单元的链接地址链接为当前通道对应的通道链表的结束地址;

数据转发过程中,若当前传输的数据满足输出条件,则更新当前数据所在传输通道所对应的通道链表;

若当前满足输出条件的数据所在通道所对应的通道链表为空,则将当前数据对应所述RAM单元的链接地址链接至所述输出链表;

若当前满足输出条件的数据所在通道所对应的通道链表不为空,则将当前数据对应所述RAM单元的链接地址链接为所述通道链表的结束地址。

作为本发明实施方式的进一步改进,

判断各个传输通道的通道链表的起始地址所对应的数据是否满足输出条件,若是,将当前数据对应的链接地址更新至所述输出链表中具体包括:

数据转发过程中,若处于通道链表的起始地址所对应的数据满足输出条件,则更新所述输出链表;

若当前输出链表为空,则将当前数据对应所述RAM单元的链接地址设置为所述输出链表的起始地址;

若当前所述输出链表不为空,则将当前数据对应所述RAM单元的链接地址链接为所述输出链表的结束地址;

同时,释放当前数据对应的通道链表的起始地址,以更新所述通道链表;

若当前数据对应的通道链表仅具有1个链接地址,则更新后的所述通道链表为空;

若当前通道链表具有2个或2个以上的链接地址,则将与当前数据对应的通道链表的起始地址相邻的链接地址作为新的通道链表的起始地址。

作为本发明实施方式的进一步改进,所述方法还包括:数据转发过程中,若所述RAM单元中的数据根据所述输出链表的链接顺序从所述RAM单元发送至输出端口进行输出;

则释放当前数据对应的输出链表的起始地址,以更新所述输出链表;

若当前数据对应的输出链表仅具有1个链接地址,则更新后的所述输出链表为空;

若当前通道链表具有2个或2个以上的链接地址,则将与当前数据对应的输出链表的起始地址相邻的链接地址作为新的输出链表的起始地址;

同时,将当前数据对应所述RAM单元的链接地址写回至所述剩余空间链表,并将其链接为所述剩余空间链表的结束地址。

为了实现上述发明目的之一,本发明的一种避免多通道数据传输过程中队头阻塞的系统包括:数据存储模块,其包括:对应多个传输通道增加的一个RAM单元,及与所述RAM单元深度相同的一个RA单元;

所述RAM单元用于集中缓存各个传输通道发送的数据;所述RA单元用于存储地址链表;

所述地址链表包括:

对应所述RAM单元设置,并用于记录所述RAM单元剩余空间的剩余空间链表;

对应各个传输通道分别设置,并用于记录各个传输通道中数据输出顺序的通道链表;

以及用于记录满足输出条件的数据的发送顺序的输出链表;

数据处理更新模块,用于轮询各个传输通道,当监测传输通道中存在数据转发时,将当前传输的数据转存至所述RAM单元中,并记录所述数据对应所述RAM单元的链接地址;

判断各个传输通道的通道链表的起始地址所对应的数据是否满足输出条件;

若是,将当前数据对应的链接地址更新至所述输出链表中;

并根据所述输出链表的链接顺序,将所述RAM单元中的数据发送至输出端口进行输出;

若否,继续监测对应各个传输通道的通道链表起始地址的数据是否满足输出条件;

其中,所述数据转存至所述RAM单元以及从所述RAM单元发送至所述输出端口后,均对RA单元中各个地址链表进行更新。

作为本发明实施方式的进一步改进,所述系统还包括:初始化模块;

所述初始化模块用于:在接收第一个转发的数据之前,对所述RAM单元及所述RA单元初始化;

所述初始化包括:将所述RAM单元的全部存储地址通过链表进行链接形成剩余空间链表,并记录所述剩余空间链表的起始地址、结束地址以及链接顺序;

所述数据处理更新模块具体用于:数据转发过程中,当前转发的数据暂存至所述RAM单元对应的所述剩余空间链表的起始地址中后,更新所述剩余空间链表;

若当前剩余空间链表仅具有1个链接地址,则更新后的所述剩余空间链表为空;

若当前剩余空间链表具有2个或2个以上的链接地址,则将与当前被占用的剩余空间链表起始地址相邻的链接地址作为新的剩余空间链表的起始地址。

作为本发明实施方式的进一步改进,所述数据处理更新模块还用于: 数据转发过程中,若当前传输的数据不满足输出条件,则更新当前数据所在传输通道所对应的通道链表;

若当前不满足输出条件的数据所在通道所对应的通道链表为空,则将当前数据对应所述RAM单元的链接地址设置为当前通道对应的通道链表的起始地址;

若当前不满足输出条件的数据所在通道所对应的通道链表不为空,则将当前数据对应所述RAM单元的链接地址链接为当前通道对应的通道链表的结束地址;

数据转发过程中,若当前传输的数据满足输出条件,则更新当前数据所在传输通道所对应的通道链表;

若当前满足输出条件的数据所在通道所对应的通道链表为空,则将当前数据对应所述RAM单元的链接地址链接至所述输出链表;

若当前满足输出条件的数据所在通道所对应的通道链表不为空,则将当前数据对应所述RAM单元的链接地址链接为所述通道链表的结束地址。

作为本发明实施方式的进一步改进,所述数据处理更新模块还用于:数据转发过程中,若处于通道链表的起始地址所对应的数据满足输出条件,则更新所述输出链表;

若当前输出链表为空,则将当前数据对应所述RAM单元的链接地址设置为所述输出链表的起始地址;

若当前所述输出链表不为空,则将当前数据对应所述RAM单元的链接地址链接为所述输出链表的结束地址;

同时,释放当前数据对应的通道链表的起始地址,以更新所述通道链表;

若当前数据对应的通道链表仅具有1个链接地址,则更新后的所述通道链表为空;

若当前通道链表具有2个或2个以上的链接地址,则将与当前数据对应的通道链表的起始地址相邻的链接地址作为新的通道链表的起始地址。

作为本发明实施方式的进一步改进,所述数据处理更新模块还用于:数据转发过程中,若所述RAM单元中的数据根据所述输出链表的链接顺序从所述RAM单元发送至输出端口进行输出;

则释放当前数据对应的输出链表的起始地址,以更新所述输出链表;

若当前数据对应的输出链表仅具有1个链接地址,则更新后的所述输出链表为空;

若当前通道链表具有2个或2个以上的链接地址,则将与当前数据对应的输出链表的起始地址相邻的链接地址作为新的输出链表的起始地址;

同时,将当前数据对应所述RAM单元的链接地址写回至所述剩余空间链表,并将其链接为所述剩余空间链表的结束地址。

与现有技术相比,本发明的避免多通道数据传输过程中队头阻塞的系统及方法,通过增加RAM单元及RA单元,使各个传输通道中转发的数据暂存于所述RAM单元中,并在数据满足输出条件后,根据RA单元中各个地址链表的链接关系,第一时间从RAM单元中输出;即避免多通道数据传输过程中队头阻塞的问题发生,又在高带宽下,简化芯片设计,降低芯片的面积和成本。

附图说明

图1是现有技术中,FIFO缓冲器的结构示意图;

图2是本发明一实施方式避免多通道数据传输过程中队头阻塞的方法的流程图;

图3是本发明一实施方式避免多通道数据传输过程中队头阻塞的系统的模块示意图。

具体实施方式

以下将结合附图所示的各实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。

如图2所示,本发明一实施方式提供的避免多通道数据传输过程中队头阻塞的方法,用于网络芯片,避免网络芯片中多通道的传输数据通过一个输出端口输出时,造成队头阻塞的问题的发生;所述方法包括:

S1、在传输芯片中,对应多个传输通道增加一个RAM单元,及与所述RAM单元深度相同的一个RA单元;所述RAM单元用于集中缓存各个传输通道发送的数据;所述RA单元用于存储地址链表;所述地址链表包括:对应所述RAM单元设置,并用于记录所述RAM单元剩余空间的剩余空间链表;对应各个传输通道分别设置,并用于记录各个传输通道中数据输出顺序的通道链表;以及用于记录满足输出条件的数据的发送顺序的输出链表。

需要说明的是,每种地址链表均具有其相应的起始地址和结束地址,当所地址链表中仅具有一个链接地址时,该链接地址即为起始地址也为结束地址,在此不做详细赘述。

本实施方式中,所述RAM单元为random access memory的缩写,所述RA单元为Register array的缩写。

进一步的,所述方法还包括:S2、轮询各个传输通道,当监测传输通道中存在数据转发时,将当前传输的数据转存至所述RAM单元中,并记录所述数据对应所述RAM单元的链接地址。

S3、判断各个传输通道的通道链表的起始地址所对应的数据是否满足输出条件;若是,将当前数据对应的链接地址更新至所述输出链表中;并根据所述输出链表的链接顺序,将所述RAM单元中的数据发送至输出端口进行输出;若否,继续监测对应各个传输通道的通道链表起始地址的数据是否满足输出条件;其中,所述数据转存至所述RAM单元以及从所述RAM单元发送至所述输出端口后,均对RA单元中各个地址链表进行更新。

本发明优选实施方式中,所述步骤S2具体包括:预设一时钟周期,每个时钟周期下,轮询各个传输通道,以分别判断各个传输通道中是否存在数据转发。

在每个时钟周期下,轮询各个传输通道中的链首地址,即每个传输通道对应的通道链表的起始地址,判断其是否满足输出条件,当满足输出条件时,将该数据对应的链接地址链接到输出链表上,并将当前的链接地址作为输出链表的结束地址,以下将会详细描述。

本发明优选实施方式中,所述方法还包括:在接收第一个转发的数据之前,对所述RAM单元及所述RA单元初始化;所述初始化包括:将所述RAM单元的全部存储地址通过链表进行链接形成剩余空间链表,并记录所述剩余空间链表的起始地址、结束地址以及链接顺序。

本实施方式中,初始化的过程中,整块RAM单元通过链表链接进行链接,其链接顺序可按照用户需求字型设置,例如:将所述RAM单元深度上的第一个地址作为起始地址,之后从所述RAM单元的第一个地址依次升序链接到最后一个地址;也可以将深度上最后一个地址作为起始地址,之后从RAM单元的最后一个地址依次降序链接到深度上的第一个地址,也可以将RAM单元深度上的任一个地址作为起始地址,在此不做详细赘述。

进一步的,本发明一实施方式中,所述步骤S2具体包括:数据转发过程中,当前转发的数据暂存至所述RAM单元对应的所述剩余空间链表的起始地址中后,更新所述剩余空间链表;若当前剩余空间链表仅具有1个链接地址,则更新后的所述剩余空间链表为空;若当前剩余空间链表具有2个或2个以上的链接地址,则将与当前被占用的剩余空间链表起始地址相邻的链接地址作为新的剩余空间链表的起始地址。

可以理解的是,对应每个传输通道,其共用RAM单元,当监测到数据转发,即将该数据转存至所述RAM单元,且按序每次均调取当前剩余空间链表的起始地址配置给当前的转发数据,并更新剩余空间链表,将与当前被占用的剩余空间链表起始地址相邻的链接地址作为新的剩余空间链表起始地址;同时,当所述RAM单元中的数据发送至输出端口以进行数据输出时,当前数据对应的链接地址将重新写回至剩余空间链表中,并将其作为剩余空间链表的结束地址,以下还会继续描述。

进一步的,所述步骤S2还包括:数据转发过程中,若当前传输的数据不满足输出条件,则更新当前数据所在传输通道所对应的通道链表;若当前不满足输出条件的数据所在通道所对应的通道链表为空,则将当前数据对应所述RAM单元的链接地址设置为当前通道对应的通道链表的起始地址;若当前不满足输出条件的数据所在通道所对应的通道链表不为空,则将当前数据对应所述RAM单元的链接地址链接为当前通道对应的通道链表的结束地址;

数据转发过程中,若当前传输的数据满足输出条件,则更新当前数据所在传输通道所对应的通道链表;若当前满足输出条件的数据所在通道所对应的通道链表为空,则将当前数据对应所述RAM单元的链接地址链接至所述输出链表;若当前满足输出条件的数据所在通道所对应的通道链表不为空,则将当前数据对应所述RAM单元的链接地址链接为所述通道链表的结束地址。

该实施方式中,每个通道均共享所述RAM单元的存储空间,为了便于独立管理各个传输通道中传输的数据,对每个传输通道设置一个独立的通道链表。相应的,每个传输通道同样维护一个对应通道链表的起始地址和结束地址;每个通道链表储存的是对应当前通道暂时不满足输出条件的传输数据所在RAM单元中的链接地址;其中,需要说明的是,在当前传输通道对应的通道链表不为空的状态下,无论当前传输通道接收到的数据是否满足输出条件,其均需要将其链接为当前通道链表的结束地址,如此,防止当前传输通道在传输数据过程中,出现乱序的问题。而在当前传输通道对应的通道链表为空的状态下,若当前数据满足输出条件,则不需要将该数据对应的链接地址链接在所述通道链表中,同时,可直接将其链接地址链接为输出链表的结束地址,等待输出,如此,节约资源,在此不做详细赘述。

本发明的具体实施方式中,通道链表的建立方式有两种,其中一种为通道链表在数据开始传输之前即存在与所述RA单元中,该种实施方式下,起始状态下,该通道链表为空,当前传输通道仅有一个不满足输出条件的数据时,直接将链接地址作为该通道链表的起始地址;另一种方式中,通道链表在数据开始传输之前并不存在,该种实施方式下,当前传输通道仅有一个不满足输出条件的数据时,建立新的通道链表,并将该数据对应的链接地址作为该通道链表的起始地址;与所述剩余空间链表较为相似的,当该通道链表中的起始地址对应的数据从所述RAM转发至所述输出端口时,其同样需要将其相邻的链接地址作为该通道链表的起始地址;当该通道链表存在链接地址,无论该通道中继续传输的数据是否满足输出条件,新的数据所对应的链接地址均将链接为该通道链表的结束地址。

进一步的,所述步骤S2还包括:数据转发过程中,若处于通道链表的起始地址所对应的数据满足输出条件,则更新所述输出链表; 若当前输出链表为空,则将当前数据对应所述RAM单元的链接地址设置为所述输出链表的起始地址;若当前所述输出链表不为空,则将当前数据对应所述RAM单元的链接地址链接为所述输出链表的结束地址;

同时,释放当前数据对应的通道链表的起始地址,以更新所述通道链表;若当前数据对应的通道链表仅具有1个链接地址,则更新后的所述通道链表为空;若当前通道链表具有2个或2个以上的链接地址,则将与当前数据对应的通道链表的起始地址相邻的链接地址作为新的通道链表的起始地址。

数据转发过程中,当处于通道链表的起始地址所对应的数据满足输出条件时,其链接地址将会链接至所述输出链表中;对应输出链表中各个链接地址的数据会依据所述输出链表的链接顺序,从其当前的起始地址开始依次输出。

进一步的,所述步骤S2还包括:数据转发过程中,若所述RAM单元中的数据根据所述输出链表的链接顺序从所述RAM单元发送至输出端口进行输出;则,释放当前数据对应的输出链表的起始地址,以更新所述输出链表;若当前数据对应的输出链表仅具有1个链接地址,则更新后的所述输出链表为空;若当前通道链表具有2个或2个以上的链接地址,则将与当前数据对应的输出链表的起始地址相邻的链接地址作为新的输出链表的起始地址;

同时,将当前数据对应所述RAM单元的链接地址写回至所述剩余空间链表,并将其链接为所述剩余空间链表的结束地址。

本发明一优选实施方式中,每个时钟周期下,对应将输出链表起始地址对应的数据从所述RAM单元转发至所述输出端口,以用于数据转发,并完成RA单元的更新,在此不做继续赘述。

本发明一实施方式中,为了便于理解,描述一具体示例用于参考,相应的,本具体示例中:假设RAM单元的深度为10,传输通道的数量为4,分别为传输通道0、1、2、3,其对应的通道链表分别为通道链表0、1、2、3;则在初始化后,剩余空间链表中具有10个链接地址,将其链接顺序设置为0→1→2→3→4→5→6→7→8→9,如此,该剩余空间链表当前的起始地址为0,结束地址为9;此时,还未有数据传输,因此,各个通道链表以及输出链表均为空。

在前两个时钟周期下,从传输通道0依次轮询各个传输通道,判断传输通道0、传输通道1在前两个时钟周期下各有一个未满足输出条件的数据的传输;数据分别为D01、D11;此时,按照传输通道的轮询顺序,D01、D11依序转存至RAM单元,并将RAM单元的链接地址0分配给D01;将RAM单元的链接地址1分配给D11;此时,剩余空间链表调整为2→3→4→5→6→7→8→9;传输通道0对应的通道链表0具有一个链接地址,且为0;传输通道1对应的通道链表1具有一个链接地址,且为1;传输通道3、4对应的通道链表均为空。

在接下来的三个个时钟周期下,每个时钟周期重复从传输通道0依次轮询各个传输通道,判断传输通道0、传输通道1、传输通道2在三个时钟周期下各有一个未满足输出条件的数据的传输;数据分别为D02、D12、D21;同时传输通道1中的数据D11满足输出条件;此时,按照传输数据进入的顺序,D02、D12、D21依次转存至RAM单元,并将RAM单元的链接地址2分配给D02;将RAM单元的链接地址3分配给D12;将RAM单元的链接地址4分配给D21;与此同时,由于传输通道1中的数据D11满足输出条件,因此,将数据D11占用的链接地址1链接至输出链表;如此,在第五个时钟周期后,更新输出链表为具有1个链接地址,且为1,剩余空间链表为5→6→7→8→9;传输通道0对应的通道链表0具有2个链接地址,且为0→2;传输通道1对应的通道链表1具有1个链接地址,且为3;传输通道3对应的通道链表1具有1个链接地址,且为4;传输通道4对应的通道链表仍为空。

在第6个时钟周期,各个传统通道均没有新的数据转发,传输通道0、1、2中各个通道链表的的起始地址所对应的数据,即D01、D12、D21均不满足输出条件;但是在当前时钟周期下,传输链表不为空,因此,处于传输链表的起始地址中的数据,即:地址1的数据从RAM中读出至输出端口,并送出,此时,输出链表起始地址1被释放,写回剩余空间链表;输出链表为空;剩余空间链表为5→6→7→8→9→1;各个通道链表保持第5个时钟周期后的状态。

本发明采用一块RAM单元对各通道报文进行集中缓存,只要有通道满足输出条件就可以被调度出去,解决队头阻塞的问题。

结合图3所示,本发明一实施方式中,提供的避免多通道数据传输过程中队头阻塞的系统,所述系统包括:初始化模块100、数据存储模块200、数据处理更新模块300;所述数据存储模块200包括:对应多个传输通道增加的一个RAM单元201,与所述RAM单元201深度相同的一个RA单元203,以及时钟单元205。

本发明具体实施方式中,所述RAM单元201用于集中缓存各个传输通道发送的数据;所述RA单元203用于存储地址链表;所述地址链表包括:对应所述RAM单元201设置,并用于记录所述RAM单元201剩余空间的剩余空间链表;对应各个传输通道分别设置,并用于记录各个传输通道中数据输出顺序的通道链表;以及用于记录满足输出条件的数据的发送顺序的输出链表。

需要说明的是,每种地址链表均具有其相应的起始地址和结束地址,当所地址链表中仅具有一个链接地址时,该链接地址即为起始地址也为结束地址,在此不做详细赘述。

数据处理更新模块300用于:轮询各个传输通道,当监测传输通道中存在数据转发时,将当前传输的数据转存至所述RAM单元201中,并记录所述数据对应所述RAM单元201的链接地址;判断各个传输通道的通道链表的起始地址所对应的数据是否满足输出条件;若是,将当前数据对应的链接地址更新至所述输出链表中;并根据所述输出链表的链接顺序,将所述RAM单元201中的数据发送至输出端口进行输出;若否,继续监测对应各个传输通道的通道链表起始地址的数据是否满足输出条件;其中,所述数据转存至所述RAM单元201以及从所述RAM单元201发送至所述输出端口后,均对RA单元203中各个地址链表进行更新。

本发明优选实施方式中,时钟单元205,用于记录时钟周期;所述数据处理更新模块300具体用于:每个时钟周期下,轮询各个传输通道,以分别判断各个传输通道中是否存在数据转发。

所述数据处理更新模块300在每个时钟周期下,轮询各个传输通道中的链首地址,即每个传输通道对应的通道链表的起始地址,判断其是否满足输出条件,当满足输出条件时,将该数据对应的链接地址链接到输出链表上,并将当前的链接地址作为输出链表的结束地址,以下将会详细描述。

本发明优选实施方式中,初始化模块100用于:在接收第一个转发的数据之前,对所述RAM单元201及所述RA单元203初始化;所述初始化包括:将所述RAM单元201的全部存储地址通过链表进行链接形成剩余空间链表,并记录所述剩余空间链表的起始地址、结束地址以及链接顺序。

本实施方式中,初始化的过程中,整块RAM单元201通过链表链接进行链接,其链接顺序可按照用户需求字型设置,例如:将所述RAM单元201深度上的第一个地址作为起始地址,之后从所述RAM单元201的第一个地址依次升序链接到最后一个地址;也可以将深度上最后一个地址作为起始地址,之后从RAM单元201的最后一个地址依次降序链接到深度上的第一个地址,也可以将RAM单元201深度上的任一个地址作为起始地址,在此不做详细赘述。

进一步的,所述数据处理更新模块300具体用于:数据转发过程中,当前转发的数据暂存至所述RAM单元201对应的所述剩余空间链表的起始地址中后,更新所述剩余空间链表;若当前剩余空间链表仅具有1个链接地址,则更新后的所述剩余空间链表为空;若当前剩余空间链表具有2个或2个以上的链接地址,则将与当前被占用的剩余空间链表起始地址相邻的链接地址作为新的剩余空间链表的起始地址。

可以理解的是,对应每个传输通道,其共用RAM单元201,当监测到数据转发,即将该数据转存至所述RAM单元201,且按序每次均调取当前剩余空间链表的起始地址配置给当前的转发数据,并更新剩余空间链表,将与当前被占用的剩余空间链表起始地址相邻的链接地址作为新的剩余空间链表起始地址;同时,当所述RAM单元201中的数据发送至输出端口以进行数据输出时,当前数据对应的链接地址将重新写回至剩余空间链表中,并将其作为剩余空间链表的结束地址,以下还会继续描述。

进一步的,所述数据处理更新模块300还用于:数据转发过程中,若当前传输的数据不满足输出条件,则更新当前数据所在传输通道所对应的通道链表;若当前不满足输出条件的数据所在通道所对应的通道链表为空,则将当前数据对应所述RAM单元201的链接地址设置为当前通道对应的通道链表的起始地址;若当前不满足输出条件的数据所在通道所对应的通道链表不为空,则将当前数据对应所述RAM单元201的链接地址链接为当前通道对应的通道链表的结束地址;

数据转发过程中,若当前传输的数据满足输出条件,则更新当前数据所在传输通道所对应的通道链表;若当前满足输出条件的数据所在通道所对应的通道链表为空,则将当前数据对应所述RAM单元201的链接地址链接至所述输出链表;若当前满足输出条件的数据所在通道所对应的通道链表不为空,则将当前数据对应所述RAM单元201的链接地址链接为所述通道链表的结束地址。

该实施方式中,每个通道均共享所述RAM单元201的存储空间,为了便于独立管理各个传输通道中传输的数据,对每个传输通道设置一个独立的通道链表。相应的,每个传输通道同样维护一个对应通道链表的起始地址和结束地址;每个通道链表储存的是对应当前通道暂时不满足输出条件的传输数据所在RAM单元201中的链接地址;其中,需要说明的是,在当前传输通道对应的通道链表不为空的状态下,无论当前传输通道接收到的数据是否满足输出条件,其均需要将其链接为当前通道链表的结束地址,如此,防止当前传输通道在传输数据过程中,出现乱序的问题。而在当前传输通道对应的通道链表为空的状态下,若当前数据满足输出条件,则不需要将该数据对应的链接地址链接在所述通道链表中,同时,可直接将其链接地址链接为输出链表的结束地址,等待输出,如此,节约资源,在此不做详细赘述。

本发明的具体实施方式中,通道链表的建立方式有两种,其中一种为通道链表在数据开始传输之前即存在与所述RA单元203中,该种实施方式下,起始状态下,该通道链表为空,当前传输通道仅有一个不满足输出条件的数据时,直接将链接地址作为该通道链表的起始地址;另一种方式中,通道链表在数据开始传输之前并不存在,该种实施方式下,当前传输通道仅有一个不满足输出条件的数据时,建立新的通道链表,并将该数据对应的链接地址作为该通道链表的起始地址;与所述剩余空间链表较为相似的,当该通道链表中的起始地址对应的数据从所述RAM转发至所述输出端口时,其同样需要将其相邻的链接地址作为该通道链表的起始地址;当该通道链表存在链接地址,无论该通道中继续传输的数据是否满足输出条件,新的数据所对应的链接地址均将链接为该通道链表的结束地址。

进一步的,所述数据处理更新模块300还用于:数据转发过程中,若处于通道链表的起始地址所对应的数据满足输出条件,则更新所述输出链表;若当前输出链表为空,则将当前数据对应所述RAM单元201的链接地址设置为所述输出链表的起始地址;若当前所述输出链表不为空,则将当前数据对应所述RAM单元201的链接地址链接为所述输出链表的结束地址;

同时,释放当前数据对应的通道链表的起始地址,以更新所述通道链表;若当前数据对应的通道链表仅具有1个链接地址,则更新后的所述通道链表为空;若当前通道链表具有2个或2个以上的链接地址,则将与当前数据对应的通道链表的起始地址相邻的链接地址作为新的通道链表的起始地址。

数据转发过程中,当处于通道链表的起始地址所对应的数据满足输出条件时,其链接地址将会链接至所述输出链表中;对应输出链表中各个链接地址的数据会依据所述输出链表的链接顺序,从其当前的起始地址开始依次输出。

进一步的,所述数据处理更新模块300还用于:数据转发过程中,若所述RAM单元201中的数据根据所述输出链表的链接顺序从所述RAM单元201发送至输出端口进行输出;则,释放当前数据对应的输出链表的起始地址,以更新所述输出链表;若当前数据对应的输出链表仅具有1个链接地址,则更新后的所述输出链表为空;若当前通道链表具有2个或2个以上的链接地址,则将与当前数据对应的输出链表的起始地址相邻的链接地址作为新的输出链表的起始地址;

同时,将当前数据对应所述RAM单元201的链接地址写回至所述剩余空间链表,并将其链接为所述剩余空间链表的结束地址。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统中各个模块的具体工作过程,可以参考前述方法实施方式中的对应过程,在此不再赘述。

综上所述,本发明的避免多通道数据传输过程中队头阻塞的系统及方法,通过增加RAM单元及RA单元,使各个传输通道中转发的数据暂存于所述RAM单元中,并在数据满足输出条件后,根据RA单元中各个地址链表的链接关系,第一时间从RAM单元中输出;即避免多通道数据传输过程中队头阻塞的问题发生,又在高带宽下,简化芯片设计,降低芯片的面积和成本。

为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本发明时可以把各模块的功能在同一个或多个软件和/或硬件中实现。

以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1