Ответ 1
Невременные инструкции SSE (MOVNTI, MOVNTQ и т.д.) не соответствуют обычным правилам кеширования. Поэтому для невременных хранилищ должна следовать инструкция SFENCE, чтобы их результаты могли быть замечены другими процессорами своевременно.
Когда данные создаются, а не (сразу) потребляются снова, тот факт, что операции хранения памяти сначала считывают полную строку кэша, а затем модифицируют кэшированные данные, отрицательно сказывается на производительности. Эта операция выталкивает данные из кэшей, которые могут потребоваться снова в пользу данных, которые не будут использоваться в ближайшее время. Это особенно справедливо для больших структур данных, таких как матрицы, которые заполняются, а затем используются позже. Перед заполнением последнего элемента матрицы чистый размер вытесняет первые элементы, делая кеширование записей неэффективными.
Для этой и подобных ситуаций процессоры обеспечивают поддержку операций, не связанных с периодом записи. В этом контексте невременно означает, что данные не будут повторно использоваться в будущем, поэтому нет причин его кэшировать. Эти операции с невременной записью не читают строку кэша, а затем изменяют ее; вместо этого новый контент непосредственно записывается в память.
Источник: http://lwn.net/Articles/255364/