Действительно, действительно есть случаи, когда вы хотите, чтобы данные записывались в память в случае сбоя ядра (надежность) или если вы работаете над транзакциями, и у вас есть какая-то версия памяти. В этих случаях вы хотите обеспечить согласованность и постоянство ваших данных, синхронизируя их с памятью, но вы не хотите нести штраф за очистку всего кеша или даже за линию, над которой работаете, потому что вам нужно продолжайте работать с ним.
В x86 для таких случаев вы должны проверить CLWB (кэш-строку WB) и PCOMMIT. Оба были опубликованы совсем недавно, поэтому они, вероятно, еще не поддерживаются в большинстве существующих продуктов (я видел некоторые возможные ссылки на Skylake, но ничего формального). Вот хорошее резюме, включая некоторый анализ производительности - http://danluu.com/clwb-pcommit/
CLWB:
CLWB действует как CLFLUSH, в том, что она заставляет данные, чтобы выписали память. Однако он не заставляет кеш отбрасывать данные, , что делает чтение и запись в будущем быстрее. Кроме того, CLFLUSH - это , заказанный только в отношении MFENCE, но CLWB также заказывается с в отношении SFENCE.
И PCOMMIT:
PCOMMIT применяется ко всем диапазонам памяти и гарантирует, что все в области памяти стремятся к постоянной памяти.
Эти 2 отличаются по типу памяти и хранения, с которыми они работают, и некоторым другим тонкостям, например, как они заказываются в отношении фехтования или других магазинов. Полное описание содержится в руководствах.
Что вы пытаетесь сделать? Обычно кеш достаточно умен, чтобы управлять собой. – SnakeDoc