Как в С++ поместить массив в кэш-память процессора?
Есть ли в С++ какие-либо средства, позволяющие при выполнении программы размещать созданный константный массив в кэш-память 1 уровня? Может хотя бы рекомендацию такую можно дать, типа рекомендации register для переменной.
Ответы (1 шт):
Автор решения: user7860670
→ Ссылка
Язык сам по себе ничего подобного не предусматривает, однако большинство современных компиляторов предоставляют наборы встраиваемых функций с различными платформо-специфичными функциями.
На x86 для подобных целей есть функции *_prefetch, например загрузка кеш линии в кеш первого уровня из адреса:
#include <xmmintrin.h>
int main()
{
int val{};
_mm_prefetch(&val, 1);
}
Но на практике более интересны функции *_stream, позволяющие подгружать и выгружать данные избегая обычного алгоритма кеширования.