具有溢出fifo的計(jì)數(shù)器及其方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及在高速網(wǎng)絡(luò)交換機(jī)中的計(jì)數(shù)器。更特別地,本發(fā)明涉及具有溢出FIFO的計(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ù)器足夠長以避免整數(shù)溢出,計(jì)數(shù)器的環(huán)繞。然而,在標(biāo)準(zhǔn)的實(shí)踐中,這會(huì)導(dǎo)致超量配置,為所有計(jì)數(shù)器分配最差情況數(shù)量的比特。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的實(shí)施例涉及通過針對平均情況配置每個(gè)計(jì)數(shù)器來延長計(jì)數(shù)器壽命,以及經(jīng)由溢出FIFO和對監(jiān)控計(jì)數(shù)器的過程的中斷來處理溢出的架構(gòu)。該架構(gòu)解決了一般的優(yōu)化問題,該一般的優(yōu)化問題可以被陳述為,給定N個(gè)計(jì)數(shù)器,對于某個(gè)CPU讀取間隔T,怎樣使存儲(chǔ)和操作該N個(gè)計(jì)數(shù)器所需要的存儲(chǔ)比特的數(shù)量最小化。等同地,該一般的優(yōu)化問題也可以被陳述為,給定N個(gè)計(jì)數(shù)器和某數(shù)量的存儲(chǔ)比特,怎樣優(yōu)化和增大CPU讀取間隔T。該架構(gòu)使計(jì)數(shù)器CPU讀取間隔隨溢出FIFO的深度線性地延長。
[0004]在一個(gè)方面,提供了一種計(jì)數(shù)器架構(gòu)。該計(jì)數(shù)器架構(gòu)通常被實(shí)施在網(wǎng)絡(luò)設(shè)備中,諸如網(wǎng)絡(luò)交換機(jī)。該計(jì)數(shù)器架構(gòu)包括N個(gè)環(huán)繞式計(jì)數(shù)器。N個(gè)環(huán)繞式計(jì)數(shù)器的每個(gè)環(huán)繞式計(jì)數(shù)器與計(jì)數(shù)器標(biāo)識(shí)相關(guān)聯(lián)。在一些實(shí)施例中,N個(gè)環(huán)繞式計(jì)數(shù)器的每個(gè)環(huán)繞式計(jì)數(shù)器是w比特寬。在一些實(shí)施例中,N個(gè)環(huán)繞式計(jì)數(shù)器是在片上SRAM存儲(chǔ)器中。
[0005]該計(jì)數(shù)器架構(gòu)還包括溢出FIFO,該溢出FIFO由N個(gè)環(huán)繞式計(jì)數(shù)器使用和共享。該溢出FIFO通常存儲(chǔ)正在溢出的所有計(jì)數(shù)器的相關(guān)聯(lián)的計(jì)數(shù)器標(biāo)識(shí)。
[0006]在一些實(shí)施例中,該計(jì)數(shù)器架構(gòu)還包括向CPU發(fā)送以讀取溢出FIFO和溢出的計(jì)數(shù)器中的一個(gè)溢出的計(jì)數(shù)器的至少一個(gè)中斷。
[0007]在一些實(shí)施例中,在計(jì)時(shí)間隔T中,計(jì)數(shù)器溢出的數(shù)量是Μ =向上舍入(EPS*T/2W)(M= ceiling(EPS*T/2w)),其中EPS是每秒的事件,并且w是每個(gè)計(jì)數(shù)器的比特寬度。在一些實(shí)施例中,EPS是針對分組計(jì)數(shù)的每秒的分組。備選地,EPS是針對字節(jié)計(jì)數(shù)的每秒的字ο
[0008]在一些實(shí)施例中,溢出FIFO是Μ深(M-de印)并且log2N比特寬的以捕獲所有的計(jì)數(shù)器溢出。
[0009]在一些實(shí)施例中,計(jì)數(shù)器架構(gòu)要求w*N+M*log2N的總存儲(chǔ)比特。
[0010]在另一方面,提供了一種計(jì)數(shù)器架構(gòu)的方法。該計(jì)數(shù)器架構(gòu)包括至少一個(gè)計(jì)數(shù)器。該方法包括遞增至少一個(gè)計(jì)數(shù)器中的計(jì)數(shù)。該至少一個(gè)計(jì)數(shù)器中的每個(gè)計(jì)數(shù)器通常與計(jì)數(shù)器標(biāo)識(shí)相關(guān)聯(lián)。在一些實(shí)施例中,該至少一個(gè)計(jì)數(shù)器是環(huán)繞式計(jì)數(shù)器。
[0011]該方法還包括,在至少一個(gè)計(jì)數(shù)器中的一個(gè)計(jì)數(shù)器溢出時(shí),將溢出的計(jì)數(shù)器的計(jì)數(shù)器標(biāo)識(shí)存儲(chǔ)在隊(duì)列中。在一些實(shí)施例中,隊(duì)列是FIFO緩沖器。在一些實(shí)施例中,將計(jì)數(shù)器標(biāo)識(shí)存儲(chǔ)在隊(duì)列中向CPU發(fā)送中斷以從隊(duì)列和溢出的計(jì)數(shù)器讀取值。
[0012]在一些實(shí)施例中,該方法還包括從讀取的值計(jì)算溢出的計(jì)數(shù)器的實(shí)際值。
[0013]在一些實(shí)施例中,該方法還包括在讀取溢出的計(jì)數(shù)器之后,清空溢出的計(jì)數(shù)器。
[0014]在又一方面,提供了一種計(jì)數(shù)器架構(gòu)的方法。該計(jì)數(shù)器架構(gòu)包括多個(gè)環(huán)繞式計(jì)數(shù)器。該方法包括遞增多個(gè)環(huán)繞式計(jì)數(shù)器中的計(jì)數(shù)。通常地,多個(gè)計(jì)數(shù)器中的每個(gè)計(jì)數(shù)器與計(jì)數(shù)器標(biāo)識(shí)相關(guān)聯(lián)。該方法還包括在多個(gè)環(huán)繞式計(jì)數(shù)器中的一個(gè)環(huán)繞式計(jì)數(shù)器的溢出發(fā)生時(shí),將計(jì)數(shù)器標(biāo)識(shí)存儲(chǔ)在溢出FIFO中,處理在溢出FIFO的頭部處的數(shù)據(jù),通過在溢出FIFO的頭部處的數(shù)據(jù)來標(biāo)識(shí)環(huán)繞式計(jì)數(shù)器,讀取存儲(chǔ)在標(biāo)識(shí)的環(huán)繞式計(jì)數(shù)器中的值,以及清空標(biāo)識(shí)的環(huán)繞式計(jì)數(shù)器。
[0015]在一些實(shí)施例中,多個(gè)環(huán)繞式計(jì)數(shù)器中的每個(gè)環(huán)繞式計(jì)數(shù)器具有相同的寬度。
[0016]在一些實(shí)施例中,溢出FIFO由所述多個(gè)環(huán)繞式計(jì)數(shù)器共享。
[0017]在一些實(shí)施例中,計(jì)數(shù)器架構(gòu)被實(shí)施在網(wǎng)絡(luò)設(shè)備中。
[0018]在一些實(shí)施例中,該方法包括重復(fù)處理數(shù)據(jù)、讀取溢出FIFO只要其不為空、標(biāo)識(shí)環(huán)繞式計(jì)數(shù)器、讀取值以及清空標(biāo)識(shí)的環(huán)繞式計(jì)數(shù)器。
[0019]在又一方面,提供了一種網(wǎng)絡(luò)設(shè)備。該網(wǎng)絡(luò)設(shè)備包括公用存儲(chǔ)器池。通常地,來自公用存儲(chǔ)器池的存儲(chǔ)器被分成多個(gè)庫(bank)。該網(wǎng)絡(luò)設(shè)備還包括用于延長CPU讀取間隔的計(jì)數(shù)器架構(gòu)。該計(jì)數(shù)器架構(gòu)包括N個(gè)環(huán)繞式計(jì)數(shù)器,該N個(gè)環(huán)繞式計(jì)數(shù)器使用多個(gè)庫的至少子集。通常地,N個(gè)環(huán)繞式計(jì)數(shù)器中的每個(gè)環(huán)繞式計(jì)數(shù)器與計(jì)數(shù)器標(biāo)識(shí)相關(guān)聯(lián)。計(jì)數(shù)器還包括溢出FIF0,該溢出FIFO存儲(chǔ)環(huán)繞的所有計(jì)數(shù)器的相關(guān)聯(lián)的計(jì)時(shí)器標(biāo)識(shí)。
[0020]在一些實(shí)施例中,該網(wǎng)絡(luò)設(shè)備還包括SRAM。N個(gè)環(huán)繞式計(jì)數(shù)器被存儲(chǔ)在該SRAM中。在一些實(shí)施例中,溢出FIFO被存儲(chǔ)在該SRAM中。溢出FIFO是固定功能硬件。
[0021]在一些實(shí)施例中,該網(wǎng)絡(luò)設(shè)備還包括向CPU發(fā)送以讀取溢出FIFO以及讀取和清空N個(gè)環(huán)繞式計(jì)數(shù)器中的一個(gè)環(huán)繞式計(jì)數(shù)器的至少一個(gè)中斷。
[0022]在一些實(shí)施例中,在計(jì)時(shí)間隔T中,計(jì)數(shù)器溢出的數(shù)量是Μ =向上舍入(間隔Τ期間的總計(jì)數(shù)/2"),其中間隔Τ期間的總計(jì)數(shù)由網(wǎng)絡(luò)設(shè)備的帶寬確定,并且w是每個(gè)計(jì)數(shù)器的比特寬度。在一些實(shí)施例中,間隔Τ期間的總計(jì)數(shù)是針對分組計(jì)數(shù)的PPS*T,其中PPS是每秒的分組。在一些實(shí)施例中,間隔T期間的總計(jì)數(shù)是針對字節(jié)計(jì)數(shù)的BPS*T,其中BPS是每秒字節(jié)。
【附圖說明】
[0023]從以下本發(fā)明示例實(shí)施例的更具體的描述中,前述內(nèi)容將是明顯的,如附圖中所圖示的,其中相同附圖標(biāo)記指代貫穿不同視圖的相同部分。附圖不一定按比例,相反重點(diǎn)在于圖示本發(fā)明的實(shí)施例。
[0024]圖1圖示了根據(jù)本發(fā)明的實(shí)施例的計(jì)數(shù)器架構(gòu)的框圖。
[0025]圖2示出了例示一般優(yōu)化問題的示例性w對總的存儲(chǔ)比特的圖。
[0026]圖3圖示了根據(jù)本發(fā)明的實(shí)施例的計(jì)數(shù)器架構(gòu)的方法。
【具體實(shí)施方式】
[0027]在以下描述中,出于解釋的目的闡述了許多細(xì)節(jié)。然而,本領(lǐng)域普通技術(shù)人員將意識(shí)到,可以在不使用這些特定細(xì)節(jié)的情況下實(shí)踐本發(fā)明。因此,本發(fā)明不旨在被限制于所示的實(shí)施例,而是將被賦予與本文所描述的原理和特征相一致的最寬范圍。
[0028]本發(fā)明的實(shí)施例涉及通過針對平均情況配置每個(gè)計(jì)數(shù)器來延長計(jì)數(shù)器壽命,以及經(jīng)由溢出FIFO和對監(jiān)控計(jì)數(shù)器的過程的中斷來處理溢出的架構(gòu)。該架構(gòu)解決了一般的優(yōu)化問題,該一般的優(yōu)化問題可以被陳述為,給定N個(gè)計(jì)數(shù)器,對于某個(gè)CPU讀取間隔T,怎樣使存儲(chǔ)和操作該N個(gè)計(jì)數(shù)器所需要的存儲(chǔ)比特的數(shù)量最小化。等同地,該一般的優(yōu)化問題也可以被陳述為,給定N個(gè)計(jì)數(shù)器和某數(shù)量的存儲(chǔ)比特,怎樣優(yōu)化和增大CPU讀取間隔T。該架構(gòu)使計(jì)數(shù)器CPU讀取間隔隨溢出FIFO的深度線性地延長。
[0029]圖1圖示了根據(jù)本發(fā)明的實(shí)施例的計(jì)數(shù)器架構(gòu)100的框圖。該計(jì)數(shù)器架構(gòu)100通常被實(shí)施在網(wǎng)絡(luò)設(shè)備中,諸如網(wǎng)絡(luò)交換機(jī)。該計(jì)數(shù)器架構(gòu)100包括N個(gè)環(huán)繞式計(jì)數(shù)器105和溢出FIFO 110。N個(gè)環(huán)繞式計(jì)數(shù)器中的每個(gè)環(huán)繞式計(jì)數(shù)器是w比特寬并且與計(jì)數(shù)器標(biāo)識(shí)相關(guān)聯(lián)。通常地,計(jì)數(shù)器標(biāo)識(shí)是該計(jì)數(shù)器的唯一標(biāo)識(shí)。在一些實(shí)施例中,計(jì)數(shù)器被存儲(chǔ)在片上SRAM存儲(chǔ)器中,使用存儲(chǔ)器的兩個(gè)庫。在于2014年5月28日提交的名稱為“Method andApparatus for Flexible and Efficient Analytics in a Network Switch,,的美國專利申請第14/289,533號(hào)中討論了示例性計(jì)數(shù)器和存儲(chǔ)器庫,美國專利申請第14/289,533號(hào)在此通過引用以其整體內(nèi)容并入。溢出FIFO可以被存儲(chǔ)在SRAM中。備選地,溢出FIFO是固定功能硬件。溢出FIFO通常被所有的N個(gè)計(jì)數(shù)器共享和使用。
[0030]溢出FIFO存儲(chǔ)正在溢出的所有計(jì)數(shù)器的相關(guān)聯(lián)的計(jì)數(shù)器標(biāo)識(shí)。通常地,N個(gè)計(jì)數(shù)器105中的任何計(jì)數(shù)器一開始溢出,溢出的計(jì)數(shù)器的相關(guān)聯(lián)的計(jì)數(shù)器標(biāo)識(shí)就被存儲(chǔ)在溢出FIFO 110中。中斷被發(fā)送到CPU以讀取溢出FIFO 110和溢出的計(jì)數(shù)器。在溢出的計(jì)數(shù)器被讀取之后,溢出的計(jì)數(shù)器被清空或重置。
[0031]在計(jì)時(shí)間隔T中,計(jì)數(shù)器溢出的數(shù)量是Μ =向上舍入(EPS*T/2W),其中EPS是每秒的分組,并且w是每個(gè)計(jì)數(shù)器的比特寬度。在間隔T期間的分組的總計(jì)數(shù)是PPS*T。假設(shè)PPS高達(dá)654.8MPPS,T = l,w = 17并且N = 16k?;谶@些假設(shè),每秒存在高達(dá)4995個(gè)溢出事件。
[0032]溢出FIFO通常是Μ深(M_de印)并且log2N比特寬的以捕獲所有的計(jì)數(shù)器溢出。如此,計(jì)數(shù)器架構(gòu)100要求w*N+M*log2N的總存儲(chǔ)比特,其中Μ =向上舍入(PPS*T/2W)。
[0033]圖2圖示了一般優(yōu)化問題的示例性的w對總的存儲(chǔ)比特的圖200。在圖200上,w被表示在X軸上,同時(shí)總存儲(chǔ)比特被表示在1軸上。假設(shè)CPU每秒讀取和清空溢