как использовать movntdqa, чтобы избежать загрязнения кеша?
Вопрос
Я пытаюсь написать функцию memcpy, которая не загружает исходную память в кеш процессора.Цель состоит в том, чтобы избежать загрязнения кеша. Приведенная ниже функция memcpy работает, но загрязняет кеш, как это делает стандартный memcpy.Я использую процесс P8700 с Visual C ++ 2008 Express.я вижу использование кеша процессора с помощью Intel vtune.
родовое словоУ меня другая версия с такими же результатами - работает, но загрязняет кеш.
родовое словообновление: это тестовая программа
родовое словоРешение
Цитата из Intel :
<цитата>"Инструкция потоковой загрузки предназначен для ускорения передачи данных из типа памяти USWC.Для других типы памяти, такие как кэшируемая (WB) или Uncacheable (UC), инструкция ведет себя как типичный 16-байтовый MOVDQA инструкция по загрузке.Однако будущее процессоры могут использовать потоковую нагрузку инструкция для других типов памяти (например, WB) как намек на то, что предполагаемая строка кеша должна быть передана в потоковом режиме из памяти прямо в ядро, пока минимизация загрязнения кеша "
Это объясняет, почему код не работает - память типа WB.