报文调度方法、装置、芯片、设备、可读存储介质及程序产品与流程
本技术涉及芯片,特别是涉及一种报文调度方法、装置、芯片、设备、可读存储介质及程序产品。
背景技术:
1、链表或队列在芯片的硬件设计中是非常常用的逻辑,尤其是在网卡、交换机等网络设备中,链表或队列被广泛应用。在链表节点多数据位宽大的使用场景下,为了芯片资源(面积)的考虑,需要用外部存储(memory)来实现链表。
2、相关技术中,如图1所示,输入的报文存入memory中的链表后,队列调度逻辑需要调度输出报文时,需要向memory中的链表发起读取请求,相应的,memory通常需要若干个时钟周期才能返回读取的报文。因为memory链表的读延时的存在,限制了后级队列调度模块的调度效率。具体的,为了时序友好,通常需要在memory内部入口和出口加上打拍逻辑,同时在使能memory的ecc功能时也会再引入一个时钟的延时,从而使得memory在收到读请求时需要多个时钟(例如,4个时钟、5个时钟或3个时钟)后才能返回读取的报文。以4个时钟为例,在memory在收到读请求时需要4个时钟后才能返回读取的报文的情况下,1吉赫兹(ghz)时钟频率下能实现的最大包率为250百万包每秒(mpps)。因此,相关技术中的memory链表结构,无法满足更高包率的需求。
3、综上,由于memory链表的读延时的存在,限制了后级调度逻辑调度的包率,进而限制了硬件最终可以达到的最大包率。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够降低存储链表对于最大包率的限制的报文调度方法、装置、芯片、设备、可读存储介质及程序产品。
2、第一方面,本技术提供了一种报文调度方法,包括:
3、接收待处理的目标报文;
4、在所述目标报文在存储链表中的对应队列不为空,或者,所述目标报文对应的先入先出队列fifo为满的情况下,将所述目标报文写入所述目标报文在所述存储链表中的对应队列,并在所述目标报文在存储链表中的对应队列不为空且所述目标报文对应的fifo未满的情况下,将所述存储链表中的所述目标报文写入所述fifo中;
5、在所述目标报文在所述存储链表中的对应队列为空且所述目标报文对应的fifo不为满的情况下,通过旁路通道将所述目标报文写入所述目标报文对应的fifo;
6、从所述fifo中调度并输出所述目标报文。
7、在一些实施例中,所述在所述目标报文在存储链表中的对应队列不为空且所述目标报文对应的fifo未满的情况下,将所述存储链表中的所述目标报文写入所述fifo中,包括:
8、根据所述目标报文对应的fifo的信用值,确定所述目标报文对应的fifo是否为满;
9、在所述目标报文在存储链表中的对应队列不为空且所述目标报文对应的fifo未满的情况下,向所述目标报文在存储链表中的对应队列发起读取请求;
10、响应于所述读取请求,将所述存储链表中的所述目标报文写入所述fifo中。
11、在一些实施例中,所述根据所述目标报文对应的fifo的信用值,确定所述目标报文对应的fifo是否为满,包括:
12、在所述目标报文对应的fifo的信用值为零的情况下,确定所述目标报文对应的fifo为满;
13、在所述目标报文对应的fifo的信用值不为零的情况下,确定所述目标报文对应的fifo不为满。
14、在一些实施例中,所述fifo的信用值的初始值为所述fifo的队列深度;所述方法还包括:
15、在通过所述旁路通道在所述fifo中写入报文或者向所述存储链表中的对应队列发起读取请求的情况下,所述fifo的信用值减一;
16、在所述fifo中的报文被调度并输出的情况下,所述fifo的信用值加一。
17、在一些实施例中,所述fifo的队列深度的最大值由队列类型和/或性能需求信息确定。
18、在一些实施例中,在所述队列类型为首字直通fifo的情况下,所述fifo的队列深度的最大值为存储读延时拍数;在所述队列类型为非首字直通fifo的情况下,所述fifo的队列深度的最大值为存储读延时拍数加一。
19、第二方面,本技术提供了一种报文调度装置,包括:旁路判读模块、存储链表模块和fifo模块;
20、所述旁路判读模块,用于接收待处理的目标报文;在所述目标报文在存储链表中的对应队列不为空,或者,所述目标报文对应的先入先出队列fifo为满的情况下,将所述目标报文写入所述目标报文在所述存储链表中的对应队列;在所述目标报文在所述存储链表中的对应队列为空且所述目标报文对应的fifo不为满的情况下,通过旁路通道将所述目标报文写入所述目标报文对应的fifo;
21、所述存储链表模块,用于在所述目标报文在存储链表中的对应队列不为空且所述目标报文对应的fifo未满的情况下,将所述存储链表中的所述目标报文写入所述fifo中。
22、所述fifo模块,用于从所述fifo中调度并输出所述目标报文。
23、在一些实施例中,所述fifo模块,还用于根据所述目标报文对应的fifo的信用值,确定所述目标报文对应的fifo是否为满;在所述目标报文在存储链表中的对应队列不为空且所述目标报文对应的fifo未满的情况下,向所述目标报文在存储链表中的对应队列发起读取请求;
24、所述存储链表模块,还用于响应于所述读取请求,将所述存储链表中的所述目标报文写入所述fifo中。
25、在一些实施例中,所述fifo模块,还用于在所述目标报文对应的fifo的信用值为零的情况下,确定所述目标报文对应的fifo为满;在所述目标报文对应的fifo的信用值不为零的情况下,确定所述目标报文对应的fifo不为满。
26、在一些实施例中,所述fifo的信用值的初始值为所述fifo的队列深度;所述fifo模块,还用于在通过所述旁路通道在所述fifo中写入报文或者向所述存储链表中的对应队列发起读取请求的情况下,所述fifo的信用值减一;在所述fifo中的报文被调度并输出的情况下,所述fifo的信用值加一。
27、在一些实施例中,所述fifo的队列深度的最大值由队列类型和/或性能需求信息确定。
28、在一些实施例中,在所述队列类型为首字直通fifo的情况下,所述fifo的队列深度的最大值为存储读延时拍数;在所述队列类型为非首字直通fifo的情况下,所述fifo的队列深度的最大值为存储读延时拍数加一。
29、第三方面,本技术还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面的报文调度方法。
30、第四方面,本技术还提供了一种芯片,包括存储器和处理器,所述存储器存储有计算机程序所述处理器执行所述计算机程序时实现上述第一方面的报文调度方法。
31、第五方面,本技术还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面的报文调度方法。
32、第六方面,本技术还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述第一方面的报文调度方法。
33、上述报文调度方法、装置、芯片、设备、可读存储介质及程序产品,接收待处理的目标报文;在目标报文在存储链表中的对应队列不为空,或者,目标报文对应的先入先出队列fifo为满的情况下,将目标报文写入目标报文在存储链表中的对应队列,并在目标报文在存储链表中的对应队列不为空且目标报文对应的fifo未满的情况下,将存储链表中的目标报文写入fifo中;在目标报文在存储链表中的对应队列为空且目标报文对应的fifo不为满的情况下,通过旁路通道将目标报文写入目标报文对应的fifo;从fifo中调度并输出目标报文。由于在接收到待处理的目标报文后,先根据目标报文在存储链表中的对应队列和fifo来进行旁路通道的判断,在满足条件下通过旁路通道将所述目标报文写入目标报文对应的fifo,而不再直接将报文全部写入存储链表中的对应队列,从而消除掉存储链表的读延时对包率的影响,降低了单包调度的最短间隔,进而降低存储链表对于最大包率的限制。例如,在上下游模块处理能力均达到1gpps时,通过可以实现当前报文处理模块(即,该报文调度方法对应的报文调度装置)拍拍调度出报文,从而达到1gpps的包率,避免存储链表成为性能瓶颈。在上游模块包率性能大于下游模块的包率性能时(例如,网络发生拥塞),通过该报文调度方法可以利用存储链表来缓存上下游包率性能差距导致的报文堆积,在下游模块包率性能恢复(例如,网络解除拥塞),再依次调度出存储链表里的报文。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com