统计计数设备及其实现方法、具有统计计数设备的系统
技术领域
本发明涉及数据通信领域的统计技术,尤其涉及一种统计计数设备及其实现方法、及具有统计计数设备的系统。
背景技术
本申请发明人在实现本申请实施例技术方案的过程中,至少发现相关技术中存在如下技术问题:
随着Internet的迅猛发展,用于主干网络互联的核心路由器的接口速率达到100Gbps,并且网络处理芯片所支持的流量管理(TM,Traffic Management)、操作管理及维护(OAM,Operation Administration and Maintenance)等功能模块的性能也越来越高,带来的问题是对于统计计数的需求也相应提高。
现有方案一:如果采用片内静态随机访问存储器(SRAM,Static RandomAccessMemory)存储统计计数信息,为了满足现代核心路由器的性能要求,需要占用大量的片内存储器资源,由于片内SRAM是设置于所述网络处理芯片内部的存储器,随着片内SRAM的增加,会带来网络处理器芯片成本的大量增长,显然这是不能承受的。
现有方案二:如果采用设置于所述网络处理芯片外部的外挂存储器,如SRAM或者同步动态随机访问存储器(SDRAM,Synchronous Dynamic RandomAccess Memory),将计算好的统计计数值写到该外挂存储器中,这样做的好处是不必占用所述网络处理芯片的片内存储资源,成本较低;缺点是实现统计计数功能的计数模块需要放在网络处理芯片内部,也需要占用一定的网络处理芯片的面积,会导致网络处理器芯片的成本增加。而且,如果采用网络处理芯片内置的计数模块、及外挂存储器如SRAM,由于计数模块得到的结果需要传输给SRAM存储,二者的频繁交互势必会占用带宽,从而导致出现访问带宽偏小的问题。
综上所述,无论是采用现有方案一,还是采用现有方案二,都存在各自的缺陷,会导致网络处理芯片的制造成本增加,访问带宽偏小的问题,对于这个问题,相关技术并未存在有效的解决方案。
发明内容
有鉴于此,本发明实施例希望提供一种统计计数设备及其实现方法、及具有统计计数设备的系统,能实现统计计数功能,避免网络处理芯片的制造成本增加,访问带宽偏小的问题。
本发明实施例的技术方案是这样实现的:
本发明实施例的一种统计计数设备,所述统计计数设备设置于网络处理芯片外部,所述设备包括:
接收单元,用于接收网络处理芯片发送的统计请求;
解析单元,用于对所述统计请求进行解析,得到统计请求的类型和统计请求的增量;
统计单元,用于根据预设配置将所述统计请求的类型和统计请求的增量转化为存储单元的地址及数据计算增量;根据所述存储单元的地址向对应的存储单元发送读取数据请求;将存储单元返回的所读取的数据与所述数据计算增量进行统计计数运算,并将得到的统计结果写入对应的存储单元;
存储单元,用于存储数据,接收到所述读取数据请求,响应所述读取数据请求并将所读取的数据返回所述统计单元。
优选地,所述统计计数设备还包括:
配置单元,用于接收主CPU发送的访问请求,响应所述访问请求,经由所述统计单元从所述存储单元获取所述统计结果并提供给主CPU使用。
优选地,所述接收单元,还包括:
高速接口模块,用于采用高速串行器/解串器Serdes接口构成的物理链路,配合高速传输协议Interlaken来接收所述统计请求。
优选地,所述高速接口模块,还包括:
Serdes转换子模块,用于完成高速数据的串并转换,并将所述统计请求由串行数据转换为以并行数据传输;
Interlaken协议子模块,用于将所述Serdes转换子模块传输的所述并行数据基于所述Interlaken封装为Interlaken格式的请求数据包。
优选地,所述解析单元,还包括:
报文解析模块,用于按照约定的格式对所述统计请求进行解析,得到统计请求的类型和统计请求的增量;
所述统计请求,为由所述网络处理芯片按照所述约定的格式进行封装得到的;
所述约定的格式为基于所述Interlaken封装的格式,基本单元为统计报文切片。
优选地,所述高速接口模块,还包括:
Serdes转换子模块,用于完成高速数据的串并转换,并将所述统计请求由串行数据转换为以并行数据传输;
Interlaken协议子模块,用于将所述Serdes转换子模块传输的所述并行数据基于所述Interlaken封装为Interlaken格式的请求数据包;
任一个所述Interlaken格式的请求数据包,包括多个统计报文切片;
相应的,所述解析单元,还包括:
解析子模块,用于获取任一个所述Interlaken格式的请求数据包,根据统计报文切片的有效标志位读取所述请求数据包,与所述有效标志位匹配时,对得到的一个统计报文切片进行解析,直至读取出所述请求数据包中包含的所有统计报文切片并解析。
优选地,所述解析单元,还包括:
缓存子模块,用于存储待解析的所有请求数据包;
所述解析子模块,还用于对当前读取的请求数据包根据统计报文切片的有效标志位读取,以获得所述统计报文切片的情况下,等待当前读取的请求数据包中的所有统计报文切片都处理完毕后再从所述缓存子模块提取下一个请求数据包;
以及,对所述统计报文切片进行解析,得到的所述统计请求的类型包括:区分不同统计业务的ID号、统计业务支持的统计对列数、及统计业务支持的统计项。
优选地,所述统计单元,还包括:
统计预处理模块,用于根据预设配置将所述统计请求的类型和统计请求的增量转化为存储单元的地址及数据计算增量;
统计计算模块,用于根据所述存储单元的地址向对应的存储单元发送读取数据请求;将存储单元返回的所读取的数据与所述数据计算增量进行统计计数运算,并将得到的统计结果写入对应的存储单元。
优选地,所述高速接口模块,还包括:
Serdes转换子模块,用于完成高速数据的串并转换,并将所述统计请求由串行数据转换为以并行数据传输;
Interlaken协议子模块,用于将所述Serdes转换子模块传输的所述并行数据基于所述Interlaken封装为Interlaken格式的请求数据包;
任一个所述Interlaken格式的请求数据包,包括多个统计报文切片;
所述解析单元,还包括:
解析子模块,用于获取任一个所述Interlaken格式的请求数据包,根据统计报文切片的有效标志位读取所述请求数据包,与所述有效标志位匹配时,对得到的一个统计报文切片进行解析,解析得到的所述统计请求的类型包括:区分不同统计业务的ID号、统计业务支持的统计对列数及统计业务支持的统计项;解析得到的所述统计请求的增量包括统计增量;
相应的,所述统计预处理模块还包括:
预处理子模块,用于获取所述区分不同统计业务的ID号、所述统计业务支持的统计对列数及所述统计业务支持的统计项、所述统计增量及所述预设配置;
以及,基于所述预设配置得到的统计规则,根据所述区分不同统计业务的ID号得到配置信息,根据所述统计业务支持的统计项得到对应的存储单元基地址,根据所述存储单元基地址、所述统计业务支持的统计对列数及所述配置信息计算得到存储单元目标地址,以根据所述存储单元目标地址为所述存储单元的地址来查询对应的存储单元;基于所述预设配置得到的统计规则,根据所述统计增量得到所述数据计算增量。
优选地,所述统计计算模块,还包括:
指令选择子模块,用于根据预设调度规则对网络处理芯片发送的统计请求及主CPU发送的访问请求中的任意一个请求选择进行响应,并执行对应的统计计数处理或统计结果访问处理;
指令缓存子模块,用于对指令进行缓存,等待一个指令执行完毕后再提取下一个指令,所述指令包括:根据所述存储单元的地址查询到对应的存储单元后发送读取数据请求的指令、将得到的统计结果写入对应的存储单元的回写数据的指令、提供统计结果给主CPU访问的指令中的至少一种指令;
计算子模块,用于根据所述存储单元的地址查询到对应的存储单元,发出读取数据请求的指令后,根据返回的所读取的数据与所述统计增量进行统计计数运算。
本发明实施例的一种统计计数实现方法,所述方法包括:
统计计数设备接收网络处理芯片发送的统计请求;所述统计计数设备设置于网络处理芯片外部;
统计计数设备对所述统计请求进行解析,得到统计请求的类型和统计请求的增量;
统计计数设备根据预设配置将所述统计请求的类型和统计请求的增量转化为内置存储器的地址及数据计算增量;统计计数设备根据所述存储器的地址向对应的存储器发送读取数据请求,将存储器返回的所读取的数据与所述数据计算增量进行统计计数运算,并将得到的统计结果写入对应的存储器。
优选地,所述方法还包括:
统计计数设备接收主CPU发送的访问请求;
响应所述访问请求,经由所述统计单元从所述存储单元获取所述统计结果并提供给所述主CPU使用。
优选地,所述统计计数设备接收网络处理芯片发送的统计请求,包括:
统计计数设备采用高速串行器/解串器Serdes接口构成的物理链路,配合高速传输协议Interlaken来接收所述统计请求。
优选地,所述方法还包括:
统计计数设备将所述统计请求由串行数据转换为以并行数据传输;
统计计数设备将传输的所述并行数据基于所述Interlaken封装为Interlaken格式的请求数据包。
优选地,所述统计请求为由所述网络处理芯片按照约定的格式进行封装得到的Interlaken格式的请求数据包;
所述方法还包括:所述统计计数设备按照所述约定的格式对所述统计请求进行解析,得到统计请求的类型和统计请求的增量。
优选地,任一个所述Interlaken格式的请求数据包,包括多个统计报文切片;
所述方法还包括:
获取任一个所述Interlaken格式的请求数据包,根据统计报文切片的有效标志位读取所述请求数据包,与所述有效标志位匹配时,对得到的一个统计报文切片进行解析,直至读取出所述请求数据包中包含的所有统计报文切片并解析。
优选地,任一个所述Interlaken格式的请求数据包,包括多个统计报文切片;
所述方法还包括:
在缓存中存储待解析的所有请求数据包;
对当前读取的请求数据包根据统计报文切片的有效标志位读取,以获得所述统计报文切片,等待当前读取的请求数据包中的所有统计报文切片都处理完毕后再从所述缓存中提取下一个请求数据包。
优选地,所述统计请求的类型包括:区分不同统计业务的ID号、统计业务支持的统计对列数、及统计业务支持的统计项;
所述统计请求的增量包括统计增量。
优选地,所述统计计数设备根据预设配置将所述统计请求的类型和统计请求的增量转化为内置存储器的地址及数据计算增量包括:
获取所述区分不同统计业务的ID号、所述统计业务支持的统计对列数、及统计业务支持的统计项、及所述预设配置;
基于所述预设配置得到的统计规则,根据所述区分不同统计业务的ID号得到配置信息,根据所述统计业务支持的统计项得到对应的存储器基地址,根据所述存储器基地址、所述统计业务支持的统计对列数及所述配置信息计算得到存储器目标地址并作为所述内置存储器的地址;
获取所述统计增量,基于所述预设配置得到的统计规则,得到所述数据计算增量。
优选地,所述统计计数设备根据所述存储器的地址向对应的存储器发送读取数据请求,将存储器返回的所读取的数据与所述统计增量进行统计计数运算,并将得到的统计结果写入对应的存储器,包括:
所述统计计数设备根据所述内置存储器的地址查询到对应的存储器,发出读取数据请求的指令后,根据返回的所读取的数据与所述数据计算增量进行统计计数运算。
本发明实施例的一种具有统计计数设备的系统,所述系统包括:统计计数设备,所述系统还包括网络处理芯片、主CPU中的任意一种设备;
所述网络处理芯片,用于向所述统计计数设备发送统计请求;
所述主CPU,用于向所述统计计数设备发送访问请求;
所述统计计数设备为如上述方案任一项所述的统计计数设备。
本发明实施例提供的统计计数设备设置于网络处理芯片外部,所述设备包括:接收单元,用于接收网络处理芯片发送的统计请求;解析单元,用于对所述统计请求进行解析,得到统计请求的类型和统计请求的增量;统计单元,用于根据预设配置将所述统计请求的类型和统计请求的增量转化为存储单元的地址及数据计算增量;根据所述存储单元的地址向对应的存储单元发送读取数据请求;将存储单元返回的所读取的数据与所述数据计算增量进行统计计数运算,并将得到的统计结果写入对应的存储单元;存储单元,用于存储数据,接收到所述读取数据请求,响应所述读取数据请求并将所读取的数据返回所述统计单元,使所述统计单元能基于所述所读取的数据进行统计运算。
采用本发明实施例,统计计数设备设置于网络处理芯片外部,且统计计数设备内置有存储单元如SRAM,再配合统计计数设备内部的一系列单元能独立完成计数运算,将结果直接返回内置的存储单元进行存储,这种设备架构,不仅能高速实现统计计数功能,同时能避免上述现有技术架构所导致的网络处理芯片的制造成本增加,访问带宽偏小的问题
附图说明
图1为本发明统计计数设备的组成结构示意图;
图2为本发明统计计数实现方法的实现流程示意图;
图3为本发明系统的组成结构示意图;
图4为应用场景一的本发明第一实施例对应的系统架构示意图;
图5为本发明第一实施例的方法实现流程图;
图6为本发明第一实施例的SST内部实现结构示意图;
图7为本发明第一实施例的HIF内部实现架构示意图;
图8为本发明第一实施例的UPK单元内部实现架构示意图;及数据流图;
图9为本发明第一实施例的PRE内部计算实现流程图;
图10为本发明第一实施例的STAT内部实现架构示意图;及工作流程图;
图11为应用场景二的本发明第二实施例对应的系统架构示意图;
图12为本发明第二实施例的方法实现流程图。
具体实施方式
下面结合附图对技术方案的实施作进一步的详细描述。
本发明实施例的方案是一种能实现高速串行统计计数的方案,利用底层的高速Serdes接口、上层交互接口协议Interlaken、内置的存储单元如SRAM及统计计数的计算逻辑,根据约定的统计请求数据包的格式,实现接收网络处理芯片或主(Host)CPU发出的请求(对于网络处理芯片是统计请求,对于HostCPU,是访问请求),从存储单元如SRAM中读取已有的计数信息,并进行规定的计数运算,将统计计数结果写回到存储单元如SRAM中存储。进而,用户能通过直接内存存取(DMA,Direct Memory Access)接口读取统计计数结果,实现统计请求数据包的接收、解析、统计计数、存储单元如SRAM读写等一系列功能。
本发明实施例能实现高性能、大容量的统计计数,采用一个设置于网络处理芯片外部的外挂的统计计数设备,独立完成统计计数功能,并将用于存储统计计数结果的存储单元,比如SRAM或SDRAM也同样内置于该外挂的统计计数设备中,以解决现有设计中存在的网络处理芯片容量及性能的问题,既不需要占用网络处理芯片内部的SRAM,节约网络处理芯片的制造成本;又不使用外挂的SDRAM,不存在访问带宽偏小的问题。
这里需要指出的是,所述高速Serdes接口,是包含串行器(SERializer)和解串器(DESerializer)对应接口的统称;所述Interlaken,是新一代数据包互连协议,Interlaken作为一种可扩展协议,支持从10Gbps到100Gbps及以上的芯片至芯片数据包传送,能满足当今对更大带宽、更高性能的设计需求。
本发明实施例提供的一种统计计数设备,所述统计计数设备设置于网络处理芯片外部,如图1所示,所述统计计数设备包括:
接收单元,用于接收网络处理芯片发送的统计请求;
解析单元,用于对所述统计请求进行解析,得到统计请求的类型和统计请求的增量;
统计单元,用于根据预设配置将所述统计请求的类型和统计请求的增量转化为存储单元的地址及数据计算增量;根据所述存储单元的地址向对应的存储单元发送读取数据请求;将存储单元返回的所读取的数据与所述数据计算增量进行统计计数运算,并将得到的统计结果写入对应的存储单元;
存储单元,用于存储数据,接收到所述读取数据请求,响应所述读取数据请求并将所读取的数据返回所述统计单元,使所述统计单元能基于所述所读取的数据进行统计运算。
在本发明实施例一优选实施方式中,所述统计计数设备还包括:
配置单元,用于接收主CPU发送的访问请求,响应所述访问请求,经由所述统计单元从所述存储单元获取所述统计结果并提供给主CPU使用。
在本发明实施例一优选实施方式中,所述接收单元,还包括:
高速接口模块,用于采用高速串行器/解串器Serdes接口构成的物理链路,配合高速传输协议Interlaken来接收所述统计请求。
在本发明实施例一优选实施方式中,所述高速接口模块,还包括:
Serdes转换子模块,用于完成高速数据的串并转换,并将所述统计请求由串行数据转换为以并行数据传输;
Interlaken协议子模块,用于将所述Serdes转换子模块传输的所述并行数据基于所述Interlaken封装为Interlaken格式的请求数据包。
在本发明实施例一优选实施方式中,所述解析单元,还包括:
报文解析模块,用于按照约定的格式对所述统计请求进行解析,得到统计请求的类型和统计请求的增量;
所述统计请求,为由所述网络处理芯片按照所述约定的格式进行封装得到的;
所述约定的格式为基于所述Interlaken封装的格式,基本单元为统计报文切片。
在本发明实施例一优选实施方式中,所述高速接口模块,还包括:
Serdes转换子模块,用于完成高速数据的串并转换,并将所述统计请求由串行数据转换为以并行数据传输;
Interlaken协议子模块,用于将所述Serdes转换子模块传输的所述并行数据基于所述Interlaken封装为Interlaken格式的请求数据包;
任一个所述Interlaken格式的请求数据包,包括多个统计报文切片;
相应的,所述解析单元,还包括:
解析子模块,用于获取任一个所述Interlaken格式的请求数据包,根据统计报文切片的有效标志位读取所述请求数据包,与所述有效标志位匹配时,对得到的一个统计报文切片进行解析,直至读取出所述请求数据包中包含的所有统计报文切片并解析。
在本发明实施例一优选实施方式中,所述解析单元,还包括:
缓存子模块,用于存储待解析的所有请求数据包;
所述解析子模块,还用于对当前读取的请求数据包根据统计报文切片的有效标志位读取,以获得所述统计报文切片的情况下,等待当前读取的请求数据包中的所有统计报文切片都处理完毕后再从所述缓存子模块提取下一个请求数据包;
以及,对所述统计报文切片进行解析,得到的所述统计请求的类型包括:区分不同统计业务的ID号、统计业务支持的统计对列数、及统计业务支持的统计项。
在本发明实施例一优选实施方式中,所述统计单元,还包括:
统计预处理模块,用于根据预设配置将所述统计请求的类型和统计请求的增量转化为存储单元的地址及数据计算增量;
统计计算模块,用于根据所述存储单元的地址向对应的存储单元发送读取数据请求;将存储单元返回的所读取的数据与所述数据计算增量进行统计计数运算,并将得到的统计结果写入对应的存储单元。
在本发明实施例一优选实施方式中,所述高速接口模块,还包括:
Serdes转换子模块,用于完成高速数据的串并转换,并将所述统计请求由串行数据转换为以并行数据传输;
Interlaken协议子模块,用于将所述Serdes转换子模块传输的所述并行数据基于所述Interlaken封装为Interlaken格式的请求数据包;
任一个所述Interlaken格式的请求数据包,包括多个统计报文切片;
所述解析单元,还包括:
解析子模块,用于获取任一个所述Interlaken格式的请求数据包,根据统计报文切片的有效标志位读取所述请求数据包,与所述有效标志位匹配时,对得到的一个统计报文切片进行解析,解析得到的所述统计请求的类型包括:区分不同统计业务的ID号、统计业务支持的统计对列数及统计业务支持的统计项;解析得到的所述统计请求的增量包括统计增量;
相应的,所述统计预处理模块还包括:
预处理子模块,用于获取所述区分不同统计业务的ID号、所述统计业务支持的统计对列数及所述统计业务支持的统计项、所述统计增量及所述预设配置;
以及,基于所述预设配置得到的统计规则,根据所述区分不同统计业务的ID号得到配置信息,根据所述统计业务支持的统计项得到对应的存储单元基地址,根据所述存储单元基地址、所述统计业务支持的统计对列数及所述配置信息计算得到存储单元目标地址,以根据所述存储单元目标地址为所述存储单元的地址来查询对应的存储单元;基于所述预设配置得到的统计规则,根据所述统计增量得到所述数据计算增量。
在本发明实施例一优选实施方式中,所述统计计算模块,还包括:
指令选择子模块,用于根据预设调度规则对网络处理芯片发送的统计请求及主CPU发送的访问请求中的任意一个请求选择进行响应,并执行对应的统计计数处理或统计结果访问处理;
指令缓存子模块,用于对指令进行缓存,等待一个指令执行完毕后再提取下一个指令,所述指令包括:根据所述存储单元的地址查询到对应的存储单元后发送读取数据请求的指令、将得到的统计结果写入对应的存储单元的回写数据的指令、提供统计结果给主CPU访问的指令中的至少一种指令;
计算子模块,用于根据所述存储单元的地址查询到对应的存储单元,发出读取数据请求的指令后,根据返回的所读取的数据与所述统计增量进行统计计数运算。
本发明实施例提供的一种统计计数实现方法,如图2所示,所述方法包括:
步骤101、统计计数设备接收网络处理芯片发送的统计请求;所述统计计数设备设置于网络处理芯片外部;
步骤102、统计计数设备对所述统计请求进行解析,得到统计请求的类型和统计请求的增量;
步骤103、统计计数设备根据预设配置将所述统计请求的类型和统计请求的增量转化为内置存储器的地址及数据计算增量;
步骤104、统计计数设备根据所述存储器的地址向对应的存储器发送读取数据请求,将存储器返回的所读取的数据与所述数据计算增量进行统计计数运算,并将得到的统计结果写入对应的存储器。
在本发明实施例一优选实施方式中,所述方法还包括:
统计计数设备接收主CPU发送的访问请求;
响应所述访问请求,经由所述统计单元从所述存储单元获取所述统计结果并提供给所述主CPU使用。
在本发明实施例一优选实施方式中,所述统计计数设备接收网络处理芯片发送的统计请求,包括:
统计计数设备采用高速串行器/解串器Serdes接口构成的物理链路,配合高速传输协议Interlaken来接收所述统计请求。
在本发明实施例一优选实施方式中,所述方法还包括:
统计计数设备将所述统计请求由串行数据转换为以并行数据传输;
统计计数设备将传输的所述并行数据基于所述Interlaken封装为Interlaken格式的请求数据包。
在本发明实施例一优选实施方式中,所述统计请求为由所述网络处理芯片按照约定的格式进行封装得到的Interlaken格式的请求数据包;
所述方法还包括:所述统计计数设备按照所述约定的格式对所述统计请求进行解析,得到统计请求的类型和统计请求的增量。
在本发明实施例一优选实施方式中,任一个所述Interlaken格式的请求数据包,包括多个统计报文切片;
所述方法还包括:
获取任一个所述Interlaken格式的请求数据包,根据统计报文切片的有效标志位读取所述请求数据包,与所述有效标志位匹配时,对得到的一个统计报文切片进行解析,直至读取出所述请求数据包中包含的所有统计报文切片并解析。
在本发明实施例一优选实施方式中,任一个所述Interlaken格式的请求数据包,包括多个统计报文切片;
所述方法还包括:
在缓存中存储待解析的所有请求数据包;
对当前读取的请求数据包根据统计报文切片的有效标志位读取,以获得所述统计报文切片,等待当前读取的请求数据包中的所有统计报文切片都处理完毕后再从所述缓存中提取下一个请求数据包。
在本发明实施例一优选实施方式中,所述统计请求的类型包括:区分不同统计业务的ID号、统计业务支持的统计对列数、及统计业务支持的统计项;
所述统计请求的增量包括统计增量。
在本发明实施例一优选实施方式中,所述统计计数设备根据预设配置将所述统计请求的类型和统计请求的增量转化为内置存储器的地址及数据计算增量包括:
获取所述区分不同统计业务的ID号、所述统计业务支持的统计对列数、及统计业务支持的统计项、及所述预设配置;
基于所述预设配置得到的统计规则,根据所述区分不同统计业务的ID号得到配置信息,根据所述统计业务支持的统计项得到对应的存储器基地址,根据所述存储器基地址、所述统计业务支持的统计对列数及所述配置信息计算得到存储器目标地址并作为所述内置存储器的地址;
获取所述统计增量,基于所述预设配置得到的统计规则,得到所述数据计算增量。
在本发明实施例一优选实施方式中,所述统计计数设备根据所述存储器的地址向对应的存储器发送读取数据请求,将存储器返回的所读取的数据与所述统计增量进行统计计数运算,并将得到的统计结果写入对应的存储器,包括:
所述统计计数设备根据所述内置存储器的地址查询到对应的存储器,发出读取数据请求的指令后,根据返回的所读取的数据与所述数据计算增量进行统计计数运算。
本发明实施例提供的一种具有统计计数设备的系统,如图3所示,所述系统包括:统计计数设备,所述系统还包括网络处理芯片、主CPU中的任意一种设备;
所述网络处理芯片,用于向所述统计计数设备发送统计请求;
所述主CPU,用于向所述统计计数设备发送访问请求;
所述统计计数设备为如上述方案任一项所述的统计计数设备。
基于上述针对设备及方法实现方案的描述,本发明实施例从设备具体应用的实现上来说,结合接收单元具体为高速接口模块(HIF)、解析单元具体为报文解析模块(UPK)、统计单元具体为由统计预处理模块(PRE)及统计计算模块(STAT)构成、存储单元(MEM)具体为SRAM或SDRAM、配置单元具体为配置管理单元(CFM)为例进行描述,所述统计计数设备可以包括以下单元及模块,但是并不限于这里所描述的单元及模块。
对于本发明实施例这种高速串行的统计计数设备来说,统计计数设备独立于网络处理芯片之外,且内置有存储单元,如SRAM或SDRAM,由于SRAM或SDRAM的处理方式类似,以下都用SRAM来描述,对于这种设备具体应用的实现上来说,具有以下主要内容:
1)HIF,用于与网络处理芯片交互时,利于底层高速串行接口,如Serdes接口和上层高速传输协议Interlaken,来接收网络处理芯片发送过来的统计请求。
2)UPK,用于对外接的网络处理芯片发送的统计请求,按照约定的统计请求数据包的格式进行解析,解析得到两项解析结果:统计请求的请求类型及统计请求的增量。
3)PRE,用于接收报文解析模块的解析结果,并转化为内置的SRAM地址及数据计算增量,所述转化即为:根据所述请求类型与SRAM地址的映射关系,查询到与所述统计请求的类型对应的SRAM地址,以便能根据所述SRAM地址寻址到SRAM;
这里,所述请求类型是为了寻址使用,所述数据请求增量是为了后续的数据统计计数使用,不做赘述。
4)STAT,用于根据PRE发送过来SRAM地址向内置的SRAM发送读请求,以便从SRAM读取数据,用于统计计数;将从SRAM读取的返回数据与所述数据请求增量进行统计计数运算,最后将统计计算结果写回到该SRAM中的相应地址;
另外,统计计数设备得到统计计数结果后,由于能通过Host CPU提供给用户使用,所以,所述STAT还可以用于处理Host CPU的读计数器值命令。
5)MEM,可以采用片内SRAM作为存储介质,也可以采用其他高速momory。SRAM用于存储统计计数的信息,包括:已有计数值及根据新增计数值与已有计数值进行运算,以实现统计计数所得到的统计计算结果,为了保证访问带宽。
这里需要指出的是,所述存储单元,采用片内SRAM作为存储介质时,可以根据需要设计存储容量、群组数量(决定访问口数目,从而支持多路计数器同时计数),另外从ASIC实现的角度考虑,片内SRAM可以由多个SRAM小块组成,多个SRAM小块串成流水线形式,在不影响访问性能的同时保证ASIC实现的可行性。
6)CFM,用于接收Host CPU发送过来的配置命令,根据配置命令访问自身配置的对应寄存器,书写相应的配置项。
另外,CFM还包含DMA模块,以便提供给Host CPU快速读取统计计数器值的通路。所述统计计数器位于所述统计计数设备中,作为基础的计算工具,可以位于所述统计计数设备的所述统计计算模块中。
优选地,所述HIF,可以包括:
Serdes转换子模块,用于完成高速数据的串并转换功能,将串行数据转换为并行数据;
Interlaken协议子模块,用于根据为实现高带宽及可靠包传输而优化的互连协议,如interlaken协议,将所述Serdes模块发送过来的所述并行数据封装成统计计数数据包的数据包格式,另外完成链路检测及保护功能。
优选地,Interlaken协议子模块还可以为一组interlaken组件,对应一个interlaken访问口,用于将本统计计数设备作为一个主网络处理芯片的外挂计数芯片;Interlaken协议子模块还可以为多组interlaken组件,对应多个interlaken访问口,从而实现多个主网络处理芯片共享一篇外挂计数芯片的目标,在满足计数需求的前提下节省系统级的成本。
优选地,所述UPK,可以包括:
缓存子模块,用于从高速接口模块接收Interlaken格式的数据包,由于一个数据包中包含多个统计报文切片,而本统计计数设备除所述高速接口模块和所述报文解析模块之外的几个处理模块及子模块都是以统计报文切片作为最小处理单元的,所以存在处理速率差的问题,安排所述缓存子模块正好解决了这样的速率差,起到调速的作用。
解析子模块,用于从缓存子模块中取出一个所述数据包,根据统计报文切片的切片位宽切成多个统计报文切片,根据统计报文切片的有效标志位将有效切片发送给后续模块及子模块进行处理,每次发送一个统计报文切片,待这个当前数据包中所有有效切片发送完毕之后再从缓存子模块中取出新的数据包。根据统计报文切片规定格式对统计报文切片进行解析,得到区分不同统计业务的ID号、该业务支持的统计对列数(Qnum)、统计增量及该业务支持的统计项(Type)等,为后续单元访问存储单元,如SRAM块、统计计算单元用于计算统计值等提供必要信息。
优选地,所述PRE,用于接收解析子模块的解析内容,包括区分不同统计业务的ID号、该业务支持的统计对列数(Qnum)、统计增量及该业务支持的统计项(Type)等。另外,读取配置管理单元配置的包括统计规则的配置命令来访问自身配置的对应寄存器信息,写入对应的配置项;
综合上述这些信息按照预设的统计规则,计算得到计数器地址及计数增量。
优选地,所述STAT,具体包括:
指令选择子模块(MUX),用以选择执行由网络处理芯片发送的统计计数请求,还是执行Host CPU发送的DMA读访问请求,调度规则由用户配置;
指令缓存子模块(Cache),用以缓存一定拍数的SRAM访问地址、回写数据及DMA标志等信息;
计算子模块(ALU),用以根据PRE提供的SRAM访问地址,向SRAM发出读访问命令,待读取到返回数据后,将得到的返回数据及统计预处理模块提供的数据计算增量进行数学运算,最后将计算结果回写到SRAM相应地址中。
另外,所述STAT,还用于检查新进SRAM访问地址在Cache中是否有相同地址,也就是说有多个请求都访问到SRAM相应地址,如果有的话就按照一定规则进行指令合并,如果不进行指令合并,容易有读写错误。另外,在DMA读访问模式下,向SRAM发出读命令,将读返回数据返回给配置管理单元。
相应地,本发明实施例从方法具体应用的实现上来说,具有以下主要内容:
对于本发明实施例这种高速串行的统计计数实现方法来说,包括:本统计计数设备接收其他芯片发送过来的请求,比如,接收到网络处理芯片的统计请求,本统计计数设备进行统计计数;接收到Host CPU发送的DMA读访问请求,本统计计数设备将统计计数结果提供给Host CPU使用。
对于本统计计数设备进行统计计数而言,所述方法包括:
与网络处理芯片交互时,基于底层高速串行接口,如Serdes接口和上层高速传输协议Interlaken,来接收网络处理芯片发送过来的统计请求;
按照约定的统计数据包的格式对统计请求进行解析,根据解析结果寻址到存储单元,从存储单元读取数据;
根据读取的数据进行统计计数运算,将计算结果回写入存储单元如SRAM,以便后续提供给Host CPU使用。
这里需要指出的是,构成所述统计请求的统计计数数据包的接收、解析处理、向存储单元如SRAM发出访问以得到所读取的返回数据、根据返回数据和数据请求增量进行统计计数运算、回写入存储单元如SRAM等一系列动作采用流水级(pipeline)架构实现,提高系统处理性能。所述pipeline架构即本统计计数设备的各个单元及模块所形成的架构。
优选地,基于所述Serdes接口接收其他芯片(如所述网络处理芯片)发出的统计请求,具体包括:
统计请求传输的物理通路,采用当前流行的高速串行接口——Serdes接口,配合了上层传输协议——Interlaken,以实现高性能、高通用行的链路传输。
优选地,所述配合上层传输协议,采用能够实现高带宽及可靠包传输而优化的互连协议---Interlaken,能够实现接口协议的高通用性、高兼容性。
优选地,所述统计请求以统计计数数据包的形式存在,所述基于Interlaken协议封装格式的所述统计计数数据包中包含多个统计报文切片,每个统计报文切片按照规定的报文封装格式封装统计计数数据包,与本统计计数设备对应的对端芯片(如网络处理芯片)按照该规定的报文封装格式封装统计计数数据包,本设备接收到统计计数数据包后,由一个专门的解封装模块,如UPK进行解封装,提取统计计数需要的信息进行相应计算。
优选地,定义了一种规定的报文封装格式,即Interlaken封装格式,包含统计计数计算所必需的信息,包括有效标志位、区分不同统计业务的ID号、该业务支持的统计对列数(Qnum)、统计增量及该业务支持的统计项(Type)等。
优选地,所述一个Interlaken封装格式的统计计数数据包中包含的多个统计报文切片,多个统计报文切片之间相互独立,通过相应的有效标志位决定该统计报文切片是否有效。
优选地,所述一个统计报文切片,其中最多包含两个目标统计计数项,对应两组统计计数器。
优选地,所述目标统计计数项,可以对应一个计数器,也可以对应多个计数器,比如TM的一个统计项,可能需要同时统计包个数及包长度,这就需要两个计数器,具体一个统计计数项对应的计数器个数可以由用户配置。
优选地,经过解封装之后的统计报文切片进入PRE,根据相应的标识信息决定计数器在SRAM中的地址信息以及计算增量。
优选地,所述计数器在SRAM中的地址信息以及计算增量进入STAT,STAT完成各个统计项的计数功能,发出SRAM读取命令,接收到SRAM返回值后进行计算,最后将计算结果写回到SRAM相应地址中。
优选地,所述STAT能够对SRAM读写数据可能产生的冲突进行处理,并且能够按照一定的优先级调度处理统计计数命令和DMA读取命令对于SRAM的访问请求。
优选地,所述访问优先级可以采用默认优先级配置,也可以采用用户配置的优先级。
优选地,所述STAT,内部也可以采用pipeline架构实现,为了解决SRAM访问延迟带来的潜在问题,比如多个统计计数数据包指向同一组计数器,从而由于SRAM访问延迟造成计算信息未及时更新导致计数值不准确的问题,设计中安排了一个Cache,用来缓存SRAM访问地址、访问类型标志、计算增量等信息,以避免计算信息未及时更新导致计数值不准确的问题,比如有两个统计计数数据包指向同一组计数器,若计数器对第一个统计计数数据包还未计算结束,就引入了第二个统计计数数据包进行运算,势必会计算有误,采用Cache,可以使得第一个统计计数数据包运算结束后再引入第二个统计计数数据包,这样计算结果不会有误。
优选地,所述STAT中的Cache,采用队列结构实现,队列深度由SRAM访问延迟决定,如果新进的统计计数数据包指向的SRAM访问地址在指令缓存子模块中能够找到,那么就将指向同一个SRAM地址的访问请求合并(统计计数数据包合并),并将计算增量信息合并。
优选地,所述STAT可以设计多组SRAM访问口,进而实现多组统计计数请求的并行处理。
优选地,所述存储单元如SRAM的规格,可以根据实际需要进行选择,包括SRAM块数据位宽、深度、块数目等。另外,从ASIC实现的角度考虑,SRAM存储块可以由多个SRAM小块组成,多个SRAM小块串成流水线形式,在不影响访问性能的同时保证ASIC实现的可行性。
采用本发明实施例,至少具有下列优点:
本发明实施例由于基于Serdes接口、Interlaken、SRAM及计算逻辑,实现统计请求数据包接收、解析、SRAM存储数据读取、统计计算、回写、DMA访问等功能,与现有计数以网络处理芯片,包括网络处理芯片为网络处理器(NP,Network Processor,)、交换接入处理器(SA,Switch Access)等芯片的片内存储资源或外挂存储器(SRAM或SDRAM)等做法相比,在芯片成本、使用灵活性、通用性及访问带宽等方面有着优势。
以下用具体应用场景对本发明实施例进行具体阐述。
应用场景一:基于统计计数设备、网络处理芯片和CPU构成的具有统计计数设备的系统实现统计计数功能,其中,与统计计数设备交互的网络处理芯片为一个的场景。
如图4所示为本应用场景下的本发明第一实施例的高速串行统计计数设备(SST,Serial Statistics),作为一片网络处理芯片(以NP或SA为例)的外挂统计芯片的应用。图4中,NP/SA将统计请求通过Serdes接口发送给SST,SST接收到统计请求后,按照以下图5所示的步骤进行统计计数,并将计数值写入内置SRAM中,SST接收还可以接收Host CPU发送过来的读计数器值的访问请求并进行对应的处理。
如图5所示,基于图4具备统计计数设备的系统架构,能实现以下步骤:
步骤501、NP/SA将统计请求按照SST规定的统计请求数据包的格式封装成统计报文切片;
步骤502、NP/SA将多个统计报文切片合并填充到一拍Interlaken数据包中,通过Serdes接口发送出去;
步骤503、串行数据在Serdes接口构成的物理链路上传输;
步骤504、串行数据通过Serdes接口构成的物理链路传进SST后,HIF按照Interlaken协议得到统计请求数据包;
步骤505、UPK对统计请求数据包进行解析,输出两项解析内容:统计请求的类型及统计请求的增量;
步骤506、PRE接收UPK的解析内容,并将统计请求的类型及统计请求的增量转化为SRAM的地址及计算增量;
步骤507、STAT根据PRE发送过来SRAM地址向SRAM发送读请求,将SRAM读返回数据与统计请求增量进行运算,最后将计算结果写回到SRAM中相应地址;
这里,STAT还可以处理CPU读计数器计数值的访问请求;
步骤508,Host CPU通过CFM向STAT发送读计数器值请求,并接收相应返回值。
如图6所示为SST内部总体实现架构,所述SST与所述NP/SA进行交互,所述SST包括:
HIF,用于接收NP/SA发送过来的统计请求;
UPK,用于对SST外接的NP/SA发送的统计请求进行解析,输出两项解析内容:统计请求的类型及统计请求的增量;
PRE,用于接收UPK输出的解析内容,并将统计请求转化为SRAM的地址及计算增量;
STAT,用于根据PRE发送过来SRAM地址向SRAM发送读请求,将SRAM读返回数据与统计请求增量进行运算,最后将计算结果写回到SRAM中相应地址,另外还处理Host CPU的读计数器值命令;
MEM,可以采用SRAM作为存储介质,可以根据需要设计存储容量、群组数量(决定访问口数目,从而支持多路计数器同时计数),另外从ASIC实现的角度考虑,SRAM存储块可以由多个SRAM小块组成,多个SRAM小块串成流水线形式,在不影响访问性能的同时保证ASIC实现的可行性。本实施例中,MEM采用SRAM作为存储介质,出两组访问口,用以最多支持两组统计计数项统计访问;
CFM,用于接收Host CPU发送过来的配置命令,访问相应寄存器,书写相应配置项;另外包含DMA模块(图中未显示),提供Host CPU快速读取统计计数器值通路。本实施例中,为了提供DMA访问速率,可以采用PCIe作为CPU访问通路。
如图7所示为HIF内部实现架构,图7中还显示有基于HIF的数据流传输示意,所述HIF包括:
Serdes转换子模块,用于接收NP/SA发送过来的高速串行bit流数据,完成串并转换功能,Serdes链路数目不定,可根据实际应用中带宽要求进行选择。
Interlaken协议子模块,用于根据为实现高带宽及可靠包传输而优化的互连协议——Interlaken协议,将Serdes转换子模块发送过来的并行数据封装成统计报文数据包格式,另外完成链路检测及保护功能。
这里需要指出的是,标准Interlaken数据报文如表1所示,包括数据有效标志pkt_ena,包头pkt_sop,包尾pkt_eop,错误标志pkt_err,包数据pkt_dat等。本实施例中,interlaken数据包长度为3拍,每拍interlaken数据位宽为1024bit,实际运用中,不限于此示意场景。
表1
如图8所示为UPK内部实现架构,图8中还显示有基于UPK的数据流传输示意,所述UPK包括:
缓存子模块,用于从HIF接收Interlaken格式的请求数据包,剔除错误包,将有效数据包所有相关信息拼接起来存入缓存FIFO。由于一个数据包中包含多个统计报文切片,而后面处理模块及子模块都是以统计报文切片作为最小处理单元的,所以存在处理速率差的问题,安排缓存子模块正好解决了这样的速率差。
解析子模块,从缓存子模块中取出一个数据包,根据切片位宽切成多个统计报文切片,根据切片有效标志位将有效切片发送给后续处理模块及子模块,每次发送一个统计报文切片,待这个数据包中所有有效切片发送完毕之后再从缓存子模块中取出新的数据包。根据统计报文切片规定格式对统计报文切片进行解析,得到区分不同统计业务的ID号、该业务支持的统计对列数(Queue)、统计增量及该业务支持的统计项(Type)等,为后续单元访问SRAM块、计算统计值等提供必要信息。本实施例中,统计报文切片所包含的内容上述表1所示,表1为标准报文格式,只是为了示例说明,并不限制于这种格式,也可以在此基础上进行扩展。
如表1所示,该统计报文切片位宽88bit,包含两组统计业务项,分别占用44bit,两组统计业务项之间相互独立。两组统计业务项字段格式相同,包含如下几个字段:
Vld:业务有效标志位;
ID:业务id,区分不同的统计业务项,最多支持8种不同的统计业务项,比如TM入队统计、TM出队统计、OAM统计等;
Qnum:统计队列数,最多支持1M的统计队列,比如TM需要支持的统计队列数为512K,那么该字段低19bit就表示队列号,最高bit位为0;
Len:统计增量,最大支持增量为32K,比如TM统计需要统计报文长度,那么就可以把报文长度数据放进这个字段;
Type:id下一个统计队列中需要统计的统计项数目,最大支持16个统计项。
比如业务ID为0,对应TM入队统计,需要支持的队列数为512K,Qnum低19bit对应队列号,最高为固定为0,每个队列需要支持11个统计项,包括正常入队、TD丢弃、禁用丢弃、WRED/GRED第0~7优先级丢包等,分别对应Type号0~10,每个数据包支持报文长度统计,报文长度由Len字段表示。
这里需要指出的是,PRE,用于接收UPK单元的解析内容,并将统计请求转化为SRAM的地址及计算增量。具体的,可以根据所述ID号、所述Qnum、所述Type字段及用户预设的一些配置信息对应的统计规则就可以计算得到目标计数器对应的SRAM地址,计算流程如图9所示,包括:
步骤901,根据收到的统计请求ID号信息查询用户配置寄存器,从寄存器中得到该ID对应业务在存储器中的起始地址、该业务计数方式(只记包个数还是既记包个数又记包长度或者只记包长度)等后续计算计数器地址所必需信息;
步骤902,根据Type号信息查询用户配置寄存器,从寄存器中得到该Type对应统计项在存储器中的相对ID基地址的偏移地址;
步骤903,根据Qnum及前面查询得到的配置信息计算存储器地址。
具体来说,在本实施例中,ID号为0,表示TM入队统计,对应在存储器中的起始地址为base_addr_id0,统计计数方式为只记包个数,Type号为0,表示正常入队,其偏移地址为base_addr_type0,SRAM数据位宽为100bit,一个计数器位宽为50bit,那么一个SRAM地址能够存放两个计数器,因此队列号为Qnum的统计项对应的SRAM存储器地址为:
Addr=base_addr_id0+base_addr_type0+Qnum/2
如果Qnum是奇数,那么那么该计数器对应Addr位置对应的100bit中低50bit,否则对应高50bit。
如果对于一个统计项既记包个数又记包长度,那么一个统计项对应两个计数器,需要占用100bit存储空间,占用一个SRAM地址,所以这种情况下队列号为Qnum的统计项对应的SRAM存储器地址为:
Addr=base_addr_id0+base_addr_type0+Qnum
高50bit对应包个数计数器,低50bit对应包长度计数器。
如图10所示为STAT内部实现架构示意图,所述STAT与所述PRE进行交互,图10还显示有基于STAT的pipeline架构所实现的数据流传输,所述STAT包括:
MUX,接收来自PRE的统计请求及来自CFM的DMA读访问请求,根据用户配置的优先级选择命令响应;
Cache,由于SST内部采用pipeline架构实现,为了解决SRAM访问延迟带来的潜在问题,比如多个统计请求数据包指向同一组计数器,从而由于SRAM访问延迟造成计算信息未及时更新导致计数值不准确的问题,本实施例的设计中安排了Cache这个用于指令缓存的模块,用来缓存SRAM访问地址、访问类型标志、计算增量等信息;
ALU,接收MUX调度出来的统计请求或DMA读访问请求,将SRAM访问地址与Cache中缓存的地址比对,如果没有相同的,那么就直接向MEM发送读访问请求,并将该地址信息写入Cache;否则,将新的访问请求与Cache中缓存的地址合并,并将其携带的计数器增量也进行合并结算,更新Cache中内容。待MEM返回读数据后,根据PRE提供的计数规则,将数据计算增量与读返回数据进行数学运算,得到新的计数值信息,向MEM发送写命令请求,将计数值写入MEM中。如果命令请求是DMA读访问请求,那么将计数器值返回CFM;此时写入MEM中的数据由读清模式决定,如果是读清,那么将数值0写入MEM中,否则将原数值写入MEM。
应用场景二:基于统计计数设备、网络处理芯片和CPU构成的具有统计计数设备的系统实现统计计数功能,其中,与统计计数设备交互的网络处理芯片为二个的场景,本发明不限于二个的场景,还可以为二个以上的场景,不做赘述。
如图11所示为本应用场景下的本发明第二实施例的高速串行统计计数设备(SST,Serial Statistics),作为两片网络处理芯片(以NP或SA为例)的外挂统计芯片的应用。图11中,NP/SA将统计请求通过Serdes接口发送给SST,SST接收到统计请求后,按照以下图12所示的步骤进行统计计数,并将计数值写入内置SRAM中,SST接收还可以接收Host CPU发送过来的读计数器值的访问请求并进行对应的处理。
本实施例与上述本发明第一实施例类似,只是上述本发明第一实施例中,SST作为一片网络处理芯片的外挂统计芯片应用,而本实施例中,SST作为两片网络处理芯片的外挂统计芯片应用,两个实施例内部实现结构及流程基本相同。如图12所示的具体工作过程包括:
步骤1201、两片NP/SA内部分别将统计请求按照SST规定的统计报文格式封装成统计报文切片;
步骤1202、两片NP/SA分别将多个统计报文切片合并填充到一拍Interlaken数据包中,通过Serdes接口发送出去;
步骤1203、串行数据在两组Serdes接口构成的物理链路上传输;
步骤1204、串行数据通过Serdes接口构成的物理链路传进SST后,HIF按照Interlaken协议得到两组统计请求数据包;
步骤1205、UPK对统计请求数据包进行解析,输出两项解析内容:统计请求的类型及统计请求的增量;
步骤1206、PRE接收UPK的解析内容,并将统计请求的类型及统计请求的增量转化为SRAM的地址及计算增量;
步骤1207、STAT根据PRE发送过来SRAM地址向SRAM发送读请求,将SRAM读返回数据与统计请求增量进行运算,最后将计算结果写回到SRAM中相应地址;
这里,STAT还可以处理CPU读计数器计数值的访问请求;
步骤1208、Host CPU通过CFM向STAT发送读计数器值请求,并接收相应返回值。
本实施例涉及到SST内部总体实现架构、HIF内部实现架构、UPK内部实现架构、及基于PRE实现的统计预处理流程、STAT内部实现架构的描述,都与本发明第一实施例是同样的,具体描述如下:
如图6所示为SST内部总体实现架构,所述SST与所述NP/SA进行交互,所述SST包括:
HIF,用于接收NP/SA发送过来的统计请求;
UPK,用于对SST外接的NP/SA发送的统计请求进行解析,输出两项解析内容:统计请求的类型及统计请求的增量;
PRE,用于接收UPK输出的解析内容,并将统计请求转化为SRAM的地址及计算增量;
STAT,用于根据PRE发送过来SRAM地址向SRAM发送读请求,将SRAM读返回数据与统计请求增量进行运算,最后将计算结果写回到SRAM中相应地址,另外还处理Host CPU的读计数器值命令;
MEM,可以采用SRAM作为存储介质,可以根据需要设计存储容量、群组数量(决定访问口数目,从而支持多路计数器同时计数),另外从ASIC实现的角度考虑,SRAM存储块可以由多个SRAM小块组成,多个SRAM小块串成流水线形式,在不影响访问性能的同时保证ASIC实现的可行性。本实施例中,MEM采用SRAM作为存储介质,出两组访问口,用以最多支持两组统计计数项统计访问;
CFM,用于接收Host CPU发送过来的配置命令,访问相应寄存器,书写相应配置项;另外包含DMA模块(图中未显示),提供Host CPU快速读取统计计数器值通路。本实施例中,为了提供DMA访问速率,可以采用PCIe作为CPU访问通路。
如图7所示为HIF内部实现架构,图7中还显示有基于HIF的数据流传输示意,所述HIF包括:
Serdes转换子模块,用于接收NP/SA发送过来的高速串行bit流数据,完成串并转换功能,Serdes链路数目不定,可根据实际应用中带宽要求进行选择。
Interlaken协议子模块,用于根据为实现高带宽及可靠包传输而优化的互连协议——Interlaken协议,将Serdes转换子模块发送过来的并行数据封装成统计报文数据包格式,另外完成链路检测及保护功能。
这里需要指出的是,标准Interlaken数据报文如表2所示,包括数据有效标志pkt_ena,包头pkt_sop,包尾pkt_eop,错误标志pkt_err,包数据pkt_dat等。本实施例中,interlaken数据包长度为3拍,每拍interlaken数据位宽为1024bit,实际运用中,不限于此示意场景。
表2
如图8所示为UPK内部实现架构,图8中还显示有基于UPK的数据流传输示意,所述UPK包括:
缓存子模块,用于从HIF接收Interlaken格式的请求数据包,剔除错误包,将有效数据包所有相关信息拼接起来存入缓存FIFO。由于一个数据包中包含多个统计报文切片,而后面处理模块及子模块都是以统计报文切片作为最小处理单元的,所以存在处理速率差的问题,安排缓存子模块正好解决了这样的速率差。
解析子模块,从缓存子模块中取出一个数据包,根据切片位宽切成多个统计报文切片,根据切片有效标志位将有效切片发送给后续处理模块及子模块,每次发送一个统计报文切片,待这个数据包中所有有效切片发送完毕之后再从缓存子模块中取出新的数据包。根据统计报文切片规定格式对统计报文切片进行解析,得到区分不同统计业务的ID号、该业务支持的统计对列数(Queue)、统计增量及该业务支持的统计项(Type)等,为后续单元访问SRAM块、计算统计值等提供必要信息。本实施例中,统计报文切片所包含的内容上述表2所示,表2为标准报文格式,只是为了示例说明,并不限制于这种格式,也可以在此基础上进行扩展。
如表2所示,该统计报文切片位宽88bit,包含两组统计业务项,分别占用44bit,两组统计业务项之间相互独立。两组统计业务项字段格式相同,包含如下几个字段:
Vld:业务有效标志位;
ID:业务id,区分不同的统计业务项,最多支持8种不同的统计业务项,比如TM入队统计、TM出队统计、OAM统计等;
Qnum:统计队列数,最多支持1M的统计队列,比如TM需要支持的统计队列数为512K,那么该字段低19bit就表示队列号,最高bit位为0;
Len:统计增量,最大支持增量为32K,比如TM统计需要统计报文长度,那么就可以把报文长度数据放进这个字段;
Type:id下一个统计队列中需要统计的统计项数目,最大支持16个统计项。
比如业务ID为0,对应TM入队统计,需要支持的队列数为512K,Qnum低19bit对应队列号,最高为固定为0,每个队列需要支持11个统计项,包括正常入队、TD丢弃、禁用丢弃、WRED/GRED第0~7优先级丢包等,分别对应Type号0~10,每个数据包支持报文长度统计,报文长度由Len字段表示。
这里需要指出的是,PRE,用于接收UPK单元的解析内容,并将统计请求转化为SRAM的地址及计算增量。具体的,可以根据所述ID号、所述Qnum、所述Type字段及用户预设的一些配置信息对应的统计规则就可以计算得到目标计数器对应的SRAM地址,计算流程如图9所示,包括:
步骤901,根据收到的统计请求ID号信息查询用户配置寄存器,从寄存器中得到该ID对应业务在存储器中的起始地址、该业务计数方式(只记包个数还是既记包个数又记包长度或者只记包长度)等后续计算计数器地址所必需信息;
步骤902,根据Type号信息查询用户配置寄存器,从寄存器中得到该Type对应统计项在存储器中的相对ID基地址的偏移地址;
步骤903,根据Qnum及前面查询得到的配置信息计算存储器地址。
具体来说,在本实施例中,ID号为0,表示TM入队统计,对应在存储器中的起始地址为base_addr_id0,统计计数方式为只记包个数,Type号为0,表示正常入队,其偏移地址为base_addr_type0,SRAM数据位宽为100bit,一个计数器位宽为50bit,那么一个SRAM地址能够存放两个计数器,因此队列号为Qnum的统计项对应的SRAM存储器地址为:
Addr=base_addr_id0+base_addr_type0+Qnum/2
如果Qnum是奇数,那么那么该计数器对应Addr位置对应的100bit中低50bit,否则对应高50bit。
如果对于一个统计项既记包个数又记包长度,那么一个统计项对应两个计数器,需要占用100bit存储空间,占用一个SRAM地址,所以这种情况下队列号为Qnum的统计项对应的SRAM存储器地址为:
Addr=base_addr_id0+base_addr_type0+Qnum
高50bit对应包个数计数器,低50bit对应包长度计数器。
如图10所示为STAT内部实现架构示意图,所述STAT与所述PRE进行交互,图10还显示有基于STAT的pipeline架构所实现的数据流传输,所述STAT包括:
MUX,接收来自PRE的统计请求及来自CFM的DMA读访问请求,根据用户配置的优先级选择命令响应;
Cache,由于SST内部采用pipeline架构实现,为了解决SRAM访问延迟带来的潜在问题,比如多个统计请求数据包指向同一组计数器,从而由于SRAM访问延迟造成计算信息未及时更新导致计数值不准确的问题,本实施例的设计中安排了Cache这个用于指令缓存的模块,用来缓存SRAM访问地址、访问类型标志、计算增量等信息;
ALU,接收MUX调度出来的统计请求或DMA读访问请求,将SRAM访问地址与Cache中缓存的地址比对,如果没有相同的,那么就直接向MEM发送读访问请求,并将该地址信息写入Cache;否则,将新的访问请求与Cache中缓存的地址合并,并将其携带的计数器增量也进行合并结算,更新Cache中内容。待MEM返回读数据后,根据PRE提供的计数规则,将数据计算增量与读返回数据进行数学运算,得到新的计数值信息,向MEM发送写命令请求,将计数值写入MEM中。如果命令请求是DMA读访问请求,那么将计数器值返回CFM;此时写入MEM中的数据由读清模式决定,如果是读清,那么将数值0写入MEM中,否则将原数值写入MEM。
本发明实施例所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。
相应的,本发明实施例还提供一种计算机存储介质,其中存储有计算机程序,该计算机程序用于执行本发明实施例的统计计数实现方法。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。