How does _mm_mwait
from pmmintrin.h
work? (I mean not the asm for it, but action and how this action is taken in NUMA systems. The store
monitoring is easy to implement only on bus-based SMP systems with snooping of bus.)
What processors does implement it?
Is it used in some spinlocks?
Every time a CPU on a multicore chip tries to write a specific memory address, all other CPUs, which have this particular memory address in their caches, have to be notified of that change. This notification could be used to implement the wakeup from MWAIT on modern CPUs independent of them having a single or separate memory busses.
MWAIT is part of SSE3.
This is contrary to the definition of a spinlock - the CPU is not busy.