There are eight types of memory ordering in some architectures such as the memory ordering of stores can be reordered after stores.
Memory ordering in some architectures Loads can be reordered after loads Loads can be reordered after stores Stores can be reordered after stores Stores can be reordered after loads Atomic can be reordered with loads Atomic can be reordered with stores Dependent loads can be reordered Incoherent instruction cache pipeline 
