Невременные инструкции SSE (MOVNTI, MOVNTQ и т. Д.) Не соответствуют нормам кэш-когерентности. Поэтому для невременных магазинов должна следовать инструкция SFENCE, чтобы их результаты могли быть замечены другими процессорами своевременно.
Когда данные производятся, а не (сразу же) потребляются снова, тот факт, что операции хранения памяти сначала считывают полную строку кеша, а затем модифицируют кэшированные данные, наносят ущерб производительности. Эта операция выталкивает данные из кэшей, которые могут потребоваться снова в пользу данных, которые не будут использоваться в ближайшее время. Это особенно справедливо для больших структур данных, таких как матрицы, которые заполняются, а затем используются позже. Перед заполнением последнего элемента матрицы чистый размер вытесняет первые элементы, делая кеширование записей неэффективными.
Для этой и подобных ситуаций процессоры обеспечивают поддержку операций, не связанных с временной записью. В этом контексте невременно означает, что данные не будут повторно использоваться в будущем, поэтому нет причин его кэшировать. Эти операции с невременной записью не читают строку кэша, а затем изменяют ее; вместо этого новый контент непосредственно записывается в память.
Источник: http://lwn.net/Articles/255364/
Обратите внимание, что SSE4.1 `MOVNTDQA xmmi, m128` является загрузкой NT, тогда как все остальные команды NT являются хранилищами, за исключением` prefetchnta`. Принятый здесь ответ только говорит о магазинах. [Это то, что я смог узнать о загрузках NT) (http://stackoverflow.com/questions/32103968/non-temporal-loads-and-the-hardware-prefetcher-do-they-work-together). TL: DR: надеюсь, что процессор делает что-то полезное с подсказкой NT, чтобы минимизировать загрязнение кэша, но они не переопределяют сильно упорядоченную семантику «нормальной» WB-памяти, поэтому они должны использовать кеш. – 2016-11-23 07:25:27
Обновление: NT * загружает * может не делать ничего полезного, кроме областей памяти UCSW на большинстве процессоров (например, семейство Intel SnB). NT/streaming * сохраняет * определенно работают на нормальную память. – 2017-07-08 01:18:47
@Peter: Вы имеете в виду USWC-память?Раньше я никогда не слышал о UCSW или USWC-памяти. Неправильная аббревиатура не была полезной :-) – 2017-08-15 11:29:43