报文存储方法、报文出入队列方法及存储调度装置

文档序号:571905 发布日期:2021-05-18 浏览:15次 >En<

阅读说明:本技术 报文存储方法、报文出入队列方法及存储调度装置 (Message storage method, message in-out queue method and storage scheduling device ) 是由 徐子轩 夏杰 于 2020-12-30 设计创作,主要内容包括:本申请所提供了一种报文存储方法、报文出入队列方法及存储调度装置,报文存储方法包括:将报文依次划分为N个报文分片L-0、L-1、…、L-(N-1),N=int(L/W),int为向上取整函数,报文分片L-0携带sop标志位,报文L-(N-1)携带eop标志位;为待存入数据存储器的报文分片申请空闲地址ptr-X,链表控制模块的信息链表存储有:下一个报文的信息链表首地址、数据链表首地址以及数据eop标志位;数据链表存储有:下一个报文分片的数据分片地址和数据eop标志位。本发明所提供的出队列方法,在出队列操作时,通过信息链表和数据链表的融合设置,通过一次调度即可直接得到报文的分片地址,有效降低报文转发延时,同时减少了消息调度到数据调度之间的缓存信息,优化了芯片物理面积。(The application provides a message storage method, a message queue access method and a storage scheduling device, wherein the message storage method comprises the following steps: dividing message into N message fragments L 0 、L 1 、…、L N‑1 N is int (L/W), int is an upward rounding function, and a packet fragment L 0 Carrying sop flag, message L N‑1 Carries eop flag bit; applying for an idle address ptr _ X for a message fragment to be stored in a data memory, wherein an information linked list of a linked list control module stores: the first address of the information chain table, the first address of the data chain table and the flag bit of data eop of the next message; the data link table stores: the data slice address and data eop flag of the next message slice. The dequeuing method provided by the invention can directly obtain the fragment address of the message through one-time scheduling by the fusion setting of the information linked list and the data linked list during the dequeuing operation, thereby effectively reducing the message forwarding delayMeanwhile, the cache information from message scheduling to data scheduling is reduced, and the physical area of the chip is optimized.)

报文存储方法、报文出入队列方法及存储调度装置

技术领域

本发明涉及网络技术领域,尤其涉及一种报文存储方法、报文出入队列方法及存储调度装置。

背景技术

网络芯片在应用存储转发模式转发报文时,需要将报文采用链表(该链表表示为报文数据链表)的方式,在芯片中完整的缓存在存储器中,再根据转发逻辑,决定报文的目的端口。之后,产生入队请求,将该报文的关键信息(报文的起始地址、报文长度等)写入该队列的链表(该链表表示为信息链表),等待队列调度。

当应用存储转发模式进行组播转发报文时,由于组播意味着报文在网络芯片中复制多份并可能发送至不同的目的端口,如图2所示,现有技术中,其中种实现方式为存储转发模式中,首先设置独立的QoS模块,采用链表的方式将不同报文的关键信息串联起来。经过一定的策略,选中该队列,将信息链表中首地址对应的关键信息读取出来,将关键信息中的“报文数据链表首地址”发送给“报文读取模块”进行报文读取操作,该实现方式的缺点在于:

上述方案需要数据链表和信息链表两份独立的链表,由于两次链表读操作分别存在不同模块中,报文的转发延时较大。两次读写链表操作,必然会引入其他的存储器用来缓存,进一步增加了芯片的物理面积。

发明内容

鉴于现有技术中存在的上述技术问题,本发明提供了一种报文存储方法,应用于报文于存储调度装置中的存储,所述存储调度装置包括用于控制链表出入队的链表控制模块以及用于缓存所述报文的数据存储器以及所述报文所在源通道的首地址存储器、尾地址存储器,所述链表控制模块包括链表存储器和空闲地址存储器,所述数据存储器的位宽为W,所述报文的真实长度为L,所述方法包括:

将所述报文依次划分为N个报文分片L0、L1、…、LN-1,N=int(L/W),int为向上取整函数,报文分片L0携带sop标志位,报文LN-1携带eop标志位;为待存入所述数据存储器的所述报文分片自所述空闲地址存储器申请空闲地址ptr_X;若当前存入的所述报文分片携带sop标志位,则使用ptr_X更新所述报文分片所在源通道的所述首地址存储器和所述尾地址存储器;以及,若当前存入的所述报文分片未携带sop标志位,使用所述尾地址存储器中的值作为地址,使用ptr_X作为值,写进所述链表存储器的数据链表中,同时将ptr_X写进所述尾地址存储器。

可选地,所述方法还包括:为所述报文分片申请空闲地址,并生成信息链表。

可选地,所述信息链表存储有:下一个报文的信息链表首地址、数据链表首地址以及数据eop标志位;所述数据链表存储有:下一个所述报文分片的数据分片地址和数据eop标志位。

可选地,所述首地址存储器存储有当前链表中第一个报文的信息链表首地址、数据链表首地址以及数据eop标志位;所述尾地址存储器存储有所述信息链表中最后一个信息的信息链表地址。

为了实现上述发明目的,本发明提供了一种报文入队列方法,应用上文所述的报文存储方法存储的报文进行报文入队列管理,所述方法包括:

S1、设置所述队列的首地址、尾地址以及队列读状态;

S2、存储所述报文分片;

S3、响应于所述报文的入队请求,申请与所述信息链表相匹配的地址ptr_Y;

S4、获取所述报文的目的队列的所述队列读状态,若所述队列读状态为0,执行步骤S5,否则执行步骤S6;

S5、将携带sop标志位的所述报文分片的地址写进所述队列的首地址中的数据链表首地址字段,将ptr_Y写进所述队列的首地址中的信息链表首地址字段,将携带sop标志位的所述报文分片的eop标志位写进所述队列的首地址中的数据eop标志位字段中,将ptr_Y写进所述队列的尾地址,将所述队列的队列读状态写为1,执行步骤S7;

S6、读取所述队列的首地址和尾地址,使用所述尾地址作为地址,ptr_Y、携带sop标志位的所述报文分片的地址携带sop标志位的所述报文分片的eop标志位作为值,写进所述信息链表中,并将ptr_Y写进所述队列的尾地址中,执行步骤S7;以及

S7、结束入队操作。

为了实现上述发明目的,本发明提供了一种报文出队列方法,应用于对上文所述的报文入队列方法处理过的队列进行出队列管理,所述方法包括:

S01、使用队列编号,访问所述队列的首地址和尾地址,得到首地址中的数据链表首地址字段,并使用所述数据链表首地址作为地址,访问所述数据存储器,获取报文内容并发送给后级模块;若所述首地址中的所述数据eop标志位为1,则执行步骤S02,否则执行步骤S05;

S02、判断所述信息链表的首地址和尾地址是否相同,如果相同,则执行步骤S03,否则执行步骤S04;

S03、将所述队列的所述队列读状态置为0,触发目的端口的队列重选机制,执行步骤S06;

S04、使用所述信息链表首地址字段作为地址,读取所述信息链表,获取下一个报文的所述信息链表首地址、所述数据链表首地址和所述数据eop标志位,并将所述信息链表首地址、所述数据链表首地址和所述数据eop标志位字段写进所述队列的首地址中,触发所述目的端口的队列重选机制,执行步骤S06;

S05、使用所述数据链表首地址访问所述数据链表,得到所述报文的下一个所述报文分片的所述数据链表地址和所述数据eop标志位,并将所述数据链表地址和所述数据eop标志位的字段分别对应写进所述队列的首地址中的数据链表首地址和数据eop标志位字段中,执行步骤S06;以及

S06、结束出队操作。

可选地,若参与调度的所述报文分片未携带所述eop标志位,则基于所述数据存储器的位宽W进行QoS状态更新;若参与调度的所述报文分片携带eop标志位,则基于所述报文分片的长度,进行QoS状态更新。

为了实现上述发明目的,本发明提供了一种存储调度装置,应用上文所述的报文存储方法存储报文。

为了实现上述发明目的,本发明提供了一种存储调度装置,应用上文所述的报文入队列方法管理队列。

为了实现上述发明目的,本发明提供了一种存储调度装置,应用上文所述的报文出队列方法管理队列。

本发明的技术效果为:在出队列操作时,通过信息链表和数据链表的融合设置,通过一次调度即可直接得到报文的分片地址,有效降低报文转发延时。同时减少了消息调度到数据调度之间的缓存信息,优化了芯片物理面积。

附图说明

图1为本发明所提供的实施例中调度存储装置的结构示意图;

图2为现有技术中应用存储转发模式进行组播转发报文的流程示意图;

图3为本发明的实施例所提供的报文存储方法;

图4为本发明的实施例中信息链表、数据链表、首地址存储器以及尾地址存储器的结构示意图;

图5为本发明的实施例所提供的报文入队列方法;

图6为本发明的实施例所提供的报文出队列方法。

具体实施方式

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

实施例

本实施例基于基本的调度存储装置实现,为了便于理解,下面结合图1简述该调度存储装置的运行原理:

存储调度装置,应用于数据的缓存和调度,其输入信号主要包括队列编号、数据以及链表地址,主要由以下几个模块组成:

数据存储器1,能够根据输入信号的链表地址缓存数据。

链表控制模块2,用来控制常规的链表入队、出队操作。链表的控制属于通用的技术范畴,此处不作赘述。

链表控制模块2主要包括:头指针存储器21,尾指针存储器22,链表存储器23,以及队列读状态存储器24。

当写数据时,如果队列编号对应的队列读状态为0,说明此时队列中没有其他数据等待调度,则:

使用队列编号作为地址,数据的链表地址作为值,分别写进头指针存储器21和尾指针存储器22中。

将队列读状态改为1。

如果队列编号对应的队列读状态不为0,说明队列中有其他数据等待调度,则将数据的链表地址作为值,尾指针作为地址,写进链表存储器23中,完成数据的链接操作;使用队列编号作为地址,数据的链表地址作为值,写进尾指针存储器22中,完成尾指针更新操作。

当读数据时,首先根据队列编号访问头指针存储器21和尾指针存储器22。判断头指针是否等于尾指针,如果相等,将该通道的队列读状态置为0,否则:根据头指针访问链表存储器23得到下一跳指针,将下一跳指针作为值,队列编号作为地址写进头指针存储器21中。

调度器3,如果队列读状态为1,则调度器3参与进行队列调度。调度器3会将调度出的队列发送给链表控制模块2获取该队列的链表地址并且触发链表控制模块2更新队列读状态信息。

读信息模块4,根据调度器3获取的链表地址访问数据存储器1,得到数据,产生输出。

网络芯片在应用存储转发模式转发报文时,需要将报文采用链表(该链表表示为报文数据链表)的方式,在芯片中完整的缓存在存储器中,再根据转发逻辑,决定报文的目的端口。之后,产生入队请求,将该报文的关键信息(报文的起始地址、报文长度等)写入该队列的链表(该链表表示为信息链表),等待队列调度。

可选地,可以通过QoS策略,选中该队列,调度其中的关键信息并发送给报文数据读取模块(未图示),并根据关键信息中的报文起始地址,自存储器中读出该报文,并发送给目的端口。

当应用存储转发模式进行组播转发报文时,由于组播意味着报文在网络芯片中复制多份并可能发送至不同的目的端口,如图2所示,现有技术中,其中一种实现方式为存储转发模式中,首先设置独立的QoS模块,采用链表的方式将不同报文的关键信息串联起来。经过一定的策略,选中该队列,将信息链表中首地址对应的关键信息读取出来,将关键信息中的“报文数据链表首地址”发送给“报文读取模块”进行报文读取操作,该实现方式的缺点在于:

上述方案需要数据链表和信息链表两份独立的链表,由于两次链表读操作分别存在不同模块中,报文的转发延时较大。两次读写链表操作,必然会引入其他的存储器用来缓存,进一步增加了芯片的物理面积。

为了解决上述技术问题,首先,本实施例提供了一种报文存储方法,应用于报文于存储调度装置中的存储,除特别说明,此处的存储调度装置与图1中示出的存储调度装置的各组成部分均一致,存储调度装置还包括:报文所在源通道的首地址存储器(未图示)、尾地址存储器(未图示)以及空闲地址存储器(未图示),数据存储器1的位宽为W,报文的真实长度为L,如图3所示,报文存储方法包括:

将报文依次划分为N个报文分片L0、L1、…、LN-1,N=int(L/W),int为向上取整函数,报文分片L0携带sop标志位,报文LN-1携带eop标志位;

为待存入数据存储器1的报文分片自空闲地址存储器申请空闲地址ptr_X;

若当前存入的报文分片携带sop标志位,则使用ptr_X更新报文分片所在源通道的首地址存储器和尾地址存储器;以及

若当前存入的报文分片未携带sop标志位,使用尾地址存储器中的值作为地址,使用ptr_X作为值,写进链表存储器23的数据链表中,同时将ptr_X写进尾地址存储器。

由此,实现报文的数据链表的生成。

进一步的,所述方法还包括:为报文分片申请空闲地址,并生成信息链表,信息链表包括:下一个报文的信息链表首地址、数据链表首地址以及数据eop标志位。

其中,数据eop标志位为1,意味着对应的报文分片携带eop标志位。

由此,实现报文的信息链表的生成。

具体地,队列读状态存储器24存储每个队列链表的状态,对应比特为1,表示该队列中有报文等待出队。

尾地址存储器,存储的是最后一个信息的信息链表地址。下文中该存储中队列对应地址的数据简称尾地址。

首地址存储器,存储的是当前链表的第一个报文的三个重要信息:信息链表首地址,数据链表首地址,数据eop标志位。下文中该存储中队列对应地址的数据简称首地址。

信息链表,存储的是下一个报文的信息链表首地址,数据链表首地址和数据eop标志位。

数据链表,存储的是下个报文分片的数据分片地址和数据eop标志位。

具体地,如图4所示,在存储转发模式下,假设当前队列中有四个关键信息(信息1、2、3、4)等待调度,分别对应报文一、报文三、报文四和报文一。其长度分别为三个报文分片,一个报文分片,两个报文分片和三个报文分片。

信息链表,信息1-4的地址分别为:a0、b0、c0、d0,信息分别为{b0,B0}、{c0,C0}、{d0,D0}、{e0,B0}。

数据链表,报文三的报文分片0的地址为B0,报文三的报文分片0的地址为C0,报文四的报文分片0的地址为D0。以报文一为例,报文分片0携带sop标志位,报文分片2携带eop标志位。

以信息1为例,首地址存储器存储有:信息链表首地址b0,数据链表首地址B0,以及,报文一的eop标志位。

尾地址存储器存储有:信息4的下一个信息的信息链表地址e0,以及信息4对应的数据链表首地址B0。

应用本实施例所提供的报文存储方法,使得数据链表得以直接通过访问队列的首地址和尾地址获取,而无需先经过信息链表的读取后再进行数据链表的读取,减少了调度级数,以及减少了多级调度所引入的存储器的设置,降低了芯片物理面积,同时降低了报文转发延时。

本实施例提供了一种适用于组播存储转发的报文入队列方法,如图5所示,所述方法包括:

S1、设置队列的首地址、尾地址以及队列读状态;

S2、存储报文分片;

S3、响应于报文的入队请求,申请与信息链表相匹配的地址ptr_Y;

S4、获取报文的目的队列的队列读状态,若队列读状态为0,执行步骤S5,否则执行步骤S6;

S5、将携带sop标志位的报文分片的地址写进队列的首地址中的数据链表首地址字段,将ptr_Y写进队列的首地址中的信息链表首地址字段,将携带sop标志位的报文分片的eop标志位写进队列的首地址中的数据eop标志位字段中,将ptr_Y写进队列的尾地址,将队列的队列读状态写为1,执行步骤S7;

S6、读取队列的首地址和尾地址,使用尾地址作为地址,ptr_Y、携带sop标志位的报文分片的地址和携带sop标志位的所述报文分片的eop标志位作为值,写进信息链表中,并将ptr_Y写进队列的尾地址中,执行步骤S7;以及

S7、结束入队操作。

其中,若报文分片数量大于1,则报文长度标志位为1,否则报文长度标志位为0。

其中,初始化阶段或当前报文为队列的第一个报文时,队列读状态为0,队列中存在其他报文,队列读状态为1。

其中,如果该报文只有一个分片,则此时队列首地址中数据eop标志位字段置1,否则该字段置0。

本实施例还提供了一种适用于组播存储转发的报文出队列方法,应用上文所述的组播存储转发的报文入队列方法处理过的队列进行出队列管理,如图6所示,所述方法包括:

S01、使用队列编号,访问队列的首地址和尾地址,得到首地址中的数据链表首地址字段,并使用数据链表首地址作为地址,访问数据存储器1,获取报文内容并发送给后级模块;若首地址中的数据eop标志位为1,则执行步骤S02,否则执行步骤S05;

S02、判断信息链表的首地址和尾地址是否相同,如果相同,则执行步骤S03,否则执行步骤S04;

S03、将队列的队列读状态置为0,触发目的端口的队列重选机制,执行步骤S06;

S04、使用信息链表首地址字段作为地址,读取信息链表,获取下一个报文的信息链表首地址、数据链表首地址和数据eop标志位,并将信息链表首地址、数据链表首地址和数据eop标志位字段写进所述队列的首地址中,触发所述目的端口的队列重选机制,执行步骤S06;

S05、使用数据链表首地址访问数据链表,得到报文的下一个报文分片的数据链表地址和数据eop标志位,并将数据链表地址和数据eop标志位的字段分别对应写进队列的首地址中的数据链表首地址和数据eop标志位字段中,执行步骤S06;以及

S06、结束出队操作。

其中,首地址中的数据eop标志位为1,说明当前的数据链表首地址是报文的最后一个报文分片。

其中,信息链表首地址和尾地址相同,说明当前出队的是队列的最后一个报文的最后一个分片,信息链表首地址和尾地址不同,说明当前出队的是报文的最后一个分片,但该报文并非队列的最后一个报文。

可选地,当进行QoS队列管理时,出队列方法还包括,若参与调度的报文分片未携带eop标志位,则基于数据存储器1的位宽W进行QoS状态更新;若参与调度的报文分片携带eop标志位,则基于报文分片的长度,进行QoS状态更新。

其中,可以通过管理报文长度标志位获知报文/报文分片的长度,如果报文只有一个分片,则报文长度标志位字段为实际报文长度,否则为数据存储器1的位宽W。

本实施例所提供的报文出队列方法,在出队列操作时,通过信息链表和数据链表的融合设置,通过一次调度即可直接得到报文的分片地址,有效降低报文转发延时。同时减少了消息调度到数据调度之间的缓存信息,减小了芯片物理面积。

可选地,本实施例还提供了一种存储调度装置,应用上文所述的报文存储方法存储报文。

可选地,本实施例还提供了一种存储调度装置,应用上文所述的适用于组播存储转发的报文入队列方法管理队列。

可选地,本实施例还提供了一种存储调度装置,应用上文中所述的适用于组播存储转发的报文出队列方法管理队列。

本发明的技术内容及技术特征已揭示如上,然后熟悉本领域的技术人员仍可基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请的权利要求所涵盖。

15页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:片上网络的数据广播方法、装置、芯片及介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!