CN105630712B - 计数器及计数方法 - Google Patents
计数器及计数方法 Download PDFInfo
- Publication number
- CN105630712B CN105630712B CN201410591463.XA CN201410591463A CN105630712B CN 105630712 B CN105630712 B CN 105630712B CN 201410591463 A CN201410591463 A CN 201410591463A CN 105630712 B CN105630712 B CN 105630712B
- Authority
- CN
- China
- Prior art keywords
- counting
- module
- counter
- entry
- poll
- 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
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K21/00—Details of pulse counters or frequency dividers
- H03K21/08—Output circuits
- H03K21/12—Output circuits with parallel read-out
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/22—Handling requests for interconnection or transfer for access to input/output bus using successive scanning, e.g. polling
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K21/00—Details of pulse counters or frequency dividers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/08—Allotting numbers to messages; Counting characters, words or messages
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
Abstract
本发明公开了一种计数器,包括:计算模块和N个计数模块,每个计数模块中包括多个对应不同计数条目的计数空间,同一计数条目在不同计数模块中计数空间的地址相同;其中,所述计数模块,用于响应一个计数申请源的计数申请,为计算模块提供用于计算的值;所述计算模块,用于读取同一计数条目在不同计数模块的值,将读取到的值进行累计计算,得到所述计数条目的总计数值;所述N为不小于1的整数。本发明还同时公开了一种计数方法。
Description
技术领域
本发明涉及集成电路设计领域,尤其涉及一种计数器及计数方法。
背景技术
在集成电路设计领域中,计数器是最常见的电路器件之一,一般常见的有寄存器搭建的计数器、以及片内随机存取存储器(Random Access Memory,RAM)搭建的计数器。
其中,对于采用寄存器搭建的计数器,每个计数器可以同时响应多个计数申请源,而且每个计数刷新速率很快,可以达到一个时钟周期内刷新一次(1次/clk),但缺点是寄存器在芯片设计中成本高昂,不适宜大规模使用。
对于采用片内RAM搭建的计数器,可以搭建计数条目规模比较大的计数器,由于片内RAM成本相对较低,目前芯片中经常会用到几K甚至几十K的统计计数RAM。目前,对片内RAM搭建的计数器一般采用如下步骤进行计数:先从RAM中选中需要计数的条目,读出上次计数值;再将读出的计数值与申请的计数步长进行加法或减法操作,得到当次计数的结果;之后将当次计数结果写入到RAM中对应的条目中。
从上述步骤可以发现,这一组计数条目必须共用同一组计数申请源,且对RAM中的一个条目进行计数操作。那么,基于电路时序考虑,至少需要四拍(即四个时钟周期)才能完成,虽然利用流水线技术可以加快这一处理速率,但是需要考虑RAM器件的读写性能限制。
综上,当前缺少一种既经济又快速的能够响应多个计数条目的计数申请的计数器。
发明内容
为解决现有存在的技术问题,本发明实施例期望提供一种计数器及计数方法,能适应计数条目较多且计数申请很快的应用场合。
本发明实施例的技术方案是这样实现的:
本发明实施例提供一种计数器,该计数器包括:计算模块和N个计数模块,每个计数模块中包括多个对应不同计数条目的计数空间,同一计数条目在不同计数模块中计数空间的地址相同;其中,
所述计数模块,用于响应一个计数申请源的计数申请并进行计数,为计算模块提供用于计算的值;
所述计算模块,用于读取同一计数条目在不同计数模块的值,将读取到的值进行累计计算,得到所述计数条目的总计数值;
所述N为不小于1的整数。
上述方案中,所述计数器还包括:
累积模块,包括多个对应不同计数条目的累积空间,用于获取并存储对一个以上计数模块的累积处理结果,并供计算模块读取所述的累积处理结果;
所述计数模块,还用于为累积模块提供用于进行累积处理的计数值;
所述计算模块,还用于读取所述累积模块中计数条目的累积处理结果,将所述累积处理结果累计入对应计数条目的总计数值。
上述方案中,所述计数模块包括:L个轮询计数子模块;其中,
轮询计数子模块,用于在自身的计数周期内响应计数申请源的计数申请并进行计数,并用于在自身的非计数周期内响应非计数申请源的读写操作;
所述L为不小于2的整数。
上述方案中,所述计数模块包括:计数单元和备份单元;其中,
所述计数单元,用于响应一个计数申请源的计数申请并进行计数,与备份单元共用一个写总线;
所述备份单元,用于与计数单元保持数据同步,并供所述计算模块或所述累积模块读取数据。
上述方案中,所述轮询计数子模块包括:
轮询计数单元,用于在所述轮询计数子模块的计数周期内响应计数申请源的计数申请,在所述轮询计数子模块的非计数周期内响应非计数申请源的读写操作,与轮询备份单元共用一个写总线;
轮询备份单元,用于与轮询计数单元保持数据同步,并供所述计算模块或累积模块读取数据。
本发明实施例还提供一种计数方法,对每个计数申请源分配一个计数模块,并在每个计数模块中为不同的计数条目分配各自的计数空间,同一计数条目在不同计数模块中计数空间的地址相同;所述方法还包括:
各计数模块响应对应的计数申请源的计数申请并进行计数;
读取同一计数条目在不同计数模块的值,将读取到的值进行累计计算,得到所述计数条目的总计数值。
上述方案中,所述方法还包括:
针对同一计数条目,读取一个以上所述计数模块的计数值并进行累积处理;
将所述累积处理结果存储于累积模块中所述计数条目对应的累积空间,以供计算模块读取;
对已进行累积处理的计数模块进行清零操作;
所述累积处理,是指将计数模块中计数条目的计数值与累积模块中所述计数条目对应的累积值进行累计计算,得到累积处理结果。
上述方案中,所述方法还包括:
为每个计数模块分配L个轮询计数子模块;
使每个轮询子模块在自身的计数周期内响应计数申请源的计数申请并进行计数,并在自身的非计数周期内响应非计数申请源的读写操作;
所述L为不小于2的整数。
上述方案中,所述非计数申请源的读写操作包括:清零操作。
上述方案中,所述方法还包括:
为每个计数模块或轮询计数子模块分配计数单元和备份单元;
使计数单元响应一个计数申请源的计数申请并进行计数,与备份单元共用一个写总线;
使备份单元与计数单元保持数据同步,并供所述计算模块或所述累积模块读取数据。
本发明实施例所提供的计数器及计数方法,每个计数模块对应一个计数申请源,分别响应对应计数申请源的计数申请并计数;同时,引入备份计数单元或轮询计数子模块,实现计数模块读写带宽的扩展,从而可适应大规模大速率的计数需求。
附图说明
图1为现有一种计数器的组成结构示意图;
图2为现有另一种计数器的组成结构示意图;
图3为本发明实施例提供的一种计数器的组成结构示意图;
图4为本发明实施例提供的另一种计数器的组成结构示意图;
图5为本发明提供的一种计数器中轮询计数子模块的组成结构示意图;
图6为本发明提供的一种交换机芯片中端口数据包统计计数器组成结构示意图;
图7为本发明提供的一种GPON芯片中WRED模块的统计计数器的组成结构示意图;
图8为本发明提供的一种路由芯片中的队列缓存管理模块统计计数器的组成结构示意图。
具体实施方式
为了更清楚地说明本发明实施例和技术方案,下面将结合附图及实施例对本发明的技术方案进行更详细的说明,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明的实施例,本领域普通技术人员在不付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,常用的片内RAM有1wr、1w1r以及1wr1wr型RAM,对于1wr型的单端口RAM,在同一个时钟内读写不能同时操作,那么,即使采用流水线技术,最快也只能两拍对计数RAM中的一个条目进行计数操作;对于1w1r型RAM,在同一个时钟内读写能同时操作,采用流水线技术,最快一拍就能对计数RAM中的一个条目进行计数操作;对于1wr1wr型RAM,相当于两个单端口组成的RAM,其中,每个单端口最快两拍对计数RAM中的一个条目进行计数操作,合起来平均最快也是1拍对计数RAM中的一个条目进行计数操作。
当需要对多个计数条目进行计数,且每个计数条目对应多个计数申请源时,为了提供计数器的计算响应性能,本发明实施例提供一种计数器,如图1所示,该计数器包括:计算模块100和N个计数模块,每个计数模块中包括多个对应不同计数条目的计数空间,同一计数条目在不同计数模块中计数空间的地址相同;N个计数模块可表示为101…10n,N为不小于1的整数,任意一个计数模块可标记为10i,i=1,2,……,N;其中,
计数模块10i,用于响应一个计数申请源的计数申请并进行计数,为计算模块提供用于计算的值;
计算模块100,用于读取同一计数条目在不同计数模块的值,将读取到的值进行累计计算,得到所述计数条目的总计数值。
具体的,由于RAM内部所有的计数条目共用同一组读写端口,所以每个clk周期内只能对RAM中的一个计数条目进行计数操作。为了RAM计数器能够在一拍内对一个以上的计数申请源进行计数操作,可对每个计数申请源分配一个计数模块(即:可由一个以上双口RAM实现),并为每个计数条目在每个计数模块中都分配独立的计数空间,且同一计数条目在所有计数模块中计数空间的地址相同,因而,每个计数模块可各自基于计数条目的地址针对一个计数申请源进行单独的计数;例如:如图1所示,RAM_0和RAM_1等计数单元分别被分配给req0和req1等计数申请源信号,其中,每个计数单元可由一个双口RAM来实现。当计算模块准备获取某个条目的计数值时,同时向所有双口RAM发出Cpu_rd读信号,读取所有双口RAM的同一地址,并将读出的所有计数值累计,作为最终的计数值。例如:data0、data1等为各双口RAM中读出的计数值,最终的计数值CPU_rd_data=data_0+data_1+...。这里,计算模块可以是中央处理器(CPU)或其它逻辑电路模块,所述累计可以是加法或减法,需要根据实际计数场景而定,具体可参看后续实施例1和实施例2。
进一步的,如图2所示,上述计数器还可包括:
累积模块220,包括多个对应不同计数条目的累积空间,用于获取并存储对一个以上计数模块的累积处理结果,并供计算模块读取所述的累积处理结果;
所述计数模块20i,还用于为累积模块提供用于进行累积处理的计数值;
所述计算模块200,还用于读取所述累积模块220中计数条目的累积处理结果,将所述累积处理结果累计入对应计数条目的总计数值。
具体的,为了避免某一个计数模块溢出过快,可增加一个累积模块,该累积模块用于包括多个对应不同计数条目的累积空间,用于获取并存储对一个以上计数模块的累积处理结果,并供计算模块读取所述的累积处理结果;所述累积处理,是指将计数模块中计数条目的计数值与累积模块中所述计数条目对应的累积值进行累计计算,得到累积处理结果。例如:累积模块可针对一个计数条目同时读取一个以上计数模块中当前的计数值,将这些计数值和该计数条目对应自身的累积空间中的累积值进行累计计算,计算的结果作为累积处理结果;为了保证总计数值正确,计数模块一旦被累积处理,该计数模块就应进行清零操作。因此,若计算模块需要计算特定计数条目的总计数值时,除了读取所有计数模块中该计数条目的计数值,还需要读取所述累积模块220中该计数条目的累积处理结果,将该累积处理结果累计入该计数条目的总计数值中。例如:图2中累积模块220的累积值记为data_add,data0、data1等为各计数RAM中读出的计数值时,最终,总计数值CPU_rd_data=data0+data1+data_add…。在实际应用中,累积模块可选用一个双口RAM实现,该RAM的位宽应远大于计数模块中双口RAM,且该RAM也同样为每个计数条目分配单独的累积空间。
然而,当某个计数申请源的速率达到一拍来一次时,上述计数器的读写带宽将被计数申请占满,则无法被计算模块或者累积模块读取并清零,所述计数器再次出现计数速率瓶颈。
但是,当图1中的计数申请源速率和超过一拍来一次时,计数单元即双口RAM的读写带宽势必将被计数申请源的读写操作占满,从而无法响应计算模块的读信号,因此,如图1所示的计数器所能处理的计数申请源速率和最大为两拍来一次的情形,存在计数速率瓶颈。
为了对计数器的读写带宽进一步扩展,本发明实施例引入轮询计数机制,对上述计数器的结构做进一步调整。
进一步的,如图3所示,上述计数器中,包括:该计数器包括:N个计数模块、计算模块400和累积模块420;N个计数模块可表示为411…4n1,N为不小于1的整数,任意一个计数模块可标记为4i1,i=1,2,……,N;其中,
计数模块4i1包括:L个轮询计数子模块,可标记为40,41…4k,L为不小于2的整数,任意一个轮询计数子模块4k,k=0,1,……,L-1;
轮询计数子模块4k,用于在自身的计数周期内响应计数申请源的计数申请并进行计数,并用于自身的在非计数周期内响应非计数申请源的读写操作。
具体的,轮询计数子模块4k彼此之间的结构与功能相同,轮流响应同一申请源的计数申请并各自计数;当轮询计数子模块4k响应计数申请源的计数申请并进行计数时,轮询计数子模块4k处于自身的计数周期;当轮询计数子模块4k在自身的非计数周期内,不响应计数申请源的计数申请;如此,轮询计数子模块4k在自身的非计数周期内可响应非计数申请源,即其他模块的读写操作。例如:在一个实施例中,如图3所述,计数模块4i1包括两个轮询计数子模块40和41,当需要对计数模块4i1进行清零操作时,如果轮询计数子模块40处于计数周期且计数申请的速率已将轮询计数子模块40的写带宽占满,则可先对处于非计数周期的轮询计数子模块41进行清零操作;待轮询计数子模块40的计数周期结束进入非计数周期,轮询计数子模块40不再响应计数申请,而转由轮询计数子模块41继续响应同一计数申请源的后续计数申请,此时,轮询计数子模块40的写带宽被释放,从而可对轮询计数子模块40进行清零操作;如此,即可实现对计数模块4il读写带宽的扩展,进而提高整个计数器的计数性能。
为进一步保证计数器计数性能的稳定,如图4所示,上述计数器包括:计算模块300和N个计数模块,N个计数模块可表示为301…30n,N为不小于1的整数,任意一个计数模块可标记为30i,i=1,2,……,N;其中,
计数模块30i,用于响应一个计数申请源的计数申请,为计算模块300提供用于计算的值;
计算模块300,用于读取计数模块30i的值,将读取到的值进行累计计算;
这里,所述累计可以是加法,也可以是减法,需要根据实际计数场景而定,具体可参考后续实施例1和实施例2。
进一步的,计数模块30i包括:计数单元3i1和备份单元3i2;其中,
计数单元3i1,用于响应一个计数申请源的计数申请并进行计数,与备份单元3i2共用一个写总线;
备份单元3i2,用于与计数单元3i1保持数据同步,并供所述计算模块300读取数据。
具体的,计数单元3i1和备份单元3i2可分别由一个双口RAM实现,计算模块300与可由CPU或其它逻辑电路模块实现,执行的累计操作既可以是加法也可以是减法。
由于计数单元3i1和备份单元3i2,如图3所示,共用一个写总线,如此,可保证备份单元3i2和计数单元3i1中同一条目所对应地址中的数据是完全同步的,因此,计算模块300可通过读取备份单元3i2中的数据来获取自身实际需要的读取的数据,同时也不再需要占用计数单元3i1的读带宽。如此,本发明实施例提供的计数器能够处理计数申请源速率和达到一拍来一次的计数场合。
进一步的,如图5所示,上述计数器中,轮询计数子模块4k可包括:
轮询计数单元4011,用于在计数周期内响应同一计数申请源的计数申请,在非计数周期内响应非计数申请源的写操作,与轮询备份单元4012共用一个写总线;
轮询备份单元4012,用于与轮询计数单元4011保持数据同步,并供所述计算模块400读取数据。
具体的,轮询计数单元4011和轮询备份单元4012都分别可由一个双口RAM实现,轮询计数子模块由两个双口RAM实现,从而可增加计数模块4i1读带宽,如此,一个计数模块由四个双口RAM实现,从而可实现同时增加计数模块4i1的读带宽和写带宽,从而整体提高计数器处理计数申请的速率。
以下将结合特定的应用场景,具体说明上述计数器的实现方式。
实施例1
目前,基于上层网管系统的需求,大容量多端口交换机设备往往具备统计特定数据的功能,例如:统计交换机所有端口上特定流标识(stream id)数据包的丢弃总数。此时,由于stream id的数目是以k为单位计的大数目,即需要计数的条目很多,出于成本的考虑,会基于片内RAM搭建计数器。
由于交换机每个端口的带宽较大,每个端口的计数申请的速率都可能很快,甚至会超过一拍来一次,因此,应将交换机的每个端口都作为独立的计数申请源,由独立的计数模块响应每个端口的计数申请,且该独立的计数模块需要有能力处理计数申请速率超过一拍来一次的计数申请源。
因此,本实施例1提供一种交换机芯片中端口数据包统计计数器,当交换机共有M个端口,M为大于1的整数,交换机的端口编号从0开始,如图6所示,该端口数据包统计计数器包括:统计模块600和M个计数模块;M个计数模块可表示为61…6m,M为不小于1的整数,任意一个计数模块可标记为6j,j=1,2,……,M-1;其中,
计数模块6j,用于响应交换机一个端口的计数申请,基于流标识统计经由所述端口传输的数据包;
统计模块600,用于基于流标识计算所有M个计数模块计数值的总和;
其中,计数模块6j包括:计数单元6j1和备份单元6j2;其中,
计数单元6j1,用于响应交换机一个端口的计数申请,与备份单元6j2共用一个写总线;
备份单元6j2,用于与计数单元6j1保持数据同步,并供所述统计模块600读取数据。
具体的,计数单元6j1可由一个双口RAM实现,任意一个备份单元6j2可由一个双口RAM实现,即:任意一个计数模块61j由两个双口RAM实现。如此,当端口j的计数申请速率和超过一拍来一次时,统计模块600仍通过读取备份单元6j2而获取所需的计数值,完成求和计算。
这里,统计模块600可由交换机芯片中的中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)、或现场可编程门阵列(FPGA)实现。
本发明实施例还提供一种交换机,该交换机中包含上述数据包统计计数器,交换机中的每个端口与该端口数据包统计计数器中的一个计数模块相连。
实施例2
吉比特无源光网络(Gigabit-Capable Passive Optical Network,GPON)芯片中有一个权重随机早期丢弃(WRED)算法模块来实现数据包的随机丢弃操作,这个算法通过设定缓存占用阈值及丢弃概率,并根据数据包在缓存中的统计数量来决定数据包的丢弃与否。由于在数据芯片中的缓存空间基于队列进行管理,而且一般队列的数目比较大(通常k为单位计),所以在WRED模块中,对缓存中每个队列里面数据包占用情况的统计需要用到基于RAM搭建的计数器。此计数器有两个计数申请源,一个计数申请源表示有数据包申请进入了缓存空间,用req信号表示数据包进入信号;一个计数申请源表示有数据包离开了缓存空间,即缓存空间有回收,用rcy信号表示数据包离开信号;其中req信号持续一拍,则对应队列缓存空间加1;rcy信号持续一拍,则对应队列缓存空间减1。
现有的WRED电路设计中,由于计数申请源为两个,一般采用1wr1wr型的双口RAM进行计数器的设计,一个1wr端口分配给req信号进行计数,另一个1wr端口分配给rcy信号进行计数。但由于1wr1wr型的双口RAM是由两个1wr的单端口组成的,这决定了它所能支持的req及rcy信号到达的最快速率为两拍一次,无法做到一拍一次的计数性能。这在实际应用中制约了整个GPON芯片的吞吐量。
为此,本实施例2提供一种GPON芯片中WRED模块的统计计数器77,如图7所示,该统计计数器包括:进入计数模块701、离开计数模块702和计算模块700;其中,
进入计数模块701,用于响应数据包进入信号(req信号)的计数申请,统计进入缓存空间的数据包,并在离开计数模块进行清零操作时,将离开计数模块的值累计入自身的计数值;这里,“累计”实际为减法运算;
离开计数模块702,用于响应数据包离开信号(rcy信号)的计数申请,统计离开缓存空间的数据包;
计算模块700,用于计算缓存空间中实际的数据包;
其中,计数模块702具体包括:两个轮询计数子模块,分别标记为70和71;其中,
轮询计数子模块70/71,用于在计数周期内响应数据包离开信号(rcy信号)的计数申请;并用于在非计数周期内响应清零信号的读写操作。
进一步的,轮询计数子模块70/71包括:
轮询计数单元751,用于在计数周期内响应数据包离开信号(rcy信号)的计数申请,在非计数周期内响应清零信号的写操作,与轮询备份单元752共用一个写总线;
轮询备份单元752,用于与轮询计数单元751保持数据同步,并供所述计算模块700读取数据。
具体的,进入计数模块701的值,记为data_add;轮询计数子模块70的值,记为data0;轮询计数子模块71的值,记为data1;计算模块700的值,记为enq_rd_data。则enq_rd_data=data_add-data_1-data0+enq_num,其中,enq_num是计数申请源req的当前计数值;同时req也是内部dut触发读操作的信号。
为了简化设计逻辑,没有使用两个RAM响应req进行轮询计数,而是直接将每次req申请时需要增加的数值加上去,同样可实现准确计数。轮询计数子模块70/71需要及时读清零,避免rcy统计溢出而造成计数的错误。例如:当轮询计数子模块71需执行清零操作之前,将轮询计数子模块71的值提前累计入累积模块701,即wr_data=data_add-data_1+enq_num;这里,累计是指的减法运算。
在实际应用中,进入计数模块701可由一个位宽较大的双口RAM实现,离开计数模块702由四个位宽尽量小的双口RAM实现,以节省RAM面积;计算模块700可由GPON芯片中的中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)、或现场可编程门阵列(FPGA)实现。
由于该统计计数器77中的离开计数模块702采用了四个RAM,从而使得WRED模块可实现一拍一次的计数性能。
本发明实施例还提供一种GPON芯片,该芯片中的WRED模块包含实施例2中所述的统计计数器。
实施实例3:
路由芯片中的队列缓存管理模块,需要对多个(大于1)端口到来的数据进行缓存,每一个端口包含所有入队的queue id(队列号),一般队列的数目比较大(通常k为单位计),这些所有的队列将共享同一个缓存空间,所以在队列缓存管理模块中,对每个端口需要分配一个基于RAM搭建的计数器,来进行队列数据包占用情况的统计。
每个计数器有两个申请计数源,一个计数源表示有数据包申请进入了缓存空间,用req信号表示;一个计数源表示有数据包送离开了缓存空间,即缓存空间有回收,用rcy信号表示;其中req信号持续一拍,则对应队列缓存空间加1;rcy信号持续一拍,则对应队列缓存空间减1。
在队列缓存管理电路设计中,对于每个端口,计数申请源为2,一般采用1w1wr型的双口RAM进行计数器的设计,一个1wr端口分配给req信号进行计数,另一个1wr端口分配给rcy信号进行计数。但由于1wr1wr型的双口RAM是由两个1wr的单端口组成的,这决定了它所能支持的req及rcy信号到达的最快速率为2拍1次,无法做到1拍1次的计数性能。这在实际电路设计中制约了整个路由芯片的吞吐量。
下面结合图8给出一种解决此问题的具体实施方式,从而使得路由芯片的吞吐量可以达到1拍1次的统计计数性能。
以一个1w1r类型的双口RAM作为所有队列标识(queue id)的累积计数RAM,队列缓存管理模块以芯片内部逻辑DUT或者CPU的读操作信号触发对整个计数器系统的读操作,此读信号对应图8中的Cpu_rd信号;
对每个端口的入队申请源req及回收申请源rcy分配一组轮询计数双口RAM(如附图中对端口0的req分配的轮询计数RAM为RAM00及RAM01,端口0的rcy分配的轮询计数RAM为RAM02及RAM03;端口1及其他更多的端口的轮询RAM的分配以此类推);
为了保证功能上的完备性,对每个端口的入队申请源req及回收申请源rcy分配一组轮询计数双口RAM在路由芯片到达1拍1次计数速率的时候,每个双口RAM需要有备份RAM,这样才能保证芯片内部逻辑DUT或CPU能够有读带宽;
对于为req信号分配的两个轮询计数RAM,即RAM_00及RAM_01,或RAM_02及RAM_03,当计数申请操作在RAM_00上时,RAM_00的读写带宽可能被占满,内部逻辑电路模块读取此RAM的时候,无多余带宽进行清零写操作,所以在RAM_00轮询计数期间,RAM_00是不进行清零操作的。但是RAM_01因为没有进行轮询计数,则可以进行清零操作;当轮询时间完毕时,计数申请操作将在RAM_01上进行,RAM_00将进入读清0状态,如此不断轮询。对于为rcy信号分配的两个轮询计数RAM同样进行。
当路由芯片内部DUT的读操作或者CPU的读操作信号发起时,它将读取RAM_add、RAM00、RAM01、RAM02、RAM03、RAM10、RAM11、RAM12及RAM13等所有的计数值,将这些值进行累计,作为队列缓存管理模块的当前队列缓存占用值,即如图8所示的:
CPU_rd_data=data_add+data_00+data_01+data_02+data_03+data_10+data_11+data_12+data_13+...;
对于累积计数RAM_add,它将读清零的计数RAM中的值进行累加,并存储到RAM_add中去。即如图8所示的:
Wr_data=data_add+data_01+data_03+data_11+data_13+...;
对于轮询计数处在清零阶段的计数RAM,如图所示的RAM01、RAM03及RAM11、RAM13,需要及时读清零,避免rcy统计溢出,那样会造成计数的错误,建议rcy计数ram位宽尽量小,以节省RAM面积。
按照上面具体的实施方式,可以使得路由芯片的队列缓存管理模块实现1拍1次的计数性能,从而可以大大提高路由芯片的吞吐量。
为本发明实施例提供还提供一种计数方法,所述方法包括:
对每个计数申请源分配一个计数模块,并在每个计数模块中为不同的计数条目分配各自的计数空间,同一计数条目在不同计数模块中计数空间的地址相同;
各计数模块响应对应的计数申请源的计数申请并进行计数;
读取同一计数条目在不同计数模块的值,将读取到的值进行累计计算,将累计结果作为总计数值。
这里,“累计”计算可以是加法,也可以是减法,根据具体应用场景而定。
上述方案中,所述方法还包括:
针对同一计数条目,读取一个以上所述计数模块的计数值并进行累积处理;
将所述累积处理结果存储于累积模块中所述计数条目对应的累积空间,以供计算模块读取;
紧接着,对已进行累计处理的计数模块进行清零操作;
所述累积处理,是指将计数模块中计数条目的计数值与累积模块中所述计数条目对应的累积值进行累计计算,得到累积处理结果。。
这里,为避免重复计数,凡是将计数值累计入累积模块的计数模块,都必须及时进行清零操作。相应的,凡是没有将计数值累计入累积模块的计数模块,不进行清零操作。
上述方案中,所述方法还包括:
为每个计数模块分配L个轮询计数子模块;
使每个轮询子模块在自身的计数周期内响应计数申请源的计数申请并进行计数,并在自身的非计数周期内响应非计数申请源的读写操作;
所述L为不小于2的整数。
上述方案中,所述非计数申请源的读写操作包括:清零操作。
上述方案中,所述方法还包括:
为每个计数模块或轮询计数子模块分配计数单元和备份单元;
使计数单元响应一个计数申请源的计数申请并进行计数,与备份单元共用一个写总线;
使备份单元与计数单元保持数据同步,并供所述计算模块或所述累积模块读取数据。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (8)
1.一种计数器,其特征在于,所述计数器包括:计算模块和N个计数模块,每个计数模块中包括多个对应不同计数条目的计数空间,同一计数条目在不同计数模块中计数空间的地址相同;其中,
所述计数模块,用于响应一个计数申请源的计数申请并进行计数,为计算模块提供用于计算的值;
所述计算模块,用于读取同一计数条目在不同计数模块的值,将读取到的值进行累计计算,得到所述计数条目的总计数值;
所述N为大于1的整数;
所述计数模块包括:L个轮询计数子模块,每个所述轮询计数子模块轮流响应同一计数申请源的计数申请并各自计数;其中,
轮询计数子模块,用于在自身的计数周期内响应计数申请源的计数申请并进行计数,并用于在自身的非计数周期内响应非计数申请源的读写操作;
所述L为不小于2的整数。
2.根据权利要求1所述的计数器,其特征在于,所述计数器还包括:
累积模块,包括多个对应不同计数条目的累积空间,用于获取并存储对一个以上计数模块的累积处理结果,并供计算模块读取所述累积处理结果;
所述计数模块,还用于为累积模块提供用于进行累积处理的计数值;
所述计算模块,还用于读取所述累积模块中计数条目的所述累积处理结果,将所述累积处理结果累计入对应计数条目的总计数值。
3.根据权利要求2所述的计数器,其特征在于,所述计数模块包括:计数单元和备份单元;其中,
所述计数单元,用于响应一个计数申请源的计数申请并进行计数,与备份单元共用一个写总线;
所述备份单元,用于与计数单元保持数据同步,并供所述计算模块或所述计数器的累积模块读取数据。
4.根据权利要求1所述的计数器,其特征在于,所述轮询计数子模块包括:
轮询计数单元,用于在所述轮询计数子模块的计数周期内响应计数申请源的计数申请,在所述轮询计数子模块的非计数周期内响应非计数申请源的读写操作,与轮询备份单元共用一个写总线;
轮询备份单元,用于与轮询计数单元保持数据同步,并供所述计算模块或累积模块读取数据。
5.一种计数方法,其特征在于,对每个计数申请源分配一个计数模块,并在每个计数模块中为不同的计数条目分配各自的计数空间,同一计数条目在不同计数模块中计数空间的地址相同;所述方法还包括:
各计数模块响应对应的计数申请源的计数申请并进行计数;
读取同一计数条目在不同计数模块的值,将读取到的值进行累计计算,得到所述计数条目的总计数值;
为每个计数模块分配L个轮询计数子模块,每个所述轮询计数子模块轮流响应同一计数申请源的计数申请并各自计数;
使每个轮询子模块在自身的计数周期内响应计数申请源的计数申请并进行计数,并在自身的非计数周期内响应非计数申请源的读写操作;
所述L为不小于2的整数。
6.根据权利要求5所述的计数方法,其特征在于,所述方法还包括:
针对同一计数条目,读取一个以上所述计数模块的计数值并进行累积处理;
将累积处理结果存储于累积模块中所述计数条目对应的累积空间,以供计算模块读取;
对已进行累积处理的计数模块进行清零操作;
所述累积处理,是指将计数模块中计数条目的计数值与累积模块中所述计数条目对应的累积值进行累计计算,得到所述累积处理结果。
7.根据权利要求5所述的计数方法,其特征在于,所述非计数申请源的读写操作包括:清零操作。
8.根据权利要求6所述的计数方法,其特征在于,所述方法还包括:
为每个计数模块或轮询计数子模块分配计数单元和备份单元;
使计数单元响应一个计数申请源的计数申请并进行计数,与备份单元共用一个写总线;
使备份单元与计数单元保持数据同步,并供所述计算模块或计数器的所述累积模块读取数据。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410591463.XA CN105630712B (zh) | 2014-10-28 | 2014-10-28 | 计数器及计数方法 |
PCT/CN2015/072594 WO2016065771A1 (zh) | 2014-10-28 | 2015-02-09 | 计数器及计数方法 |
US15/519,678 US10291232B2 (en) | 2014-10-28 | 2015-02-09 | Counter and counting method |
EP15855900.5A EP3200391B1 (en) | 2014-10-28 | 2015-02-09 | Counter and counting method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410591463.XA CN105630712B (zh) | 2014-10-28 | 2014-10-28 | 计数器及计数方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105630712A CN105630712A (zh) | 2016-06-01 |
CN105630712B true CN105630712B (zh) | 2019-10-22 |
Family
ID=55856489
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410591463.XA Active CN105630712B (zh) | 2014-10-28 | 2014-10-28 | 计数器及计数方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10291232B2 (zh) |
EP (1) | EP3200391B1 (zh) |
CN (1) | CN105630712B (zh) |
WO (1) | WO2016065771A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106059570B (zh) * | 2016-07-15 | 2018-07-17 | 湘潭大学 | 一种多路不相干脉冲合并计数系统及方法 |
CN108021597B (zh) * | 2016-10-28 | 2022-02-08 | 阿里巴巴集团控股有限公司 | 一种并行计数器、服务器和一种计数方法 |
CN106713066B (zh) * | 2016-11-30 | 2020-11-10 | 海尔优家智能科技(北京)有限公司 | 一种对流处理系统进行监控的方法和装置 |
CN107798036A (zh) * | 2017-04-10 | 2018-03-13 | 平安科技(深圳)有限公司 | 一种计数方法及计数器 |
CN107659305A (zh) * | 2017-10-19 | 2018-02-02 | 郑州云海信息技术有限公司 | 一种基于cpld的时钟计数方法、装置及介质 |
JP2021039408A (ja) * | 2019-08-30 | 2021-03-11 | 日立オムロンターミナルソリューションズ株式会社 | 紙幣処理システム、紙幣処理結果同期方法、および紙幣処理制御プログラム |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101005413A (zh) * | 2007-01-30 | 2007-07-25 | 华为技术有限公司 | 一种实现多逻辑通道计数的方法和装置 |
CN101079623A (zh) * | 2006-05-25 | 2007-11-28 | 李�浩 | 一种大容量无刷新的高速统计计数器 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100338910C (zh) | 2003-07-15 | 2007-09-19 | 中兴通讯股份有限公司 | 网络信息交换中多端口收发包数统计方法 |
US7401169B2 (en) * | 2004-07-08 | 2008-07-15 | Cisco Technology, Inc. | Counter updating system using an update mechanism and different counter utilization mechanism |
US20100082876A1 (en) | 2008-09-26 | 2010-04-01 | Deepak Lala | System and method of use of fast updatable counters using dynamic random access memories |
US8345816B1 (en) * | 2011-12-06 | 2013-01-01 | International Business Machines Corporation | RAM-based event counters using transposition |
-
2014
- 2014-10-28 CN CN201410591463.XA patent/CN105630712B/zh active Active
-
2015
- 2015-02-09 WO PCT/CN2015/072594 patent/WO2016065771A1/zh active Application Filing
- 2015-02-09 US US15/519,678 patent/US10291232B2/en active Active
- 2015-02-09 EP EP15855900.5A patent/EP3200391B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101079623A (zh) * | 2006-05-25 | 2007-11-28 | 李�浩 | 一种大容量无刷新的高速统计计数器 |
CN101005413A (zh) * | 2007-01-30 | 2007-07-25 | 华为技术有限公司 | 一种实现多逻辑通道计数的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2016065771A1 (zh) | 2016-05-06 |
CN105630712A (zh) | 2016-06-01 |
US10291232B2 (en) | 2019-05-14 |
EP3200391B1 (en) | 2019-07-31 |
EP3200391A1 (en) | 2017-08-02 |
US20170264300A1 (en) | 2017-09-14 |
EP3200391A4 (en) | 2017-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105630712B (zh) | 计数器及计数方法 | |
US8081646B1 (en) | Old virtual queues technique for routing data packets in a packet switch | |
US8549341B2 (en) | System and method for reducing latency associated with timestamps in a multi-core, multi-threaded processor | |
US8489794B2 (en) | Processor bus bridge for network processors or the like | |
US20200159654A1 (en) | Pipelined hash table with reduced collisions | |
US10248315B2 (en) | Devices and methods for interconnecting server nodes | |
CN104133784B (zh) | 一种报文缓存管理方法与装置 | |
EP3758318A1 (en) | Shared memory mesh for switching | |
US9042252B2 (en) | Inter-packet interval prediction learning algorithm | |
WO2013191934A1 (en) | Memory switch for interconnecting server nodes | |
US20200136986A1 (en) | Multi-path packet descriptor delivery scheme | |
CN106209679A (zh) | 用于使用多个链接的存储器列表的方法及装置 | |
US10205673B2 (en) | Data caching method and device, and storage medium | |
US20210058334A1 (en) | Timestamp-based fairness egress from ingress queues | |
US20140068205A1 (en) | Systems and methods for managing queues | |
CN110140115B (zh) | 用于在用于交换机架构的多级仲裁上实现公平性的系统和方法 | |
US9335934B2 (en) | Shared memory controller and method of using same | |
CN101854259B (zh) | 一种数据包的计数方法及系统 | |
US9330038B2 (en) | Computer arbitration system, bandwidth, allocation apparatus, and method thereof | |
EP2754050B1 (en) | A method and apparatus for storing data | |
US9665518B2 (en) | Methods and systems for controlling ordered write transactions to multiple devices using switch point networks | |
US20140269751A1 (en) | Prediction-based switch allocator | |
Zheng et al. | Design and analysis of a parallel hybrid memory architecture for per-flow buffering in high-speed switches and routers | |
US9930117B2 (en) | Matrix vector multiply techniques | |
CN1996856B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |