В общем, это возможно сделать на большинстве современных процессоров;либо с помощью явной поддержки в ЦП (которую не поддерживает 80x86), либо путем взлома (например, загрузка его в кэш и затем отключение заливки строк в кэш-памяти в современных 80x86), или путем предотвращения того, чтобы другие данные вызывали строки / строки кешабыть выселенным через.другие средства (например, регулярно отбрасывать дневной свет из ЦП с помощью CLFLUSH).
Однако «в целом» не означает «специально для Linux».Я сомневаюсь, что Linux поддерживает эти вещи, особенно для процессов в пользовательском пространстве.
Причина, по которой я сомневаюсь, что Linux поддерживает это, заключается в том, что нет никакой разумной причины для поддержки Linux (или любой другой ОС общего назначения).Если что-то используется регулярно, то оно все равно будет в кеше процессора;и если что-то не используется регулярно, то вы не хотите, чтобы это занимало место в кеше и замедляло все остальное.
На самом деле есть только 3 вменяемые причины.Первый - это код прошивки, который запускается до инициализации микросхем ОЗУ (что, я сомневаюсь, применимо здесь).Вторая причина - экстремальное «тяжелое реальное время», когда дополнительная задержка при пропадании кэша не может быть допущена (что, я сомневаюсь, применимо здесь и, вероятно, не применимо ни к чему другому).Третья причина заключается в том, чтобы обойти особые случаи, когда обычная политика использования кэшей с «наименьшим количеством использований в последнее время» приводит к проблемам (таким как загрязнение кэша), где есть гораздо лучшие способы устранения / предотвращения этих проблем (например, предотвращение кэширования ненужных данных,или сбросить его вскоре после того, как он попадет в кеш).
По сути, я предлагаю вам подумать, что вы можете заставить что-то оставаться в кеше, но на самом деле вы не хотите заставлять что-либооставайся в кеше.