Hi I m wondering in the below sequence if Core 2 Socket 3 can return stale value of x = 10 much after x = 20 has happened on the other core. Nothing in this sequence seems to violate TLO-CC (from Rick's youtube presentation) I understand with MESI like coherence protocols there is a single write owner but wondering if processors have internal optimizations that cheat to return older reads as long as causality and total lock order is not violated. Regards Banks ===================== Core 0 Socket 0 ===================== store(x, 10) mfence store(y, 1) mfence ...... store(x, 20) mfence store(y, 2) mfence ===================== Core 2 Socket 3 ===================== r0 = load(x) // returns 10 r1 = load(y) // return 1 ... consistent but stale. Is this possible?
Para obtener más información sobre las optimizaciones del compilador, consulte el aviso sobre la optimización.