分級(jí)統(tǒng)計(jì)多路復(fù)用計(jì)數(shù)器及其方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及高速網(wǎng)絡(luò)交換機(jī)中的計(jì)數(shù)器。更具體地,本發(fā)明涉及分級(jí)統(tǒng)計(jì)多路復(fù)用計(jì)數(shù)器及其方法。
【背景技術(shù)】
[0002]統(tǒng)計(jì)計(jì)數(shù)器被用于在高速網(wǎng)絡(luò)設(shè)備中執(zhí)行數(shù)據(jù)分析。為了有用,需要一種架構(gòu)來存儲(chǔ)大量的計(jì)數(shù)器。盡管可以使用片外DRAM(動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器),但其不能容納高速計(jì)數(shù)器更新。片上SRAM(靜態(tài)隨機(jī)存取存儲(chǔ)器)允許更高的速度,但非常昂貴。由于存儲(chǔ)器是S0C(片上系統(tǒng))中最昂貴的資源之一,高效地并靈活地利用存儲(chǔ)器是至關(guān)重要的。當(dāng)處理存儲(chǔ)多個(gè)計(jì)數(shù)器時(shí),存在更少的較大計(jì)數(shù)器或更多的較小計(jì)數(shù)器之間的權(quán)衡。理想地,每個(gè)計(jì)數(shù)器都足夠長(zhǎng)以避免整數(shù)溢出、計(jì)數(shù)器的環(huán)繞。然而,在標(biāo)準(zhǔn)的實(shí)踐中,這會(huì)導(dǎo)致超量配置,為所有計(jì)數(shù)器分配最差情況數(shù)量的比特。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的實(shí)施例涉及一種架構(gòu),該架構(gòu)使用分級(jí)統(tǒng)計(jì)多路復(fù)用計(jì)數(shù)器來將計(jì)數(shù)器壽命延長(zhǎng)多個(gè)數(shù)量級(jí)。每個(gè)級(jí)別都包括統(tǒng)計(jì)多路復(fù)用計(jì)數(shù)器。該統(tǒng)計(jì)多路復(fù)用計(jì)數(shù)器包括P個(gè)基礎(chǔ)計(jì)數(shù)器和S個(gè)子計(jì)數(shù)器,其中S個(gè)子計(jì)數(shù)器與P個(gè)基礎(chǔ)計(jì)數(shù)器動(dòng)態(tài)地級(jí)聯(lián)。當(dāng)一個(gè)級(jí)別中的行溢出發(fā)生時(shí),上面的下一級(jí)別中的計(jì)數(shù)器被用來延長(zhǎng)計(jì)數(shù)器壽命。分級(jí)統(tǒng)計(jì)多路復(fù)用計(jì)數(shù)器可以與溢出FIFO —起使用以進(jìn)一步延長(zhǎng)計(jì)數(shù)器壽命。
[0004]在一個(gè)方面中,提供了一種計(jì)數(shù)器架構(gòu)。該計(jì)數(shù)器架構(gòu)被實(shí)施在網(wǎng)絡(luò)設(shè)備中,諸如網(wǎng)絡(luò)交換機(jī)。該計(jì)數(shù)器架構(gòu)包括統(tǒng)計(jì)多路復(fù)用計(jì)數(shù)器的多個(gè)級(jí)別。每個(gè)級(jí)別的統(tǒng)計(jì)多路復(fù)用計(jì)數(shù)器包括N個(gè)計(jì)數(shù)器。在一些實(shí)施例中,N個(gè)計(jì)數(shù)器是環(huán)繞式的。N個(gè)計(jì)數(shù)器被布置在N/P行中。N/P行中的每一行包括P個(gè)基礎(chǔ)計(jì)數(shù)器和S個(gè)子計(jì)數(shù)器,其中P個(gè)基礎(chǔ)計(jì)數(shù)器中的任何基礎(chǔ)計(jì)數(shù)器能夠與S個(gè)子計(jì)數(shù)器中的一個(gè)或多個(gè)子計(jì)數(shù)器動(dòng)態(tài)地級(jí)聯(lián)以靈活地?cái)U(kuò)展計(jì)數(shù)容量。在一些實(shí)施例中,P個(gè)基礎(chǔ)計(jì)數(shù)器中的每個(gè)基礎(chǔ)計(jì)數(shù)器都初始地使用s個(gè)子計(jì)數(shù)器中的一個(gè)子計(jì)數(shù)器。為了最優(yōu)實(shí)施,P通常被選擇為2的冪。
[0005]在一些實(shí)施例中,多個(gè)級(jí)別包括至少兩個(gè)級(jí)別。在一些實(shí)施例中,多個(gè)級(jí)別包括至少三個(gè)級(jí)別。
[0006]在一些實(shí)施例中,N/P行中的每一行還包括開銷,其中開銷是S個(gè)子計(jì)數(shù)器到P個(gè)基礎(chǔ)計(jì)數(shù)器的S位映射。在計(jì)數(shù)器擴(kuò)展時(shí)以及在計(jì)數(shù)器收縮時(shí)更新映射。
[0007]在一些實(shí)施例中,多個(gè)級(jí)別中的第一級(jí)別中的相同行中的計(jì)數(shù)器被置亂到多個(gè)級(jí)別中的第二級(jí)別中的不同行中。置亂的隨機(jī)化是計(jì)數(shù)器的計(jì)數(shù)器標(biāo)識(shí)符的比特倒序、哈希函數(shù)、或者按另一順序的比特排列。
[0008]在一些實(shí)施例中,計(jì)數(shù)器架構(gòu)實(shí)施鏡像的移位邏輯,其中,該鏡像的移位邏輯包括下移邏輯和上移邏輯,該上移邏輯是該下移邏輯的鏡像。具有排名(rank)〈P/2的子計(jì)數(shù)器與下移邏輯相關(guān)聯(lián),其中下移邏輯將子計(jì)數(shù)器向上移位。具有排名多P/2的子計(jì)數(shù)器與上移邏輯相關(guān)聯(lián),其中上移邏輯將子計(jì)數(shù)器向下移位。子計(jì)數(shù)器的排名與前一子計(jì)數(shù)器到基礎(chǔ)計(jì)數(shù)器的指派的位置相關(guān)。
[0009]在一些實(shí)施例中,該計(jì)數(shù)器架構(gòu)還包括溢出FIFO,該溢出FIFO由多個(gè)級(jí)別中的最高級(jí)別中的N個(gè)計(jì)數(shù)器使用和共享,其中該溢出FIFO存儲(chǔ)正在溢出的所有計(jì)數(shù)器的相關(guān)聯(lián)的計(jì)數(shù)器標(biāo)識(shí)符連同溢出寬度。
[0010]在一些實(shí)施例中,該計(jì)數(shù)器架構(gòu)還包括向CPU發(fā)送以讀取溢出FIFO中的數(shù)據(jù)以及讀取和清除來自多個(gè)級(jí)別中的每個(gè)級(jí)別的計(jì)數(shù)器中的數(shù)據(jù)的至少一個(gè)中斷。
[0011]在另一方面中,提供了一種計(jì)數(shù)器架構(gòu)。該計(jì)數(shù)器架構(gòu)被實(shí)施在網(wǎng)絡(luò)設(shè)備中。該計(jì)數(shù)器架構(gòu)包括統(tǒng)計(jì)多路復(fù)用計(jì)數(shù)器的級(jí)別的層級(jí),其中級(jí)別的層級(jí)中的每個(gè)級(jí)別都包括比特的多個(gè)行,其中每一行包括第一組連續(xù)比特、第二組連續(xù)比特和第三組連續(xù)比特。
[0012]在一些實(shí)施例中,第一組連續(xù)比特由S個(gè)子計(jì)數(shù)器均勻地共享,第二組連續(xù)比特由P個(gè)基礎(chǔ)計(jì)數(shù)器均勻地共享,并且第三組連續(xù)比特表示S個(gè)子計(jì)數(shù)器到P個(gè)基礎(chǔ)計(jì)數(shù)器的映射。計(jì)數(shù)器通過將S個(gè)子計(jì)數(shù)器中的一個(gè)或多個(gè)子計(jì)數(shù)器級(jí)聯(lián)至P個(gè)基礎(chǔ)計(jì)數(shù)器中的一個(gè)基礎(chǔ)計(jì)數(shù)器而被擴(kuò)展。計(jì)數(shù)器通過從P個(gè)基礎(chǔ)計(jì)數(shù)器中的一個(gè)基礎(chǔ)計(jì)數(shù)器中移除S個(gè)子計(jì)數(shù)器中的一個(gè)或多個(gè)子計(jì)數(shù)器而被收縮。
[0013]在一些實(shí)施例中,當(dāng)發(fā)生在層級(jí)中的一個(gè)級(jí)別中的行溢出發(fā)生時(shí),上面的下一級(jí)別中的計(jì)數(shù)器被用來延長(zhǎng)計(jì)數(shù)器壽命。在一些實(shí)施例中,層級(jí)中的一個(gè)級(jí)別中的計(jì)數(shù)器被置亂到層級(jí)中的上面的下一級(jí)別的不同行中。
[0014]該計(jì)數(shù)器架構(gòu)還包括溢出FIFO,該溢出FIFO由級(jí)別的層級(jí)中的最高級(jí)別中的所有計(jì)數(shù)器使用和共享,其中該溢出FIFO存儲(chǔ)在級(jí)別的層級(jí)中的最高級(jí)別中正在溢出的計(jì)數(shù)器中的任何計(jì)數(shù)器的相關(guān)聯(lián)的計(jì)數(shù)器標(biāo)識(shí)符。
[0015]在又一方面中,提供了一種更新計(jì)數(shù)器架構(gòu)中的計(jì)數(shù)器的方法。該計(jì)數(shù)器架構(gòu)包括統(tǒng)計(jì)多路復(fù)用計(jì)數(shù)器的級(jí)別的層級(jí)。該方法包括確定級(jí)別的層級(jí)中的當(dāng)前級(jí)別中的計(jì)數(shù)器的對(duì)應(yīng)行是否溢出。在一些實(shí)施例中,當(dāng)前級(jí)別是級(jí)別的層級(jí)中的最低級(jí)別。
[0016]該方法包括,基于確定當(dāng)前級(jí)別中的對(duì)應(yīng)行沒有溢出,通過使用第一例程來處理當(dāng)前級(jí)別以下的每個(gè)級(jí)別,并且通過使用第二例程來處理當(dāng)前級(jí)別。在一些實(shí)施例中,第一例程包括遞增對(duì)應(yīng)級(jí)別中的計(jì)數(shù)器以及收縮對(duì)應(yīng)級(jí)別中的計(jì)數(shù)器。在一些實(shí)施例中,第二例程包括遞增對(duì)應(yīng)級(jí)別中的計(jì)數(shù)器,其中如果必要?jiǎng)t擴(kuò)展對(duì)應(yīng)級(jí)別中的計(jì)數(shù)器的大小。
[0017]該方法包括,基于確定當(dāng)前級(jí)別中的對(duì)應(yīng)行確實(shí)溢出,確定上面的下一級(jí)別中的計(jì)數(shù)器的對(duì)應(yīng)行是否溢出。
[0018]該方法包括,基于確定上面的下一級(jí)別中的計(jì)數(shù)器的對(duì)應(yīng)行沒有溢出,通過使用第一例程來處理上面的下一級(jí)別以下的每個(gè)級(jí)別并且通過使用第二例程來處理上面的下一級(jí)別。再次,第一例程包括遞增對(duì)應(yīng)級(jí)別中的計(jì)數(shù)器以及收縮對(duì)應(yīng)級(jí)別中的計(jì)數(shù)器;以及,第二例程包括遞增對(duì)應(yīng)級(jí)別中的計(jì)數(shù)器,其中如果必要?jiǎng)t擴(kuò)展對(duì)應(yīng)級(jí)別中的計(jì)數(shù)器的大小。
[0019]該方法包括,基于確定上面的下一級(jí)別中的計(jì)數(shù)器的對(duì)應(yīng)行溢出,當(dāng)上面的下一級(jí)別不是級(jí)別的層級(jí)中的最高級(jí)別時(shí),返回到確定上面的下一級(jí)別中的計(jì)數(shù)器的對(duì)應(yīng)行是否溢出的步驟;否則,當(dāng)上面的下一級(jí)別是級(jí)別的層級(jí)中的最高級(jí)別時(shí),通過使用第一例程來處理上面的下一級(jí)別以及上面的下一級(jí)別以下的每個(gè)級(jí)別,并且更新溢出隊(duì)列。再次,第一例程包括遞增對(duì)應(yīng)級(jí)別中的計(jì)數(shù)器以及收縮對(duì)應(yīng)級(jí)別中的計(jì)數(shù)器。在一些實(shí)施例中,溢出隊(duì)列通過將計(jì)數(shù)器的計(jì)數(shù)器標(biāo)識(shí)符和溢出寬度推入溢出隊(duì)列而被更新。
[0020]在一些實(shí)施例中,該方法還包括,處理溢出隊(duì)列中的數(shù)據(jù)、通過溢出隊(duì)列中的數(shù)據(jù)來標(biāo)識(shí)環(huán)繞計(jì)數(shù)器、讀取每個(gè)級(jí)別中經(jīng)標(biāo)識(shí)的計(jì)數(shù)器的存儲(chǔ)的值、以及清除每個(gè)級(jí)別中的經(jīng)標(biāo)識(shí)的計(jì)數(shù)器。
[0021]在又一方面中,提供了一種更新計(jì)數(shù)器架構(gòu)中的計(jì)數(shù)器的方法。該計(jì)數(shù)器架構(gòu)包括統(tǒng)計(jì)多路復(fù)用計(jì)數(shù)器的級(jí)別的層級(jí)。該方法包括,在發(fā)生第一事件時(shí),通過使用第一例程來連續(xù)地處理層級(jí)中的最高級(jí)別以下的每個(gè)級(jí)別并且通過使用第二例程來處理層級(jí)中的最高級(jí)別。該方法還包括,在發(fā)生第二事件時(shí),由第一例程連續(xù)地處理包括層級(jí)中的最高級(jí)別和層級(jí)中的最高級(jí)別以下的每個(gè)級(jí)別,并且更新溢出隊(duì)列。
[0022]在一些實(shí)施例中,第一事件是在層級(jí)中的最高級(jí)別以下的每個(gè)級(jí)別中存在行溢出但是在層級(jí)中的最高級(jí)別中不存在行溢出。在一些實(shí)施例中,第二事件是在包括層級(jí)中的最尚級(jí)別和層級(jí)中的最尚級(jí)別以下的每個(gè)級(jí)別中存在彳丁溢出。
[0023]在一些實(shí)施例中,第一例程包括遞增對(duì)應(yīng)級(jí)別中的計(jì)數(shù)器以及收縮對(duì)應(yīng)級(jí)別中的計(jì)數(shù)器。在一些實(shí)施例中,第二例程包括遞增對(duì)應(yīng)級(jí)別中的計(jì)數(shù)器。在一些實(shí)施例中,遞增計(jì)數(shù)器包括擴(kuò)展對(duì)應(yīng)級(jí)別中的計(jì)數(shù)器的大小。
[0024]在一些實(shí)施例中,更新溢出隊(duì)列包括將計(jì)數(shù)器的計(jì)數(shù)器標(biāo)識(shí)符和溢出寬度推入溢出隊(duì)列。
[0025]在又一方面中,提供了一種網(wǎng)絡(luò)設(shè)備。該網(wǎng)絡(luò)設(shè)備包括公共存儲(chǔ)器池,其中來自公共存儲(chǔ)器池的存儲(chǔ)器被分離到多個(gè)組塊中。
[0026]該網(wǎng)絡(luò)設(shè)備還包括用于延長(zhǎng)計(jì)數(shù)器壽命的計(jì)數(shù)器架構(gòu)。該計(jì)數(shù)器架構(gòu)包括統(tǒng)計(jì)多路復(fù)用計(jì)數(shù)器的級(jí)別的層級(jí)。每個(gè)級(jí)別的統(tǒng)計(jì)多路復(fù)用計(jì)數(shù)器包括N個(gè)計(jì)數(shù)器。在一些實(shí)施例中,使用多個(gè)存儲(chǔ)器組塊,N個(gè)計(jì)數(shù)器被存儲(chǔ)在片上SRAM存儲(chǔ)器中。N個(gè)計(jì)數(shù)器被布置在N/P行中。N/P行中的每一行包括P個(gè)基礎(chǔ)計(jì)數(shù)器和S個(gè)子計(jì)數(shù)器,其中P個(gè)基礎(chǔ)計(jì)數(shù)器中的任何基礎(chǔ)計(jì)數(shù)器能夠與S個(gè)子計(jì)數(shù)器中的一個(gè)或多個(gè)子計(jì)數(shù)器動(dòng)態(tài)地級(jí)聯(lián)以靈活地?cái)U(kuò)展計(jì)數(shù)容量。
[0027]在一些實(shí)施例中,級(jí)別的層級(jí)中的一個(gè)級(jí)別中的相同行中的計(jì)數(shù)器被置亂到級(jí)別的層級(jí)中的上面的下一級(jí)別中的不同行中。置亂的隨機(jī)化是計(jì)數(shù)器的計(jì)數(shù)器標(biāo)識(shí)符的比特倒序、哈希函數(shù)、或者按另一順序的比特排列。
[0028]在一些實(shí)