Jeżeli dane są wykorzystywane wielokrotnie albo wykorzystujemy wielu danych z ciągłęgo obszaru dobrze jest wczesniej pobrać je do odpowiedniego poziomu pamięci podręcznej. Służą do tego instrukcje
PREFETCH0 mem ; załaduj do wszystkich poziomów cache PREFETCH1 mem ; załaduj do wszystich poziomów poza L1 PREFETCH2 mem ; ... poza L1 i L2
Używaj PREFETCH wewnątrz pętli. Rozwiń częściowo pętlę tak aby w jednej iteracji "zużyć" cały wiersz cache'u.
mov rbx, tab mov rcx, [n] .loop: PREFETCH [rbx + 16] add eax, [rbx] add ebx, [rbx+4] add dcx, [rbx+8] add esi, [rbx+12] add rbx, 16 sub rcx, 4 jg .loop
We współczesnych procesorach mechanizmy przewidywania rozgałęzień i wstępnego pobierania danych i kodu działają tak dobrze, że dają często lepsze rezultaty niż ręczna optymalizacja.