Understanding of memory barriers

  c++, memory, memory-barriers, mesi

Currently reading an article about memory barriers (in MESI) and I have few questions about that.
There are 4 types of memory barriers LoadLoad, StoreStore, LoadStore and StoreLoad.
I understand what LoadLoad and StoreStore do.

For example LoadLoad its a read barrier (on Linux smp_rmb) which makes core to handle all invalidate requests from invalidate queue. Same about StoreStore, it makes core to wait for all store requests.

But what LoadStore and StoreLoad do? Isnt it the same as LoadLoad and StoreStore? If LoadStore makes core to finish all load operations before store ones , does core make it in another way than handling invalidation queue?

Source: Windows Questions C++