На x86-64, атомарна ли команда movnti или movntdq при сбое системы?
При использовании постоянной памяти, такой как Intel optane DCPMM, можно ли увидеть частичный результат после перезагрузки, если система выйдет из строя (отключение питания) при выполнении инструкции movnt?
Для:
- 4 или 8 байт
movnti
какой x86 гарантирует атомарность для других целей? - 16-байтовый SSE
movntdq
/ которые не гарантируются атомарными, но на практике, вероятно, находятся на процессорах, поддерживающих постоянную память. - 32-байтовый AVX /
- 64-байтный AVX512
vmovntdq
/vmovntps
полные магазины - бонусный вопрос:
MOVDIR64B
который гарантировал 64-байтовую атомарность записи на будущих процессорах, которые его поддерживают, и DC-PM. например, Сапфир Рапидс Ксеон / Тигровое озеро / Тремонт .
movntpd
считается идентичным
movntps
.
Связанные вопросы:
1 ответ
Гарантии атомарности на x86 с точки зрения глобальной наблюдаемости и устойчивости одинаковы. Это означает, что следующие операции постоянно атомарны:
- Uop магазина, который не пересекает 8-байтовую границу с местоположением любого эффективного типа памяти, и
-
MOVDIR64B
.
Кроме того, следующие операции постоянно атомарны:
- Сброс строки кэша (
CLFLUSH
или жеCLFLUSHOPT
), - Обратная запись строки кэша (
CLWB
), а также - Неархитектурное вытеснение строки кэша.
- Полная очистка буфера комбинирования записи на процессорах Intel. Наличие и размер WCB, а также причины сброса зависят от реализации. См .: Размещение невременных хранилищ Intel в одной строке кэша .
Нет гарантии постоянной атомарности архитектуры для всего остального, включая 64-байтовый AVX512.
vmovntdq
/
vmovntps
полные магазины.
Эти гарантии применяются к платформам с асинхронным обновлением DRAM (ADR) и платформам с улучшенным асинхронным обновлением DRAM (eADR). (В eADR иерархия кэша находится в домене сохраняемости. См. Создание приложений постоянной памяти с надежной доступностью и удобством обслуживания. )
Этот ответ основан на моей личной переписке с Энди Рудоффом (Intel).