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).