我正在寻找有关各种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/