CN101848150A - 维护多播计数器的计数值的方法及装置 - Google Patents
维护多播计数器的计数值的方法及装置 Download PDFInfo
- Publication number
- CN101848150A CN101848150A CN201010158691A CN201010158691A CN101848150A CN 101848150 A CN101848150 A CN 101848150A CN 201010158691 A CN201010158691 A CN 201010158691A CN 201010158691 A CN201010158691 A CN 201010158691A CN 101848150 A CN101848150 A CN 101848150A
- Authority
- CN
- China
- Prior art keywords
- engine
- multicast
- multicast message
- team
- counter
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Multi Processors (AREA)
Abstract
本发明实施例提供了一种维护多播计数器的计数值的方法和装置。该方法主要包括:获得待出队的多播报文,为所述待出队的多播报文分配引擎,并记录操作值,所述操作值用于记录多播报文的出队的数量信息。根据其它的多播报文的出队情况更新所述操作值,根据所述操作值更新多播计数器的计数值。利用本发明,可以在一定程度上缓解数量大、速率快的多播报文对QDR、DDR等通用高速存储器带宽的冲击,并且能够保证系统的报文转发性能。
Description
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种维护多播计数器的计数值的方法及装置。
背景技术
目前,在通信芯片的多播过程中,通常是在创建多播PD(packetdiscriptor,报文描述符)的时候把片外的多播计数器的计数值置为0,将多播报文复制成若干不确定的份数以后,再把复制份数加到多播计数器上。上述复制后的各个多播报文具有相同的指针,上述复制后的多播报文每出队一次,对多播计数器的计数值做减1操作。
对多播计数器的计数值进行一次完整的加/减操作的过程主要包括:向通信芯片中的读仲裁器发出读片外的多播计数器的读请求,在接收到读仲裁器返回的响应后,从片外多播PD中读出多播计数器的计数值。然后,将读出的上述计数值和需要写入的值进行加/减操作,再将得到的结果再写回到多播计数器的计数值。
由于上述多播计数器存放在片外同步静态存储器,例如QDR2 SRAM(Dynamic Random Access Memory,同步静态存储器),从发出读请求到返回多播计数器的计数值之间的延时可达到10个周期左右,将最后得到的结果写回多播计数器中也需要延时,因此对多播计数器一个完整的加/减操作至少需要十几个周期的延时才能完成。
常用的片外QDR2 SRAM的时钟频率为250MHz-400MHz,按照250MHz时钟频率计算,多播计数器的处理速率最多只有250MHz/18=13.888MPPS。在现在网络应用中,4×10G以太网报文的处理要求已经达到60MPPS,POS(SDH上传送IP,IP over SDH)报文达到100MPPS,远大于上面多播计数器的处理速率。所以,上述对多播计数器的计数值进行加/减操作的比较长的延时将造成通信芯片的报文出队性能受到限制。
为解决上述通信芯片的报文出队性能受到限制的问题,现有技术中的一种维护多播计数器的计数值的方法为:利用片内存储器访问快的特点,将多播计数器的计数值缓存在片内。
在实现本发明过程中,发明人发现该方法存在如下问题:由于片内存储器容量受到限制,该方法不能适应多播报文数量大、速率快的情况。
现有技术中的另一种维护多播计数器的计数值的方法为:对同一个多播计数器的计数值进行加/减操作不允许并行交织处理,只有在上一个加/减操作完成以后,才能进行下一个加/减操作。
在实现本发明过程中,发明人发现该方法存在如下问题:在实际应用中,同一个多播报文有可能复制到不同的队列,完全可能并行出队,要是出于对多播计数器维护简单而串行处理,就会把通信芯片的多播报文的转发性能减到非常低,无法满足性能要求。
发明内容
本发明的实施例提供了一种维护多播计数器的计数值的方法及装置,以适应多播报文数量大、速率快的情况,并且系统的多播报文的转发性能。
一种维护多播计数器的计数值的方法,包括:
获得待出队的多播报文;
为所述待出队的多播报文分配引擎,并记录操作值,所述操作值用于记录多播报文的出队的数量信息;
根据其它的多播报文的出队情况更新所述操作值;
根据所述操作值更新多播计数器的计数值。
一种维护多播计数器的计数值的装置,包括:
引擎分配模块,用于获得待出队的多播报文,为所述待出队的多播报文分配引擎;
操作值累加模块,用于给所述待出队的多播报文记录操作值,根据其它的多播报文的出队情况更新所述操作值,所述操作值用于记录多播报文的出队数量的信息;
操作值写入模块,用于根据所述操作值来更新多播计数器的计数值。
由上述本发明的实施例提供的技术方案可以看出,本发明实施例通过将具有相同指针的多个多播报文对同一个多播计数器的计数值的操作值进行累加,可以在一定程度上缓解数量大、速率快的多播报文对QDR、DDR等通用高速存储器带宽的冲击,并且能够保证系统的报文转发性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种维护多播计数器的计数值的方法的处理流程图;
图2为本发明实施例二提供的一种维护多播计数器的计数值的方法的处理流程图;
图3为本发明实施例提供了一种维护多播计数器的计数值的装置的具体实现结构图。
具体实施方式
在本发明实施例中,将具有相同指针的多个多播报文对同一个多播计数器的计数值的操作值进行累加。具体为:在通信设备的内部设置内容可寻址的寄存器,该寄存器中设置一定数量的引擎。给具有相同指针的多个多播报文分配同一个引擎,在所述寄存器中保存所述多个多播报文的指针和所述分配的引擎的引擎号的对应信息,并且,在所述寄存器中的引擎缓存中以所述分配的引擎的引擎号标记一个地址,在该地址上保存所述多个多播报文对同一个多播计数器的计数值的操作值的累加值。
获取所述多播计数器的计数值,将该计数值和所述累加值相加,将获得的结果再写入到所述多播计数器的计数值中。
为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。
实施例一
该实施例提供的一种维护多播计数器的计数值的方法的处理流程如图1所示,本发明实施例所提供的维护多播计数器的计数值的方法,作用于一种通信设备中,所述通信设备中包括通信芯片,以及设于通信芯片外的多播计数器,本发明实施例在通信芯片的内部设置CAM(内容可寻址寄存器),该CAM中设置一定数量的引擎,比如,十几个引擎。上述CAM中的引擎可以分配给多播报文。
本发明实施例所提供的维护多播计数器的计数值的方法包括如下处理步骤:
步骤11、获得待出队的多播报文。
当一个多播报文需要在出队之前,首先查看CAM中有没有空闲引擎,如果没有空闲引擎,上述多播报文就停止出队;如果有空闲引擎,则上述多播报文可以出队,获得去CAM匹配报文的指针的资格。当然,本发明实施例中所述的空闲引擎包括已经为所述多播报文分配过引擎,以及有引擎处于未分配状态这两种情况。
上述多播报文的指针在多播报文生成后就形成了,在本发明实施例中,所述多播报文的指针可以采用所述多播报文的目的地址,在其他可选择的实施例中,所述指针也可以根据所述多播报文的其他信息映射得到,比如查表。
步骤12、判断是否已经为所述多播报文分配引擎,如果是的话,执行步骤15;否则,执行步骤13。
在本发明实施例中,在上述通信芯片的CAM中还保存有各个引擎的匹配信息,如果所述CAM中的某一引擎已经被某一多播报文所占用,则所述CAM中就会保存有所述多播报文的指针与所述被占用的引擎的引擎号的对应信息,从而在本发明实施例中,判断CAM是否已经为多播报文分配引擎可以通过查找多播报文的指针是否已经被包含在所述对应信息中来进行。
步骤13、为多播报文分配一个空闲的引擎,在CAM里对应保存上述多播报文的指针和上述引擎的引擎号之间的对应信息,并为所述引擎保存一个操作值。
当上述多播报文的指针在CAM中保存的上述对应信息中没有匹配上时,给上述多播报文分配一个空闲的引擎,在CAM里对应保存上述多播报文的指针和上述引擎的引擎号之间的对应信息。然后,在CAM中的缓存空间中用上述多播报文的指针对应的引擎的引擎号标记一个地址,在该地址上保存一个操作值。
所述操作值用于表示所述多播报文的出队情况,并对多播计数器的计数值进行更新。在本发明实施例中,在将多播报文出队之前,已经将多播报文复制一定数量的份数,比如为N份。并且将多播报文复制的份数写入到多播计数器的计数值中。每个报文出队,需要完成将多播计数器的计数值减一的操作,直到最后一个报文出队,多播计数器的计数值被减为0。因此,开始由于只有一个报文需要出队,上述操作值的初始值取-1。本发明实施例可以并行处理多个报文出队,在多播报文不断出队的情况下,所述操作值也会不断的更新,比如-1、-2、-3等等。
步骤14、从片外存储器返回的多播报文中提取出多播计数器的计数值,根据所述计数值更新所述操作值,将更新后的操作值再写回到引擎缓存中。
在完成为所述引擎保存所述操作值后,需要读出多播计数器的计数值,将所述操作值更新到多播计数器的计数值中,以及时释放所述引擎。更新所述多播报文的计数器的计数值,可以先将所述计数值读取出来,根据所述操作值进行更新后,再将更新后的计数值写回到计数器中。在本发明实施例中,由于所述操作值采用-1、-2、-3这样的直接描述出队状况的值,因此可以直接将所述操作值与所述计数值相加,且相加后将所述操作值清0,以待新的多播报文准备出队后再重新计数。
将上述多播报文的指针对应的引擎的引擎号设置在上述多播报文的伴随信息里,将上述多播报文从通信芯片发送给保存多播计数器的片外存储器,该片外存储器可以为QDR、SDRAM或DDR等通用高速存储器。
片外存储器接收到上述多播报文后,将多播计数器的计数值设置在上述多播报文的PD中,然后,将上述多播报文返回给通信芯片。
通信芯片接收到上述片外存储器返回的多播报文后,从多播报文的PD中提取出多播计数器的计数值。然后,用多播报文的伴随信息里的上述引擎的引擎号所标记的地址去查询引擎缓存,获取相应的操作值。如果在上述读取多播计数器的计数值的过程中,没有其它的多播报文需要出队,上述操作值没有被更新,则上述操作值为-1;如果有其它的多播报文需要出队,则上述操作值可能被更新为-2、-3等等。
通信芯片用上述多播计数器的计数值加上上述相应的操作值,即将上述多播计数器的计数值减1、2、3等等,将获得的结果再保存在引擎缓存中的上述引擎的引擎号所标记的地址上,即代替原来所保存的操作值。
对多播计数器的计数值减1,实际上是将多播计数器的计数值加17’h1ffff,效果完全一样,本发明实施例将对多播计数器的计数值的加减操作全统一成加操作,简化了处理流程。执行步骤16。
步骤15、以上述多播报文的指针对应的引擎的引擎号去查询引擎缓存,获取相应的操作值,将该操作值更新后,将获得的结果再写回到引擎缓存中。
当上述多播报文的指针在CAM中匹配上时,则说明具有相同指针的其他多播报文已经去读片外多播计数器的计数值或者已经读回片外计数器的计数值,但是还没有完成写入。
获取在CAM中保存的上述多播报文的指针对应的引擎的引擎号,用该对应的引擎号所标记的地址去查询引擎缓存,获取相应的操作值,将该操作值加上减1以后,将获得的结果再写入到上述对应的引擎号所标记的地址中。
当有多个多播报文接连出队时,上述步骤15的处理过程可以重复不断地被执行,从而完成将多个多播报文对多播计数器的指数值的操作值进行合并。执行步骤16。
步骤16、向仲裁模块发出修改多播计数器的计数值的写请求,在上述写请求被仲裁模块响应以后,将引擎缓存中保存的操作值写入到多播计数器中,然后释放掉所述引擎。
向通信芯片中的仲裁模块发出修改多播计数器的计数值的写请求,在该写请求中携带上述多播报文的指针对应的引擎的引擎号。
通信芯片在上述写请求被仲裁模块响应以后,用上述写请求中携带的引擎的引擎号所标记的地址去查询引擎缓存,获取相应的操作值。在上述发送写请求、写请求被仲裁模块响应的过程中,如果有其它的多播报文需要出队,则上述操作值可能被继续更新。
将读取的操作值写入到片外存储器中的多播计数器中,作为多播计数器的新的计数值。
然后,在引擎缓存中清除掉上述保存的多播报文的指针和引擎的对应信息,清除掉为所述引擎保存的所述操作值。即释放上述多播报文的指针对应的引擎,该引擎以后就可以被其他多播报文使用。
最后,上述芯片将上述多播报文按照其目的地址发送出去,将上述多播报文出队。
需要理解的是,本发明实施例通过具体实施例来描述如何通过操作值来更新计数器的技术值,但是在实际应用的过程中,所述计数器的计数值的更新方法并不仅限于本发明实施例中所提供的方法。
该实施例通过引入内容可寻址的CAM来合并处理多个多播报文对对同一个多播计数器的计数值的维护操作,可以在一定程度上缓解数量大、速率快的多播报文对QDR、DDR等通用高速存储器带宽的冲击,并且能够保证系统的报文转发性能。
实施例二
本发明实施例在通信芯片的内部设置CAM,该CAM中设置一定数量的引擎,比如,10几个引擎。上述CAM中的引擎可以分配给多播报文。
该实施例提供的一种维护多播计数器的计数值的方法的处理流程如图2所示,包括如下处理步骤:
步骤21、将选定的多播报文复制一定数量的份数N,为多播报文分配一个空闲的引擎,在CAM里对应保存上述多播报文的指针和对应的引擎的引擎号,并且为所述引擎保存一个操作值。
当没有多播报文需要出队,并且CAM中有空闲引擎时,则通信芯片中的报文复制模块按照实际需要,将选定的多播报文复制一定数量的份数N。
给上述多播报文分配一个空闲的引擎,在CAM里对应保存上述多播报文的指针和上述引擎的引擎号。
在CAM中的引擎缓存中用上述多播报文的指针对应的引擎的引擎号标记一个地址,在该地址上保存一个操作值,在本发明实施例中,所述操作值为上述多播报文复制的份数N。
所述操作值用于对多播计数器的计数值进行更新,在本发明实施例中,将多播报文复制一定数量的份数,比如为N份。并且将多播报文复制的份数写入到多播计数器的计数值中。
步骤22、从片外存储器中接收所述多播报文的计数器的计数值。
然后,向片外的片外存储器发送读多播计数器的计数值的读请求,在接收到片外存储器返回的响应后,从该响应中提取出多播计数器的计数值。
步骤23、从片外存储器返回的多播报文中提取出多播计数器的计数值,根据所述计数值更新所述操作值,将更新后的操作值写回到引擎缓存中。
用上述多播报文的指针对应的引擎的引擎号所标记的地址去查询引擎缓存,获取相应的操作值(即为N)。
通信芯片用上述多播计数器的计数值加上上述相应的操作值,即将上述多播计数器的计数值加上N,将获得的结果再写入到上述引擎的引擎号所标记的地址中。
步骤24、向仲裁模块发出修改多播计数器的计数值的写请求,在上述写请求被仲裁模块响应以后,将引擎缓存中保存的操作值写入到多播计数器中。在引擎缓存中清除掉上述保存的多播报文的指针和引擎的对应信息。
向通信芯片中的仲裁模块发出修改多播计数器的计数值的写请求,在该写请求中携带上述多播报文的指针对应的引擎的引擎号。
通信芯片在上述写请求被仲裁模块响应以后,用上述写请求中携带的引擎的引擎号去查询引擎缓存,获取相应的操作值,将该操作值写入到片外存储器中的多播计数器中,作为多播计数器的新的计数值。
然后,在引擎缓存中清除掉上述保存的多播报文的指针和引擎的对应信息,清除掉为所述引擎保存的所述操作值。即释放上述多播报文的指针对应的引擎,该引擎以后就可以被其他多播报文使用。
该实施例通过引入CAM来将多播报文复制的份数N写入到多播计数器中,可以保证多播计数器的计数正确性,可以保证最后一个多播报文出队的时候,多播计数器的计数值为1,从而保证保证系统正确回收多播报文的指针,不会造成内存泄漏。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
本发明实施例还提供了一种维护多播计数器的计数值的装置,其具体实现结构如图3所示,具体可以包括:
引擎分配模块31,用于获得待出队的多播报文,为所述待出队的多播报文分配引擎;
操作值累加模块32,用于给所述待出队的多播报文记录操作值,根据其它的多播报文的出队情况更新所述操作值,所述操作值用于记录多播报文的出队数量的信息;
操作值写入模块33,用于根据所述操作值来更新多播计数器的计数值。
所述的装置还可以包括:
寄存器处理模块34,用于在通信设备的内部设置内容可寻址的寄存器,该寄存器中设置一定数量的引擎,在给所述待出队的多播报文分配一个引擎后,在所述寄存器中保存所述待出队的多播报文的指针和所述分配的引擎的引擎号的对应信息,并且,在所述寄存器中的引擎缓存中以所述分配的引擎的引擎号标记一个地址,在该地址上保存所述待出队的多播报文对多播计数器的计数值的操作值。
所述的操作值累加模块32具体可以包括:判断处理模块321、第一处理模块322和第二处理模块323,
所述判断处理模块321,用于当其它的多播报文需要出队时,判断所述寄存器中保存的所述对应信息中是否包含所述其它的多播报文的指针,如果没有包含,则执行所述第一处理模块;否则,执行所述第二处理模块;
所述第一处理模块322,用于给所述其它的多播报文分配一个引擎,在所述寄存器中保存所述其它的多播报文的指针和所述分配的引擎的引擎号的对应信息,在所述寄存器中以所述分配的引擎的引擎号标记一个地址,在该地址上保存所述其它的多播报文对多播计数器的计数值的操作值;
所述第二处理模块323,用于根据所述其它的多播报文的指针对应的引擎的引擎号所标记的地址查询引擎缓存,获取相应的操作值,将该操作值加上所述其它的多播报文对多播计数器的计数值的操作值,将获得的结果再写回到所述引擎缓存中的所述其它的多播报文的指针对应的引擎的引擎号所标记的地址上。
所述的操作值写入模块具体可以包括:
计数值获取模块331,用于将给所述待出队的多播报文分配的引擎的引擎号携带在所述待出队的多播报文中后,将所述待出队的多播报文从通信设备发送给保存多播计数器的片外存储器,接收到所述片外存储器返回的所述待出队的多播报文后,从所述返回的待出队的多播报文的报文描述符中提取出多播计数器的计数值;
累加处理模块332,用于根据所述待出队的多播报文中携带的引擎的引擎号所标记的地址查询引擎缓存,获取相应的操作值,将该操作值和所述多播计数器的计数值相加,将获得的结果再写入到所述引擎缓存中的所述待出队的多播报文的指针对应的引擎的引擎号所标记的地址上;
写入处理模块333,用于向通信设备中的仲裁模块发出修改多播计数器的计数值的写请求,在该写请求被仲裁模块响应以后,根据所述待出队的多播报文中携带的引擎的引擎号所标记的地址查询引擎缓存,获取相应的操作值,将该操作值写入到片外存储器中的多播计数器中,作为多播计数器的新的计数值。
所述的操作值写入模块还可以包括:
引擎释放模块334,用于将所述待出队的多播报文出队,在引擎缓存中清除掉保存的所述待出队的多播报文的指针和引擎的对应信息,清除掉为所述待出队的多播报文中携带的引擎保存的操作值。
综上所述,本发明实施例通过引入内容可寻址的CAM来合并处理时序上非常发散的对同一个计数器的计数值的维护操作,可以在一定程度上缓解数量大、速率快的多播报文对QDR、DDR等通用高速存储器带宽的冲击,并且能够保证系统的报文转发性能。
本发明实施例可以保证最后一个多播报文出队的时候,多播计数器的计数值为1,从而保证多播计数器的计数正确性,保证系统正确回收多播报文的指针,不会造成内存泄漏。
本发明实施例仅用片内较少的寄存器资源,多播计数器还是使用片外QDR、DDR等通用高速存储器资源,可以最大程度利用片外存储器的存储资源。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (10)
1.一种维护多播计数器的计数值的方法,其特征在于,包括:
获得待出队的多播报文;
为所述待出队的多播报文分配引擎,并记录操作值,所述操作值用于记录多播报文的出队的数量信息;
根据其它的多播报文的出队情况更新所述操作值;
根据所述操作值更新多播计数器的计数值。
2.根据权利要求1所述的维护多播计数器的方法,其特征在于,所述的方法还包括:
在通信设备的内部设置内容可寻址的寄存器,该寄存器中设置一定数量的引擎。
3.根据权利要求2所述的维护多播计数器的计数值的方法,其特征在于,所述的为所述多播报文分配引擎,并记录操作值,所述操作值用于记录多播报文的出队的数量信息,包括:
给所述待出队的多播报文分配一个引擎后,在所述寄存器中保存所述待出队的多播报文的指针和所述分配的引擎的引擎号的对应信息,并且,在所述寄存器中的引擎缓存中以所述分配的引擎的引擎号标记一个地址,在该地址上保存所述待出队的多播报文对多播计数器的计数值的操作值。
4.根据权利要求3所述的维护多播计数器的方法,其特征在于,所述的根据其它的多播报文的出队情况更新所述操作值,包括:
当其它的多播报文需要出队时,判断所述寄存器中保存的所述对应信息中是否包含所述其它的多播报文的指针,如果没有包含,给所述其它的多播报文分配一个引擎,在所述寄存器中保存所述其它的多播报文的指针和所述分配的引擎的引擎号的对应信息,在所述寄存器中以所述分配的引擎的引擎号标记一个地址,在该地址上保存所述其它的多播报文对多播计数器的计数值的操作值;
如果已经包含,则根据所述其它的多播报文的指针对应的引擎的引擎号所标记的地址查询引擎缓存,获取相应的操作值,将该操作值加上所述其它的多播报文对多播计数器的计数值的操作值,将获得的结果再写回到所述引擎缓存中的所述其它的多播报文的指针对应的引擎的引擎号所标记的地址上。
5.根据权利要求1至4任一项所述的维护多播计数器的计数值的方法,其特征在于,所述的根据所述操作值更新多播计数器的计数值,包括:
将给所述待出队的多播报文分配的引擎的引擎号携带在所述待出队的多播报文中后,将所述待出队的多播报文从通信设备发送给保存多播计数器的片外存储器,接收到所述片外存储器返回的所述待出队的多播报文后,从所述返回的待出队的多播报文的报文描述符中提取出多播计数器的计数值;
根据所述待出队的多播报文中携带的引擎的引擎号所标记的地址查询引擎缓存,获取相应的操作值,将该操作值和所述多播计数器的计数值相加,将获得的结果再写入到所述引擎缓存中的所述待出队的多播报文的指针对应的引擎的引擎号所标记的地址上;
向通信设备中的仲裁模块发出修改多播计数器的计数值的写请求,在该写请求被仲裁模块响应以后,根据所述待出队的多播报文中携带的引擎的引擎号所标记的地址查询引擎缓存,获取相应的操作值,将该操作值写入到片外存储器中的多播计数器中,作为多播计数器的新的计数值;
将所述待出队的多播报文出队,在引擎缓存中清除掉保存的所述待出队的多播报文的指针和引擎的对应信息,清除掉为所述待出队的多播报文中携带的引擎保存的操作值。
6.一种维护多播计数器的计数值的装置,其特征在于,包括:
引擎分配模块,用于获得待出队的多播报文,为所述待出队的多播报文分配引擎;
操作值累加模块,用于给所述待出队的多播报文记录操作值,根据其它的多播报文的出队情况更新所述操作值,所述操作值用于记录多播报文的出队数量的信息;
操作值写入模块,用于根据所述操作值来更新多播计数器的计数值。
7.根据权利要求6所述的维护多播计数器的计数值的装置,其特征在于,所述的装置还包括:
寄存器处理模块,用于在通信设备的内部设置内容可寻址的寄存器,该寄存器中设置一定数量的引擎,在给所述待出队的多播报文分配一个引擎后,在所述寄存器中保存所述待出队的多播报文的指针和所述分配的引擎的引擎号的对应信息,并且,在所述寄存器中的引擎缓存中以所述分配的引擎的引擎号标记一个地址,在该地址上保存所述待出队的多播报文对多播计数器的计数值的操作值。
8.根据权利要求7所述的维护多播计数器的计数值的装置,其特征在于,所述的操作值累加模块包括:判断处理模块、第一处理模块和第二处理模块,
所述判断处理模块,用于当其它的多播报文需要出队时,判断所述寄存器中保存的所述对应信息中是否包含所述其它的多播报文的指针,如果没有包含,则执行所述第一处理模块;否则,执行所述第二处理模块;
所述第一处理模块,用于给所述其它的多播报文分配一个引擎,在所述寄存器中保存所述其它的多播报文的指针和所述分配的引擎的引擎号的对应信息,在所述寄存器中以所述分配的引擎的引擎号标记一个地址,在该地址上保存所述其它的多播报文对多播计数器的计数值的操作值;
所述第二处理模块,用于根据所述其它的多播报文的指针对应的引擎的引擎号所标记的地址查询引擎缓存,获取相应的操作值,将该操作值加上所述其它的多播报文对多播计数器的计数值的操作值,将获得的结果再写回到所述引擎缓存中的所述其它的多播报文的指针对应的引擎的引擎号所标记的地址上。
9.根据权利要求6、7或8所述的维护多播计数器的计数值的装置,其特征在于,所述的操作值写入模块包括:
计数值获取模块,用于将给所述待出队的多播报文分配的引擎的引擎号携带在所述待出队的多播报文中后,将所述待出队的多播报文从通信设备发送给保存多播计数器的片外存储器,接收到所述片外存储器返回的所述待出队的多播报文后,从所述返回的待出队的多播报文的报文描述符中提取出多播计数器的计数值;
累加处理模块,用于根据所述待出队的多播报文中携带的引擎的引擎号所标记的地址查询引擎缓存,获取相应的操作值,将该操作值和所述多播计数器的计数值相加,将获得的结果再写入到所述引擎缓存中的所述待出队的多播报文的指针对应的引擎的引擎号所标记的地址上;
写入处理模块,用于向通信设备中的仲裁模块发出修改多播计数器的计数值的写请求,在该写请求被仲裁模块响应以后,根据所述待出队的多播报文中携带的引擎的引擎号所标记的地址查询引擎缓存,获取相应的操作值,将该操作值写入到片外存储器中的多播计数器中,作为多播计数器的新的计数值。
10.根据权利要求9所述的维护多播计数器的计数值的装置,其特征在于,所述的操作值写入模块还包括:
引擎释放模块,用于将所述待出队的多播报文出队,在引擎缓存中清除掉保存的所述待出队的多播报文的指针和引擎的对应信息,清除掉为所述待出队的多播报文中携带的引擎保存的操作值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010158691XA CN101848150B (zh) | 2010-04-26 | 2010-04-26 | 维护多播计数器的计数值的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010158691XA CN101848150B (zh) | 2010-04-26 | 2010-04-26 | 维护多播计数器的计数值的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101848150A true CN101848150A (zh) | 2010-09-29 |
CN101848150B CN101848150B (zh) | 2011-12-28 |
Family
ID=42772614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010158691XA Expired - Fee Related CN101848150B (zh) | 2010-04-26 | 2010-04-26 | 维护多播计数器的计数值的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101848150B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104124962A (zh) * | 2013-04-25 | 2014-10-29 | 联发科技股份有限公司 | 多阶复制计数器存储装置及用来管理多播封包处理的方法 |
CN104683265A (zh) * | 2015-02-27 | 2015-06-03 | 南京中新赛克科技有限责任公司 | 一种用于100g接口的大容量精确包计数方法 |
CN105471837A (zh) * | 2015-11-09 | 2016-04-06 | 北京捷思锐科技股份有限公司 | 信息处理方法及装置 |
CN105608050A (zh) * | 2015-12-31 | 2016-05-25 | 华为技术有限公司 | 数据存储方法及系统 |
US9521007B2 (en) | 2013-04-25 | 2016-12-13 | Mediatek Inc. | Multi-level replication counter storage device for multicast packet processing and related method for managing multicast packet processing |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1411211A (zh) * | 2002-04-17 | 2003-04-16 | 华为技术有限公司 | 以太网交换芯片输出队列管理调度方法和装置 |
JP2006246464A (ja) * | 2005-02-28 | 2006-09-14 | Samsung Electronics Co Ltd | ホームゲートウェイのネットワークアドレス変換方法の改善を通じたデータ伝送方法およびそのシステム |
CN101594302A (zh) * | 2009-07-01 | 2009-12-02 | 华为技术有限公司 | 数据出队的方法及装置 |
-
2010
- 2010-04-26 CN CN201010158691XA patent/CN101848150B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1411211A (zh) * | 2002-04-17 | 2003-04-16 | 华为技术有限公司 | 以太网交换芯片输出队列管理调度方法和装置 |
JP2006246464A (ja) * | 2005-02-28 | 2006-09-14 | Samsung Electronics Co Ltd | ホームゲートウェイのネットワークアドレス変換方法の改善を通じたデータ伝送方法およびそのシステム |
CN101594302A (zh) * | 2009-07-01 | 2009-12-02 | 华为技术有限公司 | 数据出队的方法及装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104124962A (zh) * | 2013-04-25 | 2014-10-29 | 联发科技股份有限公司 | 多阶复制计数器存储装置及用来管理多播封包处理的方法 |
US9521007B2 (en) | 2013-04-25 | 2016-12-13 | Mediatek Inc. | Multi-level replication counter storage device for multicast packet processing and related method for managing multicast packet processing |
CN104124962B (zh) * | 2013-04-25 | 2017-07-07 | 联发科技股份有限公司 | 多阶复制计数器存储装置及用来管理多播封包处理的方法 |
CN104683265A (zh) * | 2015-02-27 | 2015-06-03 | 南京中新赛克科技有限责任公司 | 一种用于100g接口的大容量精确包计数方法 |
CN104683265B (zh) * | 2015-02-27 | 2020-05-01 | 南京中新赛克科技有限责任公司 | 一种用于100g接口的大容量精确包计数方法 |
CN105471837A (zh) * | 2015-11-09 | 2016-04-06 | 北京捷思锐科技股份有限公司 | 信息处理方法及装置 |
CN105608050A (zh) * | 2015-12-31 | 2016-05-25 | 华为技术有限公司 | 数据存储方法及系统 |
US10261694B2 (en) | 2015-12-31 | 2019-04-16 | Huawei Technologies Co., Ltd. | Data storage method and system |
Also Published As
Publication number | Publication date |
---|---|
CN101848150B (zh) | 2011-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107967124B (zh) | 一种分布式持久性内存存储系统及方法 | |
JP3598321B2 (ja) | 異なる周波数で動作するバス間でやりとりされるバッファリングデータ | |
CN104077084B (zh) | 分布式随机访问文件系统及其访问控制方法 | |
US20160132541A1 (en) | Efficient implementations for mapreduce systems | |
CN101848150B (zh) | 维护多播计数器的计数值的方法及装置 | |
US20050138276A1 (en) | Methods and apparatus for high bandwidth random access using dynamic random access memory | |
CN102437929B (zh) | 队列管理中的数据出队方法及装置 | |
CN105701219B (zh) | 一种分布式缓存的实现方法 | |
CN102063406B (zh) | 用于多核处理器的网络共享Cache及其目录控制方法 | |
CN101533408A (zh) | 一种海量数据的处理方法及处理装置 | |
CN106066890B (zh) | 一种分布式高性能数据库一体机系统 | |
CN102549552A (zh) | 用于处理流感知网络节点中的数据分组的方法 | |
CN106325758B (zh) | 一种队列存储空间管理方法及装置 | |
CN101231619A (zh) | 一种基于非连续页的动态内存管理方法 | |
CN106095328A (zh) | 每个周期具有一个读端口和一个或多个写端口的多组存储器 | |
US20230195633A1 (en) | Memory management device | |
CN103838853A (zh) | 一种基于不同存储介质的混合文件系统 | |
CN110750372B (zh) | 基于共享内存的日志系统及日志管理方法 | |
CN103577513A (zh) | 藉延迟节点实例化以缓存xml信息集的系统和/或方法 | |
US20120331083A1 (en) | Receive queue models to reduce i/o cache footprint | |
US20090002864A1 (en) | Memory Controller for Packet Applications | |
US20080229333A1 (en) | Method, System And Storage Medium For Implementing A Message Board Cache System | |
CN108139882A (zh) | 针对网络装置实施阶层分布式链接列表的系统及方法 | |
CN102945213A (zh) | 一种基于fpga的乱序内存控制器及其实现方法 | |
CN113032162B (zh) | 一种基于共享内存备份机制的多进程通讯方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111228 Termination date: 20190426 |