gpt4 book ai didi

multithreading - 缓存一致性协议(protocol)如何强制执行原子性?

转载 作者:行者123 更新时间:2023-12-04 14:12:46 25 4
gpt4 key购买 nike

我了解可以依靠缓存一致性协议(protocol)(MESI/MESIF)来保证像xsub()这样的操作的原子性,而无需使用LOCK前缀。

1)缓存一致性协议(protocol)如何做到这一点???

这让我想知道缓存一致性协议(protocol)是否可以强制执行原子性,为什么我们需要特殊的原子类型/指令等?

2)如果MOSI在多核系统上实现了原子指令,那么LOCK的目的是什么?遗产?

3)如果MOSI实现了原子指令,而MOSI用于所有指令,那么为什么原子指令要花这么多钱?当然,其性能应与正常使用说明相同。

最佳答案

x86中没有xsub指令,但是有xadd;)

您应该阅读《指令集引用》中有关LOCK前缀的部分,以及《软件开发人员手册》第3A卷:系统编程指南,第1部分中的8.1锁定原子操作。

如今,单个CPU指的是具有自己的缓存的单个内核。当您有多个内核的多个缓存(通常在同一或不同的CPU芯片中)时,它们将使用某种缓存一致性协议(protocol)。如果是MESI,执行原子指令的内核将首先确保其拥有包含该操作数的缓存行的所有权,并将其标记为modified,然后对其进行锁定。如果另一个内核需要高速缓存行,它将执行读取操作,所有者内核将监听该操作并延迟答案,直到原子操作完成。

在单CPU单核系统上,除使用REP前缀的字符串指令外,大多数指令在线程方面都是原子的,因为调度中断和上下文切换仅发生在指令边界。但是,硬件设备可能会观察到非原子行为。

关于multithreading - 缓存一致性协议(protocol)如何强制执行原子性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25345440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com