一种原子操作的处理方法、设备、装置及存储介质制造方法及图纸

技术编号:33914027 阅读:18 留言:0更新日期:2022-06-25 19:56
本申请实施例提供一种原子操作的处理方法、设备、装置及存储介质。在本申请实施例中,可在计算设备中发生内存独占事件时,定位出内存独占事件对应的目标内存地址,并在目标内存地址上发生的内存独占事件满足触发条件的情况下,动态地关闭目标内存地址对应的缓存,以引导目标内存地址所承载的原子操作不再经由缓存而直接去访问内存。这样,目标内存地址所承载的原子操作可通过内存而读写所需的数据,这保证了原子操作的正常执行,而由于可能导致内存独占事件的原子操作被引导至内存而不再访问缓存,因此,可有效缓解原子操作因访问缓存而导致的内存独占事件。存而导致的内存独占事件。存而导致的内存独占事件。

【技术实现步骤摘要】
一种原子操作的处理方法、设备、装置及存储介质


[0001]本申请涉及计算机
,尤其涉及一种原子操作的处理方法、设备、装置及存储介质。

技术介绍

[0002]原子操作是多核处理器的基本功能。它使得一组操作,比如CAS操作中的比较,算术加,交换操作以全做或者全不做的事务形式进行。在具体的实现上,原子操作高度依赖缓存一致性协议,如Intel x86的MESI协议可以在缓存行级别保证诸如CAS这类操作的正确性。
[0003]然而,当原子操作涉及到的变量横跨多个缓存行时,MESI等协议提供的原子性将无法满足需求,这种情况下,Intel x86的处理方式是锁住内存总线,使得只有当前原子操作所属的CPU核可以访问相应的内存变量,从而防止其他CPU核的指令干扰这个操作。
[0004]这种处理方式虽然保证了原子操作的正确性,但却给多核处理器带来了严重的性能问题。

技术实现思路

[0005]本申请的多个方面提供一种原子操作的处理方法、设备、装置及存储介质,用以如何缓解原子操作导致的多核处理器的性能下降问题。
[0006]本申请实施例提供一种原子操作的处理方法,包括:
[0007]监测计算设备中发生的内存独占事件,所述内存独占事件由原子操作导致;
[0008]定位所述内存独占事件对应的目标内存地址;
[0009]若所述目标内存地址上发生的内存独占事件满足触发条件,则关闭所述目标内存地址对应的缓存,以引导所述目标内存地址所承载的原子操作访问内存而不再访问缓存。
[0010]本申请实施例还提供一种计算设备,包括存储器和处理器;
[0011]所述存储器用于存储一条或多条实现虚拟化功能的计算机指令;
[0012]所述处理器与所述存储器耦合,用于执行所述一条或多条计算机指令,以用于:
[0013]监测所述计算设备中发生的内存独占事件,所述内存独占事件由原子操作导致;
[0014]定位所述内存独占事件对应的目标内存资源;
[0015]若所述目标内存资源上发生的内存独占事件满足触发条件,则关闭所述目标内存资源对应的缓存资源,以引导所述目标内存资源所承载的原子操作访问内存资源而不再访问缓存资源。
[0016]本申请实施例还提供一种控制装置,包括:
[0017]监测模块,用于监测所述计算设备中发生的内存独占事件,所述内存独占事件由原子操作导致;
[0018]定位模块,用于定位所述内存独占事件对应的目标内存地址;
[0019]处理模块,用于若所述目标内存地址上发生的内存独占事件满足触发条件,则关
闭所述目标内存资源对应的缓存,以引导所述目标内存地址所承载的原子操作访问内存而不再访问缓存。
[0020]本申请实施例还提供一种存储计算机指令的计算机可读存储介质,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行前述的原子操作的处理方法。
[0021]在本申请实施例中,可在计算设备中发生内存独占事件时,定位出内存独占事件对应的目标内存地址,并在目标内存地址上发生的内存独占事件满足触发条件的情况下,动态地关闭目标内存地址对应的缓存,以引导目标内存地址所承载的原子操作不再经由缓存而直接去访问内存。这样,目标内存地址所承载的原子操作可通过内存而读写所需的数据,这保证了原子操作的正常执行,而由于可能导致内存独占事件的原子操作被引导至内存而不再访问缓存,因此,可有效缓解原子操作因访问缓存而导致的内存独占事件。
附图说明
[0022]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0023]图1a为本申请一示例性实施例提供的一种包含多核处理器的计算设备的结构示意图;
[0024]图1b为本申请一示例性实施例提供的一种原子操作的处理方法的流程示意图;
[0025]图2为本申请一示例性实施例提供的原子操作的处理方法的逻辑示意图;
[0026]图3为本申请一示例性实施例提供的一种状态标识的动态变化示意图;
[0027]图4为本申请另一示例性实施例提供的一种计算设备的结构示意图;
[0028]图5为本申请又一示例性实施例提供的一种控制装置的结构示意图。
具体实施方式
[0029]为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0030]目前,为了保证了原子操作的正确性,给多核处理器带来了严重的性能问题。为此,本申请的一些实施例中:可在计算设备中发生内存独占事件时,定位出内存独占事件对应的目标内存地址,并在目标内存地址上发生的内存独占事件满足触发条件的情况下,动态地关闭目标内存地址对应的缓存,以引导目标内存地址所承载的原子操作不再经由缓存而直接去访问内存。这样,目标内存地址所承载的原子操作可通过内存而读写所需的数据,这保证了原子操作的正常执行,而由于可能导致内存独占事件的原子操作被引导至内存而不再访问缓存,因此,可有效缓解原子操作因访问缓存而导致的内存独占事件。
[0031]在介绍本申请的技术方案之前,首先对本申请中涉及到的技术概念进行简要说明:
[0032]原子操作:指对某个变量进行的一组操作(如读、写、算术操作)满足全部做或全部不做的事务语义。在多线程访问共享资源时,某个线程的原子操作一旦开始,就一直运行到
结束,期间不被其他线程所打断。
[0033]内存独占事件:在Intel x86等架构下,如果某个原子操作涉及的数据横跨两个或两个以上的缓存行,那么此时会停止整个内存总线的实务,而只允许该原子操作执行,以保证这个操作的原子性,这种事件在本申请中被称为内存独占事件,典型的内存独占事件可包括分隔锁Split Lock事件。
[0034]缓存行:缓存Cache是由很多个缓存行Cache line组成的。Cache line是缓存ache和内存RAM交换数据的最小单位,通常为64Byte。当CPU把内存的数据载入cache时,会把临近的共64Byte的数据一同放入同一个Cache line。
[0035]内存地址:用于说明数据在内存中的位置。这里提到的内存,可以是常规计算机中的内存,也可以是云计算场景中的内存资源。
[0036]以下结合附图,详细说明本申请各实施例提供的技术方案。
[0037]图1b为本申请一示例性实施例提供的一种原子操作的处理方法的流程示意图,图2为本申请一示例性实施例提供的原子操作的处理方法的逻辑示意图。原子操作是多核处理器的基本功能,它使得一组操作,比如CAS操作中的比较,算术加,交换操作以全做或者全不做的事本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种原子操作的处理方法,包括:监测计算设备中发生的内存独占事件,所述内存独占事件由原子操作导致;确定所述内存独占事件对应的目标内存地址;若所述目标内存地址上发生的内存独占事件满足触发条件,则关闭所述目标内存地址对应的缓存,以引导所述目标内存地址所承载的原子操作访问内存而不再访问缓存。2.根据权利要求1所述的方法,所述触发条件包括:所述目标内存地址上发生的内存独占事件触发所述目标内存地址切换至第一状态,所述第一状态用于表征所述目标内存地址需要进行关闭缓存处理;其中,所述目标内存地址对应的状态动态变化。3.根据权利要求2所述的方法,所述第一状态对应有至少一种预设要求,所述方法还包括:在所述目标内存地址上已经发生的内存独占事件的发生时间和/或发生次数满足所述至少一种预设要求中的任意要求时,触发所述目标内存地址进入所述第一状态。4.根据权利要求3所述的方法,还包括:设定所述目标内存地址对应的缓存关闭时长;在所述目标内存地址对应的缓存已经达到所述缓存关闭时长后,将所述目标内存地址从所述第一状态切换至第二状态,所述第二状态用于表征所述目标内存地址不再需要进行关闭缓存处理;基于所述第二状态,重新开启所述目标内存地址对应的缓存。5.根据权利要求4所述的方法,还包括:在重新开启所述目标内存地址对应的缓存后,继续监测所述目标内存地址上新发生的内存独占事件;在所述新发生的内存独占事件触发所述目标内存地址从所述第二状态切换至所述第一状态的情况下,再次关闭所述目标内存地址对应的缓存。6.根据权利要求4所述的方法,所述缓存关闭时长与所述已经发生的内存独占事件的...

【专利技术属性】
技术研发人员:张晋
申请(专利权)人:阿里巴巴中国有限公司
类型:发明
国别省市:

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

1