在多核系统中进行全局统计的方法和装置的利记博彩app

文档序号:7968509阅读:240来源:国知局
专利名称:在多核系统中进行全局统计的方法和装置的利记博彩app
技术领域
本发明涉及多核技术领域,具体涉及一种在多核系统中进行全局统计的方法和装置。
背景技术
在多核系统中,为了某种需要,通常需要对某些信息进行全局统计即所有的核都对某类信息进行统计。例如在报文转发处理过程中,由于网管需要获取报文处理的统计信息显示给用户,同时,统计信息也可以作为调试信息的辅助信息来定位一些异常问题,因此,无论是正常处理的分支还是异常处理的分支,都需要记录报文处理的统计信息,包括转发接收报文的个数、转发发送报文的个数、转发丢弃报文的个数等。
目前,在单核系统中直接采用++和+=来更新统计信息,而在多核系统中,由于多核系统的硬件机制不同于单核系统,因此不能简单沿用单核系统中的模式来进行全局统计。图1是多核系统的硬件机制示意图,如图1所示,多核系统的硬件内部包括多个核(Core),每个核内部包括一级指令缓存(cache)和一级数据缓存,简称一级缓存,所有核共享二级缓存和内存。一级缓存的容量比较小,通常只有32K,但是访问速度很快,访问一级缓存的开销一般在3~4个时钟周期;二级缓存的容量比较大,通常为1M,访问速度大概为一级缓存的十几倍即访问开销在50个时钟周期左右;内存的容量更大,可以达到1G,但访问速度更低,访问开销一般为150个时钟周期。
以统计转发接收报文个数为例,对现有的在多核系统中进行全局统计的过程进行说明,如图2所示,其具体步骤如下
步骤201核收到报文,判断自身的一级缓存中是否保存转发接收报文个数的统计变量,若是,执行步骤206;否则,执行步骤202。
步骤202核向二级缓存获取转发接收报文个数的统计变量。
步骤203核判断二级缓存中是否保存转发接收报文个数的统计变量,若是,执行步骤204;否则,执行步骤205。
步骤204核将转发接收报文个数的统计变量从二级缓存读取到自身的一级缓存中,转至步骤206。
步骤205核从内存中获取转发接收报文个数的统计变量,将该统计变量先读取到二级缓存,再读取到自身的一级缓存中,执行步骤206。
步骤206核根据接收到的报文个数,更新自身的一级缓存中的转发接收报文个数的统计变量的值;同时,多核系统中用于保持cache一致性的硬件单元根据cache一致性侦听机制检测到转发接收报文个数的统计变量的值已被该核更新,则将其它核中的转发接收报文个数的统计变量设置为无效,并根据该核的转发接收报文的统计变量的值,更新二级缓存和内存中的转发接收报文个数的统计变量的值。
多核系统中的缓存空间以缓存块(cacheline)为单位,一个cacheline的长度通常为32字节,各个核的一级缓存空间中位于同一位置的cacheline空间共享同一地址,当多核系统中用于保持cache一致性的硬件单元检测到其中一个核的一级缓存内的某个cacheline空间中的变量的值发生更改时,会将其它核的一级缓存内与该cacheline空间共享同一地址的cacheline空间中的变量设置为无效。如图3所示,各个核的一级缓存中保存的转发接收报文个数的统计变量a共享同一个地址,当核0对a进行更新后,用于保持cache一致性的硬件单元会及时将其它核的一级缓存内保存的a无效掉。
从图2所示流程可以看出,由于多核系统支持cache一致性侦听机制,使得一个核在更新一级缓存内某个cacheline空间中的统计变量的值时,其它核中的与该cacheline空间共享同一地址的cacheline空间中的该统计变量的值会被无效掉,这样,其它核在下次更新该统计变量的值时,只能从二级缓存中获取该统计变量。由于各个核可能会轮流对该统计变量的值进行更新,因此会导致每个核永远都是从二级缓存中得到该统计变量,时间开销比较大,也大大增加了统计所耗费的时长。

发明内容
本发明提供一种在多核系统中进行全局统计的方法和装置,以减少多核系统在进行全局统计时的时间开销,提高全局统计速度。
本发明的技术方案是这样实现的一种在多核系统中进行全局统计的方法,为多核系统的每个核分配一个与每类统计信息对应的子统计变量,并将属于同一类统计信息的各核的子统计变量的cacheline空间设置为互不重叠,将各子统计变量配置到内存中,包括核检测到满足更新统计信息的条件,更新自身的一级缓存中保存的与该类统计信息对应的子统计变量的值。
所述核检测到满足更新统计信息的条件之后、更新自身的一级缓存中保存的与该类统计信息对应的子统计变量的值之前,进一步包括核检测到自身的一级缓存中未保存该类统计信息对应的子统计变量,判断二级缓存中是否保存该子统计变量,若保存,则将该子统计变量从二级缓存读取到自身的一级缓存;若未保存,则从内存获取该子统计变量,并通过二级缓存读取到自身的一级缓存。
所述核更新自身的一级缓存中保存的与该类统计信息对应的子统计变量的值之后进一步包括多核系统中的用于保持缓存一致性的单元检测到该子统计变量的值已更新,则同步更新二级缓存和内存中保存的该子统计变量的值。
所述多核系统中的用于保持缓存一致性的单元同步更新二级缓存和内存中保存的该子统计变量的值之后,进一步包括多核系统的控制单元确定需要获取该类统计信息的统计结果,从二级缓存或内存中获取该类统计信息的各子统计变量的值,将各子统计变量的值相加得到统计结果。
所述统计信息的类型数大于1,且当在各类型的统计信息中各取一个子统计变量,将各子统计变量所占的空间大小相加后,得到的总和小于或等于一个cacheline空间的大小时,所述将属于同一类统计信息的各核的子统计变量的cacheline空间设置为互不重叠包括对于同一个核,为该核与各类统计信息对应的各子统计变量分配同一个cacheline空间。
所述统计信息为转发接收报文个数的统计信息、转发发送报文个数的统计信息、转发丢弃报文个数的统计信息中的一种或任意组合。
一种在多核系统中进行全局统计的装置,包括控制单元和多核系统的核,其中控制单元,用于为每个核分配分别与各类统计信息对应的子统计变量,且对于属于同一类统计信息的子统计变量,为各个核的子统计变量分配互不重叠的cacheline空间;多核系统的核,用于在检测到当前满足更新统计信息的条件时,更新自身的一级缓存中保存的与该类统计信息对应的子统计变量的值。
所述多核系统的核进一步用于,在检测到当前满足更新统计信息的条件时,检测到自身的一级缓存中未保存该类统计信息对应的子统计变量,判断二级缓存中是否保存该子统计变量,若保存,则将该子统计变量从二级缓存读取到自身的一级缓存;若未保存,则从内存获取该子统计变量,并通过二级缓存读取到自身的一级缓存。
所述装置进一步包括保持缓存一致性的单元,用于在收到多核系统的核发来的子统计变量的值的更新通知时,同步更新二级缓存和内存中保存的该子统计变量的值。
所述控制单元进一步用于,确定需要获取该类统计信息的统计结果,从二级缓存或内存中获取该类统计信息的各子统计变量的值,将各子统计变量的值相加得到统计结果。
与现有技术相比,本发明为多核系统的每个核分配一个与每类统计信息对应的子统计变量,并将属于同一类统计信息的各核的子统计变量的cacheline空间设置为互不重叠,每个核只需在第一次更新统计信息时,通过访问二级缓存或内存获取自身与该类统计信息对应的子统计变量,此后更新该类统计信息时,便可直接在自身的一级缓存中更新对应的子统计变量的值,避免了在全局统计过程中对二级缓存和内存的频繁访问,降低了全局统计过程中的时间开销,提高了全局统计速度。


图1为多核系统的硬件机制示意图;图2为现有的在多核系统中进行全局统计的流程图;图3为现有的在多核系统中进行全局统计的示意图;图4为本发明实施例提供的在多核系统中进行全局统计的流程图;图5为本发明实施例提供的在进行全局统计时,为多核系统的各核分配子统计变量的示意图一;图6为本发明实施例提供的在进行全局统计时,为多核系统的各核分配子统计变量的示意图二;图7为本发明实施例提供的在多核系统中进行全局统计的装置组成示意图。
具体实施例方式
本发明的核心思想是在统计某类信息前,为每个核分配一个该类统计信息的子统计变量,且为各核的子统计变量分配互不重叠的cacheline空间,每个核负责对分配给自身的子统计变量进行更新,当需要显示该类统计信息的统计结果时,从二级缓存或内存中获取为各个核分配的子统计变量的值,将各子统计变量的值相加,即可得到统计结果。
需要指出的是,本发明中提到的cacheline空间指的是以一个cacheline长度为最小单位的缓存空间,例如若一个cacheline长度为32字节,则本发明中提到的caheline空间的大小为n*32字节;则,每两个相邻的cacheline空间的地址之间至少相差1个cacheline长度,因此,互不重叠的两个cacheline空间的地址之间相差n*cacheline长度,n为正整数。
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图4是本发明实施例提供的在多核系统中进行全局统计的流程图,如图4所示,其具体步骤如下步骤401对于每一类统计信息,多核系统的控制单元为每个核分配一个属于该类统计信息的子统计变量,且为每个子统计变量分配互不重叠的cacheline空间,将各子统计变量分配到内存;各个核保存分配给自身的子统计变量标识与统计信息类型标识以及cacheline空间地址信息的对应关系。
例如在多核系统统计转发接收报文个数时,若该多核系统包含m(m为大于1的整数)个核,且1个cacheline的长度为32字节,则可设置一个用于统计转发报文个数的数组a[m],a[m]中的每一个变量a
~a[m-1]为一个转发报文个数的子统计变量,设定一个cacheline空间的大小为32字节,则,如图5所示,将该数组中的变量a
分配给核1,并为a
分配地址1M;将变量a[1]分配给核2,并为a[1]分配地址1M+32;将变量a[2]分配给核3,并为a[2]分配地址1M+64;…,依此类推,直至将a[m-1]分配给核m,并为a[m-1]分配地址为1M+(m-1)*32。这样,数组a[m]的每个变量都位于互不重叠的cacheline空间内。每个核在接收到报文时,更新自身的一级缓存中保存的转发接收报文个数的子统计变量的值,同时不会使得其它核的转发接收报文个数的子统计变量被无效掉。
步骤402核检测到满足该类统计信息的更新条件,根据自身保存的子统计变量标识与统计信息类型标识以及cacheline空间的地址信息的对应关系,判断自身的一级缓存中是否保存该类统计信息的子统计变量,若是,执行步骤407;否则,执行步骤403。
步骤403核根据自身保存的子统计变量标识与统计信息类型的对应关系,向二级缓存获取自身与该类统计信息对应的子统计变量。
步骤404核判断二级缓存中是否保存与该类统计信息对应的子统计变量,若是,执行步骤405;否则,执行步骤406。
步骤405核根据自身保存的子统计变量标识与cacheline空间地址信息的对应关系,将子统计变量从二级缓存读取到自身的一级缓存中的对应cacheline空间内,转至步骤407。
步骤406核从内存中读取该子统计变量,将该子统计变量先读取到二级缓存,再读取到自身的一级缓存中的对应cacheline空间内,执行步骤407。
步骤407核更改自身的一级缓存中保存的该类统计信息对应的子统计变量的值,同时多核系统中用于保持cache一致性的硬件单元更新二级缓存和内存中保存的该子统计变量的值。
若统计信息的类型为转发接收报文个数,则核在接收到报文时,更新自身的一级缓存中保存的转发接收报文个数的子统计变量的值;若统计信息的类型为转发发送报文个数,则核在自身发送报文时,更新自身的一级缓存中保存的转发发送报文个数的子统计变量的值。
步骤408多核系统的控制单元检测到满足获取该类统计信息的统计结果条件,从一级缓存或内存中获取该类统计信息对应的各子统计变量的值,将各子统计变量的值相加,得到当前的统计结果。
当网管或用户需要多核系统显示该类统计信息的统计结果时,多核系统的控制单元会将各核中的子统计变量的值进行统计。
由于一个cacheline长度通常为32个字节,因此一个cacheline空间至少占用32个字节,而一个子统计变量通常只占用4个字节,因此,为了充分利用内存空间,在同时统计多类信息时,可将同一核的属于不同类型的各子统计变量同时分配给同一个cacheline空间。例如若多核系统包含m个核,且1个cacheline的长度为32字节,且设定一个cacheline空间的长度为32个字节,则可设置用于统计转发接收报文个数的数组a[m]、用于统计转发发送报文个数的数组b[m]、用于统计转发丢弃报文个数的数组c[m],如图6所示,将a
、b
、c
同时分配给核1,并为a
、b
、c
分配同一个地址1M;将a[1]、b[1]、c[1]同时分配给核2,并为a[10]、b[1]、c[1]分配同一个地址1M+32;将a[2]、b[2]、c[2]同时分配给核3,并为a[2]、b[2]、c[2]分配同一个地址1M+64;…,依此类推,直至将a[m-1]、b[m-1]、c[m-1]分配给核m,并为a[m-1]、b[m-1]、c[m-1]分配同一个地址1M+(m-1)*32。这里,需要注意在将属于不同统计信息类型的各子统计变量分配给同一cacheline空间时,需满足条件各子统计变量所占的空间的总和小于或等于一个cacheline空间的大小。
图7为本发明实施例提供的在多核系统中进行全局统计的装置组成示意图,如图7所示,其主要包括控制单元71和多核系统的核1~m(m为大于1的整数)72和保持cache一致性的单元73,其中控制单元71用于为每个核分配分别与各类统计信息对应的子统计变量,且对于属于同一类统计信息的子统计变量,为各个核的子统计变量分配互不重叠的cacheline空间,将各子统计变量分配到内存,将分配给各核的子统计变量标识与统计类型标识以及cacheline空间地址信息的对应关系分别发送给多核系统的核1~m72;在检测到满足获取某类统计信息的统计结果的条件时,从二级缓存或内存中获取该类统计信息对应的各子统计变量的值,将所有子统计变量的值相加,得到统计结果。
多核系统的核1~m72用于保存控制单元71发来的分配给自身的子统计变量标识与统计类型标识以及cacheline空间地址信息的对应关系,在检测到当前满足更新统计信息的条件时,若检测到自身的一级缓存中未保存该类统计信息对应的子统计变量,则从二级缓存或内存中读取该子统计变量到自身的一级缓存中的对应cacheline空间内,并更新一级缓存中保存的该子统计变量的值,并向保持cache一致性的单元73发送该子统计变量的值已更改的通知;若检测到一级缓存中保存有该类统计信息对应的子统计变量,则直接更新一级缓存中保存的该子统计变量的值,并向保持cache一致性的单元73发送该子统计变量的值已更改的通知。
保持cache一致性的单元73用于在收到多核系统的核1~m72中的核发来的子统计变量的值更改的通知时,根据该更改后的子统计变量的值同步更新二级缓存和内存中保存的该子统计变量的值。
以上所述仅为本发明的过程及方法实施例,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种在多核系统中进行全局统计的方法,其特征在于,为多核系统的每个核分配一个与每类统计信息对应的子统计变量,并将属于同一类统计信息的各核的子统计变量的缓存块cacheline空间设置为互不重叠,包括核检测到满足更新统计信息的条件,更新自身的一级缓存中保存的与该类统计信息对应的子统计变量的值。
2.如权利要求1所述的方法,其特征在于,所述核检测到满足更新统计信息的条件之后、更新自身的一级缓存中保存的与该类统计信息对应的子统计变量的值之前,进一步包括核检测到自身的一级缓存中未保存该类统计信息对应的子统计变量,判断二级缓存中是否保存该子统计变量,若保存,则将该子统计变量从二级缓存读取到自身的一级缓存;若未保存,则从内存获取该子统计变量,并通过二级缓存读取到自身的一级缓存。
3.如权利要求1所述的方法,其特征在于,所述核更新自身的一级缓存中保存的与该类统计信息对应的子统计变量的值之后进一步包括多核系统中的用于保持缓存一致性的单元检测到该子统计变量的值已更新,则同步更新二级缓存和内存中保存的该子统计变量的值。
4.如权利要求3所述的方法,其特征在于,所述多核系统中的用于保持缓存一致性的单元同步更新二级缓存和内存中保存的该子统计变量的值之后,进一步包括多核系统的控制单元确定需要获取该类统计信息的统计结果,从二级缓存或内存中获取该类统计信息的各子统计变量的值,将各子统计变量的值相加得到统计结果。
5.如权利要求1所述的方法,其特征在于,所述统计信息的类型数大于1,且当在各类型的统计信息中各取一个子统计变量,将各子统计变量所占的空间大小相加后,得到的总和小于或等于一个cacheline空间的大小时,所述将属于同一类统计信息的各核的子统计变量的cacheline空间设置为互不重叠包括对于同一个核,为该核与各类统计信息对应的各子统计变量分配同一个cacheline空间。
6.如权利要求1或5所述的方法,其特征在于,所述统计信息为转发接收报文个数的统计信息、转发发送报文个数的统计信息、转发丢弃报文个数的统计信息中的一种或任意组合。
7.一种在多核系统中进行全局统计的装置,其特征在于,包括控制单元和多核系统的核,其中控制单元,用于为每个核分配分别与各类统计信息对应的子统计变量,且对于属于同一类统计信息的子统计变量,为各个核的子统计变量分配互不重叠的cacheline空间;多核系统的核,用于在检测到当前满足更新统计信息的条件时,更新自身的一级缓存中保存的与该类统计信息对应的子统计变量的值。
8.如权利要求7所述的装置,其特征在于,所述多核系统的核进一步用于,在检测到当前满足更新统计信息的条件时,检测到自身的一级缓存中未保存该类统计信息对应的子统计变量,判断二级缓存中是否保存该子统计变量,若保存,则将该子统计变量从二级缓存读取到自身的一级缓存;若未保存,则从内存获取该子统计变量,并通过二级缓存读取到自身的一级缓存。
9.如权利要求7所述的装置,其特征在于,所述装置进一步包括保持缓存一致性的单元,用于在收到多核系统的核发来的子统计变量的值的更新通知时,同步更新二级缓存和内存中保存的该子统计变量的值。
10.如权利要求7所述的装置,其特征在于,所述控制单元进一步用于,确定需要获取该类统计信息的统计结果,从二级缓存或内存中获取该类统计信息的各子统计变量的值,将各子统计变量的值相加得到统计结果。
全文摘要
本发明公开了一种在多核系统中进行全局统计的方法,包括为多核系统的每个核分配一个与每类统计信息对应的子统计变量,并将属于同一类统计信息的各核的子统计变量的缓存块cacheline空间设置为互不重叠,每个核只需在第一次更新统计信息时,通过访问二级缓存或内存获取自身与该类统计信息对应的子统计变量,此后更新该类统计信息时,可直接在自身的一级缓存中更新对应的子统计变量的值;本发明同时公开了一种在多核系统中进行全局统计的装置,包括控制单元、多核系统的核和保持cache一致性的单元。本发明避免了在全局统计过程中对二级缓存和内存的频繁访问,降低了全局统计过程中的时间开销,提高了全局统计速度。
文档编号H04L12/24GK1968206SQ200610127829
公开日2007年5月23日 申请日期2006年9月20日 优先权日2006年9月20日
发明者孟丹, 常向青, 赵鲲鹏, 龚一斌 申请人:杭州华为三康技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1