Cache miss (pierderea cache-ului)

Cache Miss se produce atunci când datele solicitate nu sunt în memoria cache și trebuie să fie descărcate de la sursa principală.

Când programați aplicații de înaltă performanță, este important să învățați cum să scrieți așa-numitele. "cache-friendly", cod-friendly cod. Pentru a înțelege ce este, să examinăm un exemplu simplu:







(a se vedea exemplul complet aici)
Aici, în două cicluri, s-ar părea că același lucru se face - valorile tuturor numerelor la care se face referire în ambele tablouri cresc. Se pare că numerele sunt aceleași, iar lucrarea se face la fel, dar primul ciclu funcționează stabil de patru ori mai rapid. Acest lucru se întâmplă deoarece datele invocate de prima matrice sunt în memoria este strâns, și după ce a citit elementul i din matrice, cache-ul obține automat mai mult ca un element următor, trimiterea la care se efectuează deja foarte repede. În cea de-a doua matrice, sunt stocate referințele la elementele alocate de noul operator. care, deși încearcă să localizeze date mai strâns, reușește să-l, după cum vom vedea, cu diferite grade de succes, datele sunt împrăștiate la întâmplare pe memorie, iar când citesc elementul i din următoarele după cache-ul este rară.







Adesea, pentru a spori "densitatea" datelor (încă numită localitate) în blocajele programului, se folosesc managerii de memorie ai acestuia. Secretul este că, dacă știm dinainte că vom avea nevoie să aloce, de exemplu, numai aceleași bucăți de dimensiuni de memorie, sau nu vom avea pentru a le elimina, managerul de memorie poate lucra mult mai eficient, „multifuncțional“ standard.

Foarte adesea date non-localitate ucide performanță, în cazul în care cererea este utilizat pe scară largă dinamică standard de alocare a memoriei înseamnă ca nou sau malloc pentru un număr mare de obiecte mici - ei găsesc din nou, se împrăștiate în memorie „la întâmplare“ și un acces ușor la ele este încetinit considerabil.

Ce este Miss Cache?







Trimiteți-le prietenilor: