Відповідно до посібника для розробників програмного забезпечення для архітектури Intel® 64 та IA-32, Том 1: Основна архітектура, "Програмування з розширенням SIMD Streaming SIMD (Intel SSE)":
Кешування темпоральних та нечасових даних
Дані, на які посилається програма, можуть бути тимчасовими (дані будуть використані знову) або не тимчасовими (дані будуть посилатися один раз і не використовуватись у найближчому майбутньому). Наприклад, програмний код, як правило, тимчасовий, тоді як мультимедійні дані, такі як список дисплеїв у тривимірній графічній програмі, часто є не тимчасовими. Для ефективного використання кеш-процесорів, як правило, бажано кешувати тимчасові дані, а не кешувати не тимчасові дані. Перевантаження кешів процесора нечасовими даними іноді називають "забрудненням кешів". Інструкції з кешування кеш-пам'яті SSE та SSE2 дозволяють програмі записувати нечасові дані в пам'ять таким чином, що мінімізує забруднення кеш-пам'яті.
Опис нечасного навантаження та інструкції щодо зберігання. Джерело: Інструкції для розробників програмного забезпечення для архітектури Intel 64 та IA-32, Том 2: Посібник з набору інструкцій
ЗАВАНТАЖЕННЯ (MOVNTDQA - Завантажте подвійний чотирисловник, нечасова підказка)
Завантажує подвійний чотирисловник від вихідного операнда (другий операнд) до операнду призначення (перший операнд), використовуючи нечасову підказку, якщо джерелом пам'яті є WC (пам'ять поєднання) типу пам'яті [...]
[...] процесор не зчитує дані в ієрархії кеша, а також не отримує відповідну лінію кешу з пам'яті в ієрархію кешу.
Зауважте, що, як коментує Пітер Кордес, це не корисно для звичайної пам'яті WB (запису) на поточних процесорах, оскільки підказка NT ігнорується (можливо, тому, що немає попередньо встановлених HW-попередників) та повна сильно упорядкована семантика завантаження . prefetchnta
може використовуватися як навантаження, що зменшує забруднення, з пам'яті СБ
МАГАЗИН (MOVNTDQ - зберігати упаковані цілі цілі, використовуючи підказку)
Переміщає запаковані цілі числа у вихідному операнді (другий операнд) до операнду призначення (перший операнд), використовуючи нечасову підказку, щоб запобігти кешування даних під час запису в пам'ять.
[...] процесор не записує дані в ієрархію кешу, а також не отримує відповідну лінію кешу з пам'яті в ієрархію кешу.
Використовуючи термінологію, визначену в кеш-політиці запису і продуктивності , вони можуть розглядатися як запис навколо (не записувати-виділяти, не-приймати-записувати-пропускати).
Нарешті, може бути цікавим переглянути нотатки Джона Макалпіна про магазини, які не є тимчасовими .
MOVNTDQA xmmi, m128
- це навантаження NT, тоді як усі інші інструкції NT зберігаються, за виняткомprefetchnta
. Тут прийнята відповідь лише говорить про магазини. Це те, що мені вдалося з'ясувати щодо NT-навантажень . TL: DR: сподіваємось, процесор робить щось корисне з підказкою NT, щоб мінімізувати забруднення кешу, але вони не перекривають сильно впорядковану семантику "нормальної" пам'яті WB, тому їм доведеться використовувати кеш.