CN113377689B - 一种路由表项查找、存储方法及网络芯片 - Google Patents
一种路由表项查找、存储方法及网络芯片 Download PDFInfo
- Publication number
- CN113377689B CN113377689B CN202110922483.0A CN202110922483A CN113377689B CN 113377689 B CN113377689 B CN 113377689B CN 202110922483 A CN202110922483 A CN 202110922483A CN 113377689 B CN113377689 B CN 113377689B
- Authority
- CN
- China
- Prior art keywords
- memory
- routing table
- table entry
- address
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种路由表项查找、存储方法及网络芯片,涉及数据处理技术领域,应用于网络芯片,网络芯片包括:中央处理器、第二级缓冲区与内存控制器。第二级缓冲区接收中央处理器发送的、针对目标路由表项的第一表项查找指令;确定目标路由表项所在的第一存储器以及在第一存储器中的第一地址,上述第一地址对应的目标存储空间当前未被访问;向第一存储器所连接的内存控制器发送携带第一地址的第二表项查找指令。内存控制器基于第一地址从第一存储器中获取目标路由表项,并向中央处理器反馈目标路由表项。应用本发明实施例提供的方案可以提高路由表项查找的速度。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种路由表项查找、存储方法及网络芯片。
背景技术
网络设备一般配置网络芯片, 网络芯片中一般配置有CPU(Central ProcessingUnit,中央处理器),网络芯片中可以存储有路由表项,但是网络芯片的存储空间一般较小,能够存储的路由表项较少,因此,网络设备中一般还配置有存储器,用于存储路由表项。
基于此,上述网络芯片中的CPU接收到报文后,需要依据路由表项进行报文转发,CPU可以向网络芯片中的L2C(Level Two Cache,第二级缓存区)发送表项查找指令,L2C会协助CPU访问存储器获取存储器中存储的路由表项。然而,网络芯片中可能会配置有多个CPU,各个CPU可能并发同步请求查找同一路由表项,为防止出现访问冲突的问题,现有技术中L2C会对多个CPU的路由表项查找请求进行控制,在同一时间仅响应一个CPU的路由表项查找请求。然而上述方式会导致其他CPU需要等待较长的时间才能获取到路由表项,路由表项查找的速度较低。
发明内容
本发明实施例的目的在于提供一种路由表项查找、存储方法及网络芯片,以提高路由表项查找的速度。具体技术方案如下:
第一方面,本发明实施例提供了一种路由表项查找方法,应用于网络芯片,所述网络芯片包括:中央处理器、第二级缓存区与内存控制器;
所述第二级缓存区接收中央处理器发送的、针对目标路由表项的第一表项查找指令;依据所述目标路由表项的标识,确定所述目标路由表项所在的第一存储器以及所述目标路由表项在所述第一存储器中的第一地址;向所述第一存储器所连接的内存控制器发送携带所述第一地址的第二表项查找指令,其中,包含所述第一存储器的至少一个存储器中共存储有至少2份目标路由表项,且所述第一地址对应的目标存储空间当前未被访问;
所述内存控制器接收所述第二级缓存区发送的第二表项查找指令;基于所述第一地址,从所连接的第一存储器中的第一地址处获取所述目标路由表项,并向所述中央处理器反馈所述目标路由表项。
第二方面,本发明实施例提供了一种路由表项存储方法,应用于网络芯片,所述网络芯片包括:第二级缓存区与内存控制器;
所述第二级缓存区确定用于存储待存储的路由表项的至少一个第二存储器,并确定所述待存储的路由表项在第二存储器中的第二地址;向第二存储器所连接的内存控制器发送表项存储指令,其中,所述第二存储器中共包含多个第二地址,所述表项存储指令携带:所述第二地址以及所述待存储的路由表项;
所述所连接的内存控制器基于接收到的所述表项存储指令中携带的第二地址,向所连接的第二存储器下发所述待存储的路由表项,以使得第二存储器将所述待存储的路由表项存储至第二地址对应的存储空间内。
第三方面,本发明实施例提供了一种网络芯片,所述网络芯片包括:中央处理器、第二级缓冲区与内存控制器;
所述第二级缓冲区用于执行第一方面任一所述的路由表项查找方法,所述内存控制器用于执行第一方面任一所述的路由表项查找方法。
第四方面,本发明实施例提供了一种网络芯片,所述网络芯片包括:第二级缓冲区与内存控制器;
所述第二级缓存区用于执行第二方面任一所述的路由表项存储方法;以及所述所连接的内存控制器用于执行第二方面任一所述的路由表项存储方法。
本发明实施例有益效果:
本发明实施例提供的方案应用于网络芯片,网络芯片中包括中央处理器、第二级缓冲区与内存控制器,第二级缓冲区接收中央处理器发送的针对目标路由表项的第一表项查找指令后,依据目标路由表项的标识,确定目标路由表项对应的第一存储器以及所对应的目标存储空间当前未被访问的目标路由表项在第一存储器中的第一地址。并向第一存储器所连接的内存控制器发送携带第一地址的第二表项查找指令。包含第一存储器的至少一个存储器中共存储有至少2份目标路由表项。内存控制器接收到第二级缓冲区发送的第二表项查找指令后,从所连接的第一存储器中的第一地址处获取目标路由表项,并向中央处理器反馈目标路由表项。
由以上可见,存储器中存储有多份目标路由表项,在中央处理器需要获取目标路由表项时,第二级缓冲区可以确定存储有上述目标路由表项的第一存储器以及目标路由表项在第一存储器中的第一地址,并且上述第一地址对应的目标存储空间未被访问。内存控制器可以基于上述第一地址从第一存储器中获取目标路由表项,并且向中央处理器反馈上述目标路由表项。由于第二级缓冲区所确定的第一地址对应的目标存储空间当前未被访问,因此可以避免地址冲突的问题。并且存储器中存储有多份目标路由表项,因此在多个中央处理器共同查找目标路由表项时,第二级缓冲区可以分别为不同的中央处理器确定不同的第一地址,进而内存控制器可以分别为不同的中央处理器从不同的存储空间处获取目标路由表项,多个存储器获取目标路由表项的过程可以同步进行互不影响,从而可以降低CPU查找目标路由表项的等待时间,提高路由表项查找的速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种网络芯片的结构示意图;
图2为本发明实施例提供的第一种路由表项查找方法的流程示意图;
图3为本发明实施例提供的第二种路由表项查找方法的流程示意图;
图4A为本发明实施例提供的第三种路由表项查找方法的流程示意图;
图4B为本发明实施例提供的一种链表的结构示意图;
图5为本发明实施例提供的一种路由表项查找流程示意图;
图6为本发明实施例提供的第一种路由表项存储方法的流程示意图;
图7为本发明实施例提供的第二种路由表项存储方法的流程示意图;
图8为本发明实施例提供的第三种路由表项存储方法的流程示意图;
图9为本发明实施例提供的一种路由表项存储流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。
由于现有技术中,若CPU并发同步请求网络芯片查找同一路由表项,CPU需要等待较长的时间才能获取到路由表项,路由表项查找的速度较低,为解决这一问题,本发明实施例提供了一种路由表项查找、存储方法及网络芯片。
本发明实施例提供了一种路由表项查找方法,应用于网络芯片,上述网络芯片包括:中央处理器、第二级缓存区与内存控制器。
上述第二级缓冲区接收中央处理器发送的、针对目标路由表项的第一表项查找指令;依据上述目标路由表项的标识,确定上述目标路由表项所在的第一存储器以及上述目标路由表项在上述第一存储器中的第一地址;向上述第一存储器所连接的内存控制器发送携带上述第一地址的第二表项查找指令,其中,包含上述第一存储器的至少一个存储器中共存储有至少2份目标路由表项,且上述第一地址对应的目标存储空间当前未被访问;
上述内存控制器接收上述第二级缓存区发送的第二表项查找指令;基于上述第一地址,从所连接的第一存储器中的第一地址处获取上述目标路由表项,并向上述中央处理器反馈上述目标路由表项。
由以上可见,存储器中存储有多份目标路由表项,在中央处理器需要获取目标路由表项时,第二级缓冲区可以确定存储有上述目标路由表项的第一存储器以及目标路由表项在第一存储器中的第一地址,并且上述第一地址对应的目标存储空间未被访问。内存控制器可以基于上述第一地址从第一存储器中获取目标路由表项,并且向中央处理器反馈上述目标路由表项。由于第二级缓冲区所确定的第一地址对应的目标存储空间当前未被访问,因此可以避免地址冲突的问题。并且存储器中存储有多份目标路由表项,因此在多个中央处理器共同查找目标路由表项时,第二级缓冲区可以分别为不同的中央处理器确定不同的第一地址,进而内存控制器可以分别为不同的中央处理器从不同的存储空间处获取目标路由表项,多个存储器获取目标路由表项的过程可以同步进行互不影响,从而可以降低CPU查找目标路由表项的等待时间,提高路由表项查找的速度。
参见图1,为本发明实施例提供的一种网络芯片的结构示意图,上述网络芯片包括:CPU103、L2C101与MC(Memory controller,内存控制器)102。
具体的,上述网络芯片包括多个L2C101与多个MC102,其中,每一L2C101与各个MC102均相连。上述网络芯片中可以配置有多个CPU103,每一L2C101可以与一个或多个CPU103相连,L2C101负责协助所连接的CPU103查找路由表项。
参见图2,为本发明实施例提供的第一种路由表项查找方法的流程示意图,上述方法包括以下步骤S201-S204。
S201:上述L2C101接收CPU103发送的、针对目标路由表项的第一表项查找指令。
具体的,上述L2C101可以是上述网络芯片中的任一L2C,上述第一表项查找指令中可以携带有目标路由表项的标识,以指示上述第一表项查找指令是针对上述目标路由表项的查找指令。
S202:上述L2C101依据上述目标路由表项的标识,确定上述目标路由表项所在的第一存储器以及上述目标路由表项在上述第一存储器中的第一地址。
其中,上述目标路由表项的标识可以为目标路由表项中记录的地址。包含上述第一存储器的至少一个存储器中共存储有至少2份目标路由表项。具体的,若存储有上述目标路由表项的存储器仅有一个,则多份目标路由表项均存储于上述第一存储器中,若存储有上述目标路由表项的存储器有多个,则上述第一存储器中至少存储有一份目标路由表项。
上述存储器为:与上述网络芯片配置于同一网络设备的、用于存储路由表项的存储器。上述网络设备中可以配置有多个存储器,每一存储器与一个MC102相连。
另外,上述第一地址对应的目标存储空间当前未被访问。
具体的,上述L2C101的寄存器中可以存储有各个路由表项的标识与路由表项所在的存储器以及路由表项在该存储器中的地址之间的对应关系。上述对应关系可以以数据表的形式存储,每一表项中存储有路由表项的标识、路由表项所在的存储器的标识,以及路由表项在该存储器中的地址。则根据上述对应关系便可以确定存储有目标路由表项的存储器与目标路由表项在存储器内的地址。
其中,上述网络芯片中的各个L2C101可以共享上述寄存器,使得各个L2C101均可以基于寄存器中存储的对应关系确定存储有目标路由表项的存储器与目标路由表项在存储器内的地址。
另外,上述L2C101可以从存储有目标路由表项的存储器中确定存储有上述目标路由表项,且当前未被访问的目标存储空间,将目标存储空间的地址确定为第一地址。
本发明的一个实施例中,各个L2C101之间可以同步当前发送的第二表项查找指令针对的地址,则上述L2C101可以从目标存储器在存储器中的地址中选择一个各个L2C101的第二表项查找指令当前未针对的地址,作为第一地址。
具体的,可以随机选择上述第一地址。另外,由于存储器中存储的路由表项越多,该存储器被访问的越频繁,与该存储器相连的MC102的数据处理压力越大,进而导致上述MC102难以快速得对所接收到的表项查找指令进行响应。因此可以选择存储路由表项最少的第一存储器中目标路由表项所在的地址作为第一地址,从存储路由表项最少的第一存储器中获取目标路由表项,可以缩短CPU103等待MC102响应第二表项查找指令的时间。
本发明的另一个实施例中,上述L2C101的寄存器中可以存储有存储器中各个存储空间的状态,基于所存储的状态,可以确定当前未被访问的目标存储空间。具体的,可以参见下文图4A所示的实施例中的步骤S202C,在此暂不详述。
S203:上述L2C101向对应上述第一存储器所连接的MC102发送携带上述第一地址的第二表项查找指令。
具体的,上述第二表项查找指令用于指示MC102获取所连接的第一存储器中第一地址处存储的目标路由表项。
S204:上述MC102基于上述第一地址,从所连接的第一存储器中的第一地址处获取上述目标路由表项,并向上述CPU103反馈上述目标路由表项。
本发明的一个实施例中,上述MC102可以向所连接的第一存储器发送携带第一地址的指令,上述第一存储器在接收到上述指令之后,可以从上述第一地址处获取目标路由表项,并向上述MC102反馈上述目标路由表项。以使得上述MC102获取到上述目标路由表项,在获取到上述目标路由表项后,MC102可以向上述CPU103发送上述目标路由表项,以使得CPU103获取到上述目标路由表项,完成CPU103查找目标路由表项的过程。
由以上可见,存储器中存储有多份目标路由表项,在中央处理器需要获取目标路由表项时,第二级缓冲区可以确定存储有上述目标路由表项的第一存储器以及目标路由表项在第一存储器中的第一地址,并且上述第一地址对应的目标存储空间未被访问。内存控制器可以基于上述第一地址从第一存储器中获取目标路由表项,并且向中央处理器反馈上述目标路由表项。由于第二级缓冲区所确定的第一地址对应的目标存储空间当前未被访问,因此可以避免地址冲突的问题。并且存储器中存储有多份目标路由表项,因此在多个中央处理器共同查找目标路由表项时,第二级缓冲区可以分别为不同的中央处理器确定不同的第一地址,进而内存控制器可以分别为不同的中央处理器从不同的存储空间处获取目标路由表项,多个存储器获取目标路由表项的过程可以同步进行互不影响,从而可以降低CPU查找目标路由表项的等待时间,提高路由表项查找的速度。
本发明的一个实施例中,在多个CPU共同请求获取同一目标路由表项的情况下,L2C可以确定当前请求获取目标路由表项的CPU的个数,若上述CPU的个数大于0,则将CPU请求标识设置为第一预设值,否则,将CPU请求标识设置为第二预设值,例如,上述第一预设值可以为1,第二预设值可以为0。
在上述CPU请求标识为第一预设值时,表示当前存在请求获取目标路由表项的CPU,则L2C可以按照前述图2所示的步骤为CPU获取目标路由表项。若上述CPU的个数为1,则可以直接为请求目标路由表项的CPU获取目标路由表项,并结束目标路由表项获取的过程。若上述CPU的个数大于1,则在为一个CPU获取目标路由表项之后,L2C可以重新确定获取目标路由表项的CPU的个数,继续为其他CPU获取目标路由表项。
另外,现有技术中各存储器中共存储有1份目标路由表项,则同时仅有一个CPU能够获取到上述目标路由表项。在存在N个CPU同时获取目标路由表项的情况下,若每一CPU获取目标路由表项所需的时长为t1,则除CPU获取目标路由表项本身所需的时长t1之外,第一个获取到目标路由表项的CPU可以直接获取到目标路由表项,因此其额外等待的时间为0,第二个获取到目标路由表项的CPU需要额外等待的时间为t1,第三个获取到目标路由表项的CPU需要额外等待的时间为2t1,以此类推,则N个CPU共需要等待的时长为(N-1)*N*t1/2。
而本发明实施例中存储器中共存储有至少2份目标路由表项,若存储器中存储的目标路由表项的份数M大于等于同步请求获取目标路由表项的CPU的个数N,则各个CPU均可以同步从不同的第一地址处获取到目标路由表项,各个CPU均不需要额外等待,可以节省CPU等待的时长为(N-1)*N*t1/2。若M小于N,则可以有M个CPU同步获取目标路由表项,同样可以节省CPU等待的时长为((M-1)*N-2M)*N* t1/2。
经过测试,若上述N为4800,M为2,通过本发明实施例提供的方案可以将CPU查找目标路由表项的效率提高80%,由以上可见,将目标路由表项多存储1份便可以达到较好的提高路由表项查找的速度的效果。
参见图3,为本发明实施例提供的第二种路由表项查找方法的流程示意图,对于每一路由表项,存储该路由表项的存储器属于同一存储器组,与前述图2所示的实施例相比,上述步骤S202可以通过以下步骤S202A-S202B实现。
S202A:上述L2C101依据上述目标路由表项的标识,根据路由表项的标识与存储器组的组标识之间的对应关系,获得上述目标路由表项对应的存储器组的组标识,将所获得的组标识对应的存储器组中当前未被访问的一个存储器确定为第一存储器。
其中,上述组标识可以以数字编号的形式表示。
具体的,上述L2C101的寄存器中可以记录有路由表项的标识与存储器组的组标识之间的对应关系,上述对应关系可以以数据表表示,数据表中的每一表项中可以记录有路由表项的标识以及路由表项所对应的存储器组的组标识。
另外,上述L2C101的寄存器中可以记录有存储器组的标识与该存储器组中存储器的标识之间的对应关系,因此基于上述对应关系可以确定上述存储器组中包含的存储器的标识,进而确定上述存储器组中包含的存储器。上述对应关系同样可以以数据表的形式表示,数据表中的每一表项中可以记录有一个存储器组的组标识,以及该存储器组中存储器的标识。
本发明的一个实施例中,可以通过以下步骤A-步骤C确定目标路由表项对应的存储器组的组标识。
步骤A:基于上述目标路由表项的标识,确定上述目标路由表项对应数据表的基地址以及上述目标路由表项在上述数据表中的表内偏移。
具体的,上述L2C101的寄存器中可以记录有各个路由表项的标识与路由表项所对应的数据表的标识以及路由表项在数据表中的表内偏移之间的对应关系。上述对应关系可以以对应关系表的形式表示,上述对应关系表中的每一表项记录有一个路由表项的标识、该路由表项所对应的数据表的标识以及该路由表项的表内偏移。
其中,每一数据表中包含多个路由表项,同一数据表中包含的路由表项可以来自于同一路由表,也可以来自于不同的路由表。不同路由表项在数据表中的不同位置,因此不同路由表项在数据表中的表内偏移不同。每一数据表的基地址是固定的地址,且每一数据表的基地址不同。因此基于基地址与表内偏移可以区分不同的路由表项。
步骤B:基于上述基地址以及上述表内偏移,计算上述目标路由表项的第一物理地址。
具体的,可以在上述基地址的基础上累加上述表内偏移,得到上述目标路由表项的第一物理地址。
由于不同路由表项对应的基地址与表内偏移不同,基于不同的基地址与表内偏移可以计算得到不同的物理地址,也就是每一路由表项的物理地址不同。
步骤C:基于上述第一物理地址与存储器组的组标识之间的映射关系,获得上述目标路由表项对应的存储器组的组标识。
具体的,上述L2C101的寄存器中可以记录有路由表项的物理地址与存储器组的组标识之间的映射关系,上述映射关系可以以数据表的形式表示,数据表中的每一表项中可以记录有路由表项的物理地址以及所对应的存储器组的组标识。由于不同路由表项的物理地址不同,因此基于上述第一物理地址与上述映射关系,可以查找到目标路由表项对应的存储器组的组标识。
本发明的另一个实施例中,若对于每一数据表,一个存储器组中的各个存储器中记录有该数据表中的各个路由表项,且同一路由表项的不同备份分别存储于不同的存储器的同一地址处,则可以通过以下步骤C1-步骤C2实现上述步骤C。
步骤C1:将上述第一物理地址除以存储器组的数量,得到计算结果。
步骤C2:将计算结果的小数部分作为目标路由表项对应的存储器组的组标识。
S202B:上述L2C101根据上述目标路由表项的标识与存储器组的数量,确定上述目标路由表项在上述第一存储器内的第一地址。
本发明的一个实施例中,上述L2C101的寄存器中可以记录有路由表项的物理地址与路由表项在存储器内的地址之间的对应关系,上述对应关系可以以数据表表示,数据表中的每一表项中可以记录有路由表项的物理地址以及路由表项在存储器内的地址。则在通过步骤A-步骤B确定目标路由表项的第一物理地址之后,可以基于上述第一物理地址与上述对应关系,可以查找到目标路由表项对应的第一地址。
另外,上述L2C101的寄存器中也可以直接记录路由表项的物理地址、存储路由表项的存储器组的组标识、路由表项在存储器中的地址三者之间的对应关系。基于上述对应关系既可以查找到目标路由表项对应的第一地址,也可以确定目标路由表项对应的存储器组的组标识。
再者,也可以通过以下步骤D获得上述目标路由表项在上述第一存储器内的第一地址。
步骤D:基于上述第一物理地址与存储器组的数量,确定上述目标路由表项在上述第一存储器内的第一地址。
具体的,本发明的一个实施例中,在基于上述步骤C1-步骤C2计算得到计算结果的情况下,可以通过以下步骤D1实现上述步骤D。
步骤D1:将计算结果中的整数部分作为上述目标路由表项在第一存储器中的第一地址。
本发明的另一个实施例中,上述L2C101的寄存器中可以记录有路由表项的标识与路由表项在存储器内的地址之间的对应关系,则可以基于上述对应关系查找到目标路由表项在第一存储器内的第一地址。上述对应关系可以以数据表的形式表示,数据表中的每一表项中可以记录有路由表项的标识以及路由表项所对应的地址。
为了便于区分与记录,同一路由表项可以存储于不同存储器中的同一地址处,则每一路由表项对应一个地址,可以降低所存储的路由表项与地址之间对应关系的复杂度。
由以上可见,从第一存储器中获取目标路由表项需要经由与第一存储器相连的MC,由于MC的处理能力有限,若目标路由表项的各个备份全部存储于同一第一存储器中,在多个CPU同步查找目标路由表项时,与第一存储器相连的MC需要同步响应多个CPU的查找请求,导致MC的访问压力过大,MC仅能同步处理部分CPU的查找请求,导致其他CPU在查找路由表项的过程中等待时间较长。而本发明实施例中,上述路由表项记录于一个存储器组中的多个存储器内,则在多个CPU共同请求查找目标路由表项时,可以经由不同的MC从不同的存储器中获取目标路由表项,以满足不同CPU的目标路由表项查找请求。因此本发明实施例可以减低MC的访问压力,提高查找路由表项的效率。
参见图4A,为本发明实施例提供的第三种路由表项查找方法的流程示意图,与前述图2所示的实施例相比,上述步骤S202可以通过以下步骤S202C实现。
S202C:上述L2C101依据上述目标路由表项的标识以及上述L2C101中记录的各存储器中各存储空间的状态,确定上述目标路由表项所在的第一存储器以及上述目标路由表项在上述第一存储器中的第一地址。
其中,上述存储空间的状态包括:表示上述存储空间当前正在被访问的非空闲状态、表示上述存储空间当前未被访问的空闲状态。
具体的,上述网络芯片中的L2C可以共享上述寄存器,则上述寄存器中记录的存储空间的状态发生改变后,各个L2C均可以得知上述状态的改变。
上述存储空间的状态可以存储于数据表中,每一表项记录有存储空间的起始地址、终止地址与表示所对应的存储空间的状态的标识。空闲状态的标识与非空闲状态的标识不同。例如,空闲状态的标识可以为0,非空闲状态的标识可以为1。
上述存储空间的状态也可以记录于字符串中,上述字符串可以为二进制字符串。字符串中包含对应不同存储空间的子字符串,每一子字符串中记录有所对应的存储空间的起始地址、终止地址以及存储空间的状态的标识,不同子字符串之间以固定的分隔位区分。
具体的,可以查找各个目标路由表项所处的地址对应的存储空间的状态,确定其中的任意一个所对应的存储空间处于空闲状态的地址,作为第一地址。
本发明的一个实施例中,存储上述目标路由表项的存储器中各存储空间的状态记录于链表的节点中,上述链表中的每一节点对应一个存储器。
上述链表可以为单向循环链表,参见图4B,为本发明实施例提供的一种链表的结构示意图。
其中,上述链表中包含y个节点,每一节点与一个存储器device相对应,每一节点用于记录所对应device中各存储空间的状态。由图可见上述链表为单向循环链表,链表中的各个节点依次顺序链接,形成环状结构。
则可以通过以下步骤E实现上述步骤S202C。
步骤E:依据上述链表记录的各存储空间的状态,查找上述目标路由表项对应的、处于空闲状态的存储空间,将查找到的存储空间对应的存储器确定为第一存储器,将查找到的存储空间的地址确定为第一地址。
具体的,可以从上述链表的首节点起,查找该节点所记录的存储空间的状态中,查找目标路由表项所在的地址对应的存储空间的状态,若能够查找到所对应状态为空闲状态的存储空间,则将所查找到的存储空间的地址确定为第一地址,否则继续按照链表中节点之间的链接关系,查找下一节点所记录的存储空间的状态,以此类推,直至查找到上述第一地址。将第一地址对应的存储器确定为第一存储器。
另外,与前述图2所示的实施例相比,在上述步骤S204之前,还包括以下步骤S205-S206。
S205:上述MC102向上述L2C101发送表征上述目标存储空间当前正在被访问的第一状态信息。
具体的,MC102接收到上述L2C101发送的第二表项查找指令后需要访问所连接的第一存储器,从目标存储空间中获取目标路由表项,也就是目标存储空间会被访问,因此为了防止访问冲突,可以向L2C101发送第一状态信息,以通知L2C101上述目标存储空间当前正在被访问。
S206:上述L2C101将所记录的上述目标存储空间的状态调整为上述非空闲状态。
具体的,在上述L2C101接收到上述第一状态信息后,可以确定MC102正在访问上述第一存储器中的目标存储空间,则可以将所记录的目标存储空间的状态调整为非空闲状态。
此外,与前述图2所示的实施例相比,在上述步骤S204之后,还包括以下步骤S207-S208。
S207:上述MC102向上述L2C101发送表征上述目标存储空间当前未被访问的第二状态信息。
具体的,在上述MC102从所连接的第一存储器中获取到目标路由表项之后,查找目标路由表项的过程结束,上述MC102结束对目标存储空间的访问,目标存储空间当前未被访问,因此MC102可以向上述L2C101发送表征上述目标存储空间处于空闲状态的第二状态信息。
S208:上述L2C101将所记录的上述目标存储空间的状态调整为空闲状态。
具体的,在上述L2C101接收到上述第二状态信息后,可以确定MC102结束访问上述第一存储器中的目标存储空间,则可以将所记录的目标存储空间的状态调整为空闲状态,各个L2C101可以继续向该MC102发送第二表项查找指令,以从上述目标存储空间中获取目标路由表项。
由以上可见,L2C记录有存储器中各个存储空间的状态,L2C仅会依据所记录的各个存储空间的状态,向处于空闲状态的存储空间对应的第一存储器所连接的MC发送第二表项查找指令。并且MC在接收到第二表项查找指令后,会向L2C反馈第一状态信息,L2C会将所记录的目标存储空间的状态调整为非空闲状态。因此在MC从上述目标存储空间中获取目标路由表项的过程中,L2C不会再向该MC发送针对第一地址的第二表项查找指令,而是查找其他所对应存储空间处于空闲状态的存储空间,以查找目标路由表项。因此上述目标存储空间不会同步访问,可以避免出现访问冲突的问题。
本发明的一个实施例中,可以通过以下步骤F-步骤H将待存储的路由表项存储于存储器中。
步骤F:上述L2C101确定用于存储上述待存储的路由表项的至少一个第二存储器,并确定待存储的路由表项在第二存储器中的第二地址。
步骤G:上述L2C101向第二存储器所连接的MC102发送表项存储指令。
其中,上述表项存储指令携带:上述第二地址以及上述待存储的路由表项。
步骤H:上述所连接的MC102基于上述表项存储指令中携带的第二地址,向所连接的第二存储器下发上述目标路由表项,以使得第二存储器将上述目标路由表项存储至第二地址对应的存储空间内。
具体的,上述步骤F-步骤H与下文图6所示的实施例相似,本发明实施例对此暂不详述。
参见图5,为本发明实施例提供的一种路由表项查找流程示意图。
具体的,路由表项查找流程中涉及z个CPU、x个L2C、y个MC与y个存储器device,上述CPU、L2C与MC的物理连接关系与图1所示实施例相同,在此不再赘述,每一MC与一个device连接。
L2C接收到CPU发送的第一表项查找指令后,通过地址转换模块获得目标路由表项的第一物理地址,并基于第一物理地址通过散列加扰模块获得目标路由表项对应的存储器组的组标识,通过数据通路映射模块确定所对应存储空间处于空闲状态的第一地址,以及第一地址对应的第一存储器。并向与第一存储器相连的MC发送第二表项查找指令。MC向数据通路映射模块发送状态信息,L2C便可以基于状态信息调整所记录的目标存储空间的状态。MC在接收到第二表项查找指令后可以从所连接的device中获取目标路由表项。
其中,上述地址转换模块、散列加扰模块与数据通路映射模块为运行于L2C逻辑层的虚拟模块。
与前述路由表项查找方法相对应,本发明实施例还提供了一种路由表项存储方法。应用于网络芯片,上述网络芯片包括L2C与MC。
具体的,实现上述网络芯片中L2C与MC之间的连接关系与前述图1所示相同,本发明实施例对此不再赘述。
参见图6,为本发明实施例提供的第一种路由表项存储方法的流程示意图,上述方法包括以下步骤S601-S603。
S601:上述L2C确定用于存储待存储的路由表项的至少一个第二存储器,并确定上述待存储的路由表项在第二存储器中的第二地址。
其中,上述待存储的路由表项可以为任意路由表项。CPU可以向L2C发送表项下发指令,以指定待存储的路由表项。
具体的,上述第二存储器中共包含多个第二地址。上述待存储的路由表项可以存储于一个或多个第二存储器中,每一第二存储器中可以包含一个或多个第二地址。若第二存储器中的第二地址的总数大于1,即第二存储器中将存储多份待存储的路由表项。
本发明的一个实施例中,可以选择任意所包含的空闲存储空间的大小大于等于待存储的路由表项占用的存储空间的大小的存储器作为第二存储器,并在第二存储器中未记录有路由表项的存储空间中随机选择存储空间,作为用于存储待存储的路由表项的存储空间,将所选择的存储空间在第二存储器中的地址确定为第二地址。
本发明的一个实施例中,上述第二存储器的数量可以是预设的,也可以通过步骤I1-I3确定上述第二存储器的数量,在此暂不详述。
S602:上述L2C向第二存储器所连接的MC发送表项存储指令。
其中,上述表项存储指令携带:上述第二地址以及上述待存储的路由表项。
另外,由于L2C需要向第二存储器下发待存储的路由表项的多个备份,因此可以确定需要下发的待存储的路由表项的份数,若上述份数大于0,则将表项下发标识设置为第三预设值,否则,将表项下发标识设置为第四预设值。例如,上述第三预设值可以为1,第四预设值可以为0。若上述表项下发标识的取值为第三预设值,则表示当前还存在未被下发的待存储的路由表项的备份,则需要继续执行步骤S602。
每发送一次表项存储指令,便将上述份数减1,并基于更新后的份数重新设置表项下发标识的取值,重复执行下发表项存储指令的步骤,直至上述份数的取值为0,表项下发标识的取值变更为第四预设值。
S603:上述所连接的MC基于接收到的上述表项存储指令中携带的第二地址,向所连接的第二存储器下发上述待存储的路由表项,以使得第二存储器将上述待存储的路由表项存储至第二地址对应的存储空间内。
具体的,上述所连接的MC可以向所连接的第二存储器发送携带有第二地址与待存储的路由表项的存储指令,以使得第二存储器在接收到存储指令后可以将待存储的路由表项存储于第二地址对应的存储空间内。
由以上可见,通过本发明实施例可以将待存储的路由表项的多个备份存储于至少一个第二存储器中的多个第二地址处,在完成上述存储处理之后,存储器中存储有多份上述路由表项。在多个CPU并发同时查找该路由表项时,可以分别为不同的CPU从第二存储器中的不同第二地址处获取该路由表项,从而可以降低CPU查找路由表项的等待时间,提高路由表项查找的速度。
本发明的一个实施例中,可以通过以下步骤I1-步骤I3确定上述第二存储器数量:
步骤I1:针对每一数据表,确定该数据表中的各路由表项被查找的历史查找次数。
具体的,上述历史查找次数可以为:根据报文的路由转发流程统计得到的,在转发报文的过程中该数据表中各路由表项被查找的次数。上述历史查找表项可以为执行本发明实施例之前预先设置的。
步骤I2:确定上述待存储的路由表项对应数据表的历史查找次数占各数据表的总历史查找次数的查找比例。
具体的,可以计算各数据表的历史查找次数的总和,再计算上述待存储的路由表项对应数据表的历史查找次数与上述总和之间的比例,作为上述查找比例。
例如,存在n个数据表,每一数据表的历史查找次数分别为num1、num2、…、numn,则数据表k对应的查找比例wk为:wk=(numk)/(num1+num2+···+numn),k的取值可以为1-n中的任意值。
步骤I3:基于上述查找比例与存储器的总个数,计算上述第二存储器的数量。
具体的,可以将上述待存储的路由表项对应的数据表的查找比例乘以存储器的总个数,向上或向下取整,得到第二存储器的数量。由于同一数据表中各路由表项对应的查找比例相同,因此对于同一数据表中的每一路由表项,计算得到的第二存储器的数量相同。若每一第二存储器中存储有一份路由表项,则同一数据表中每一路由表项的存储份数相同。
在每一第二存储器中存储一份待存储的路由表项的情况下,若计算得到的第二存储器的数量小于等于1,则为了保证待存储的存储表项可以被存储多份,则可以将上述第二存储器的数量设置为2。
另外,为了保证上述存储器能够存储各个路由表项,则需要保证cn1* E1+ cn2* E2+···+ cnn* En<= Esum,其中cn1-cnn分别表示数据表1-数据表n中的路由表项被存储的份数,E1-En分别表示数据表1-数据表n占用存储空间的大小,Esum为各个存储器的总存储空间大小。
参见图7,为本发明实施例提供的第二种路由表项存储方法的流程示意图,与前述图6所示的实施例相比,上述步骤S602可以通过以下步骤S602A实现。
S602A:上述L2C针对每一第二存储器,在该第二存储器的第二地址对应的目标存储空间当前未被访问的情况下,向该第二存储器所连接的MC发送表项存储指令。
具体的,上述目标存储空间处于空闲状态表示该存储空间当前未被访问,当前向连接该第二存储器的MC发送表项存储指令,可以直接向目标存储空间内写入待存储的路由表项,不需要等待。
具体的,上述步骤S602A确定目标存储空间当前是否被访问的过程与前述步骤S202相似,本发明实施例对此不再赘述。
本发明的一个实施例中,可以循环遍历各个第二地址对应的目标存储空间的状态,确定处于空闲状态的目标存储空间,并向该目标存储空间所在的第二存储器所连接的MC发送表项存储指令,直至各个目标存储空间均被写入上述待存储的路由表项。
具体的,上述L2C中可以记录有存储器中各个存储空间的状态。则可以通过以下步骤J实现上述步骤S602A。
步骤J:上述L2C当上述L2C中记录的、该第二存储器中目标存储空间的状态为当前未被访问的空闲状态时,向该第二存储器所连接的MC发送表项存储指令。
具体的,上述步骤S602A与前述步骤S202C相似,本发明实施例对此不再赘述。
本发明的另一个实施例中,第二存储器中各存储空间的状态记录于链表的节点中,上述链表中的每一节点对应一个第二存储器。则可以通过以下步骤J1实现上述步骤J。
步骤J1:上述L2C依据上述链表记录的各存储空间的状态,查找处于空闲状态的目标存储空间,向所查找到的目标存储空间对应的第二存储器所连接的MC发送表项存储指令。
具体的,上述步骤J1与前述步骤E相似,本发明实施例对此不再赘述。
另外,在上述L2C中记录有存储器中各个存储空间的状态的情况下,与前述图6所示的实施例相比,在上述所连接的MC接收到L2C发送的表项存储指令之后,还包括以下步骤K-步骤L。
步骤K:上述所连接的MC向上述L2C发送表征上述目标存储空间当前正在被访问的第三状态信息。
步骤L:上述L2C将所记录的上述目标存储空间的状态调整为上述目标存储空间当前正在被访问的非空闲状态。
具体的,上述步骤K-步骤L与前述步骤S205-S206相似,本发明实施例对此不再赘述。
再者,与前述图6所示的实施例相比,在前述步骤S603之后还包括以下步骤M-步骤N。
步骤M:上述所连接的MC向上述L2C发送表征上述目标存储空间当前未被访问的第四状态信息。
步骤N:上述L2C将所记录的上述目标存储空间的状态调整为空闲状态。
具体的,上述步骤步骤M-步骤N与前述步骤S207-S208相似,本发明实施例对此不再赘述。
由以上可见,在第二地址对应的目标存储空间处于空闲状态的情况下,L2C才向目标存储空间所在的第二存储器所连接的MC发送表项存储指令,以在上述目标存储空间中存储上述待存储的路由表项。而在目标存储空间处于非空闲状态的情况下,L2C暂时不会向MC发送表项存储指令。因此可以防止L2C向MC发送针对处于非空闲状态的目标存储空间的表项存储指令,导致存储待存储的路由表项需要等待的问题。
参见图8,为本发明实施例提供的第三种路由表项存储方法的流程示意图,与前述图6所示的实施例相比,上述步骤S601可以通过以下步骤S601A-S601C实现。
S601A:上述L2C确定上述待存储的路由表项对应的存储器组的组标识。
本发明的一个实施例中,在每一第二存储器中存储一份待存储的路由表项的情况下,可以通过以下步骤O-步骤P实现上述步骤S601A。
步骤O:上述L2C基于上述待存储的路由表项对应数据表的基地址与上述待存储的路由表项在上述数据表中的表内偏移,计算上述待存储的路由表项的第二物理地址。
步骤P:上述L2C基于预设的第二物理地址与存储器组的组标识之间的映射关系,确定上述待存储的路由表项对应的存储器组的组标识。
具体的,上述步骤O-步骤P与前述步骤A-步骤C相似,本发明实施例对此不再赘述。
另外,上述步骤P可以通过以下步骤P1-步骤P2实现。
步骤P1:将上述第二物理地址除以存储器组的数量,得到计算结果。
具体的,可以将存储器的总数除以第二存储器的数量向上取整,得到上述存储器组的数量。
本发明的一个实施例中,可以通过前述步骤I1-I3确定上述第二存储器的数量,在此不再赘述。
步骤P2:将计算结果的小数部分作为上述待存储的路由表项对应的存储器组的组标识。
具体的,由于路由表项的物理地址是基于路由表项所属数据表的基地址得到的,因此属于同一数据表的路由表项的物理地址相似,计算得到的计算结果中的小数部分相同,因此可以使得同一数据表中的路由表项对应的存储器组的组标识相同,同一数据表中的路由表项可以存储于同一存储器组中,使得路由表项的存储结构较为简单。
由于上述存储器组的组标识是基于待存储的路由表项的第二物理地址计算得到的,待存储的路由表项的第二物理地址是固定不变的,因此本发明实施例中,L2C的寄存器不需要额外记录待存储的路由表项对应的存储器组的编号,只需要记录存储器组的数量。在需要确定存储器组的组标识时,可以直接基于上述第二物理地址与存储器组的数量计算得到上述存储器组的组标识,从而可以节省记录待存储的路由表项对应的存储器组的组标识所需的存储空间。
具体的,上述步骤P1-步骤P2与前述步骤C1-C2相似,本发明实施例对此不再赘述。
S601B:上述L2C将上述组标识对应的存储器组中包含的存储器确定为第二存储器。
具体的,可以从上述网络设备配置的存储器中,选择任意的未被配置所属存储器组的存储器,作为上述组标识对应的存储器组中包含的存储器。
S601C:上述L2C确定上述待存储的路由表项在上述第二存储器中的第二地址。
本发明的一个实施例中,在通过前述步骤O获得上述第二物理地址的情况下,可以通过以下步骤Q实现上述步骤S601C。
步骤Q:上述L2C基于上述第二物理地址与存储器组的数量,确定上述待存储的路由表项在第二存储器内的第二地址。
具体的,由于路由表项的物理地址是基于路由表项在对应数据表的表内偏移得到的,属于同一数据表的路由表项的表内偏移不同,因此不同路由表项的物理地址不同,基于物理地址计算得到的计算结果中的整数部分不同。所以若将上述整数部分作为路由表项在存储器中的地址,虽然同一数据表中的路由表项存储于同一存储器中,依然可以基于路由表项在存储器中的地址区分不同的路由表项。
由于上述第二地址是基于待存储的路由表项的第二物理地址计算得到的,待存储的路由表项的第二物理地址是固定不变的,因此本发明实施例中,L2C的寄存器不需要额外记录待存储的路由表项的第二地址,只需要记录存储器组的数量。在需要确定第二地址时,可以直接基于上述第二物理地址与存储器组的数量计算得到上述第二地址,可以节省记录第二地址所需的存储空间。
另外,上述步骤Q与前述步骤D相似,本发明实施例对此不再赘述。
再者,前述步骤S601A-S601C与前述步骤S202A-S202B相似,本发明实施例对此不再赘述。
由以上可见,待存储的路由表项的备份存储于一个存储器组中的不同的第二存储器内,则在多个CPU同步查找该路由表项的情况下,不同的CPU可以从不同的第二存储器中获取上述路由表项。从第二存储器中获取路由表项需要经由与第二存储器相连的MC,由于MC的处理能力有限,若路由表项的各个备份全部存储于同一第二存储器中,与第二存储器相连的MC需要同步响应多个CPU的查找请求,导致MC的访问压力过大,MC同步仅能处理部分CPU的查找请求,导致其他CPU在查找路由表项的过程中等待时间较长。本发明实施例中,上述路由表项记录于一个存储器组中的多个第二存储器内,则在多个CPU共同请求查找目标路由表项时,可以经由不同的MC从不同的第二存储器中获取目标路由表项,以满足不同CPU的路由表项查找请求。因此本发明实施例可以减低MC的访问压力,提高查找路由表项的效率。
再者,若同一数据表中的路由表项存储于同一存储器组内,且存储器组中的每一存储器记录有一份该数据表中的各个路由表项,不同数据表中的路由表项存储于不同存储器组内。为了保证每一路由表项至少被存储两份,则需要保证每一存储器组中至少包含两个存储器,因此存储器的总数需要大于等于数据表总数的2倍。
参见图9,为本发明实施例提供的一种路由表项存储流程示意图。
具体的,与前述图5所示的实施例相同,路由表项查找流程中涉及x个L2C、y个MC与y个存储器device,上述L2C、MC与device之间的物理连接关系与图5所示实施例相同,在此不再赘述。
L2C在接收到表项下发模块下发的待存储的路由表项后,通过地址转换模块获得待存储的路由表项的第二物理地址,并基于第二物理地址通过散列加扰模块获得待存储的路由表项对应的存储器组的组标识与第二地址,通过数据通路映射模块确定所对应目标存储空间处于空闲状态的第二地址。并向所确定的第二地址所对应的MC发送表项存储指令。MC向数据通路映射模块发送状态信息,L2C便可以基于状态信息调整所记录的目标存储空间的状态。device在接收到表项存储指令后可以将待存储的路由表项存储于目标存储空间处。
其中,上述地址转换模块、散列加扰模块与数据通路映射模块为运行于L2C逻辑层的虚拟模块,表项下发模块可以是运行于网络设备中除网络芯片之外的器件的逻辑层的虚拟模块。
与前述路由表项查找方法相对应,本发明实施例还提供了一种用于进行路由表项查找的网络芯片。
本发明的一个实施例中,提供了一种网络芯片,上述网络芯片包括:中央处理器、第二级缓冲区与内存控制器;
所述第二级缓冲区,用于执行上述路由表项查找方法任一所述的方法步骤;
所述内存控制器,用于执行上述路由表项查找方法任一所述的方法步骤。
具体的,上述网络芯片的结构与前述图1所示的实施例相似,上述网络芯片中中央处理器、第二级缓冲区与内存控制器的功能与前述路由表项查找方法实施例中中央处理器、第二级缓冲区与内存控制器的功能相同,本发明实施例对此不再赘述。
应用本发明实施例提供的网络芯片进行路由表项查找时,存储器中存储有多份目标路由表项,在中央处理器需要获取目标路由表项时,第二级缓冲区可以确定存储有上述目标路由表项的第一存储器以及目标路由表项在第一存储器中的第一地址,并且上述第一地址对应的目标存储空间未被访问。内存控制器可以基于上述第一地址从第一存储器中获取目标路由表项,并且向中央处理器反馈上述目标路由表项。由于第二级缓冲区所确定的第一地址对应的目标存储空间当前未被访问,因此可以避免地址冲突的问题。并且存储器中存储有多份目标路由表项,因此在多个中央处理器共同查找目标路由表项时,第二级缓冲区可以分别为不同的中央处理器确定不同的第一地址,进而内存控制器可以分别为不同的中央处理器从不同的存储空间处获取目标路由表项,多个存储器获取目标路由表项的过程可以同步进行互不影响,从而可以降低CPU查找目标路由表项的等待时间,提高路由表项查找的速度。
与前述路由表项存储方法相对应,本发明实施例还提供了一种用于进行路由表项存储的网络芯片。
本发明实施例提供了一种网络芯片,所述网络芯片包括:第二级缓冲区与内存控制器;
所述第二级缓存区,用于执行上述路由表项存储方法实施例中任一所述的方法步骤;
所述所连接的内存控制器,用于执行上述路由表项存储方法实施例中任一所述的方法步骤。
具体的,上述网络芯片中第二级缓冲区与内存控制器之间的连接关系与前述图1所示的实施例中第二级缓冲区与内存控制器之间的连接关系相同。上述网络芯片中第二级缓冲区与内存控制器的功能与前述路由表项存储方法的实施例中第二级缓冲区与内存控制器的功能相同,本发明实施例对此不再赘述。
应用本发明实施例提供的网络芯片进行路由表项存储时,通过本发明实施例可以将待存储的路由表项的多个备份存储于至少一个第二存储器中的多个第二地址处,在完成上述存储处理之后,存储器中存储有多份上述路由表项。在多个CPU并发同时查找该路由表项时,可以分别为不同的CPU从第二存储器中的不同第二地址处获取该路由表项,从而可以降低CPU查找路由表项的等待时间,提高路由表项查找的速度。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于路由表项存储方法而言,由于其基本相似于路由表项查找方法实施例,对于网络芯片而言,由于其基本相似于路由表项查找方法与路由表项存储方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (16)
1.一种路由表项查找方法,其特征在于,应用于网络芯片,所述网络芯片包括:中央处理器、第二级缓存区与内存控制器;
所述第二级缓存区接收中央处理器发送的、针对目标路由表项的第一表项查找指令;依据所述目标路由表项的标识,确定所述目标路由表项所在的第一存储器以及所述目标路由表项在所述第一存储器中的第一地址;向所述第一存储器所连接的内存控制器发送携带所述第一地址的第二表项查找指令,其中,包含所述第一存储器的至少一个存储器中共存储有至少2份目标路由表项,且所述第一地址对应的目标存储空间当前未被访问;
所述内存控制器接收所述第二级缓存区发送的第二表项查找指令;基于所述第一地址,从所连接的第一存储器中的第一地址处获取所述目标路由表项,并向所述中央处理器反馈所述目标路由表项。
2.根据权利要求1所述的方法,其特征在于,对于每一路由表项,存储该路由表项的存储器属于同一存储器组,所述确定所述目标路由表项所在的第一存储器以及所述目标路由表项在所述第一存储器中的第一地址,包括:
根据路由表项的标识与存储器组的组标识之间的对应关系,获得所述目标路由表项对应的存储器组的组标识,将所获得的组标识对应的存储器组中当前未被访问的一个存储器确定为第一存储器;
根据所述目标路由表项的标识与存储器组的数量,确定所述目标路由表项在所述第一存储器内的第一地址。
3.根据权利要求2所述的方法,其特征在于,所述根据路由表项的标识与存储器组的组标识之间的对应关系,获得所述目标路由表项对应的存储器组的组标识,包括:
基于所述目标路由表项的标识,确定所述目标路由表项对应数据表的基地址以及所述目标路由表项在所述数据表中的表内偏移;
基于所述基地址以及所述表内偏移,计算所述目标路由表项的第一物理地址;
基于所述第一物理地址与存储器组的组标识之间的映射关系,获得所述目标路由表项对应的存储器组的组标识;
所述根据所述目标路由表项的标识与存储器组的数量,确定所述目标路由表项在所述第一存储器内的第一地址,包括:
基于所述第一物理地址与存储器组的数量,确定所述目标路由表项在所述第一存储器内的第一地址。
4.根据权利要求3所述的方法,其特征在于,所述基于所述第一物理地址与存储器组的组标识之间的映射关系,获得所述目标路由表项对应的存储器组的组标识,包括:
将所述第一物理地址除以存储器组的数量,得到计算结果;
将计算结果中的小数部分作为目标路由表项对应的存储器组的组标识;
所述基于所述第一物理地址与存储器组的数量,确定所述目标路由表项在所述第一存储器内的第一地址,包括:
将计算结果中的整数部分作为所述目标路由表项在第一存储器中的第一地址。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述依据所述目标路由表项的标识,确定所述目标路由表项所在的第一存储器以及所述目标路由表项在所述第一存储器中的第一地址,包括:
依据所述目标路由表项的标识以及所述第二级缓存区中记录的各存储器中各存储空间的状态,确定所述目标路由表项所在的第一存储器以及所述目标路由表项在所述第一存储器中的第一地址,其中,所述存储空间的状态包括:表示所述存储空间当前正在被访问的非空闲状态、表示所述存储空间当前未被访问的空闲状态;
在所述内存控制器接收所述第二级缓存区发送的第二表项查找指令之后,还包括:
所述内存控制器向所述第二级缓存区发送表征所述目标存储空间当前正在被访问的第一状态信息;
所述第二级缓存区接收所述内存控制器发送的第一状态信息,将所记录的所述目标存储空间的状态调整为所述非空闲状态;
在所述内存控制器向所述中央处理器反馈所述目标路由表项之后,还包括:
所述内存控制器向所述第二级缓存区发送表征所述目标存储空间当前未被访问的第二状态信息;
所述第二级缓存区接收所述内存控制器发送的第二状态信息,将所记录的所述目标存储空间的状态调整为空闲状态。
6.根据权利要求5所述的方法,其特征在于,存储所述目标路由表项的存储器中各存储空间的状态记录于链表的节点中,所述链表中的每一节点对应一个存储器;则
所述依据所述目标路由表项的标识以及所述第二级缓存区中记录的各存储器中各存储空间的状态,确定所述目标路由表项所在的第一存储器以及所述目标路由表项在所述第一存储器中的第一地址,包括:
依据所述链表记录的各存储空间的状态,查找所述目标路由表项对应的、处于空闲状态的存储空间,将查找到的存储空间对应的存储器确定为第一存储器,将查找到的存储空间的地址确定为第一地址。
7.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:
通过以下方式将待存储的路由表项存储于存储器中:
所述第二级缓存区确定用于存储所述待存储的路由表项的至少一个第二存储器,并确定待存储的路由表项在第二存储器中的第二地址;向第二存储器所连接的内存控制器发送表项存储指令,其中,所述表项存储指令携带:所述第二地址以及所述待存储的路由表项;
所述所连接的内存控制器基于所述表项存储指令中携带的第二地址,向所连接的第二存储器下发所述目标路由表项,以使得第二存储器将所述目标路由表项存储至第二地址对应的存储空间内。
8.一种路由表项存储方法,其特征在于,应用于网络芯片,所述网络芯片包括:第二级缓存区与内存控制器;
所述第二级缓存区确定用于存储待存储的路由表项的至少一个第二存储器,并确定所述待存储的路由表项在第二存储器中的第二地址;针对每一第二存储器,在该第二存储器的第二地址对应的目标存储空间当前未被访问的情况下,向该第二存储器所连接的内存控制器发送表项存储指令,其中,所述第二存储器中共包含多个第二地址,所述表项存储指令携带:所述第二地址以及所述待存储的路由表项;
所述所连接的内存控制器基于接收到的所述表项存储指令中携带的第二地址,向所连接的第二存储器下发所述待存储的路由表项,以使得第二存储器将所述待存储的路由表项存储至第二地址对应的存储空间内。
9.根据权利要求8所述的方法,其特征在于,所述在该第二存储器的第二地址对应的存储空间当前未被访问的情况下,向该第二存储器所连接的内存控制器发送表项存储指令,包括:
当所述第二级缓存区中记录的、该第二存储器中目标存储空间的状态为当前未被访问的空闲状态时,向该第二存储器所连接的内存控制器发送表项存储指令;
在所述所连接的内存控制器接收到所述第二级缓存区发送的表项存储指令之后,还包括:
所述所连接的内存控制器向所述第二级缓存区发送表征所述目标存储空间当前正在被访问的第三状态信息;
所述第二级缓存区接收所述第三状态信息,将所记录的所述目标存储空间的状态调整为所述目标存储空间当前正在被访问的非空闲状态;
在所述所连接的内存控制器基于接收到的所述表项存储指令中携带的第二地址,向所连接的第二存储器下发所述待存储的路由表项之后,还包括:
所述所连接的内存控制器向所述第二级缓存区发送表征所述目标存储空间当前未被访问的第四状态信息;
所述第二级缓存区接收所述第四状态信息,将所记录的所述目标存储空间的状态调整为空闲状态。
10.根据权利要求9所述的方法,其特征在于,第二存储器中各存储空间的状态记录于链表的节点中,所述链表中的每一节点对应一个第二存储器;则
所述当所述第二级缓存区中记录的、该第二存储器中目标存储空间的状态为当前未被访问的空闲状态时,向该第二存储器所连接的内存控制器发送表项存储指令,包括:
依据所述链表记录的各存储空间的状态,查找处于空闲状态的目标存储空间,向所查找到的目标存储空间对应的第二存储器所连接的内存控制器发送表项存储指令。
11.根据权利要求8所述的方法,其特征在于,所述确定用于存储待存储的路由表项的至少一个第二存储器,包括:
确定所述待存储的路由表项对应的存储器组的组标识;
将所述组标识对应的存储器组中包含的存储器确定为第二存储器。
12.根据权利要求11所述的方法,其特征在于,所述确定所述待存储的路由表项对应的存储器组的组标识,包括:
基于所述待存储的路由表项对应数据表的基地址与所述待存储的路由表项在所述数据表中的表内偏移,计算所述待存储的路由表项的第二物理地址;
基于预设的第二物理地址与存储器组的组标识之间的映射关系,确定所述待存储的路由表项对应的存储器组的组标识;
所述确定所述待存储的路由表项在第二存储器中的第二地址,包括:
基于所述第二物理地址与存储器组的数量,确定所述待存储的路由表项在第二存储器内的第二地址。
13.根据权利要求12所述的方法,其特征在于,所述基于预设的第二物理地址与存储器组的组标识之间的映射关系,确定所述目标路由表项对应的存储器组的组标识,包括:
将所述第二物理地址除以存储器组的数量,得到计算结果;
将计算结果中的小数部分作为所述待存储的路由表项对应的存储器组的组标识;
所述基于所述第二物理地址与存储器组的数量,确定所述待存储的路由表项在第二存储器内的第二地址,包括:
将计算结果中的整数部分作为所述待存储的路由表项在第二存储器中的第二地址。
14.根据权利要求8-13中任一项所述的方法,其特征在于,通过以下方式确定所述第二存储器的数量:
针对每一数据表,确定该数据表中的各路由表项被查找的历史查找次数;
确定所述待存储的路由表项对应数据表的历史查找次数占各数据表的总历史查找次数的查找比例;
基于所述查找比例与存储器的总个数,计算所述第二存储器的数量。
15.一种网络芯片,其特征在于,所述网络芯片包括:中央处理器、第二级缓冲区与内存控制器;
所述第二级缓冲区用于执行权利要求1-7任一所述的路由表项查找方法,所述内存控制器用于执行权利要求1-7任一所述的路由表项查找方法。
16.一种网络芯片,其特征在于,所述网络芯片包括:第二级缓冲区与内存控制器;
所述第二级缓存区用于执行权利要求8-14任一所述的路由表项存储方法;以及所述所连接的内存控制器用于执行权利要求8-14任一所述的路由表项存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110922483.0A CN113377689B (zh) | 2021-08-12 | 2021-08-12 | 一种路由表项查找、存储方法及网络芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110922483.0A CN113377689B (zh) | 2021-08-12 | 2021-08-12 | 一种路由表项查找、存储方法及网络芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113377689A CN113377689A (zh) | 2021-09-10 |
CN113377689B true CN113377689B (zh) | 2021-11-05 |
Family
ID=77576941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110922483.0A Active CN113377689B (zh) | 2021-08-12 | 2021-08-12 | 一种路由表项查找、存储方法及网络芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113377689B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356418B (zh) * | 2022-03-10 | 2022-08-05 | 之江实验室 | 一种智能表项控制器及控制方法 |
CN114996023B (zh) * | 2022-07-19 | 2022-11-22 | 新华三半导体技术有限公司 | 目标缓存装置、处理装置、网络设备及表项获取方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1658172A (zh) * | 2004-02-19 | 2005-08-24 | 国际商业机器公司 | 在分段操作***中提供用于页面转换的预转换段的设备和方法 |
US20180121351A1 (en) * | 2015-06-29 | 2018-05-03 | Huawei Technologies Co.,Ltd. | Storage system, storage management apparatus, storage device, hybrid storage apparatus, and storage management method |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7899052B1 (en) * | 1999-01-27 | 2011-03-01 | Broadcom Corporation | Memory structure for resolving addresses in a packet-based network switch |
US7181575B2 (en) * | 2004-09-29 | 2007-02-20 | Hewlett-Packard Development Company, L.P. | Instruction cache using single-ported memories |
CN106776366B (zh) * | 2016-11-18 | 2019-11-22 | 华为技术有限公司 | 地址访问方法及装置 |
-
2021
- 2021-08-12 CN CN202110922483.0A patent/CN113377689B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1658172A (zh) * | 2004-02-19 | 2005-08-24 | 国际商业机器公司 | 在分段操作***中提供用于页面转换的预转换段的设备和方法 |
US20180121351A1 (en) * | 2015-06-29 | 2018-05-03 | Huawei Technologies Co.,Ltd. | Storage system, storage management apparatus, storage device, hybrid storage apparatus, and storage management method |
Also Published As
Publication number | Publication date |
---|---|
CN113377689A (zh) | 2021-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6356675B2 (ja) | 集約/グループ化動作:ハッシュテーブル法のハードウェア実装 | |
US8868926B2 (en) | Cryptographic hash database | |
CN113377689B (zh) | 一种路由表项查找、存储方法及网络芯片 | |
US10114908B2 (en) | Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data | |
KR101994021B1 (ko) | 파일 조작 방법 및 장치 | |
JP4669067B2 (ja) | 動的フラグメントマッピング | |
US9952783B2 (en) | Data processing method and apparatus, and shared storage device | |
US9871727B2 (en) | Routing lookup method and device and method for constructing B-tree structure | |
US7805427B1 (en) | Integrated search engine devices that support multi-way search trees having multi-column nodes | |
KR102190403B1 (ko) | 물리적 메모리 크기보다 큰 메모리 용량을 가능하게 하기 위한 방법 및 장치 | |
JPH0749812A (ja) | ページテーブル中のハッシュアドレスタグを用いたメモリアドレス制御装置 | |
JPH03194632A (ja) | 変換予見にもとづくキャッシュアクセス | |
CN106599091B (zh) | 基于键值存储的rdf图结构存储和索引方法 | |
WO2020125630A1 (zh) | 文件读取 | |
US20170083537A1 (en) | Mapping logical identifiers using multiple identifier spaces | |
US11899985B1 (en) | Virtual modules in TCAM | |
TW583542B (en) | NUMA page selection using coloring | |
US10528284B2 (en) | Method and apparatus for enabling larger memory capacity than physical memory size | |
US10534765B2 (en) | Assigning segments of a shared database storage to nodes | |
WO2015176315A1 (zh) | 哈希连接方法、装置和数据库管理*** | |
US20170092358A1 (en) | Content addressable memory with an ordered sequence | |
CN107133334B (zh) | 基于高带宽存储***的数据同步方法 | |
US11210280B2 (en) | Systems and methods for fast bloom filter operations | |
CN106874119A (zh) | 基于同质内存扫描的合并方法及装置 | |
US11874767B2 (en) | Memory partitions for processing entities |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |