как использовать movntdqa, чтобы избежать загрязнения кеша?

StackOverflow https://stackoverflow.com/questions/851286

  •  21-08-2019
  •  | 
  •  

Вопрос

Я пытаюсь написать функцию memcpy, которая не загружает исходную память в кеш процессора.Цель состоит в том, чтобы избежать загрязнения кеша. Приведенная ниже функция memcpy работает, но загрязняет кеш, как это делает стандартный memcpy.Я использую процесс P8700 с Visual C ++ 2008 Express.я вижу использование кеша процессора с помощью Intel vtune.

родовое слово

У меня другая версия с такими же результатами - работает, но загрязняет кеш.

родовое слово

обновление: это тестовая программа

родовое слово
Это было полезно?

Решение

Цитата из Intel :

<цитата>

"Инструкция потоковой загрузки предназначен для ускорения передачи данных из типа памяти USWC.Для других типы памяти, такие как кэшируемая (WB) или Uncacheable (UC), инструкция ведет себя как типичный 16-байтовый MOVDQA инструкция по загрузке.Однако будущее процессоры могут использовать потоковую нагрузку инструкция для других типов памяти (например, WB) как намек на то, что предполагаемая строка кеша должна быть передана в потоковом режиме из памяти прямо в ядро, пока минимизация загрязнения кеша "

Это объясняет, почему код не работает - память типа WB.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top