gpt4 book ai didi

assembly - LOCK CMPXCHG 的线程执行速度

转载 作者:行者123 更新时间:2023-12-02 13:53:15 25 4
gpt4 key购买 nike

我编写了一个多线程应用程序来对 LOCK CMPXCHG (x86 ASM) 的运行速度进行基准测试。

在我的机器(双核 - Core 2)上,有 2 个线程运行并访问同一变量,我每秒可以执行大约 40M 操作。

然后我给每个线程一个唯一的变量来操作。显然,这意味着线程之间不存在锁定争用,因此我期望速度性能。然而,速度却没有改变。为什么?

最佳答案

如果有 2 个线程同时访问同一缓存行上的数据,则会出现错误共享,其中每个核心都必须不断更新其缓存,因为缓存的同一部分已被更改其他核心。

确保唯一变量分配在不同的内存块中(例如,至少相距 128 个字节),以确保这不是您遇到的问题。

DDJ 有一篇很好的文章描述了虚假共享的可怕影响:http://www.drdobbs.com/go-parallel/article/showArticle.jhtml?articleID=217500206

这是维基百科的条目:http://en.wikipedia.org/wiki/False_sharing

关于assembly - LOCK CMPXCHG 的线程执行速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3427061/

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