multithreading - 英特尔Cpu上原子cmpxchg指令的平均延迟

标签 multithreading x86 atomic lock-free

我正在寻找有关各种intel处理器的锁cmpxchg指令的平均延迟的引用。我无法在该主题上找到任何好的引用资料,任何引用资料都会有很大帮助。

谢谢。

最佳答案

由于存在太多差异,因此很少(如果有的话)对此提供很好的引用。它基本上取决于一切,包括总线速度,内存速度,处理器速度,处理器数量,周围指令,内存围栏以及很可能是月亮与珠穆朗玛峰之间的角度...

如果您有一个非常特定的应用程序,例如已知(固定)硬件,操作环境,实时操作系统和排他控制,那么可能会很重要。在这种情况下,基准测试。如果您对软件的运行位置没有这种级别的控制,则任何度量实际上都是毫无意义的。

these answers中所述,锁是使用CAS实现的,因此,如果您可以使用CAS而不是锁(它将需要至少两次操作),它将变得更快(值得注意的是?也许)。

您会发现最好的引用是Intel Software Developer's Manuals,尽管由于变化太多,它们不会为您提供实际的数字。但是,它们将描述如何获得最佳性能。可能是处理器数据表(例如“技术文档”下的i7 Extreme Edition的here)将为您提供实际数字(或至少一个范围)。

关于multithreading - 英特尔Cpu上原子cmpxchg指令的平均延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4187914/

相关文章:

c++ - 运行 3 个线程时出现段错误

c# - 在 API 中使用任务并行库

java - 可以并行执行 Java 对象非同步方法的最大线程数是多少?

java - 为什么调用空 Atomic 类的方法不会产生异常?

python - 编辑 django-cms 页面时出现 TransactionManagementError

rust - 当3 “stores”顺序发生并且只有一个是原子时会发生什么

java - 处理线程最大执行时间的最佳方法(在 Java 中)

APP_ABI 的 Android NDK : what should I set in Application. mk?

linux - Linux AMD64 中如何使用 fs/gs 寄存器?

gcc - 推送 ebp : operand type mismatch for `push'