掌桥专利:专业的专利平台
掌桥专利
首页

实现网络芯片高速调度的方法、设备及存储介质

文献发布时间:2023-06-19 10:05:17


实现网络芯片高速调度的方法、设备及存储介质

技术领域

本发明属于通信技术领域,主要涉及一种实现网络芯片高速调度的方法、设备及存储介质。

背景技术

在高密度网络芯片中,存在大量的数据包存储-调度需求。典型的数据包存储-调度模型如图1所示,输入信号包括:{队列编号,数据,链表地址(写信息地址)}。

存储调度模型主要由以下几个模块组成:数据存储器,所述数据存储器根据输入信号的“写信息地址”将“数据”缓存起来。链表控制模块,用来控制常规的链表“入队”“出队”操作;链表的控制属于通用的技术范畴,本发明不作赘述;链表控制模块主要包含四个子模块:{头指针存储器,尾指针存储器,链表存储器,队列读状态}。所述头指针存储器用于存储数据头指针指向的存储地址,所述尾指针存储器用于存储数据尾指针指向的存储地址,所述链表存储器用于存储数据对应的存储地址;所述队列读状态用于指示链表控制模块的状态,当其为“0”时,说明此时队列中没有其他数据等待调度,当其为“1”时,说明队列中有其他数据等待调度。调度器,如果队列读状态为1,即队列状态不为空,则调度器参与调度,调度器会将调度出的队列发送给“链表控制模块”获取该队列的读“链表地址”并且触发“链表控制模块”更新队列读状态信息。读信息模块,根据调度器获取的读“链表地址”访问数据存储器,得到数据,并输出。读信息模块,根据调度器获取的“链表地址”访问数据存储器,得到数据,产生输出。

由于队列状态直接决定了当前的队列能否参与调度,导致调度器产生“队列编号”,并触发“链表控制模块”更新“队列状态”有一定的延时限制。当调度器很复杂,队列数量很多,链表存储器很大时,往往需要多个时钟周期才能完成“队列状态”的更新。例如,在一个复杂系统中,完成一次“队列状态”更新需要J个时钟周期,如果系统要求每个队列最小调度间隔为K个时钟周期(K

发明内容

为解决上述技术问题,本发明的目的在于提供一种实现网络芯片高速调度的方法、网络芯片及可读存储介质。

为了实现上述发明目的之一,本发明一实施方式提供一种实现网络芯片高速调度的方法,所述方法包括:为每一存储队列配置结构相同的Y个次级链表,Y为整数,

任一队列接收数据;

轮询查询当前队列的Y个次级链表,获取当前匹配的次级链表编号以作为当前报文对应的次级编号偏移值;

以次级队列编号替换当前报文携带的原始队列编号,并以当前报文对应的次级队列编号作为新的队列编号进行链表操作,所述次级队列编号包括:原始队列编号,以及次级编号偏移值。

作为本发明一实施方式的进一步改进,配置队列轮询状态寄存器;

接收任一报文后,查询轮询状态寄存器,以获取当前报文匹配的次级编号偏移值。

作为本发明一实施方式的进一步改进,所述方法还包括:为每一次级链表均配置次级队列状态存储器,通过查询次级队列状态存储器的状态,判断查询的次级链表是否为空。

作为本发明一实施方式的进一步改进,以次级队列编号替换当前报文携带的原始队列编号,并以当前报文对应的次级队列编号作为新的队列编号进行链表操作包括:

所述链表操作为入队操作,则:

查询当前匹配的次级链表,若匹配的次级链表为空,则使用当前报文携带的次级队列编号作为地址,当前报文携带的链表地址作为值,分别写入当前次级链表匹配的头指针寄存器和尾指针寄存器;同时,使用次级队列编号作为地址,将次级队列状态存储器置为使能;

若匹配的次级链表不为空,则使用当前报文携带的链表地址作为值,尾指针寄存器的值作为地址,写入当前次级链表匹配的次级链表存储器;同时,使用当前报文携带的次级队列编号作为地址,当前报文携带的链表地址作为值写入并替换尾当前次级链表匹配的指针寄存器。

作为本发明一实施方式的进一步改进,所述方法还包括:配置终级调度器,终极队列状态存储器,链表地址存储器,以及配置次级调度器,次级调度器状态存储器,次级总队列状态存储器;

所述终级调度器执行终级调度逻辑;

所述终极队列状态存储器用于存储每一队列的存储状态;

所述链表地址存储器用于存储任一数据的存储地址;

所述次级调度器执行次级调度逻辑;

所述次级总队列状态存储器用于存储每一次级队列的存储状态;

在次级队列状态存储器使能状态下,通过查询所述次级调度器状态存储器的对应存储位置是否使能,判断是否可以对当前的次级队列执行次级调度逻辑。

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

任一队列读出数据时,以次级队列编号进行链表操作;

所述链表操作为对应当前队列的出队操作,执行终极调度逻辑和次级调度逻辑;

所述终极调度逻辑包括:

M11、调度当前进行出队操作的报文所对应的队列编号,采用轮询方式依次访问队列编号所对应的每一次级队列,获取次级队列状态存储器为使能、且最先轮询到的次级队列所存储的次级队列编号,并以第一次级队列编号表示;

M12、根据所述第一次级队列编号访问链表地址存储器,获取访问地址,以所述访问地址访问数据存储器读出数据;

所述次级调度逻辑包括:

M21、在调度队列对应的次级队列状态存储器为使能,且次级调度器状态存储器为非使能时,调度当前队列按照轮询方式匹配的次级队列编号,以第二队列编号表示;之后,使用第二次级队列编号作为地址将次级调度器状态存储器置为使能;

M22、根据调度出的第二次级队列编号访问其所对应的次级链表,在次级链表对应的头指针存储器和尾指针存储器中分别获取头指针和尾指针,将获取的头指针作为值,第二次级队列编号作为地址,写进链表地址存储器;

判断获取的头指针和尾指针是否相同,若是,使用第二次级队列编号作为地址,将其对应的次级链表中的次级队列状态存储器置为非使能;若否,根据获取的头指针访问其所对应的次级链表存储器得到下一跳指针,将获取的下一跳指针作为值,第二次级队列编号作为地址写进对应的头指针存储器中;

M23、以调度出的第二次级队列编号作为地址,将其对应的次级总队列状态置为使能,同时,解析第二次级队列编号,获取其对应的原始队列编号,以及次级编号偏移值;并使用原始队列编号作为地址,将其对应的终极队列状态存储器为使能。

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

任一数据调度完成后,将第一次级队列编号对应次级链表中的次级总队列状态存储器置为非使能,同时,解析第一次级队列编号获取初始队列编号,若初始队列编号对应的所有次级队列中的次级队列状态存储器全部为非使能,则将解析出的初始队列编号所对应的队列状态置为非使能。

作为本发明一实施方式的进一步改进,步骤M11包括:

以第一次级队列编号访问次级队列状态存储器,

若次级队列状态存储器为非使能,则使用第一次级队列编号作为地址,将对应的次级调度器状态存储器置为非使能;

若次级队列状态存储器为使能,则优先以第一次级队列编号执行所述次级调度逻辑。

为了实现上述发明目的之一,本发明一实施方式提供一种电子设备,包括存储器和处理器,所述存储器存储有可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述实现网络芯片高速调度的方法中的步骤。

为了实现上述发明目的之一,本发明一实施方式提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述实现网络芯片高速调度的方法中的步骤。

与现有技术相比,本发明的有益效果是:本发明的实现网络芯片高速调度的方法、设备及存储介质,通过分级调度,切断整队队列状态更新周期和队列最小调度间隔的耦合性,极大的提高了网络芯片的设计的灵活性。

附图说明

图1是背景技术提供的数据存储-调度模型结构示意图;

图2是本发明一实施方式提供的实现网络芯片高速调度的方法的流程示意图;

图3是本发明一调度模型的结构示意图。

具体实施方式

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

结合图2、图3所示,本发明一实施方式提供的实现网络芯片高速调度的方法,所述方法包括:

S1、为每一存储队列配置结构相同的Y个次级链表,Y为整数,

S2、任一队列接收报文;

轮询查询当前队列的Y个次级链表,获取当前匹配的次级链表编号以作为当前报文对应的次级编号偏移值;

以次级队列编号替换当前报文携带的原始队列编号,并以当前报文对应的次级队列编号作为新的队列编号进行链表操作,所述次级队列编号包括:原始队列编号,以及次级编号偏移值。

对于步骤S1,链表控制模块中通过设置Y个次级链表,以分别存储每一队列的链接状态,如此,可以将调度器上队列的调度间隔缩小至

对于步骤S2,本发明一较佳实施方式中,在入队操作过程中,为了便于查询对应当前队列的空闲链表,配置队列轮询状态寄存器;接收任一报文后,查询轮询状态寄存器,以获取当前报文匹配的次级编号偏移值。

所述次级编号偏移值实际为数据入队操作过程中,写入的次级链表的编号;对于任一队列,所述次级链表的数量为Y个;以Y等于2为例,则次级编号偏移值为2个,例如:严格按照0、1交替;以Y等于4为例,则次级编号偏移值为4个,例如:严格按照0、1、2、3交替;当然,次级编号偏移值的具体数值可以根据需要具体设定,只要可以区分不同的次级链表即可,在此不做进一步的赘述。

以次级队列编号替换当前报文携带的原始队列编号,以形成新的入队信息;相应的,对于数据,其包含的入队信息表示为{次级队列编号,数据,链表地址};相应的,使用链表地址作为地址,数据作为值写数据存储器,使用次级队列编号进行链表操作。

较佳的,本发明为每一次级链表均配置次级队列状态存储器,通过查询次级队列状态存储器的状态,判断查询的次级链表是否为空。若次级队列状态存储器为非使能,表示其所对应的次级链表为空,数据可以对当前次级链表做链接操作;若次级队列状态存储器为使能,表示其所对应的次级链表不为空,数据需等待当前的次级链表所对应的数据被读出后,才可以对当前次级链表做链接操作。

通常情况下,以二进制字符“0”“1”其中之一表示使能,以另一表示非使能,当然,对于其他存储器,均是以二进制字符表示使能和非使能,本发明具体示例中,以二进制数值的“0”表示非使能,以“1”表示使能。

具体的,步骤S2以次级队列编号替换当前报文携带的原始队列编号,并以当前报文对应的次级队列编号作为新的队列编号进行链表操作时,所述链表操作为入队操作,则执行下述步骤:

查询当前匹配的次级链表,若匹配的次级链表为空,则使用当前报文携带的次级队列编号作为地址,当前报文携带的链表地址作为值,分别写入当前次级链表匹配的头指针寄存器和尾指针寄存器;同时,使用次级队列编号作为地址,将次级队列状态存储器置为使能;

若匹配的次级链表不为空,则使用当前报文携带的链表地址作为值,尾指针寄存器的值作为地址,写入当前次级链表匹配的次级链表存储器;同时,使用当前报文携带的次级队列编号作为地址,当前报文携带的链表地址作为值写入并替换尾当前次级链表匹配的指针寄存器。

该入对操作过程中,通过次级队列编号获取对应的次级链表,并通过查询次级链表对应的次级队列状态存储器查询次级链表是否为空,进而对相应的次级链表进行链接操作。

进一步的,任一队列读出数据时,同样以次级队列编号进行链表操作,进而保证系统对调度性能的要求。

本发明较佳实施方式中,接续图3所示,所述方法还包括:配置终级调度器,终极队列状态存储器,链表地址存储器,以及配置次级调度器,次级调度器状态存储器,次级总队列状态存储器;

所述终级调度器执行终级调度逻辑;

所述终极队列状态存储器用于存储每一队列的存储状态;以初始队列编号查询终极队列状态存储器,若该队列编号对应的存储位置为使能,则表示对应该队列存储有数据可以读出,若其为非使能,则表示该队列未存储数据。

所述链表地址存储器用于存储任一数据的存储地址;

所述次级调度器执行次级调度逻辑;

所述次级总队列状态存储器用于存储每一次级队列的存储状态;例如:对于某一队列对应两个次级链表,则次级总队列状态存储器的两个位置分别用于存储对应两个次级链表的状态,即该两个位置分别对应两个次级队列状态存储器的使能状态;相应的,当对应存储两个次级链表至少其中之一的位置为使能时,即表示其所对应的队列中有数据可以做出队操作。

在次级队列状态存储器使能状态下,通过查询所述次级调度器状态存储器的对应存储位置是否使能,判断是否可以对当前的次级队列执行次级调度逻辑;在这里,只有次级调度器状态存储器对应使能的次级队列状态存储器的位置为使能时,才可以执行次级调度逻辑。

具体的,任一队列读出数据时,以次级队列编号进行链表操作;所述链表操作为对应当前队列的出队操作,执行终极调度逻辑和次级调度逻辑;

所述终极调度逻辑包括:

M11、调度当前进行出队操作的报文所对应的队列编号,采用轮询方式依次访问队列编号所对应的每一次级队列,获取次级队列状态存储器为使能、且最先轮询到的次级队列所存储的次级队列编号,并以第一次级队列编号表示。

在这里,终极调度器根据实际的队列状态和预设的调度策列调度出队列编号,该队列编号为数据携带的初始队列编号;进一步,以该队列编号访问次级总队列状态存储器,可以得到该队列下Y个次级成员的状态,特别的,这里还是需要采用轮询的方式访问该队列对应的每一个次级成员,以得到有效的次级队列编号,即第一次级队列编号;这里需要说明的是,在同一时刻,终极调度器得到的第一次级队列编号和下述次级调度器调度的第二次级队列编号可能相同,也可能不同,在此不做赘述。

M12、根据所述第一次级队列编号访问链表地址存储器,获取访问地址,以所述访问地址访问数据存储器读出数据。

这里,所述访问地址即为下述次级调度逻辑执行过程中缓存在头指针寄存器中的头指针。

所述次级调度逻辑包括:

M21、在调度队列对应的次级队列状态存储器为使能,且次级调度器状态存储器为非使能时,调度当前队列按照轮询方式匹配的次级队列编号,以第二队列编号表示;之后,使用第二次级队列编号作为地址将次级调度器状态存储器置为使能;

在这里,次级队列状态存储器为1,且次级调度器状态存储器为0时,次级调度器按照预定的调度策略调度第二次级队列编号,需要强调的是,相同队列所对应的多个次级链表,必须严格按照轮询的方式进行调度,否则将导致队列内部数据乱序。

M22、根据调度出的第二次级队列编号访问其所对应的次级链表,在次级链表对应的头指针存储器和尾指针存储器中分别获取头指针和尾指针,将获取的头指针作为值,第二次级队列编号作为地址,写进链表地址存储器;

判断获取的头指针和尾指针是否相同,若是,使用第二次级队列编号作为地址,将其对应的次级链表中的次级队列状态存储器置为非使能;若否,根据获取的头指针访问其所对应的次级链表存储器得到下一跳指针,将获取的下一跳指针作为值,第二次级队列编号作为地址写进对应的头指针存储器中。

在这里,采用次级调度器调度出的第二次级队列编号执行次级链表的出队操作。

M23、以调度出的第二次级队列编号作为地址,将其对应的次级总队列状态置为使能,同时,解析第二次级队列编号,获取其对应的原始队列编号,以及次级编号偏移值;并使用原始队列编号作为地址,将其对应的终极队列状态存储器置为使能。

进一步的,在数据完成出队操作后,需要更新链表,即:

任一数据调度完成后,将第一次级队列编号对应次级链表中的次级总队列状态存储器置为非使能,同时,解析第一次级队列编号获取初非始队列编号,若初始队列编号对应的所有次级队列中的次级队列状态存储器全部为非使能,则将解析出的初始队列编号所对应的队列状态置为非使能;

相应的,若初始队列编号对应的所有次级队列中的次级队列状态存储器至少其中之一为使能,则将解析出的初始队列编号所对应的队列状态置为使能。

另外,步骤M11还包括:终极调度器使用第一次级队列编号向次级调度器发起调度请求;在该过程中,以第一次级队列编号访问次级队列状态存储器,若次级队列状态存储器为非使能,则使用第一次级队列编号作为地址,将对应的次级调度器状态存储器置为非使能;

若次级队列状态存储器为使能,则优先以第一次级队列编号执行所述次级调度逻辑。

在这里,次级队列状态存储器为非使能说明没有待调度的数据;次级队列状态存储器为使能,说明存在待调度的数据,此时,优先调度该次级队列编号,继续执行次级调度逻辑,直至所有数据被调度完成;即在终极调度器完成出队操作后,需要反向触发次级调度器,如此,以实现高速调度。

较佳的,本发明一实施方式提供一种电子设备,包括存储器和处理器,所述存储器存储有可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述实现网络芯片高速调度的方法中的步骤。

较佳的,本发明一实施方式提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述实现网络芯片高速调度的方法中的步骤。

综上所述,本发明的实现网络芯片高速调度的方法、设备及存储介质,通过特殊设计的分级调度,切断整队队列状态更新周期和队列最小调度间隔的耦合性,在不改变调度器策略和队列数量的情况下,实现高速调度的目的,极大的提高了网络芯片的设计的灵活性。

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

本申请可用于众多通用或专用的通信芯片中。例如:交换芯片、路由器芯片,服务器芯片等等。

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

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

技术分类

06120112410319