Я думаю, что вы описываете Регистры диапазона типов памяти . Вы можете управлять ими в Linux (если доступно и пользователь 0), используя /proc/mttr
/ ioctl(2)
, см. здесь для примера. Поскольку он работает в физическом диапазоне адресов, я думаю, вам будет трудно использовать его разумным образом.
Лучший способ - взглянуть на встроенные функции компилятора, которые GCC предоставляет и найти одно или несколько выражений, которые выражают ваше намерение. Взгляните на серию Ульриха Дреппера на тему «Что должен знать каждый программист о памяти», в частности part 5 , посвященной обходу кэша. Похоже, что _mm_prefetch(ptr, _MM_HINT_NTA)
может подойти для ваших нужд.
Как всегда, когда дело доходит до производительности - измерять, измерять, измерять. Серия Drepper содержит отличные детали, подробно описывающие, как это можно сделать ( part 7 ), а также примеры кода и другие стратегии, которые можно попробовать при ускорении производительности памяти вашего кода.