Я слышал, что есть онлайн-книга Intel, в которой описываются циклы процессора, необходимые для конкретной инструкции по сборке, но я не могу ее найти (после тяжелой попытки). Может ли кто-нибудь показать мне, как найти циклы процессора?
Вот пример, в приведенном ниже коде mov/lock - 1 цикл процессора, а xchg - 3 цикла процессора.
// This part is Platform dependent!
#ifdef WIN32
inline int CPP_SpinLock::TestAndSet(int* pTargetAddress,
int nValue)
{
__asm
{
mov edx, dword ptr [pTargetAddress]
mov eax, nValue
lock xchg eax, dword ptr [edx]
}
// mov = 1 CPU cycle
// lock = 1 CPU cycle
// xchg = 3 CPU cycles
}
#endif // WIN32
BTW: вот URL для кода, который я разместил: http://www.codeproject.com/KB/threads/spinlocks.aspx