专利名称:一种路由交换设备及其数据缓存的方法
技术领域:
本发明属于网络通信领域,具体地说是一种路由交换设备及其数据緩存 的方法。
背景技术:
在路由交换设备中,通常将数据包按照一定的规则拆分成多个数据片, 在数据包输出时,再将被拆分成的多个数据片进行组合,恢复成原来的数据 包。数据包拆分的数据片长度应该与数据包最小长度、内部包处理速度、存 储器数据位宽等因素有关。队列保存通常选用不同队列存储区域动态保存的 方式,在考虑动态存储器的带宽利用率的条件下,任何空闲的区域随时都可 以放入需要緩存的队列数据。随着网络技术的发展,路由交换设备中数据动态緩存的带宽越来越大, 由于动态存储器的预充电、列激活和自动刷新等时序要求的存在。存储器带 宽利用率成为数据緩存首要考虑的问题。但是端口速度的提高和数据包长度变化使得数据緩存的时序控制变得复杂。所以存储器实际彰:据带宽成为路由 交换设备中数据緩存存储器件选择的重要参考。在数据緩存的应用中,读写操作的地址不相关以及不同包长数据切片数 不相等导致不同读操作的地址没有相关性,导致带宽利用率难于提高。发明内容本发明要解决的技术问题是,提出一种路由交换设备及其数据緩存的方 法,以方便的逻辑代码移植的高性能路由交换设备提高存储带宽利用率。为了解决上述问题,本发明公开了一种数据緩存的方法,包括路由交换设备收到数据包时,若查询外部緩存器的数据緩存状态为,有非全满的数据片行地址,且该非全满的数据片行地址中的连续空间足够存储 所述数据包的所有数据片,则将所述数据包的所有数据片播入所述非全满的 数据片行地址中,保存所述数据包的包信息和写入的数据片行地址,并更新 所述外部緩存器的数据緩存状态。进一步地,上述方法中,若所述路由交换设备查询外部緩存器的数据緩 存状态为,有全空的连续的数据片行地址时,则将所述数据包的所有数据片 写入所述全空的连续的数据片行地址中。进一步地,所述路由交换设备通过连续burst写操作,将所述数据包的数 据片连续写入数据片行地址中,其中,当所述数据包的数据片个数超过连续 burst写操作的最大次数时,所述路由交换设备在每次写数据过程中,按照连 续burst写操作的最大次数进行burst写操作,直到写入所述数据的所有数据 片。该方法还包括所述路由交换设备接收到读操作时,根据所要读取的数 据包的包信息和写入的数据片行地址,从外部緩存器中读取所述数据包,并 更新所述外部緩存器的数据緩存状态。其中,所述路由交换设备通过连续burst读操作,读取所述数据包的数据 片,其中,当所述数据包的数据片个数超过连续burst读操作的最大次数时, 所述路由交换设备一次读出所述数据包的所有数据片,并在下一次读数据时, 减去本次读数据过程中超过连续burst读操作的最大次数的burst读操作数目。本发明还公开了 一种路由交换设备,包括緩存控制模块和数据緩存表模 块,其中所述緩存控制模块,用于在收到数据包时,若查询数据緩存表模块中外 部緩存器的数据緩存状态为,有非全满的数据片行地址,且该非全满的数据 片行地址中的连续空间足够存储所述数据包的所有数据片时,则将所述数据 包的所有数据片播入所述非全满的数据片行地址中,并将所述数据包的包信 息和写入的数据片行地址发送给所述数据緩存表模块;所述数据緩存表模块,用于保存所述緩存控制模块发送的写入外部存储器的数据包的包信息以及写入的数据片行地址,并实时更新所述外部緩存 器的数据緩存状态。进一步地,上述设备中,所述緩存控制模块,若查询外部緩存器的数据 緩存状态为,有全空的连续的数据片行地址时,则将所述数据包的所有数据 片写入所述全空的连续的数据片行地址中。进一步地,所述缓存控制模块,通过连续burst写操作,将所述数据包的 数据片连续写入数据片行地址中,其中,当所述数据包的数据片个数超过连 续burst写操作的最大次数时,所述所述緩存控制模块在每次写数据过程中, 按照连续burst写操作的最大次数进行burst写操作,直到写入所述数据的所 有数据片。其中,所述緩存控制模块,还用于在接收到读操作时,从所述数据緩存 表模块中查询所要读取的数据包的包信息和写入的数据片行地址,从外部緩 存器中读取所述数据包,并将读取结果发送给所述数据緩存表模块;所述数据緩存表模块,用于接收所述緩存控制模块发送的读取給果,根 据所述读取结果更新所述外部緩存器的数据緩存状态。所述緩存控制模块,通过连续burst读操作,读取所述数据包的数据片, 其中,当所述数据包的数据片个数超过连续burst读操作的最大次数时,所述 緩存控制模块一次读出所述数据包的所有数据片,并在下一次读数据时,减 去本次读数据过程中超过连续burst读操作的最大次数的burst读操作数目。本发明技术方案与现有的软件实现的技术相比,直接应用于硬件设备, 易于在硬件设备中移植,与现有的硬件实现的技术相比,硬件结构设计直接 考虑数据包缓存管理,提高了存储器带宽利用率。另外,本发明技术中接口 固定的代码移植,易于在其他相关的数据緩存管理中应用。
图1是本实施例中数据緩存系统的结构示意图;示意图; 图3是图1所示系统中数据緩存表结构示意图; 图4是图1所示系统中数据片緩存的链表方式示意图; 图5是本实施例中数据緩存管理的流程图。
具体实施方式
本发明的主要构思是,数据包在路由交换设备中可以按照如下过程进行 控制接收路由交换设备对输入的数据包做识别后,切分成等字节长度的数据 片,这些数据片的緩存使用链表维护,其中,链表地址与緩存物理位置一一 对应。在緩存数据写入存储器前将数据片暂存,通过在数据緩存表中查询外 部緩存器的数据緩存状态进行写操作,例如,当数据緩存状态为,有全空的 数据片行地址连续空间,则可以通过连续burst写操作将数据包的所有数据片 放入外部緩存器中;当数据緩存状态为,有非全满的数据片行地址,且该数 据片行地址中的连续空间足够写入数据包的所有数据片,则可以将该数据包 的所有数据片插入数据片行地址中连续的空地址片中。其中,如果数据包的数据片个数超过连续burst写操作的最大次数,则在 一次写数据过程中,按照连续burst写操作的最大次数进行连续burst写操作, 而在下一次写数据过程中,再连续burst写操作以将剩余的数据片写完。同时, 在连续整数据包写操作的过程中,保证不在跨列地址的地址空间进行写操作, 因为这样可以提高数据读写带宽利用的性能。数据包写入后,还需要更新队 列指针表、数据緩存表、緩存状态表以及通过链表控制更新链表。而在数据输出(即从外部緩存器中读取数据包)时,外部端口整形以及 流量控制模块通过缓存状态表中的每个队列的緩存状态控制队列数据的读 出。读出緩存中的数据时,要读出一个完整数据包的所有数据片。如果数据 片个数不超过连续burst读操作个数,则正常操作,否则将整个数据包的所有 数据片一次读出,并在下一次读操作中减去本次多余burst读操作的次数(即 超过连续burst读操作的最大次数的数目),并更新队列指针表、数据緩存表、缓存状态表中的相应数据。下面结合附图及具体实施例对本发明技术方案作进一步详细说明。一种路由交换设备,如图1所示,主要包括数据输入控制模块101、队 列指针表模块102、数据緩存表模块103、链表控制模块104、链表存储模块 105、緩存控制模块106、数据输出控制模块108以及緩存状态表模块109。 下面介绍各模块的功能。数据输入控制模块101,用于接收路由交换设备端口输入的数据包,对 该数据包进行包识别后,将该数据包、以及该数据包的包信息(如包长、队 列号等信息)送给緩存控制模块106;緩存控制模块106,用于将数据输入控制模块101发送的数据包切为数 据片,调用数据緩存表模块103中的外部緩存器的数据緩存状态信息并参考 队列指针表102中相关队列的写指针信息,组织外部緩存器(即为图1中的 107)的写时序;以及对外部緩存器中的完整数据包进行读操作,将读、写操 作结果发送给数据緩存表103和緩存状态表109以进行相关信息的更新,以 及将链表存储模块105中链表的更新信息发送给链表控制模块104;其中,緩存控制模块106调用数据緩存表模块103中的信息,获取连续 地址空间^#个完整的数据包的所有数据片,緩存数据片个数达到连续burst 操作数后将数据写入外部緩存器中,并且更新相关的队列指针表、数据緩存 表、緩存状态表,以及将链表信息发送出给链表控制模块104,并且在数据 包输出时由数据緩存表模块获取数据包数据片个数,控制外部緩存器107(即 用于緩存数据包的緩存器)的数据读出并更新队列指针表、数据緩存表、緩 存状态表;在外部数据包的读写操作中,緩存控制模块106读写数据包控制以连续 burst操作次数等分,写操作按照连续burst操作次数执行,如果数据包的数 据片个数超出burst操作次数则只要保证数据片存储地址连续。读操作考虑完 整数据包超出连续burst操作次数则先完成数据包所有数据片读取,在下一次 读操作中连续burst次数减去本次超出次数。链表控制模块104,用于在数据包写入时,将数据片緩存链表指向信息
更新到链表存储才莫块105中,并将该队列的写指针更新到队列指针表模块102 中的相应位置,数据包读出时将队列指针表模块102的读指针指向的读操作 映射的链表控制模块104中队列的链表中内容更新到队列指针表模块102中 的读指针中。
队列指针表才莫块102,用于维护队列指针表,在数据输入时将相应队列 的写指针更新(即更新为当前写入位置的下一凄t据片位置),在数据输出时 将相应队列的读指针更新到链表中的相应的位置(指向的下 一 个数据片位 置)。如果读指针位置超出写指针位置,则说明该队列已经读空,读指针不 用更新;如果是队列第一次写入数据则更新读指针和写指针,读指针为写入 位置,写指针为读指针加1。
其中,本实施例中队列指针表的表结构如图2所示,主要包括所有队列 的读写指针,其中,读写指针和链表存储模块105的地址和外部緩存器中的 緩存位置是一一对应的。
数据緩存表4莫块103,用于维护数据緩存标示表,数据緩存标示表中的 比特位置与外部》爰存器107中的数据片序号一一对应。在彩:据写入时候的写 入地址的获取和写入时序的安排需要参考数据緩存表中的缓存信息。
其中,数据緩存表结构如图3所示,数据緩存表中每个位置的高8比特 做存储地址映射,数值1代表有存储数据;低8比特数据标志数据包的数据 片内容,与高8比特——对应;数值0代表数据包的第一个数据片,数值1 代表数据包的连续^:据片。
如图4所示,是数据片緩存的链表实现方式。数据片链表中的位置指向 包括所有队列的链表指向。整个表中包含每个队列链表内容完全独立。
緩存状态表^^莫块109,用于维护全部队列的緩存状态,在数据包输入、 输出时将相应的操作数据片的个数更新到緩存状态表中,并且提供緩存状态 表的外部查询^妻口。
数据输出控制模块108,是外部接口的控制模块,用于识别外部的读操 作并将操作消息传送给緩存控制模块106。下面介绍上述设备实现数据緩存的过程,如图5所示,包括以下步骤
步骤501:路由交换设备对输入的数据包进行包识别,提取包长等相关 信息;
步骤502:路由交换设备将输入数据包切片后,参考数据緩存表和队列 写指针中的写指针确定数据片写入位置和写入时序,并将所确定的写入地址 以及步骤501中提:f又的包长的信息更新到数据緩存表中;
本实施例中,数据緩存表的结构如图4所示,数据緩存表中每个位置的 高8比特作为存储地址映射,数值1表示有存储数据(即写入有数据片), 数值0表示未写入数据片;低8比特数据标志数据包的数据片个数(即包长 信息),数值O代表数据包的第一个数据片,数值1代表数据包的连续数据 片,其中,^f氐8比特与高8比特一一对应。
步骤503:更新緩存状态表中的该队列相关信息(即更新该队列中的数 据包个数);
步骤504:数据片存储信息更新到存储位置相应的链表中; 该步骤中,数据片存储信息对应的存储位置的链表如图4所示。 步骤505:根据写操作的情况,更新队列指针表中的写指针的值; 步骤506:路由器交换设备进入输出等待状态;
步骤507:路由器交换设备判断是否接收到外部读操作,如果是,则执 行步骤508 ,否则返回步"骤506;
步骤508:获取队列指针表中的读指针;
步骤509:使用读指针将外部存储器中的一个完整数据包的数据片全部 读出;
该步骤中,路由交换设备根据数据緩存表中该数据包的包长信息以及写 入位置,从外部緩存器的相应地址连续读取该数据包的所有数据片,其中, 路由交换设备通过连续续burst读操作将数据包的所有数据片 一次读出,并在 下一次读操作中减去本次多余burst读操作的次数(即超过连续burst读操作的最大次数的数目)。
步骤510:将已经读出的数据在数据緩存表中的相应位置清零(即更新 数据緩存表中外部緩存器的数据緩存状态);
步骤511:将读出数据片的个数更新到相应的緩存状态表中;
步骤512:将已经读走的末尾数据片的链表中的内容更新到相应队列指 针表的读指针中。
从上述实施例中可以看出,本发明技术方案增加了数据操作中读写的多 次burst操作,从而提高了路由交换设备的带宽利用。另夕卜,本发明技术方案 通过burst连续操作改善了数据写时序,并且单数据包读梯:作的数据地址连续 burst操作同样提高了读操作的带宽利用。
当然,本发明还可有多种实施方式,在不背离本发明精神及其实质的情
凡在本发明的精神和原则之内所作的任何修改、等同替换、改进,均应包含 在本发明所附的权利要求的保护范围之内。
权利要求
1、一种数据缓存的方法,其特征在于,该方法包括路由交换设备收到数据包时,若查询外部缓存器的数据缓存状态为,有非全满的数据片行地址,且该非全满的数据片行地址中的连续空间足够存储所述数据包的所有数据片,则将所述数据包的所有数据片播入所述非全满的数据片行地址中,保存所述数据包的包信息和写入的数据片行地址,并更新所述外部缓存器的数据缓存状态。
2、 如权利要求l所述的方法,其特征在于,若所述路由交换设备查询外部緩存器的数据緩存状态为,有全空的连续 的数据片行地址时,则将所述数据包的所有数据片写入所述全空的连续的数 据片行地址中。
3、 如权利要求1或2所述的方法,其特征在于,所述路由交换设备通过连续burst写操作,将所述数据包的数据片连续写 入数据片行地址中,其中,当所述数据包的数据片个数超过连续burst写操作 的最大次数时,所述路由交换设备在每次写数据过程中,按照连续burst写操 作的最大次数进行burst写操作,直到写入所述数据的所有数据片。
4、 如权利要求l或2所述的方法,其特征在于,该方法还包括所述路由交换i殳备接收到读操作时,根据所要读取的数据包的包信息和 写入的数据片行地址,从外部緩存器中读取所述数据包,并更新所述外部緩 存器的数据緩存状态。
5、 如权利要求4所述的方法,其特征在于,所述路由交换设备通过连续burst读操作,读取所述数据包的数据片,其 中,当所述数据包的数据片个数超过连续burst读操作的最大次数时,所述路 由交换设备一次读出所述数据包的所有数据片,并在下一次读数据时,减去 本次读数据过程中超过连续burst读操作的最大次数的burst读操作数目。
6、 一种路由交换设备,其特征在于,该设备包括緩存控制模块和数据 緩存表模块,其中所述緩存控制模块,用于在收到数据包时,若查询数据緩存表模块中外 部緩存器的数据緩存状态为,有非全满的数据片行地址,且该非全满的数据 片行地址中的连续空间足够存储所述数据包的所有数据片时,则将所述数据 包的所有数据片播入所述非全满的数据片行地址中,并将所述数据包的包信息和写入的数据片行地址发送给所述数据緩存表模块;所述数据緩存表模块,用于保存所述援存控制模块发送的写入外部存 储器的数据包的包信息以及写入的数据片行地址,并实时更新所述外部緩存 器的数据緩存状态。
7、 如权利要求6所述的设备,其特征在于,所述緩存控制模块,若查询外部緩存器的数据緩存状态为,有全空的连 续的数据片行地址时,则将所述数据包的所有数据片写入所述全空的连续的 数据片行地址中。
8、 如权利要求6或7所述的设备,其特征在于,所述緩存控制模块,通过连续burst写搡作,将所述数据包的数据片连续 写入数据片行地址中,其中,当所述数据包的数据片个数超过连续burst写搡 作的最大次数时,所述所述緩存控制模块在每次写数据过程中,按照连续 burst写操作的最大次数进行burst写操作,直到写入所述数据的所有数据片。
9、 如权利要求6或7所述的设备,其特征在于,所述緩存控制4莫块,还用于在接收到读操作时,从所述数据緩存表模块 中查询所要读取的数据包的包信息和写入的数据片行地址,从外部緩存器中 读取所述数据包,并将读取结果发送给所述数据緩存表模块;所述数据緩存表模块,用于接收所述緩存控制模块发送的读取结果,根 据所述读取结果更新所述外部緩存器的凄t据緩存状态。
10、 如权利要求9所述的设备,其特征在于,所述緩存控制才莫块,通过连续burst读操作,读取所述数据包的数据片, 其中,当所述数据包的数据片个数超过连续burst读操作的最大次数时,所述 緩存控制模块一次读出所述数据包的所有数据片,并在下一次读数据时,减 去本次读数据过程中超过连续burst读操作的最大次数的burst读操作数目。
全文摘要
本发明公开了一种路由交换设备及其数据缓存的方法,属于网络通信领域。本发明方法包括路由交换设备收到数据包时,若查询外部缓存器的数据缓存状态为,有非全满的数据片行地址,且该非全满的数据片行地址中的连续空间足够存储所述数据包的所有数据片,则将所述数据包的所有数据片播入所述非全满的数据片行地址中,保存所述数据包的包信息和写入的数据片行地址,并更新所述外部缓存器的数据缓存状态。本发明技术方案提高了存储器带宽利用率。
文档编号H04L12/56GK101645846SQ20091016727
公开日2010年2月10日 申请日期2009年9月2日 优先权日2009年9月2日
发明者昶 周, 陈红旗 申请人:中兴通讯股份有限公司