一种伪共享处理方法、装置及电子设备制造方法及图纸

技术编号:33530802 阅读:12 留言:0更新日期:2022-05-19 02:01
本发明专利技术公开了一种伪共享处理方法、装置及电子设备,其中方法包括:当多线程修改不同内存间相互独立的任一独立变量时,确定CPU所使用的缓存行的字节数大小以及独立变量在内存中所占有的字节数大小;当所述独立变量在内存中所占有的字节数大小与所述CPU所使用的缓存行的字节数大小不相同,根据所述CPU所使用的缓存行的字节数大小和所述独立变量在内存中所占有的字节数大小确定待填充的字节数大小;根据所述待填充的字节数大小在所述独立变量的字节数的尾部进行字节填充,使得所述独立变量在内存中所占有的字节数大小与所述待填充的字节数大小之和等于所述CPU所使用的缓存行的字节数大小的整数倍。的字节数大小的整数倍。的字节数大小的整数倍。

【技术实现步骤摘要】
一种伪共享处理方法、装置及电子设备


[0001]本专利技术涉及数据处理
,具体涉及一种伪共享处理方法、装置及电子设备。

技术介绍

[0002]CPU缓存是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存块很多;CPU利用缓存跟内存交换数据的最小单位不是字节,而是通过一块固定大小的区域的缓存行(Cache Line)来进行储存,缓存行一般为2的整数幂大小的连续字节,不同的CPU型号的缓存行大小并不一样,现在比较主流的缓存行通常为64个字节;
[0003]在系统高并发的情况下,为了避免使用锁,防止由于加锁带来的系统开销,通常会采用独立内存的方式,根据不同的线程,单独开辟不同内存空间,这样让线程互不冲突。然而在多线程修改相互独立的变量时,如果这些变量共享一个缓存行,当其中一个独立变量的值发生变化则会造成整块的缓存行污染,就会无意中影响彼此的性能继而造成伪共享。

技术实现思路

[0004]因此,本专利技术要解决的技术问题在于克服现有多线程修改不同内存间相互独立变量时存在伪共享问题的缺陷,从而提供一种伪共享处理方法、装置及电子设备。
[0005]根据第一方面,本专利技术实施例公开了一种伪共享处理方法,当多线程修改不同内存间相互独立的任一独立变量时,确定CPU所使用的缓存行的字节数大小以及独立变量在内存中所占有的字节数大小;当所述独立变量在内存中所占有的字节数大小与所述CPU所使用的缓存行的字节数大小不相同,根据所述CPU所使用的缓存行的字节数大小和所述独立变量在内存中所占有的字节数大小确定待填充的字节数大小;根据所述待填充的字节数大小在所述独立变量的字节数的尾部进行字节填充,使得所述独立变量在内存中所占有的字节数大小与所述待填充的字节数大小之和等于所述CPU所使用的缓存行的字节数大小的整数倍。
[0006]可选地,根据所述CPU所使用的缓存行的字节数大小和所述独立变量在内存中所占有的字节数大小确定待填充的字节数大小,包括:当所述CPU所使用的缓存行的字节数大小小于所述独立变量在内存中所占有的字节数大小,对所述CPU所使用的缓存行的字节数大小和所述独立变量在内存中所占有的字节数大小取余计算;根据取余计算结果对应的字节数大小以及所述CPU所使用的缓存行的字节数大小确定待填充的字节数大小,使得待填充的字节数大小与所述取余计算结果对应的字节数大小之和等于所述述CPU所使用的缓存行的字节数大小。
[0007]可选地,根据所述CPU所使用的缓存行的字节数大小和所述独立变量在内存中所占有的字节数大小确定待填充的字节数大小,还包括:当所述CPU所使用的缓存行的字节数大小大于所述独立变量在内存中所占有的字节数大小,对所述CPU所使用的缓存行的字节数大小和所述独立变量在内存中所占有的字节数大小取余计算;将取余计算结果对应的字节数大小作为待填充的字节数大小,使得待填充的字节数大小与所述独立变量在内存中所
占有的字节数大小之和等于所述述CPU所使用的缓存行的字节数大小。
[0008]可选地,所述CPU所使用的缓存行的字节数大小根据获取到的CPU的型号确定。
[0009]根据第二方面,本专利技术实施例还公开了一种伪共享处理装置,包括:第一确定模块,用于当多线程修改不同内存间相互独立的任一独立变量时,确定CPU所使用的缓存行的字节数大小以及独立变量在内存中所占有的字节数大小;第二确定模块,用于当所述独立变量在内存中所占有的字节数大小与所述CPU所使用的缓存行的字节数大小不相同,根据所述CPU所使用的缓存行的字节数大小和所述独立变量在内存中所占有的字节数大小确定待填充的字节数大小;填充模块,用于根据所述待填充的字节数大小在所述独立变量的字节数的尾部进行字节填充,使得所述独立变量在内存中所占有的字节数大小与所述待填充的字节数大小之和等于所述CPU所使用的缓存行的字节数大小的整数倍。
[0010]可选地,所述第二确定模块,包括:第一计算子模块,用于当所述CPU所使用的缓存行的字节数大小小于所述独立变量在内存中所占有的字节数大小,对所述CPU所使用的缓存行的字节数大小和所述独立变量在内存中所占有的字节数大小取余计算;第一确定子模块,用于根据取余计算结果对应的字节数大小以及所述CPU所使用的缓存行的字节数大小确定待填充的字节数大小,使得待填充的字节数大小与所述取余计算结果对应的字节数大小之和等于所述述CPU所使用的缓存行的字节数大小。
[0011]可选地,所述第二确定模块,还包括:第二计算子模块,用于当所述CPU所使用的缓存行的字节数大小大于所述独立变量在内存中所占有的字节数大小,对所述CPU所使用的缓存行的字节数大小和所述独立变量在内存中所占有的字节数大小取余计算;第二确定子模块,用于将取余计算结果对应的字节数大小作为待填充的字节数大小,使得待填充的字节数大小与所述独立变量在内存中所占有的字节数大小之和等于所述述CPU所使用的缓存行的字节数大小。
[0012]可选地,所述CPU所使用的缓存行的字节数大小根据获取到的CPU的型号确定。
[0013]根据第三方面,本专利技术实施例还公开了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行如第一方面或第一方面任一可选实施方式所述的伪共享处理方法的步骤。
[0014]根据第四方面,本专利技术实施方式还公开了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面或第一方面任一可选实施方式所述的伪共享处理方法的步骤。
[0015]本专利技术技术方案,具有如下优点:
[0016]本专利技术提供的伪共享处理方法/装置,当多线程修改不同内存间相互独立的任一独立变量时,确定CPU所使用的缓存行的字节数大小以及独立变量在内存中所占有的字节数大小,当独立变量在内存中所占有的字节数大小与CPU所使用的缓存行的字节数大小不相同,根据CPU所使用的缓存行的字节数大小和独立变量在内存中所占有的字节数大小确定待填充的字节数大小,根据待填充的字节数大小在独立变量的字节数的尾部进行字节填充,使得独立变量在内存中所占有的字节数大小与待填充的字节数大小之和等于CPU所使用的缓存行的字节数大小的整数倍;通过本方案可以通过动态地填充数组大小保证独立变量在CPU缓存中的位置处于不同的CPU缓存行中,避免出现伪共享的问题。
附图说明
[0017]为了更清楚地说明本专利技术具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0018]图1为本专利技术实施例中伪共享处理方法的一个具体示例的流程图;
[0019]图2为本专利技术实施例中伪共享处理方法的一个具体示例的示意图;
[0本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种伪共享处理方法,其特征在于,包括:当多线程修改不同内存间相互独立的任一独立变量时,确定CPU所使用的缓存行的字节数大小以及独立变量在内存中所占有的字节数大小;当所述独立变量在内存中所占有的字节数大小与所述CPU所使用的缓存行的字节数大小不相同,根据所述CPU所使用的缓存行的字节数大小和所述独立变量在内存中所占有的字节数大小确定待填充的字节数大小;根据所述待填充的字节数大小在所述独立变量的字节数的尾部进行字节填充,使得所述独立变量在内存中所占有的字节数大小与所述待填充的字节数大小之和等于所述CPU所使用的缓存行的字节数大小的整数倍。2.根据权利要求1所述的方法,其特征在于,根据所述CPU所使用的缓存行的字节数大小和所述独立变量在内存中所占有的字节数大小确定待填充的字节数大小,包括:当所述CPU所使用的缓存行的字节数大小小于所述独立变量在内存中所占有的字节数大小,对所述CPU所使用的缓存行的字节数大小和所述独立变量在内存中所占有的字节数大小取余计算;根据取余计算结果对应的字节数大小以及所述CPU所使用的缓存行的字节数大小确定待填充的字节数大小,使得待填充的字节数大小与所述取余计算结果对应的字节数大小之和等于所述述CPU所使用的缓存行的字节数大小。3.根据权利要求1所述的方法,其特征在于,根据所述CPU所使用的缓存行的字节数大小和所述独立变量在内存中所占有的字节数大小确定待填充的字节数大小,还包括:当所述CPU所使用的缓存行的字节数大小大于所述独立变量在内存中所占有的字节数大小,对所述CPU所使用的缓存行的字节数大小和所述独立变量在内存中所占有的字节数大小取余计算;将取余计算结果对应的字节数大小作为待填充的字节数大小,使得待填充的字节数大小与所述独立变量在内存中所占有的字节数大小之和等于所述述CPU所使用的缓存行的字节数大小。4.根据权利要求1所述的方法,其特征在于,所述CPU所使用的缓存行的字节数大小根据获取到的CPU的型号确定。5.一种伪共享处理装置,其特征在于,包括:第一确定模块,用于当多线程修改不同内存间相互独立的任一独立变量时,确定CPU所使用的缓存行的字节数大小以及独立变量在内存中所占有的字节数大小;第二确定模块,用于当所述独立变量在内存中...

【专利技术属性】
技术研发人员:周凌鵬
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1