一种网络芯片多通道数据传输方法及传输装置的制造方法_3

文档序号:9891349阅读:来源:国知局
队列中存储有存储地址,此时可以根据选中的高优先级先进先出队列或低优先级先进先出队列得到所述待调度数据段的存储地址,而后可根据存储地址调度出所述待调度数据段,以此类推,将所述待调度数据段更新为已调度数据段,进一步调度出下一数据段,从而实现整个报文的调度。
[0030]本发明还提供一种网络芯片多通道数据传输装置,在本发明一实施方式中,如图4及图5所示,所述网络芯片多通道数据传输装置包括接收模块10、处理模块20、存储模块30及调度模块40。
[0031]接收模块10用于:
接收报文,所述报文由至少一数据段组成;
处理模块20用于:
计算当前数据段的偏移量offset,所述偏移量offset定义为所述当前数据段与首数据段之间的数据段间隔数量;
判断所述当前数据段的数据段类型,当所述偏移量off set不大于预设值时,判断所述当前数据段为短包数据段,当所述偏移量off set大于预设值时,判断所述当前数据段为长包数据段;
存储模块30用于:
存储所述当前数据段,所述存储模块优先存储所述长包数据段,且所述存储模块30用于将长包数据段通道编号及存储地址写进高优先级先进先出队列,将短包数据段通道编号及存储地址写进低优先级先进先出队列;
调度模块40用于:
优先读取高优先级先进先出队列中的通道编号,索引出所述通道编号对应通道内的已调度数据段;
根据已调度数据段信息判断待调度数据段的数据段类型,当判断所述待调度数据段为长包数据段时,所述高优先级先进先出队列参与调度,当判断所述待调度数据段为短包数据段时,所述低优先级先进先出队列参与调度;
根据参与调度的高优先级先进先出队列或低优先级先进先出队列中的存储地址调度出所述待调度数据段;
将该通道待调度数据段信息更新为已调度数据段信息以进行下次调度。
[0032]这里,需要说明的是,上述模块的作用仅为本发明一实施方式的示意步骤,模块工作的先后顺序不以此为限,且某一时间段可由多个模块同时进行,例如,存储模块30可为一读一写存储器,接收模块10、处理模块20及存储模块30进行的存储过程及调度模块40进行的调度过程可同时进行,本申请不以此为限,可依据实际情况而定。调度模块40调度出存储模块30中缓存的数据段并发送至后级模块中。
[0033]在本实施方式中,存储模块30的存储空间优先存储长包数据段,大幅降低长包数据段因为存储空间用尽而被截断的概率,同时,在调度过程中,调度模块40优先调度出长包数据段,不仅保证后续进来的长包数据段可以顺利存储防止丢包,而且使得长包数据段顺利送出,整体上降低了长包数据段的丢包率,从而提高网络芯片的转发能力。另外,在数据段调度过程中,调度模块40利用调度仲裁逻辑,使得数据段间隔不会因为网络超带宽而被拉长,且保证数据段不发生错乱。
[0034]在本实施方式中,偏移量offset与报文总长度L及存储器位宽D有关,当报文总长度L大于存储器位宽D时,一个报文需要拆分成多个数据段进行传输。这里,某一报文包含的数据段总数定义为数据段总数Nciffse3t=报文总长度L/存储器位宽D,Nciffse3t实质为L和D的商,当商为非整数时,Nciffset为商取整加I ,Nciffset为自然数。假设L=10bit,D=10bit,则该报文的数据段总数Νμ-=100/10=10段,依次将这10段数据段编号,分别为:第I段数据段、第2段数据段……第10段数据段,此时,第I段数据段(即为首数据段)的偏移量offset为I,第2段数据段的偏移量offset为2......第10段数据段(即为尾数据段)的偏移量offset为10,其中,
每一数据段均包含偏移量offset、起始信息及结尾信息,通过偏移量offset、所述起始信息及所述结尾信息可判断后一数据段的偏移量offset等信息。
[0035]在本实施方式中,预设值N定义为2,当偏移量offset <2时,处理模块20判断对应的当前数据段为短包数据段,当偏移量offset>2时,处理模块20判断对应的当前数据段为长包数据段。当判断完当前数据段的数据段类型后,需要对当前数据段进行存储(或丢弃)以及进行调度请求排列,这里,为了防止长包数据段因存储空间用尽而被截断,存储模块30特别为长包数据段预留了一定的存储空间,即此时存储空间优先存储长包数据段。
[0036]具体的,当所述当前数据段为短包数据段且已使用存储空间S未超过所述存储空间的第一阈值Tl时,存储模块30将所述当前数据段写入低优先级先进先出队列中,当判断所述当前数据段为短包数据段且所述已使用存储空间S超过所述第一阈值Tl时,丢弃所述当前数据段,当判断所述当前数据段为长包数据段且所述已使用存储空间S未超过所述存储空间的第二阈值T2时,存储模块30将所述当前数据段写入高优先级先进先出队列中,当判断所述当前数据段为长包数据段且已使用存储空间S超过第二阈值T2时,丢弃当前数据段,所述第二阈值T2大于所述第一阈值Tl。这里,第二阈值T2实质为存储空间的最大值,第二阈值T2与第一阈值Tl之间的存储空间即为预留给长包数据段的存储空间,也就是说,只要已使用存储空间S还未达到最大值,则一定可以存储长包数据段,但不一定可以存储短包数据段,只有已使用存储空间S还未达到第一阈值Tl时才可存储短包数据段,如此,在存储空间有限的情况下,会优先存储长包数据段,从而降低长包数据段丢包率。
[0037]这里,存储空间的大小由存储器的深度决定,本实施方式还可利用一计数器(未标示)来统计已使用存储空间S,当存储器中存储某一数据段时,无论是写入高优先级先进先出队列还是低优先级先进先出队列,计数器的计数值都加I,当存储器中调度出某一数据段时,无论是由高优先级先进先出队列还是低优先级先进先出队列调度出,计数器的计数值都减I,如此,可根据计数值与第一阈值Tl、第二阈值T2的大小关系控制数据段的存储及丢弃。另外,当需要将长包数据段写入高优先级先进先出队列中时,将该长包数据段的通道编号(即由哪条通道传输过来)、存储地址(即此时数据段对应存储空间的地址)写入高优先级先进先出队列中,类似的,当需要将短包数据段写入低优先级先进先出队列中时,将该短包数据段的通道编号、存储地址写入低优先级先进先出队列中,如此,可为后续的调度过程提供调度依据。
[0038]在本实施方式中,所述网络芯片包括多组多通道组,这里以两组多通道组(多通道组0、多通道组I)为例,多组多通道组之间的控制、存储逻辑等都是相互独立的,每个多通道组都包含多个数据通道,且多个数据通道共用一个存储模块30。所述调度模块40包括多个第一调度模块41及一第二调度模块42,所述多个第一调度模块41与所述多组多通道一一对应,所述第二调度模块42连接所述多个第一调度模块41,这里,第一调度模块41实现每一多通道组中低优先级先进先出队列及所述高优先级先进先出队列之间的仲裁,均衡该多通道组内数据段调度间隔,第二调度模块42通过WRR算法实现多组多通道组之间的仲裁,均衡多组多通道组之间的带宽流量,所述调度模块40还用于:
判断所述通道组中所述低优先级先进先出队列及所述高优先级先进先出队列是否为空,当所述低优先级先进先出队列及所述高优先级先进先出队列均为空时,不进入所述第二调度模块42,当所述低优先级先进先出队列为空且所述高优先级先进先出队列不为空时,所述高优先级先进先出队列进入第二调度模块42,当所述低优先级先进先出队列不为空且所述尚优先级先进先出队列为空时,所述低优先级先进先出队列进入第二调度模块42,当所述低优先级先进先出队列及所述高优先级先进先出队列均不为空时,读出高优先级先进先出队列中的通道编号,索引出所述通道编号对应通道内的已调度数据段信息。这里,需要说明的是,网络芯片可以只包含一组多通道组,此时可省略第二调度模块42。
[0039]在本实施方式中,由于短包数据段及长包数据段分别位于低优先级先进先出队列及高优先级先进先出队列中,利用调度仲裁逻辑,可以实现高优先级先进先出队列中的长包数据段优先调度,使得数据段间隔不会因为网络超带宽而被拉长,且保证数据段不发生错乱。
[0040]当所述低优先级先进先出队列及所述高优先级先进先出队列均不为空时,调度模块40首先对高优先级先进先出队列中的通道调度状态进行判断。具体的,调度模块40读出高优先级先进先出队列中的通道编号,索引出所述通道编号对应通道内的已调度数据段,读取已调度数据段的偏移量offset、起始信息及结尾信息,根据所述已调度数据段的偏移量offset、起始信息及结尾信息判断待调度数据段的偏移量offset,当待调度数据段的偏移量offset大于预设值时,判断所述待调度数据段为长包数据段,所述高优先级先进先出队列进入第二调度模块42,当待调度数据段的偏移量offset不大于预设值时,判断所述待调度数据段为短包数据段,所述低优先级先进先出队列进入第二调度模块42,经第一调度模块41及第二调度模块42后,根据最终所选的尚优先级先进先出队列或低优先级先进先出队列中的存储地址调度出所述待调度数据段。需要说明的是,这里提到的预设值与前述判断当前数据段的数据段类型时的预设值相同,即此时的预设值为2。
[0041]这里,先索引出该通道内已调度数据段的起始信息及结尾信息,如此,根据已调度数据段的偏移量offset、起始信息及结尾信息判断待调度数据段的偏移量offset。例如,以报文包括10段数据段为例,当已调度数据段位于报文结尾时,说明该报文已经调度完成,则待调度数据
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1