gpt4 book ai didi

java - 在 x86 上比较和交换 - 为什么它是一个完整的障碍?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:35:30 25 4
gpt4 key购买 nike

根据 this问题的答案,似乎 x86 上的 LOCK CMPXCHG 实际上会导致完全障碍。据推测,这也是 Unsafe.compareAndSwapInt() 在后台生成的内容。我很难理解为什么会这样:使用 MESI 协议(protocol),在更新缓存行之后,CPU 是否可以简单地使其他内核上的缓存行无效,而不是耗尽执行 CAS 的内核的所有存储/加载缓冲区?对我来说似乎相当浪费...

最佳答案

据我所知,您的答案在评论中 - MESI 更新缓存,而不是Store/Load buffers。但是 lock LOCK CMPXCHG 说:locked operations serialize all outstanding load and store operation - 这就是为什么它需要从这个 CPU(而不是其他 CPU)中耗尽存储/加载缓冲区详细 here )。

因此当前的 CPU 必须对最新的值执行原子操作 - 它可能驻留在存储/加载缓冲区中,这就是为什么需要一个栅栏来实际耗尽它。

关于java - 在 x86 上比较和交换 - 为什么它是一个完整的障碍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45081003/

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