Как в С++ поместить массив в кэш-память процессора?

Есть ли в С++ какие-либо средства, позволяющие при выполнении программы размещать созданный константный массив в кэш-память 1 уровня? Может хотя бы рекомендацию такую можно дать, типа рекомендации register для переменной.


Ответы (1 шт):

Автор решения: user7860670

Язык сам по себе ничего подобного не предусматривает, однако большинство современных компиляторов предоставляют наборы встраиваемых функций с различными платформо-специфичными функциями.

На x86 для подобных целей есть функции *_prefetch, например загрузка кеш линии в кеш первого уровня из адреса:

#include <xmmintrin.h>
int main()
{
   int val{};
   _mm_prefetch(&val, 1);
}

Но на практике более интересны функции *_stream, позволяющие подгружать и выгружать данные избегая обычного алгоритма кеширования.

→ Ссылка