переупорядочивание выполнения (out of order execution) процессор выполняет и так, то есть он сам будет по возможности чем-то другим заниматься, пока грузит данные из памяти. писать код так, чтобы он для этого был оптимален - отдельный навык, которым сейчас мало кто владеет, потому что им в совершенстве овладели компиляторы.
но если трактовать ваш вопрос буквально, то у x86 (точнее в наборах команд sse и avx) есть целое семейство команд для префетча данных в разные уровни кэша:
PREFETCHT0 - prefetch data into all levels of the cache hierarchy
PREFETCHT1 - prefetch data into level 2 cache and higher
PREFETCHT2 - prefetch data into level 2 cache and higher
и аналогичные avx-овские VPREFETCH(0-2) для чтения и VPREFETCHE(0-2) для записи.
в сишном коде это делается через intrinsic функцию _mm_prefetch
ей в каком-нить цикле можно заказывать загрузку данных для следующей итерации, а пока заниматься обработкой текущей итерации. шансов на то, что у вас это плучится лучше чем у компилятора - практически нет, но тем, кто на такое способен, это бывает полезно.