So che una barriera di memoria impedisce il riordino delle istruzioni da prima a dopo e da dopo a prima della barriera di memoria, ad esempio se ho le seguenti istruzioni:
instruction 1
instruction 2
instruction 3
memory barrier
instruction 4
instruction 5
instruction 6
Queste istruzioni possono essere eseguite nel seguente ordine:
instruction 3
instruction 1
instruction 2
memory barrier
instruction 6
instruction 5
instruction 4
Ma non verranno mai eseguiti nel seguente ordine:
instruction 1
instruction 2
instruction 5
memory barrier
instruction 4
instruction 3
instruction 6
Ma non sono sicuro che le seguenti attività vengano applicate anche da una barriera di memoria:
- Tutte le operazioni in sospeso prima che la barriera di memoria sia completata.
- Tutti i dati che sono ancora nella cache dalle operazioni di scrittura prima che la barriera di memoria venga scaricata.
Nota: sto parlando dell'architettura x86.