When using persistent memory like Intel optane DCPMM, is it possible to see partial result after reboot if system crash(power outage) in execution of movnt instruction?
For:
movnti
which x86 guarantees atomic for other purposes?movntdq
/ movntps
which aren't guaranteed atomic but which in practice probably are on CPUs supporting persistent memory.vmovntdq
/ vmovntps
vmovntdq
/ vmovntps
full-line storesMOVDIR64B
which has guaranteed 64-byte write atomicity, on future CPUs that support it and DC-PM. e.g. Sapphire Rapids Xeon / Tiger Lake / Tremont.movntpd
is assumed to be identical to movntps
.
Related questions:
The following operations are guaranteed to be persistently atomic:
MOVDIR64B
.Note all atomic guarantees mentioned in the Intel SDM V3 Section 8.1.1 apply to persistent memory.
In addition, the following operations are persistently atomic:
CLFLUSH
or CLFLUSHOPT
),CLWB
), andThere is no architectural persistent atomicity guarantee for everything else, including 64-byte AVX512 vmovntdq
/ vmovntps
full-line stores.
These guarantees apply to Asynchronous DRAM Refresh (ADR) platforms and Enhanced Asynchronous DRAM Refresh (eADR) platforms. (On eADR, the cache hierarchy is in the persistence domain. See: Build Persistent Memory Applications with Reliability Availability and Serviceability.)
This answer is based on my private correspondence with Andy Rudoff (Intel).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With