CN104239228A - 一种缓存冲突检测方法、装置及系统 - Google Patents
一种缓存冲突检测方法、装置及系统 Download PDFInfo
- Publication number
- CN104239228A CN104239228A CN201310246466.5A CN201310246466A CN104239228A CN 104239228 A CN104239228 A CN 104239228A CN 201310246466 A CN201310246466 A CN 201310246466A CN 104239228 A CN104239228 A CN 104239228A
- Authority
- CN
- China
- Prior art keywords
- hit
- user
- hit vector
- users
- cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例公开了一种缓存冲突检测方法、装置及系统,用于全面细粒度地反映使用方之间对共享高速缓存的竞争冲突程度。本发明实施例方法包括:将共享高速缓存中的多个高速缓存组平均划分为N个超级组,高速缓存组的数量为N的正整数倍;计算预设时间内各个使用方对各个超级组的命中次数;根据命中次数生成各个使用方的命中向量,命中向量为N维向量;根据命中向量计算每两个使用方之间的命中向量相似度,命中向量相似度用于指示两个使用方之间对共享高速缓存的竞争程度;根据命中向量相似度识别对共享高速缓存存在竞争冲突的使用方。通过实施本发明方案,能够精确反映使用方之间对共享高速缓存的竞争冲突程度。
Description
技术领域
本发明涉及高速缓存技术领域,尤其涉及一种缓存冲突检测方法、装置及系统。
背景技术
高速缓冲存储器(Cache)简称高速缓存,介于处理器(Processor)与主存储器之间,由于主存储器的存取速度无法与处理器相匹配,因此,某些即将被用到的指令或数据就被调入存取速度能与处理器相匹配的高速缓存中备用。而随着多线程处理器和多核处理器的出现,高速缓存开始被共享使用。因为使用程度不同,所以共享高速缓存的多个使用方对高速缓存的使用存在竞争冲突。若不缓和使用方之间的竞争冲突,则会降低系统整体效率。
目前,使用线程调度的方法缓和使用方之间对共享高速缓存的竞争冲突:根据每个使用方对共享高速缓存的访问失效次数计算对应的高速缓存失效率(Cache Miss Rate,CMR),失效率越高,说明该使用方与其它使用方可能存在越严重的冲突,因此,系统可根据失效率对使用方进行调度,以缓和使用方之间对共享高速缓存的竞争冲突,从而提高系统的整体效率。
但是,上述技术方案中,调度依据为高速缓存失效率。计算高速缓存失效率所使用的访问失效次数是基于整个共享高速缓存而进行统计的,而共享高速缓存中实际包括多个高速缓存组(Cache Sets,CS),使用方可能仅对个别高速缓存组进行访问,因此,根据访问失效次数计算的高速缓存失效率并不能全面、细粒度地反映使用方之间对共享高速缓存的竞争冲突程度。
发明内容
本发明实施例提供了一种缓存冲突检测方法、装置及系统,用于全面细粒度地反映使用方之间对共享高速缓存的竞争冲突程度,通过实施本发明方案,能够精确反映使用方之间对共享高速缓存的竞争冲突程度,并提供数值,从而提高调度的效率。
一种缓存冲突检测方法,包括:
将共享高速缓存中的多个高速缓存组平均划分为N个超级组,所述高速缓存组的数量为所述N的正整数倍;
计算预设时间内各个使用方对各个超级组的命中次数;
根据所述命中次数生成各个使用方的命中向量,所述命中向量为N维向量;
根据所述命中向量计算每两个使用方之间的命中向量相似度,所述命中向量相似度用于指示两个使用方之间对所述共享高速缓存的竞争程度;
根据所述命中向量相似度识别对所述共享高速缓存存在竞争冲突的使用方。
一种缓存冲突检测装置,包括:
划分单元,用于将共享高速缓存中的多个高速缓存组平均划分为N个超级组,所述高速缓存组的数量为所述N的正整数倍;
计数单元,用于计算预设时间内各个使用方对各个超级组的命中次数;
生成单元,用于根据所述命中次数生成各个使用方的命中向量,所述命中向量为N维向量;
计算单元,用于根据所述命中向量计算每两个使用方之间的命中向量相似度,所述命中向量相似度用于指示两个使用方之间对所述共享高速缓存的竞争程度;
识别单元,用于根据所述命中向量相似度识别对所述共享高速缓存存在竞争冲突的使用方。
一种缓存冲突检测系统,包括:至少两个使用方、共享高速缓存和缓存冲突检测装置,
所述至少两个使用方,用于共享所述共享高速缓存;
所述共享高速缓存包括多个高速缓存组;
所述缓存冲突检测装置,用于检测所述至少两个使用方对所述共享高速缓存的竞争冲突,所述缓存冲突检测装置为如上所述的缓存冲突检测装置。
从以上技术方案可以看出,本发明实施例具有以下优点:
通过将共享高速缓存中的高速缓存组划分为若干个超级组,并基于各个超级组计算各个使用方的命中次数,从而生成命中向量,计算每两个使用方之间的命中向量相似度,以此为依据识别使用方之间的竞争冲突。对比基于整个共享高速缓存访问失效次数进行计算的高速缓存失效率,本实施例提供的命中向量相似度具有更细的粒度,能够全面反映使用方之间对共享高速缓存的竞争冲突程度。
附图说明
图1为本发明的系统示意图;
图2为本发明第一实施例的缓存冲突检测方法流程图;
图3为本发明第二实施例的缓存冲突检测方法流程图;
图4为本发明第三实施例的缓存冲突检测装置结构图;
图5为本发明第四实施例的缓存冲突检测装置结构图;
图6为本发明第五实施例的缓存冲突检测系统结构图。
具体实施方式
下面将结合本发明中的说明书附图,对发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种缓存冲突检测方法,用于全面细粒度地反映使用方之间对共享高速缓存的竞争冲突程度,通过实施本发明方案,能够精确反映使用方之间对共享高速缓存的竞争冲突程度,并提供数值,从而提高调度的效率。本发明实施例还提供与所述方法相关的装置和系统,以下将分别对其进行详细说明。
请参见图1,本发明实施例的系统包括至少两个处理核101、至少两个使用方102和共享高速缓存103。其中,处理核101和共享高速缓存103组成的结构实际可以为多核或多线程处理器,处理核101中的单个处理核在一个时钟周期内只能处理其中一个使用方102所提交的指令,共享高速缓存103中已存放待使用的指令或数据。
本发明第一实施例将对一种缓存冲突检测方法进行详细说明,本实施例所述的方法基于图1的系统进行描述,具体流程请参见图1,包括步骤:
201、将共享高速缓存中的多个高速缓存组平均划分为N个超级组。
共享高速缓存由多个高速缓存组构成,高速缓存组的数量一般较多,对单独每一个高速缓存组进行命中次数或访问失效次数的统计将非常耗费资源,因此,在本发明实施例中,需要将数量众多的高速缓存组划分为数量较少的超级组(Super Sets,SS)。
假设高速缓存组的数量为S,超级组的数量为N,在本实施例中,要求高速缓存组的数量S为N的正整数倍,即每个超级组中高速缓存组的数量均为S÷N。其中,每个高速缓存组和每个超级组均带有标识符,本实施例不对标识方法进行具体限定。
202、计算预设时间内各个使用方对各个超级组的命中次数。
设定预设时间的值,假设为T,使用方的数量为U,计算时间T内各个使用方对各个超级组的命中次数。命中次数,指示使用方对超级组进行读取操作成功的次数。由于超级组的数量为N,在本步骤中,共需要计算U×N个命中次数。一个命中次数的计数指示对应的一个使用方对对应的一个超级组的命中次数。
203、根据所述命中次数生成各个使用方的命中向量。
其中,一个使用方对应一个命中向量,命中向量中一个维度依序对应一个超级组,故执行本步骤后,将生成U个N维命中向量。命中向量中每个维度的赋值由对应的命中次数所决定,该赋值可以直接填入对应的命中次数,也可以通过其它方式对对应的命中次数进行转换得到,这里不作具体限定。
204、根据所述命中向量计算每两个使用方之间的命中向量相似度。
命中向量相似度用于指示两个使用方之间对所述共享高速缓存的竞争程度。由于使用方及其对应的命中向量的数量均为U,根据排列组合原理,本步骤共需计算个命中向量相似度。本实施例不对命中向量相似度的算法进行具体限定。
205、根据所述命中向量相似度识别对所述共享高速缓存存在竞争冲突的使用方。
根据计算得到的命中向量相似度即可分析并识别对共享高速缓存存在竞争冲突的使用方,例如,设定一个阈值,当命中向量相似度大于该阈值,即可认为该命中向量相似度相关的两个使用方之间存在竞争冲突,系统可以对任意一方进行调度,以缓和系统中的竞争冲突,从而提高系统运行效率。
在本实施例中,通过将共享高速缓存中的高速缓存组划分为若干个超级组,并基于各个超级组计算各个使用方的命中次数,从而生成命中向量,计算每两个使用方之间的命中向量相似度,以此为依据识别使用方之间的竞争冲突。对比基于整个共享高速缓存的访问失效次数计算的高速缓存失效率,本实施例提供的命中向量相似度具有更细的粒度,能够全面反映使用方之间对共享高速缓存的竞争冲突程度。
本发明第二实施例将对第一实施例所述的缓存冲突检测方法进行补充说明。本实施例所述的方法具体流程请参见图3,包括步骤:
301、将共享高速缓存中的多个高速缓存组平均划分为N个超级组。
共享高速缓存由多个高速缓存组构成,高速缓存组的数量一般较多,对单独每一个高速缓存组进行命中次数或访问失效次数的统计将非常耗费资源,因此,在本发明实施例中,需要将数量众多的高速缓存组划分为数量较少的超级组(Super Sets,SS)。
假设高速缓存组的数量为S,超级组的数量为N,在本实施例中,要求高速缓存组的数量S为N的正整数倍,即每个超级组中高速缓存组的数量均为S÷N。其中,每个高速缓存组和每个超级组均带有标识符,在本实施例中对高速缓存组和超级组依序标识,如有高速缓存组0~高速缓存组(S-1),超级组1~超级组N(或SS1~SSN),则高速缓存组0~高速缓存组(S÷N-1)属于超级组1,高速缓存组(S÷N)~高速缓存组(2S÷N-1)属于超级组2,依此类推。
一个具体实例,共享高速缓存包括1024个高速缓存组,依序记为CS0000~CS1023,共需划分为8个超级组,记为SS1~SS8。根据本步骤方法进行划分,划分结果请参见表1。
超级组(SS) | 高速缓存组(CS) |
SS1 | CS0000~CS0127 |
SS2 | CS0128~CS0255 |
SS3 | CS0256~CS0383 |
SS4 | CS0384~CS0511 |
SS5 | CS0512~CS0639 |
SS6 | CS0640~CS0767 |
SS7 | CS0768~CS0895 |
SS8 | CS0896~CS1023 |
表1
302、计算预设时间内各个使用方对各个超级组的命中次数。
其中,根据应用场景的不同,使用方可以为线程、进程或虚拟机。若使用方为线程,则使用线程号(Thread Identity,TID)对不同的线程进行标识;若使用方为进程,则使用进程号(Process Identity,PID)对不同的进程进行标识;若使用方为虚拟机,则使用虚拟机号(Virtual Machine Identity,VMID)对不同的虚拟机进行标识。在本实施例中,使用使用方号(User Identity,UID)对不同的使用方进行标识,因此,UID为TID或PID或VMID。
设定预设时间的值,假设为T,使用方的数量为U,计算时间T内各个使用方对各个超级组的命中次数Hit_Count。命中次数,指示使用方对超级组进行读取操作成功的次数。由于超级组的数量为N,在本步骤中,共需要计算U×N个命中次数。一个命中次数的计数指示对应的一个使用方对对应的一个超级组的命中次数。
在上述具体实例中,共有4个使用方,其使用方号UID分别为UID1、UID2、UID3、UID4,根据本步骤方法进行计算,在时间T内,计算结果请参见表2。
表2
表2中个命中次数可以用进行标识,例如,为759。
上一实施例中有步骤203:根据所述命中次数生成各个使用方的命中向量,具体包括本实施例的步骤303和304。
303、生成所述各个使用方未赋值的N维命中向量。
其中,命中向量的N个维度与所述N个超级组一一对应。一个使用方对应一个命中向量,命中向量中一个维度依序对应一个超级组,故执行本步骤后,将生成U个N维命中向量。
未赋值的N维命中向量形式为V=(v1,v2,v3,......,vN),其中,v1~vN依次与SS1~SSN一一对应。
在上述具体实例中,针对4个使用方生成4个未赋值的8维命中向量分别为V1、V2、V3、V4。V1~V4中各维度与各个超级组的对应关系请参见表3。
表3
命中向量中每个维度的赋值由对应的命中次数所决定,在本实施例中,对命中次数进行比特化处理,即将命中次数的值转换为0或1。
304、若命中次数小于第一阈值,则对所述命中向量中对应的维度赋值为0,否则赋值为1。
在本步骤中,设定第一阈值,若命中次数小于第一阈值,则对该命中向量中对应的维度赋值为0,若命中次数大于或等于第一阈值,则对该命中向量中对应的维度赋值为1。
在上述具体实例中,第一阈值设定为1024,则对表2中的命中次数进行比特化,所得到的结果请参见表4。
表4
根据表4,4个使用方的命中向量分别为:
V1=(1,0,0,1,1,1,1,0);
V2=(0,1,1,0,1,0,1,0);
V3=(1,0,1,1,0,0,1,1);
V4=(1,1,1,0,0,1,0,0)。
在上一实施例的步骤204:根据所述命中向量计算每两个使用方之间的命中向量相似度,具体可以为本实施例的步骤305。
305、将每两个使用方的命中向量的数量积作为所述每两个使用方的命中向量相似度。
命中向量相似度用于指示两个使用方之间对所述共享高速缓存的竞争程度。由于使用方及其对应的命中向量的数量均为U,根据排列组合原理,本步骤共需计算个命中向量相似度。在本实施例中,命中向量相似度的算法为取两个使用方的命中向量的数量积的值作为命中向量相似度Similarity。
计算式为:
其中,VA和VB为任意两个M维向量,k表示向量中第k个维度,V(k)表示向量第k个维度上的值。
在上述具体实例中,4个使用方共需计算个命中向量相似度,计算过程如下:
Similarity(V1,V2)=(1,0,0,1,1,1,1,0)·(0,1,1,0,1,0,1,0)=1×0+0×1+0×1+1×0+1×1+1×0+1×1+0×0=2;
Similarity(V1,V3)=(1,0,0,1,1,1,1,0)·(1,0,1,1,0,0,1,1)=1×1+0×0+0×1+1×1+1×0+1×0+1×1+0×1=3;
Similarity(V1,V4)=(1,0,0,1,1,1,1,0)·(1,1,1,0,0,1,0,0)=1×1+0×1+0×1+1×0+1×0+1×1+1×0+0×0=2;
Similarity(V2,V3)=(0,1,1,0,1,0,1,0)·(1,0,1,1,0,0,1,1)=0×1+1×0+1×1+0×1+1×0+0×0+1×1+0×1=2;
Similarity(V2,V4)=(0,1,1,0,1,0,1,0)·(1,1,1,0,0,1,0,0)=0×1+1×1+1×1+0×0+1×0+0×1+1×0+0×0=2;
Similarity(V3,V4)=(1,0,1,1,0,0,1,1)·(1,1,1,0,0,1,0,0)=1×1+0×1+1×1+1×0+0×0+0×1+1×0+1×0=3。
上一实施例步骤205:根据所述命中向量相似度识别对所述共享高速缓存存在竞争冲突的使用方,在本实施例中包括步骤306和307。
306、若所述命中向量相似度小于第二阈值,则确定所述命中向量相似度对应的两个使用方之间不存在竞争冲突。
在上述具体实例中,可以设定第二阈值为3,命中向量相似度Similarity(V1,V2)、Similarity(V1,V4)、Similarity(V2,V3)、Similarity(V2,V4)均小于第二阈值3,故确定V1对应的使用方与V2对应的使用方之间不存在竞争冲突,V1对应的使用方与V4对应的使用方之间不存在竞争冲突,V2对应的使用方与V3对应的使用方之间不存在竞争冲突,V2对应的使用方与V4对应的使用方之间不存在竞争冲突。
307、若所述命中向量相似度不小于第二阈值,则确定所述命中向量相似度对应的两个使用方之间存在竞争冲突。
在上述具体实例中,已经设定第二阈值为3,命中向量相似度Similarity(V1,V3)、Similarity(V3,V4)均不小于第二阈值3,故确定V1对应的使用方与V3对应的使用方之间存在竞争冲突,V3对应的使用方与V4对应的使用方之间存在竞争冲突。
308、对存在竞争冲突的使用方进行调度。
对于存在竞争冲突的两个使用方,系统可以对任意一方进行调度,以缓和系统中的竞争冲突,从而提高系统运行效率。在本实施例中,不对调度方式进行具体限定。
在本实施例中,通过将共享高速缓存中的高速缓存组划分为若干个超级组,并基于各个超级组计算各个使用方的命中次数,从而生成命中向量,计算每两个使用方之间的命中向量相似度,以此为依据识别使用方之间的竞争冲突。对比基于整个共享高速缓存的访问失效次数计算的高速缓存失效率,本实施例提供的命中向量相似度具有更细的粒度,能够全面反映使用方之间对共享高速缓存的竞争冲突程度。
本发明第三实施例将对一种缓存冲突检测装置进行详细说明,本实施例所述的缓存冲突检测装置具体结构请参见图4,包括:
划分单元401、计数单元402、生成单元403、计算单元404、识别单元405。其中,划分单元401、计数单元402、生成单元403、计算单元404、识别单元405依次通信连接。
划分单元401,用于将共享高速缓存中的多个高速缓存组平均划分为N个超级组。
共享高速缓存由多个高速缓存组构成,高速缓存组的数量一般较多,对单独每一个高速缓存组进行命中次数或访问失效次数的统计将非常耗费资源,因此,在本发明实施例中,需要将数量众多的高速缓存组划分为数量较少的超级组(Super Sets,SS)。
假设高速缓存组的数量为S,超级组的数量为N,在本实施例中,要求高速缓存组的数量S为N的正整数倍,即每个超级组中高速缓存组的数量均为S÷N。其中,每个高速缓存组和每个超级组均带有标识符,本实施例不对标识方法进行具体限定。
计数单元402,用于计算预设时间内各个使用方对各个超级组的命中次数。
设定预设时间的值,假设为T,使用方的数量为U,计算时间T内各个使用方对各个超级组的命中次数。命中次数,指示使用方对超级组进行读取操作成功的次数。由于超级组的数量为N,因此,计数单元402共需要计算U×N个命中次数。一个命中次数的计数指示对应的一个使用方对对应的一个超级组的命中次数。
生成单元403,用于根据所述命中次数生成各个使用方的命中向量。
其中,一个使用方对应一个命中向量,命中向量中一个维度依序对应一个超级组,生成单元403将生成U个N维命中向量。命中向量中每个维度的赋值由对应的命中次数所决定,该赋值可以直接填入对应的命中次数,也可以通过其它方式对对应的命中次数进行转换得到,这里不作具体限定。
计算单元404,用于根据所述命中向量计算每两个使用方之间的命中向量相似度。
命中向量相似度用于指示两个使用方之间对所述共享高速缓存的竞争程度。由于使用方及其对应的命中向量的数量均为U,根据排列组合原理,计算单元404共需计算个命中向量相似度。本实施例不对命中向量相似度的算法进行具体限定。
识别单元405,用于根据所述命中向量相似度识别对所述共享高速缓存存在竞争冲突的使用方。
识别单元405根据计算得到的命中向量相似度即可分析并识别对共享高速缓存存在竞争冲突的使用方,例如,设定一个阈值,当命中向量相似度大于该阈值,即可认为该命中向量相似度相关的两个使用方之间存在竞争冲突,系统可以对任意一方进行调度,以缓和系统中的竞争冲突,从而提高系统运行效率。
在本实施例中,划分单元401将共享高速缓存中的高速缓存组划分为若干个超级组,计数单元402基于各个超级组计算各个使用方的命中次数,生成单元403生成命中向量,计算单元404计算每两个使用方之间的命中向量相似度,识别单元405以此为依据识别使用方之间的竞争冲突。对比基于整个共享高速缓存的访问失效次数计算的高速缓存失效率,本实施例提供的命中向量相似度具有更细的粒度,能够全面反映使用方之间对共享高速缓存的竞争冲突程度。
本发明第四实施例将对第三实施例所述的缓存冲突检测装置进行补充说明,本实施所述的缓存冲突检测装置具体结构请参见图5,包括:
划分单元501、计数单元502、生成单元503、计算单元504、识别单元505、调度单元506。其中,划分单元501、计数单元502、生成单元503、计算单元504、识别单元505、调度单元506依次通信连接。
生成单元503包括:生成子单元5031、赋值子单元5032。其中,生成子单元5031、赋值子单元5032通信连接。
计算单元504包括:点积子单元5041。
识别单元505包括:第一识别子单元5051、第二识别子单元5052。
划分单元501,用于将共享高速缓存中的多个高速缓存组平均划分为N个超级组。
共享高速缓存由多个高速缓存组构成,高速缓存组的数量一般较多,对单独每一个高速缓存组进行命中次数或访问失效次数的统计将非常耗费资源,因此,在本发明实施例中,需要将数量众多的高速缓存组划分为数量较少的超级组(Super Sets,SS)。
假设高速缓存组的数量为S,超级组的数量为N,在本实施例中,要求高速缓存组的数量S为N的正整数倍,即每个超级组中高速缓存组的数量均为S÷N。其中,每个高速缓存组和每个超级组均带有标识符,在本实施例中对高速缓存组和超级组依序标识,如有高速缓存组0~高速缓存组(S-1),超级组1~超级组N,或SS1~SSN,则高速缓存组0~高速缓存组(S÷N-1)属于超级组1,高速缓存组(S÷N)~高速缓存组(2S÷N-1)属于超级组2,依此类推。
计数单元502,用于计算预设时间内各个使用方对各个超级组的命中次数。
其中,根据应用场景的不同,使用方可以为线程、进程或虚拟机。若使用方为线程,则使用线程号(Thread Identity,TID)对不同的线程进行标识;若使用方为进程,则使用进程号(Process Identity,PID)对不同的进程进行标识;若使用方为虚拟机,则使用虚拟机号(Virtual Machine Identity,VMID)对不同的虚拟机进行标识。在本实施例中,使用使用方号(User Identity,UID)对不同的使用方进行标识,因此,UID为TID或PID或VMID。
设定预设时间的值,假设为T,使用方的数量为U,计数单元502计算时间T内各个使用方对各个超级组的命中次数Hit_Count。命中次数,指示使用方对超级组进行读取操作成功的次数。由于超级组的数量为N,在本步骤中,共需要计算U×N个命中次数。一个命中次数的计数指示对应的一个使用方对对应的一个超级组的命中次数。
生成单元503,用于根据所述命中次数生成各个使用方的命中向量。
所述生成单元503包括:
生成子单元5031,用于生成所述各个使用方未赋值的N维命中向量。
其中,命中向量的N个维度与所述N个超级组一一对应。一个使用方对应一个命中向量,命中向量中一个维度依序对应一个超级组,故生成子单元5031将生成U个N维命中向量。
未赋值的N维命中向量形式为V=(v1,v2,v3,......,vN),其中,v1~vN依次与SS1~SSN一一对应。
赋值子单元5032,用于若命中次数小于第一阈值,则对所述命中向量中对应的维度赋值为0,否则赋值为1。
设定第一阈值,若命中次数小于第一阈值,则赋值子单元5032对该命中向量中对应的维度赋值为0,若命中次数大于或等于第一阈值,则赋值子单元5032对该命中向量中对应的维度赋值为1。
计算单元504,用于根据所述命中向量计算每两个使用方之间的命中向量相似度。
所述计算单元504包括:
点积子单元5041,用于将每两个使用方的命中向量的数量积作为所述每两个使用方的命中向量相似度。
命中向量相似度用于指示两个使用方之间对所述共享高速缓存的竞争程度。由于使用方及其对应的命中向量的数量均为U,根据排列组合原理,点积子单元5041共需计算个命中向量相似度。在本实施例中,命中向量相似度的算法为取两个使用方的命中向量的数量积的值作为命中向量相似度Similarity。
计算式为:
其中,VA和VB为任意两个M维向量,k表示向量中第k个维度,V(k)表示向量第k个维度上的值。
识别单元505,用于根据所述命中向量相似度识别对所述共享高速缓存存在竞争冲突的使用方。
所述识别单元505包括:
第一识别子单元5051,用于若所述命中向量相似度小于第二阈值,则确定所述命中向量相似度对应的两个使用方之间不存在竞争冲突。
第二识别子单元5052,用于若所述命中向量相似度不小于第二阈值,则确定所述命中向量相似度对应的两个使用方之间存在竞争冲突。
调度单元506,用于对存在竞争冲突的使用方进行调度。
对于存在竞争冲突的两个使用方,需要调度单元506对任意一方进行调度,以缓和系统中的竞争冲突,从而提高系统运行效率。在本实施例中,不对调度方式进行具体限定。
在本实施例中,划分单元501将共享高速缓存中的高速缓存组划分为若干个超级组,计数单元502基于各个超级组计算各个使用方的命中次数,生成单元503生成命中向量,计算单元504计算每两个使用方之间的命中向量相似度,识别单元505以此为依据识别使用方之间的竞争冲突。对比基于整个共享高速缓存的访问失效次数计算的高速缓存失效率,本实施例提供的命中向量相似度具有更细的粒度,能够全面反映使用方之间对共享高速缓存的竞争冲突程度。
本发明第五实施例将对一种缓存冲突检测系统进行详细说明。本实施例所述的缓存冲突检测系统具体结构请参见图6,包括:
至少两个使用方601、共享高速缓存602和缓存冲突检测装置603。其中,至少两个使用方601、缓存冲突检测装置603、共享高速缓存602依次连接。
所述至少两个使用方601,用于共享所述共享高速缓存602,其共享操作可以通过多核或多线程处理器执行。
所述共享高速缓存602包括多个高速缓存组,共享高速缓存602中已存放待使用的指令或数据。
所述缓存冲突检测装置603,用于检测所述至少两个使用方601对所述共享高速缓存602的竞争冲突,所述缓存冲突检测装置603所实现的功能请参见本发明第三和第四实施例所述的缓存冲突检测装置,这里不再赘述。
其中,根据应用场景的不同,使用方601可以为线程、进程或虚拟机。若使用方601为线程,则使用线程号(Thread Identity,TID)对不同的线程进行标识;若使用方601为进程,则使用进程号(Process Identity,PID)对不同的进程进行标识;若使用方601为虚拟机,则使用虚拟机号(Virtual MachineIdentity,VMID)对不同的虚拟机进行标识。在本实施例中,使用使用方号(UserIdentity,UID)对不同的使用方进行标识,因此,UID具体为TID或PID或VMID。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上对本发明所提供的一种缓存冲突检测方法、装置及系统进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (13)
1.一种缓存冲突检测方法,其特征在于,包括:
将共享高速缓存中的多个高速缓存组平均划分为N个超级组,所述高速缓存组的数量为所述N的正整数倍;
计算预设时间内各个使用方对各个超级组的命中次数;
根据所述命中次数生成各个使用方的命中向量,所述命中向量为N维向量;
根据所述命中向量计算每两个使用方之间的命中向量相似度,所述命中向量相似度用于指示两个使用方之间对所述共享高速缓存的竞争程度;
根据所述命中向量相似度识别对所述共享高速缓存存在竞争冲突的使用方。
2.根据权利要求1所述的方法,其特征在于,所述命中向量的N个维度与所述N个超级组一一对应,
所述根据所述命中次数生成各个使用方的命中向量包括:
生成所述各个使用方未赋值的N维命中向量;
若命中次数小于第一阈值,则对所述命中向量中对应的维度赋值为0,否则赋值为1。
3.根据权利要求2所述的方法,其特征在于,所述根据所述命中向量获取每两个使用方之间的命中向量相似度包括:
将每两个使用方的命中向量的数量积作为所述每两个使用方的命中向量相似度。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述根据所述命中向量相似度识别对所述共享高速缓存存在竞争冲突的使用方包括:
若所述命中向量相似度小于第二阈值,则确定所述命中向量相似度对应的两个使用方之间不存在竞争冲突;
若所述命中向量相似度不小于第二阈值,则确定所述命中向量相似度对应的两个使用方之间存在竞争冲突。
5.根据权利要求1至3任一项所述的方法,其特征在于,还包括:
对存在竞争冲突的使用方进行调度。
6.根据权利要求1至3任一项所述的方法,其特征在于,
所述使用方为线程、进程或虚拟机。
7.一种缓存冲突检测装置,其特征在于,包括:
划分单元,用于将共享高速缓存中的多个高速缓存组平均划分为N个超级组,所述高速缓存组的数量为所述N的正整数倍;
计数单元,用于计算预设时间内各个使用方对各个超级组的命中次数;
生成单元,用于根据所述命中次数生成各个使用方的命中向量,所述命中向量为N维向量;
计算单元,用于根据所述命中向量计算每两个使用方之间的命中向量相似度,所述命中向量相似度用于指示两个使用方之间对所述共享高速缓存的竞争程度;
识别单元,用于根据所述命中向量相似度识别对所述共享高速缓存存在竞争冲突的使用方。
8.根据权利要求7所述的装置,其特征在于,所述使用方为线程、进程或虚拟机,所述命中向量的N个维度与所述N个超级组一一对应,
所述生成单元包括:
生成子单元,用于生成所述各个使用方未赋值的N维命中向量;
赋值子单元,用于若命中次数小于第一阈值,则对所述命中向量中对应的维度赋值为0,否则赋值为1。
9.根据权利要求8所述的装置,其特征在于,所述计算单元包括:
点积子单元,用于将每两个使用方的命中向量的数量积作为所述每两个使用方的命中向量相似度。
10.根据权利要求7至9任一项所述的装置,其特征在于,所述识别单元包括:
第一识别子单元,用于若所述命中向量相似度小于第二阈值,则确定所述命中向量相似度对应的两个使用方之间不存在竞争冲突;
第二识别子单元,用于若所述命中向量相似度不小于第二阈值,则确定所述命中向量相似度对应的两个使用方之间存在竞争冲突。
11.根据权利要求7至9任一项所述的装置,其特征在于,还包括:
调度单元,用于对存在竞争冲突的使用方进行调度。
12.一种缓存冲突检测系统,其特征在于,包括:至少两个使用方、共享高速缓存和缓存冲突检测装置,
所述至少两个使用方,用于共享所述共享高速缓存;
所述共享高速缓存包括多个高速缓存组;
所述缓存冲突检测装置,用于检测所述至少两个使用方对所述共享高速缓存的竞争冲突,所述缓存冲突检测装置为权利要求7至11任一项所述的缓存冲突检测装置。
13.根据权利要求12所述的系统,其特征在于,
所述使用方为线程、进程或虚拟机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310246466.5A CN104239228B (zh) | 2013-06-20 | 2013-06-20 | 一种缓存冲突检测方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310246466.5A CN104239228B (zh) | 2013-06-20 | 2013-06-20 | 一种缓存冲突检测方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104239228A true CN104239228A (zh) | 2014-12-24 |
CN104239228B CN104239228B (zh) | 2017-11-03 |
Family
ID=52227343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310246466.5A Active CN104239228B (zh) | 2013-06-20 | 2013-06-20 | 一种缓存冲突检测方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104239228B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491873A (zh) * | 2018-11-05 | 2019-03-19 | 网易无尾熊(杭州)科技有限公司 | 缓存监控方法、介质、装置和计算设备 |
CN117785484A (zh) * | 2024-02-26 | 2024-03-29 | 北京卡普拉科技有限公司 | 共享Cache资源分配方法、系统、计算机设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6990628B1 (en) * | 1999-06-14 | 2006-01-24 | Yahoo! Inc. | Method and apparatus for measuring similarity among electronic documents |
CN101944068A (zh) * | 2010-08-23 | 2011-01-12 | 中国科学技术大学苏州研究院 | 一种共享高速缓存的性能优化方法 |
CN102495762A (zh) * | 2011-11-16 | 2012-06-13 | 华为技术有限公司 | 一种线程调度方法、线程调度装置及多核处理器系统 |
-
2013
- 2013-06-20 CN CN201310246466.5A patent/CN104239228B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6990628B1 (en) * | 1999-06-14 | 2006-01-24 | Yahoo! Inc. | Method and apparatus for measuring similarity among electronic documents |
CN101944068A (zh) * | 2010-08-23 | 2011-01-12 | 中国科学技术大学苏州研究院 | 一种共享高速缓存的性能优化方法 |
CN102495762A (zh) * | 2011-11-16 | 2012-06-13 | 华为技术有限公司 | 一种线程调度方法、线程调度装置及多核处理器系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491873A (zh) * | 2018-11-05 | 2019-03-19 | 网易无尾熊(杭州)科技有限公司 | 缓存监控方法、介质、装置和计算设备 |
CN117785484A (zh) * | 2024-02-26 | 2024-03-29 | 北京卡普拉科技有限公司 | 共享Cache资源分配方法、系统、计算机设备及介质 |
CN117785484B (zh) * | 2024-02-26 | 2024-05-17 | 北京卡普拉科技有限公司 | 共享Cache资源分配方法、系统、计算机设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104239228B (zh) | 2017-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106453437B (zh) | 一种设备识别码获取方法及装置 | |
CN101799748B (zh) | 一种确定数据样本类别的方法及其系统 | |
US7389222B1 (en) | Task parallelization in a text-to-text system | |
CN103970851B (zh) | 海量凭证数据直接出具大型企业集团总部财务报表的方法 | |
CN105446934B (zh) | 一种基于多核dsp的动目标及恒虚警检测系统 | |
CN108804545A (zh) | 分布式全局唯一id生成方法及设备 | |
CN111079921A (zh) | 一种基于异构分布式系统的高效神经网络训练调度方法 | |
US20160062782A1 (en) | Method For Deploying Virtual Machines, Device Thereof And Management Node | |
CN103177414A (zh) | 一种基于结构的图节点相似度并行计算方法 | |
CN102012936A (zh) | 基于云计算平台的海量数据聚合方法和系统 | |
CN106407226B (zh) | 一种数据处理方法、备份服务器及存储系统 | |
CN109983459A (zh) | 用于标识语料库中出现的n-gram的计数的方法和设备 | |
CN104239228A (zh) | 一种缓存冲突检测方法、装置及系统 | |
CN102810133B (zh) | 网络游戏中的射线查询方法和场景服务器 | |
CN109033365A (zh) | 一种数据处理方法及相关设备 | |
CN103207804B (zh) | 基于集群作业日志的MapReduce负载模拟方法 | |
Yang et al. | An adaptive batch-orchestration algorithm for the heterogeneous GPU cluster environment in distributed deep learning system | |
CN108183870B (zh) | 一种基于云成熟度的云数据中心资源调度共享方法及系统 | |
CN110472972B (zh) | 一种区块链存储数据同步快照方法及系统 | |
CN204680034U (zh) | 指纹识别处理系统 | |
CN110163155B (zh) | 人脸数据的处理方法、装置、电子设备及可读存储介质 | |
CN114021833A (zh) | 一种线损预测方法、系统、存储介质及计算设备 | |
Opderbeck et al. | The renewal model for program behavior | |
CN103309747B (zh) | 一种代码文件统计任务的分配方法及装置 | |
CN102495788B (zh) | 一种嵌入式系统内存统计方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |