Как я могу загрузить значения из памяти, не загрязняя кеш?

Я хочу прочитать место в памяти, не загрязняя кеш. Я работаю на X86 Linux машине. Я попытался с помощью инструкции ассемблера MOVNTDQA:

  asm("movntdqa %[source], %[dest] \n\t"
      : [dest] "=x" (my_var) : [source] "m" (my_mem[0]) : "memory");

my_mem - это int *, выделенный с новым, my_var - это int.

У меня есть две проблемы с этим подходом:

Код компилируется, но я получаюНезаконная инструкция ошибка при запуске. Есть идеи почему?Я не уверен, какой тип памяти выделяется с новым. Я бы предположил, что ВБ. Согласно документации, инструкция MOVNTDQA будет работать только с типом памяти USWC. Как я могу узнать, над каким типом памяти я работаю?

Подводя итог, мой вопрос:

Как я могу прочитать ячейку памяти, не загрязняя кэш на компьютере с архитектурой X86? Мой подход в правильном направлении, и может ли это быть исправлено?

Благодарю.

Ответы на вопрос(2)

Ваш ответ на вопрос