計(jì)數(shù)器及計(jì)數(shù)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及集成電路設(shè)計(jì)領(lǐng)域,尤其涉及一種計(jì)數(shù)器及計(jì)數(shù)方法。
【背景技術(shù)】
[0002]在集成電路設(shè)計(jì)領(lǐng)域中,計(jì)數(shù)器是最常見的電路器件之一,一般常見的有寄存器搭建的計(jì)數(shù)器、以及片內(nèi)隨機(jī)存取存儲(chǔ)器(Random Access Memory, RAM)搭建的計(jì)數(shù)器。
[0003]其中,對(duì)于采用寄存器搭建的計(jì)數(shù)器,每個(gè)計(jì)數(shù)器可以同時(shí)響應(yīng)多個(gè)計(jì)數(shù)申請(qǐng)?jiān)?,而且每個(gè)計(jì)數(shù)刷新速率很快,可以達(dá)到一個(gè)時(shí)鐘周期內(nèi)刷新一次(I次/clk),但缺點(diǎn)是寄存器在芯片設(shè)計(jì)中成本高昂,不適宜大規(guī)模使用。
[0004]對(duì)于采用片內(nèi)RAM搭建的計(jì)數(shù)器,可以搭建計(jì)數(shù)條目規(guī)模比較大的計(jì)數(shù)器,由于片內(nèi)RAM成本相對(duì)較低,目前芯片中經(jīng)常會(huì)用到幾K甚至幾十K的統(tǒng)計(jì)計(jì)數(shù)RAM。目前,對(duì)片內(nèi)RAM搭建的計(jì)數(shù)器一般采用如下步驟進(jìn)行計(jì)數(shù):先從RAM中選中需要計(jì)數(shù)的條目,讀出上次計(jì)數(shù)值;再將讀出的計(jì)數(shù)值與申請(qǐng)的計(jì)數(shù)步長(zhǎng)進(jìn)行加法或減法操作,得到當(dāng)次計(jì)數(shù)的結(jié)果;之后將當(dāng)次計(jì)數(shù)結(jié)果寫入到RAM中對(duì)應(yīng)的條目中。
[0005]從上述步驟可以發(fā)現(xiàn),這一組計(jì)數(shù)條目必須共用同一組計(jì)數(shù)申請(qǐng)?jiān)?,且?duì)RAM中的一個(gè)條目進(jìn)行計(jì)數(shù)操作。那么,基于電路時(shí)序考慮,至少需要四拍(即四個(gè)時(shí)鐘周期)才能完成,雖然利用流水線技術(shù)可以加快這一處理速率,但是需要考慮RAM器件的讀寫性能限制。
[0006]綜上,當(dāng)前缺少一種既經(jīng)濟(jì)又快速的能夠響應(yīng)多個(gè)計(jì)數(shù)條目的計(jì)數(shù)申請(qǐng)的計(jì)數(shù)器。
【發(fā)明內(nèi)容】
[0007]為解決現(xiàn)有存在的技術(shù)問題,本發(fā)明實(shí)施例期望提供一種計(jì)數(shù)器及計(jì)數(shù)方法,能適應(yīng)計(jì)數(shù)條目較多且計(jì)數(shù)申請(qǐng)很快的應(yīng)用場(chǎng)合。
[0008]本發(fā)明實(shí)施例的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0009]本發(fā)明實(shí)施例提供一種計(jì)數(shù)器,該計(jì)數(shù)器包括:計(jì)算模塊和N個(gè)計(jì)數(shù)模塊,每個(gè)計(jì)數(shù)模塊中包括多個(gè)對(duì)應(yīng)不同計(jì)數(shù)條目的計(jì)數(shù)空間,同一計(jì)數(shù)條目在不同計(jì)數(shù)模塊中計(jì)數(shù)空間的地址相同;其中,
[0010]所述計(jì)數(shù)模塊,用于響應(yīng)一個(gè)計(jì)數(shù)申請(qǐng)?jiān)吹挠?jì)數(shù)申請(qǐng)并進(jìn)行計(jì)數(shù),為計(jì)算模塊提供用于計(jì)算的值;
[0011]所述計(jì)算模塊,用于讀取同一計(jì)數(shù)條目在不同計(jì)數(shù)模塊的值,將讀取到的值進(jìn)行累計(jì)計(jì)算,得到所述計(jì)數(shù)條目的總計(jì)數(shù)值;
[0012]所述N為不小于I的整數(shù)。
[0013]上述方案中,所述計(jì)數(shù)器還包括:
[0014]累積模塊,包括多個(gè)對(duì)應(yīng)不同計(jì)數(shù)條目的累積空間,用于獲取并存儲(chǔ)對(duì)一個(gè)以上計(jì)數(shù)模塊的累積處理結(jié)果,并供計(jì)算模塊讀取所述的累積處理結(jié)果;
[0015]所述計(jì)數(shù)模塊,還用于為累積模塊提供用于進(jìn)行累積處理的計(jì)數(shù)值;
[0016]所述計(jì)算模塊,還用于讀取所述累積模塊中計(jì)數(shù)條目的累積處理結(jié)果,將所述累積處理結(jié)果累計(jì)入對(duì)應(yīng)計(jì)數(shù)條目的總計(jì)數(shù)值。
[0017]上述方案中,所述計(jì)數(shù)模塊包括:L個(gè)輪詢計(jì)數(shù)子模塊;其中,
[0018]輪詢計(jì)數(shù)子模塊,用于在自身的計(jì)數(shù)周期內(nèi)響應(yīng)計(jì)數(shù)申請(qǐng)?jiān)吹挠?jì)數(shù)申請(qǐng)并進(jìn)行計(jì)數(shù),并用于在自身的非計(jì)數(shù)周期內(nèi)響應(yīng)非計(jì)數(shù)申請(qǐng)?jiān)吹淖x寫操作;
[0019]所述L為不小于2的整數(shù)。
[0020]上述方案中,所述計(jì)數(shù)模塊包括:計(jì)數(shù)單元和備份單元;其中,
[0021]所述計(jì)數(shù)單元,用于響應(yīng)一個(gè)計(jì)數(shù)申請(qǐng)?jiān)吹挠?jì)數(shù)申請(qǐng)并進(jìn)行計(jì)數(shù),與備份單元共用一個(gè)寫總線;
[0022]所述備份單元,用于與計(jì)數(shù)單元保持?jǐn)?shù)據(jù)同步,并供所述計(jì)算模塊或所述累積模塊讀取數(shù)據(jù)。
[0023]上述方案中,所述輪詢計(jì)數(shù)子模塊包括:
[0024]輪詢計(jì)數(shù)單元,用于在所述輪詢計(jì)數(shù)子模塊的計(jì)數(shù)周期內(nèi)響應(yīng)計(jì)數(shù)申請(qǐng)?jiān)吹挠?jì)數(shù)申請(qǐng),在所述輪詢計(jì)數(shù)子模塊的非計(jì)數(shù)周期內(nèi)響應(yīng)非計(jì)數(shù)申請(qǐng)?jiān)吹淖x寫操作,與輪詢備份單元共用一個(gè)寫總線;
[0025]輪詢備份單元,用于與輪詢計(jì)數(shù)單元保持?jǐn)?shù)據(jù)同步,并供所述計(jì)算模塊或累積模塊讀取數(shù)據(jù)。
[0026]本發(fā)明實(shí)施例還提供一種計(jì)數(shù)方法,對(duì)每個(gè)計(jì)數(shù)申請(qǐng)?jiān)捶峙湟粋€(gè)計(jì)數(shù)模塊,并在每個(gè)計(jì)數(shù)模塊中為不同的計(jì)數(shù)條目分配各自的計(jì)數(shù)空間,同一計(jì)數(shù)條目在不同計(jì)數(shù)模塊中計(jì)數(shù)空間的地址相同;所述方法還包括:
[0027]各計(jì)數(shù)模塊響應(yīng)對(duì)應(yīng)的計(jì)數(shù)申請(qǐng)?jiān)吹挠?jì)數(shù)申請(qǐng)并進(jìn)行計(jì)數(shù);
[0028]讀取同一計(jì)數(shù)條目在不同計(jì)數(shù)模塊的值,將讀取到的值進(jìn)行累計(jì)計(jì)算,得到所述計(jì)數(shù)條目的總計(jì)數(shù)值。
[0029]上述方案中,所述方法還包括:
[0030]針對(duì)同一計(jì)數(shù)條目,讀取一個(gè)以上所述計(jì)數(shù)模塊的計(jì)數(shù)值并進(jìn)行累積處理;
[0031]將所述累積處理結(jié)果存儲(chǔ)于累積模塊中所述計(jì)數(shù)條目對(duì)應(yīng)的累積空間,以供計(jì)算模塊讀??;
[0032]對(duì)已進(jìn)行累積處理的計(jì)數(shù)模塊進(jìn)行清零操作;
[0033]所述累積處理,是指將計(jì)數(shù)模塊中計(jì)數(shù)條目的計(jì)數(shù)值與累積模塊中所述計(jì)數(shù)條目對(duì)應(yīng)的累積值進(jìn)行累計(jì)計(jì)算,得到累積處理結(jié)果。
[0034]上述方案中,所述方法還包括:
[0035]為每個(gè)計(jì)數(shù)模塊分配L個(gè)輪詢計(jì)數(shù)子模塊;
[0036]使每個(gè)輪詢子模塊在自身的計(jì)數(shù)周期內(nèi)響應(yīng)計(jì)數(shù)申請(qǐng)?jiān)吹挠?jì)數(shù)申請(qǐng)并進(jìn)行計(jì)數(shù),并在自身的非計(jì)數(shù)周期內(nèi)響應(yīng)非計(jì)數(shù)申請(qǐng)?jiān)吹淖x寫操作;
[0037]所述L為不小于2的整數(shù)。
[0038]上述方案中,所述非計(jì)數(shù)申請(qǐng)?jiān)吹淖x寫操作包括:清零操作。
[0039]上述方案中,所述方法還包括:
[0040]為每個(gè)計(jì)數(shù)模塊或輪詢計(jì)數(shù)子模塊分配計(jì)數(shù)單元和備份單元;
[0041]使計(jì)數(shù)單元響應(yīng)一個(gè)計(jì)數(shù)申請(qǐng)?jiān)吹挠?jì)數(shù)申請(qǐng)并進(jìn)行計(jì)數(shù),與備份單元共用一個(gè)寫總線;
[0042]使備份單元與計(jì)數(shù)單元保持?jǐn)?shù)據(jù)同步,并供所述計(jì)算模塊或所述累積模塊讀取數(shù)據(jù)。
[0043]本發(fā)明實(shí)施例所提供的計(jì)數(shù)器及計(jì)數(shù)方法,每個(gè)計(jì)數(shù)模塊對(duì)應(yīng)一個(gè)計(jì)數(shù)申請(qǐng)?jiān)?,分別響應(yīng)對(duì)應(yīng)計(jì)數(shù)申請(qǐng)?jiān)吹挠?jì)數(shù)申請(qǐng)并計(jì)數(shù);同時(shí),引入備份計(jì)數(shù)單元或輪詢計(jì)數(shù)子模塊,實(shí)現(xiàn)計(jì)數(shù)模塊讀寫帶寬的擴(kuò)展,從而可適應(yīng)大規(guī)模大速率的計(jì)數(shù)需求。
【附圖說明】
[0044]圖1為現(xiàn)有一種計(jì)數(shù)器的組成結(jié)構(gòu)示意圖;
[0045]圖2為現(xiàn)有另一種計(jì)數(shù)器的組成結(jié)構(gòu)示意圖;
[0046]圖3為本發(fā)明實(shí)施例提供的一種計(jì)數(shù)器的組成結(jié)構(gòu)示意圖;
[0047]圖4為本發(fā)明實(shí)施例提供的另一種計(jì)數(shù)器的組成結(jié)構(gòu)示意圖;
[0048]圖5為本發(fā)明提供的一種計(jì)數(shù)器中輪詢計(jì)數(shù)子模塊的組成結(jié)構(gòu)示意圖;
[0049]圖6為本發(fā)明提供的一種交換機(jī)芯片中端口數(shù)據(jù)包統(tǒng)計(jì)計(jì)數(shù)器組成結(jié)構(gòu)示意圖;
[0050]圖7為本發(fā)明提供的一種GPON芯片中WRED模塊的統(tǒng)計(jì)計(jì)數(shù)器的組成結(jié)構(gòu)示意圖;
[0051]圖8為本發(fā)明提供的一種路由芯片中的隊(duì)列緩存管理模塊統(tǒng)計(jì)計(jì)數(shù)器的組成結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0052]為了更清楚地說明本發(fā)明實(shí)施例和技術(shù)方案,下面將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)行更詳細(xì)的說明,顯然,所描述的實(shí)施例是本發(fā)明的一部分實(shí)施例,而不是全部實(shí)施例。基于本發(fā)明的實(shí)施例,本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0053]目前,常用的片內(nèi)RAM有l(wèi)wr、lwlr以及Iwrlwr型RAM,對(duì)于Iwr型的單端口 RAM,在同一個(gè)時(shí)鐘內(nèi)讀寫不能同時(shí)操作,那么,即使采用流水線技術(shù),最快也只能兩拍對(duì)計(jì)數(shù)RAM中的一個(gè)條目進(jìn)行計(jì)數(shù)操作;對(duì)于Iwlr型RAM,在同一個(gè)時(shí)鐘內(nèi)讀寫能同時(shí)操作,采用流水線技術(shù),最快一拍就能對(duì)計(jì)數(shù)RAM中的一個(gè)條目進(jìn)行計(jì)數(shù)操作;對(duì)于Iwrlwr型RAM,相當(dāng)于兩個(gè)單端口組成的RAM,其中,每個(gè)單端口最快兩拍對(duì)計(jì)數(shù)RAM中的一個(gè)條目進(jìn)行計(jì)數(shù)操作,合起來平均最快也是I拍對(duì)計(jì)數(shù)RAM中的一個(gè)條目進(jìn)行計(jì)數(shù)操作。
[0054]當(dāng)需要對(duì)多個(gè)計(jì)數(shù)條目進(jìn)行計(jì)數(shù),且每個(gè)計(jì)數(shù)條目對(duì)應(yīng)多個(gè)計(jì)數(shù)申請(qǐng)?jiān)磿r(shí),為了提供計(jì)數(shù)器的計(jì)算響應(yīng)性能,本發(fā)明實(shí)施例提供一種計(jì)數(shù)器,如圖1所示,該計(jì)數(shù)器包括:計(jì)算模塊100和N個(gè)計(jì)數(shù)模塊,每個(gè)計(jì)數(shù)模塊中包括多個(gè)對(duì)應(yīng)不同計(jì)數(shù)條目的計(jì)數(shù)空間,同一計(jì)數(shù)條目在不同計(jì)數(shù)模塊中計(jì)數(shù)空間的地址相同;N個(gè)計(jì)數(shù)模塊可表示為101...10η,Ν為不小于I的整數(shù),任意一個(gè)計(jì)數(shù)模塊可標(biāo)記為10i,i = 1,2,……,N ;其中,
[0055]計(jì)數(shù)模塊10i,用于響應(yīng)一個(gè)計(jì)數(shù)申請(qǐng)?jiān)吹挠?jì)數(shù)申請(qǐng)并進(jìn)行計(jì)數(shù),為計(jì)算模塊提供用于計(jì)算的值;
[0056]計(jì)算模塊100,用于讀取同一計(jì)數(shù)條目在不同計(jì)數(shù)模塊的值,將讀取到的值進(jìn)行累計(jì)計(jì)算,得到所述計(jì)數(shù)條目的總計(jì)數(shù)值