В соответствии с Руководством разработчика программного обеспечения для архитектур Intel® 64 и IA-32, том 1: Базовая архитектура,
Глава «Программирование с помощью Intel Streaming SIMD Extensions (Intel SSE)»:
Кэширование временных и невременных данных
Данные, на которые ссылается программа, могут быть временными (данные будут использоваться снова) или не временными (на данные будут ссылаться один раз, и они не будут использоваться повторно в ближайшем будущем). Например, программный код обычно является временным, тогда как мультимедийные данные, такие как список отображения в приложении для трехмерной графики, часто являются временными. Чтобы эффективно использовать кэши процессора, обычно желательно кэшировать временные данные, а не кэшировать невременные данные. Перегрузка кешей процессора невременными данными иногда называется «загрязнением кешей». Инструкции по управлению кэшируемостью SSE и SSE2 позволяют программе записывать невременные данные в память таким образом, чтобы минимизировать загрязнение кэшей.
Описание невременной загрузки и сохранения инструкций.
Источник: Руководство разработчика программного обеспечения для архитектуры Intel 64 и IA-32, том 2: Справочник по наборам инструкций
ЗАГРУЗИТЬ (MOVNTDQA - загрузить подсказку о невременном выравнивании двойного слова)
Загружает двойное четырехзначное слово из исходного операнда (второго операнда) в целевой операнд (первый операнд), используя не временную подсказку, если источником памяти является тип памяти WC (с комбинированием записи) [...]
[...] процессор не считывает данные в иерархию кэша и не извлекает соответствующую строку кэша из памяти в иерархию кэша.
Обратите внимание, что, как комментирует Питер Кордес, это бесполезно для обычной памяти WB (с обратной записью) на текущих процессорах, потому что подсказка NT игнорируется (возможно, потому что нет никаких предварительных сборщиков HW с поддержкой NT) и полный строго упорядоченный применяется семантика загрузки. prefetchnta
может использоваться в качестве уменьшающей загрязнение нагрузки из памяти WB
STORE (MOVNTDQ - хранить упакованные целые числа с использованием невременного намека)
Перемещает упакованные целые числа в исходном операнде (второй операнд) в целевой операнд (первый операнд), используя временную подсказку для предотвращения кэширования данных во время записи в память.
[...] процессор не записывает данные в иерархию кэша и не извлекает соответствующую строку кэша из памяти в иерархию кэша.
Используя терминологию, определенную в Политика записи в кэш и производительность , они могут рассматриваться как обходные записи (без записи-выделения, без выборки при записи).
Наконец, может быть интересно просмотреть заметки Джона Макалпина о не временных магазинах .