Como posso carregar valores da memória sem poluir o cache?

Eu quero ler um local de memória sem poluir o cache. Eu estou trabalhando na máquina Linux X86. Eu tentei usar o MOVNTDQA assembler instruction:

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

my_mem é um int * alocado com new, my_var é um int.

Eu tenho dois problemas com essa abordagem:

O código compila, mas estou recebendo o erro "Instrução Ilegal" ao executá-lo. Alguma idéia por quê?Não tenho certeza de que tipo de memória é alocada com o novo. Eu diria que WB. De acordo com a documentação, a instrução MOVNTDQA funcionará apenas com o tipo de memória USWC. Como posso saber em qual tipo de memória estou trabalhando?

Para resumir, minha pergunta é:

Como posso ler um local de memória sem poluir o cache em uma máquina X86? A minha abordagem está na direção certa e pode ser corrigida para funcionar?

Obrigado.

questionAnswers(2)

yourAnswerToTheQuestion