Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. COYes, I do mean LOCK CMPXCHG. The Architecture Manual describes the bus lock signal, but indicates that if all data is in cache, it will not be used and instead the MESI protocol will be used. I can understand how bus lock will work and I can see that will enforce serialisation of the complete operation across cores; but when bus lock is not used, another mechanism is in use - and that is, I think, the case in the benchmark in the OP. I suspect Chris Dodd's comments about RFOs explain the matter. I need to properly think about both your answers though - neither are fully digested yet.
      singulars
      1. This table or related slice is empty.
    2. COYes, it does say that for P6 and further, the external LOCK bus signal is not taken, rather it uses cache lock. But the principle still applies. The cacheline does not move while the cache lock is taken (and it's not something that MESI by itself provides. I cannot find any official reference to this, but this URL helps: https://engineering.purdue.edu/~eigenman/ECE563/Handouts/x86_memory.pdf Note the bits on load_lock and write_unlock, slide 11).
      singulars
    3. COReally? I've not come across the notion of 'cache lock'. I thought if MESI was in use, well, you could *tell* if someone else touched your cache line, because you're not exclusive. So you don't *need* cache lock, whatever it is. But perhaps you could be more efficient or I may not understand properly. I'll read the PDF and where it takes me.
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload