Familia de instrucțiuni PREFETCH transmite un semnal asincron unității de memorie pentru a încărca o linie de date în cache înainte ca acestea să fie efectiv solicitate de instrucțiuni de calcul, eliminând latența accesului la RAM.
; Parcurgerea unei matrice mari cu prefetch anticipativ:
proceseaza_matrice:
xor rcx, rcx
bucla_prefetch:
; Preîncărcăm datele pe care le vom procesa peste 16 iterații (1024 octeți în avans):
prefetcht0 [rdi + rcx + 1024]
; Prelucrăm elementul curent:
vmovups ymm0, [rdi + rcx]
; ... calcule matematice SIMD ...
add rcx, 32
cmp rcx, 1000000
jl bucla_prefetch
Niveluri de preferință: T0 (încarcă în toate nivelurile de cache L1+L2+L3), T1/T2 (încarcă în L2 sau L3), NTA (date non-temporale, utilizate o singură dată).
Întrebări & Exemple de Cod:
Instrucțiunile PREFETCH în x86_64: Preîncărcarea Datelor în Memoria CacheAi o nelămurire despre utilizarea comenzii
Instrucțiunile PREFETCH în x86_64: Preîncărcarea Datelor în Memoria Cachesau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.