定的 報文封裝格式封裝統(tǒng)計計數(shù)數(shù)據(jù)包,與本統(tǒng)計計數(shù)設(shè)備對應(yīng)的對端芯片(如網(wǎng)絡(luò)處理芯 片)按照該規(guī)定的報文封裝格式封裝統(tǒng)計計數(shù)數(shù)據(jù)包,本設(shè)備接收到統(tǒng)計計數(shù)數(shù)據(jù)包后, 由一個專門的解封裝模塊,如UPK進行解封裝,提取統(tǒng)計計數(shù)需要的信息進行相應(yīng)計算。
[0215] 優(yōu)選地,定義了一種規(guī)定的報文封裝格式,即Interlaken封裝格式,包含統(tǒng)計計 數(shù)計算所必需的信息,包括有效標(biāo)志位、區(qū)分不同統(tǒng)計業(yè)務(wù)的ID號、該業(yè)務(wù)支持的統(tǒng)計對 列數(shù)(Qnum)、統(tǒng)計增量及該業(yè)務(wù)支持的統(tǒng)計項(Type)等。
[0216] 優(yōu)選地,所述一個Interlaken封裝格式的統(tǒng)計計數(shù)數(shù)據(jù)包中包含的多個統(tǒng)計報 文切片,多個統(tǒng)計報文切片之間相互獨立,通過相應(yīng)的有效標(biāo)志位決定該統(tǒng)計報文切片是 否有效。
[0217] 優(yōu)選地,所述一個統(tǒng)計報文切片,其中最多包含兩個目標(biāo)統(tǒng)計計數(shù)項,對應(yīng)兩組統(tǒng) 計計數(shù)器。
[0218] 優(yōu)選地,所述目標(biāo)統(tǒng)計計數(shù)項,可以對應(yīng)一個計數(shù)器,也可以對應(yīng)多個計數(shù)器,t匕 如TM的一個統(tǒng)計項,可能需要同時統(tǒng)計包個數(shù)及包長度,這就需要兩個計數(shù)器,具體一個 統(tǒng)計計數(shù)項對應(yīng)的計數(shù)器個數(shù)可以由用戶配置。
[0219] 優(yōu)選地,經(jīng)過解封裝之后的統(tǒng)計報文切片進入PRE,根據(jù)相應(yīng)的標(biāo)識信息決定計數(shù) 器在SRAM中的地址信息以及計算增量。
[0220] 優(yōu)選地,所述計數(shù)器在SRAM中的地址信息以及計算增量進入STAT,STAT完成各個 統(tǒng)計項的計數(shù)功能,發(fā)出SRAM讀取命令,接收到SRAM返回值后進行計算,最后將計算結(jié)果 寫回到SRAM相應(yīng)地址中。
[0221] 優(yōu)選地,所述STAT能夠?qū)RAM讀寫數(shù)據(jù)可能產(chǎn)生的沖突進行處理,并且能夠按照 一定的優(yōu)先級調(diào)度處理統(tǒng)計計數(shù)命令和DM讀取命令對于SRAM的訪問請求。
[0222] 優(yōu)選地,所述訪問優(yōu)先級可以采用默認(rèn)優(yōu)先級配置,也可以采用用戶配置的優(yōu)先 級。
[0223] 優(yōu)選地,所述STAT,內(nèi)部也可以采用pipeline架構(gòu)實現(xiàn),為了解決SRAM訪問延 遲帶來的潛在問題,比如多個統(tǒng)計計數(shù)數(shù)據(jù)包指向同一組計數(shù)器,從而由于SRAM訪問延遲 造成計算信息未及時更新導(dǎo)致計數(shù)值不準(zhǔn)確的問題,設(shè)計中安排了一個Cache,用來緩存 SRAM訪問地址、訪問類型標(biāo)志、計算增量等信息,以避免計算信息未及時更新導(dǎo)致計數(shù)值 不準(zhǔn)確的問題,比如有兩個統(tǒng)計計數(shù)數(shù)據(jù)包指向同一組計數(shù)器,若計數(shù)器對第一個統(tǒng)計計 數(shù)數(shù)據(jù)包還未計算結(jié)束,就引入了第二個統(tǒng)計計數(shù)數(shù)據(jù)包進行運算,勢必會計算有誤,采用 Cache,可以使得第一個統(tǒng)計計數(shù)數(shù)據(jù)包運算結(jié)束后再引入第二個統(tǒng)計計數(shù)數(shù)據(jù)包,這樣計 算結(jié)果不會有誤。
[0224] 優(yōu)選地,所述STAT中的Cache,采用隊列結(jié)構(gòu)實現(xiàn),隊列深度由SRAM訪問延遲決 定,如果新進的統(tǒng)計計數(shù)數(shù)據(jù)包指向的SRAM訪問地址在指令緩存子模塊中能夠找到,那么 就將指向同一個SRAM地址的訪問請求合并(統(tǒng)計計數(shù)數(shù)據(jù)包合并),并將計算增量信息合 并。
[0225] 優(yōu)選地,所述STAT可以設(shè)計多組SRAM訪問口,進而實現(xiàn)多組統(tǒng)計計數(shù)請求的并行 處理。
[0226] 優(yōu)選地,所述存儲單元如SRAM的規(guī)格,可以根據(jù)實際需要進行選擇,包括SRAM塊 數(shù)據(jù)位寬、深度、塊數(shù)目等。另外,從ASIC實現(xiàn)的角度考慮,SRAM存儲塊可以由多個SRAM 小塊組成,多個SRAM小塊串成流水線形式,在不影響訪問性能的同時保證ASIC實現(xiàn)的可行 性。
[0227] 采用本發(fā)明實施例,至少具有下列優(yōu)點:
[0228] 本發(fā)明實施例由于基于Serdes接口、Interlaken、SRAM及計算邏輯,實現(xiàn)統(tǒng)計請 求數(shù)據(jù)包接收、解析、SRAM存儲數(shù)據(jù)讀取、統(tǒng)計計算、回寫、DM訪問等功能,與現(xiàn)有計數(shù)以 網(wǎng)絡(luò)處理芯片,包括網(wǎng)絡(luò)處理芯片為網(wǎng)絡(luò)處理器(NP, Network Processor,)、交換接入處理 器(SA,Switch Access)等芯片的片內(nèi)存儲資源或外掛存儲器(SRAM或SDRAM)等做法相比, 在芯片成本、使用靈活性、通用性及訪問帶寬等方面有著優(yōu)勢。
[0229] 以下用具體應(yīng)用場景對本發(fā)明實施例進行具體闡述。
[0230] 應(yīng)用場景一:基于統(tǒng)計計數(shù)設(shè)備、網(wǎng)絡(luò)處理芯片和CPU構(gòu)成的具有統(tǒng)計計數(shù)設(shè)備 的系統(tǒng)實現(xiàn)統(tǒng)計計數(shù)功能,其中,與統(tǒng)計計數(shù)設(shè)備交互的網(wǎng)絡(luò)處理芯片為一個的場景。
[0231] 如圖4所示為本應(yīng)用場景下的本發(fā)明第一實施例的高速串行統(tǒng)計計數(shù)設(shè)備(SST, Serial Statistics),作為一片網(wǎng)絡(luò)處理芯片(以NP或SA為例)的外掛統(tǒng)計芯片的應(yīng)用。 圖4中,NP/SA將統(tǒng)計請求通過Serdes接口發(fā)送給SST,SST接收到統(tǒng)計請求后,按照以下 圖5所示的步驟進行統(tǒng)計計數(shù),并將計數(shù)值寫入內(nèi)置SRAM中,SST接收還可以接收Host CPU 發(fā)送過來的讀計數(shù)器值的訪問請求并進行對應(yīng)的處理。
[0232] 如圖5所示,基于圖4具備統(tǒng)計計數(shù)設(shè)備的系統(tǒng)架構(gòu),能實現(xiàn)以下步驟:
[0233] 步驟50UNP/SA將統(tǒng)計請求按照SST規(guī)定的統(tǒng)計請求數(shù)據(jù)包的格式封裝成統(tǒng)計報 文切片;
[0234] 步驟502、NP/SA將多個統(tǒng)計報文切片合并填充到一拍Interlaken數(shù)據(jù)包中,通過 Serdes接口發(fā)送出去;
[0235] 步驟503、串行數(shù)據(jù)在Serdes接口構(gòu)成的物理鏈路上傳輸;
[0236] 步驟504、串行數(shù)據(jù)通過Serdes接口構(gòu)成的物理鏈路傳進SST后,HIF按照 Interlaken協(xié)議得到統(tǒng)計請求數(shù)據(jù)包;
[0237] 步驟505、UPK對統(tǒng)計請求數(shù)據(jù)包進行解析,輸出兩項解析內(nèi)容:統(tǒng)計請求的類型 及統(tǒng)計請求的增量;
[0238] 步驟506、PRE接收UPK的解析內(nèi)容,并將統(tǒng)計請求的類型及統(tǒng)計請求的增量轉(zhuǎn)化 為SRAM的地址及計算增量;
[0239] 步驟507、STAT根據(jù)PRE發(fā)送過來SRAM地址向SRAM發(fā)送讀請求,將SRAM讀返回 數(shù)據(jù)與統(tǒng)計請求增量進行運算,最后將計算結(jié)果寫回到SRAM中相應(yīng)地址;
[0240] 這里,STAT還可以處理CPU讀計數(shù)器計數(shù)值的訪問請求;
[0241] 步驟508, Host CPU通過CFM向STAT發(fā)送讀計數(shù)器值請求,并接收相應(yīng)返回值。
[0242] 如圖6所示為SST內(nèi)部總體實現(xiàn)架構(gòu),所述SST與所述NP/SA進行交互,所述SST 包括:
[0243] HIF,用于接收NP/SA發(fā)送過來的統(tǒng)計請求;
[0244] UPK,用于對SST外接的NP/SA發(fā)送的統(tǒng)計請求進行解析,輸出兩項解析內(nèi)容:統(tǒng)計 請求的類型及統(tǒng)計請求的增量;
[0245] PRE,用于接收UPK輸出的解析內(nèi)容,并將統(tǒng)計請求轉(zhuǎn)化為SRAM的地址及計算增 量;
[0246] STAT,用于根據(jù)PRE發(fā)送過來SRAM地址向SRAM發(fā)送讀請求,將SRAM讀返回數(shù)據(jù) 與統(tǒng)計請求增量進行運算,最后將計算結(jié)果寫回到SRAM中相應(yīng)地址,另外還處理Host CPU 的讀計數(shù)器值命令;
[0247] MEM,可以采用SRAM作為存儲介質(zhì),可以根據(jù)需要設(shè)計存儲容量、群組數(shù)量(決定 訪問口數(shù)目,從而支持多路計數(shù)器同時計數(shù)),另外從ASIC實現(xiàn)的角度考慮,SRAM存儲塊 可以由多個SRAM小塊組成,多個SRAM小塊串成流水線形式,在不影響訪問性能的同時保證 ASIC實現(xiàn)的可行性。本實施例中,MEM采用SRAM作為存儲介質(zhì),出兩組訪問口,用以最多支 持兩組統(tǒng)計計數(shù)項統(tǒng)計訪問;
[0248] CFM,用于接收Host CPU發(fā)送過來的配置命令,訪問相應(yīng)寄存器,書寫相應(yīng)配置項; 另外包含DM模塊(圖中未顯示),提供Host CPU快速讀取統(tǒng)計計數(shù)器值通路。本實施例 中,為了提供DM訪問速率,可以采用PCIe作為CPU訪問通路。
[0249] 如圖7所示為HIF內(nèi)部實現(xiàn)架構(gòu),圖7中還顯示有基于HIF的數(shù)據(jù)流傳輸示意,所 述HIF包括:
[0250] Ser de s轉(zhuǎn)換子模塊,用于接收NP/SA發(fā)送過來的高速串行b i t流數(shù)據(jù),完成串并轉(zhuǎn) 換功能,Serdes鏈路數(shù)目不定,可根據(jù)實際應(yīng)用中帶寬要求進行選擇。
[0251] Interlaken協(xié)議子模塊,用于根據(jù)為實現(xiàn)高帶寬及可靠包傳輸而優(yōu)化的互連協(xié) 議--Interlaken協(xié)議,將Serdes轉(zhuǎn)換子模塊發(fā)送過來的并行數(shù)據(jù)封裝成統(tǒng)計報文數(shù)據(jù) 包格式,另外完成鏈路檢測及保護功能。
[0252] 這里需要指出的是,標(biāo)準(zhǔn)Interlaken數(shù)據(jù)報文如表1所示,包括數(shù)據(jù)有效標(biāo)志 pkt_ena,包頭pkt_sop,包尾pkt_eop,錯誤標(biāo)志pkt_err,包數(shù)據(jù)pkt_dat等。本實施例中, interlaken數(shù)據(jù)包長度為3拍,每拍interlaken數(shù)據(jù)位寬為1024bit,實際運用中,不限于 此示意場景。
[0254] 表 1
[0255] 如圖8所示為UPK內(nèi)部實現(xiàn)架構(gòu),圖8中還顯示有基于UPK的數(shù)據(jù)流傳輸示意,所 述UPK包括:
[0256] 緩存子模塊,用于從HIF接收Interlaken格式的請求數(shù)據(jù)包,剔除錯誤包,將有效 數(shù)據(jù)包所有相關(guān)信息拼接起來存入緩存FIFO。由于一個數(shù)據(jù)包中包含多個統(tǒng)計報文切片, 而后面處理模塊及子模塊都是以統(tǒng)計報文切片作為最小處理單元的,所以存在處理速率差 的問題,安排緩存子模塊正好解決了這樣的速率差。
[0257] 解析子模塊,從緩存子模塊中取出一個數(shù)據(jù)包,根據(jù)切片位寬切成多個統(tǒng)計報文 切片,根據(jù)切片有效標(biāo)志位將有效切片發(fā)送給后續(xù)處理模塊及子模塊,每次發(fā)送一個統(tǒng)計 報文切片,待這個數(shù)據(jù)包中所有有效切片發(fā)送完畢之后再從緩存子模塊中取出新的數(shù)據(jù) 包。根據(jù)統(tǒng)計報文切片規(guī)定格式對統(tǒng)計報文切片進行解析,得到區(qū)分不同統(tǒng)計業(yè)務(wù)的ID 號、該業(yè)務(wù)支持的統(tǒng)計對列數(shù)(Queue)、統(tǒng)計增量及該業(yè)務(wù)支持的統(tǒng)計項(Type)等,為后續(xù) 單元訪問SRAM塊、計算統(tǒng)計值等提供必要信息。本實施例中,統(tǒng)計報文切片所包含的內(nèi)容 上述表1所示,表1為標(biāo)準(zhǔn)報文格式,只是為了示例說明,并不限制于這種格式,也可以在此 基礎(chǔ)上進行擴展。
[0258] 如表1所示,該統(tǒng)計報文切片位寬88bit,包含兩組統(tǒng)計業(yè)務(wù)項,分別占用44bit, 兩組統(tǒng)計業(yè)務(wù)項之間相互獨立。兩組統(tǒng)計業(yè)務(wù)項字段格式相同,包含如下幾個字段:
[0259] Vld :業(yè)務(wù)有效標(biāo)志位;
[0260] ID :業(yè)務(wù)id,區(qū)分不同的統(tǒng)計業(yè)務(wù)項,最多支持8種不同的統(tǒng)計業(yè)務(wù)項,比如TM入 隊統(tǒng)計、TM出隊統(tǒng)計、OAM統(tǒng)計等;
[0261] Qnum :統(tǒng)計隊列數(shù),最多支持IM的統(tǒng)計隊列,比如TM需要支持的統(tǒng)計隊列數(shù)為 512K,那么該字段低19bit就表示隊列號,最高bit位為0 ;
[0262] Len :統(tǒng)計增量,最大支持增量為32K,比如TM統(tǒng)計需要統(tǒng)計報文長度,那么就可以 把報文長度數(shù)據(jù)放進這個字段;
[0263] Type :id下一個統(tǒng)計隊列中需要統(tǒng)計的統(tǒng)計項數(shù)目,最大支持16個統(tǒng)計項。
[0264] 比如業(yè)務(wù)ID為0,對應(yīng)TM入隊統(tǒng)計,需要支持的隊列數(shù)為512K,Qnum低19bit對 應(yīng)隊列號,最高為固定為〇,每個隊列需要支持11個統(tǒng)計項,包括正常入隊、TD丟棄、禁用丟 棄、WRED/GRED第0~7優(yōu)先級丟包等,分別對應(yīng)Type號0~10,每個數(shù)據(jù)包支持報文長度 統(tǒng)計,報文長度由Len字段表TK。
[0265] 這里需要指出的是,PRE,用于接收UPK單元的解析內(nèi)容,并將統(tǒng)計請求轉(zhuǎn)化為 SRAM的地址及計算增量。具體的,可以根據(jù)所述ID號、所述Qnum、所述Type字段及用戶預(yù) 設(shè)的一些配置信息對應(yīng)的統(tǒng)計規(guī)則就可以計算得到目標(biāo)計數(shù)器對應(yīng)的SRAM地址,計算流 程如圖9所示,包括:
[0266] 步驟901,根據(jù)收到的統(tǒng)計請求ID號信息查詢用戶配置寄存器,從寄存器中得到 該ID對應(yīng)業(yè)務(wù)在存儲器中的起始地址、該業(yè)務(wù)計數(shù)方式(只記包個數(shù)還是既記包個數(shù)又記 包長度或者只記包長度)等后續(xù)計算計數(shù)器地址所必需信息;
[0267] 步驟902,根據(jù)Type號信息查詢用戶配置寄存器,從寄存器中得到該Type對應(yīng)統(tǒng) 計項在存儲器中的相對ID基地址的偏移地址;
[0268] 步驟903,根據(jù)Qnum及前面查詢得到的配置信息計算存儲器地址。
[0269] 具體來說,在本實施例中,ID號為0,表示TM入隊統(tǒng)計,對應(yīng)在存儲器中的起始地 址為base_addr_idO,統(tǒng)計計數(shù)方式為只記包個數(shù),Type號為0,表示正常入隊,其偏移地址 為base_addr_typeO, SRAM數(shù)據(jù)位寬為IOObit,-個計數(shù)器位寬為50bit,那么一個SRAM地 址能夠存放兩個計數(shù)器,因此隊列號為Qnum的統(tǒng)計項對應(yīng)的SRAM存儲器地址為:
[0270] Addr = base_addr_idO+base_addr_typeO+Qnum/2
[0271] 如果Qnum是奇數(shù),那么那么