Memoria cache, cum afectează performanța CPU și GPU?

Memoria cache, cum afectează performanța CPU și GPU

Până în prezent, nu există arhitectură în ceea ce privește Procesor or GPU care nu are o memorie cache integrată. Deoarece este esențial pentru performanță, deoarece fără cache, atunci performanța oricărui procesor sau GPU ar scădea. Dar în ce măsură cache afectează performanța unui procesor sau GPU? Vă explicăm în detaliu.

Primul procesor PC care a avut un cache a fost Intel 80486, de atunci am văzut cum toate procesoarele încorporează memoria cache într-o ierarhie de mai multe niveluri și nu numai în cazul procesorelor, ci și al GPU-urilor.

Principalele utilități sunt cunoscute de toți. În primul rând, reducerea latenței enorme dintre procesor și RAM, în al doilea rând, consumul de energie al fiecărei instrucțiuni diferite și, în al treilea rând, reducerea conflictului cu accesul la memorie, ceea ce poate duce la o latență mai mare, mai ales dacă vorbim despre mai multe nuclee care accesează aceeași adresă de memorie.

Cu toate acestea, există o modalitate de a măsura performanța cache-ului, care este luată în considerare la proiectarea noilor procesoare. Citiți mai departe pentru a afla cum cache-ul afectează performanța atât a procesorului, cât și a GPU-ului.

Rezumatul memoriei cache

Cache primer nivel spllit

În primul rând trebuie să avem în vedere că memoria cache nu este un spațiu adresabil de CPU sau GPU, atunci când vorbim despre spațiu adresabil înseamnă că CPU sau GPU poate indica o anumită adresă de memorie unde urmează datele sau instrucțiunile următoare a procesa. Deci, cache-ul nu poate fi indicat de CPU și, prin urmare, nu poate fi gestionat de acesta.

Se poate spune că mecanismele cache funcționează automat și atunci când un nucleu CPU efectuează o căutare, ceea ce face este să parcurgă diferite cache pentru a găsi datele specifice. Când un nucleu face o modificare, atunci toate copiile acestor date din restul cache-urilor sunt, de asemenea, actualizate automat. În același mod, mecanismele cache în sine sunt cele care decid care copii ale conținutului RAM sunt păstrate în cache și care nu.

Și ceea ce face cache-ul este să stocheze copii ale memoriei cele mai apropiate de liniile de cod care sunt executate în acel moment precis. Acest lucru se datorează faptului că codul este în mare parte secvențial, deci de cele mai multe ori următoarea linie a programului de procesat va fi cea imediat următoare.

Cum se măsoară performanța cache-ului?

Când CPU sau GPU trebuie să acceseze datele care sunt în memorie, primul lucru pe care îl fac este să acceseze diferitele niveluri ale cache-ului anterior. Deci, mai întâi va căuta memoria cache de primul nivel, dacă nu găsește datele, atunci va coborî la nivelul următor și așa mai departe până când va găsi datele care sunt căutate.

Când datele nu se află într-un nivel de cache, apare ceea ce numim „Cache Miss” și, prin urmare, este necesar să coborâm la nivelul următor al ierarhiei. Ceea ce face să fie adăugat un timp adăugat în ceea ce privește latența. Pe de altă parte, dacă avem

Pentru a o înțelege, să presupunem că avem un procesor sau un GPU cu 3 niveluri de cache și că am găsit datele în al treilea nivel. Deci, timpul de căutare în acest caz poate fi rezumat după cum urmează:

Căutare date în cache timp = timp de căutare cache de primul nivel + timp de săritură de cache de nivel secund + timp de căutare de cache de nivel 3 + întârziere de timp de săritură de cache nivel 3 + timp de căutare cache de nivel XNUMX

Trebuie să se țină seama de faptul că, dacă timpul de căutare cache depășește timpul de căutare direct în RAM, atunci proiectarea cache a procesorului menționat va fi slab implementată, deoarece în niciun sens logic nu se justifică faptul că este nevoie de mai mult timp pentru a căuta date în cache. decât în ​​memorie. Acesta este motivul pentru care de obicei nu vedem niveluri de cache suplimentare, deoarece diferitele durate de întârziere adăugate de fiecare nivel adaugă și mai multă latență suplimentară la timpul de acces.

Măsurarea AMAT

ascunzătoare

AMAT înseamnă Media Time Access Time (Timp mediu de acces la memorie) sau timpul mediu de acces la memorie. Este o medie datorită faptului că nu toate instrucțiunile de pe un procesor sau GPU au aceeași latență și depind de memorie în același mod. Dar, în același timp, ne ajută să măsurăm performanța cache-ului unui procesor sau al unui GPU.

Pentru a calcula AMAT-ul oricărui procesor sau GPU, se folosește următoarea formulă:

AMAT = Hit Time + Miss Rate * Miss Penalty

Ceea ce ne interesează este că AMAT este scăzut, deoarece măsoară timpul de acces al procesorului la date și, prin urmare, latența atunci când vine vorba de găsirea datelor. În ceea ce privește diferitele valori ale formulei AMAT pentru a măsura performanța cache-ului, acestea sunt următoarele:

  • Prima valoare este Hit Time, care este timpul pe care îl va lua CPU sau GPU pentru a găsi datele în cache . În acest caz, este important ca memoria cache să fie mică, astfel încât călătoria să poată fi efectuată mai repede. Deoarece cu cât este mai mare memoria cache, cu atât va dura mai mult pentru a face călătoria. Acesta este motivul pentru care nivelurile de cache cele mai apropiate de nucleu au dimensiuni foarte mici.
  • A doua valoare este Miss Rate, care este procentul de ori în care datele nu se află în cache . Acest lucru contrazice rata de accesare, deoarece cel mai bun mod de a găsi date cache este să-i măriți capacitatea de stocare. Cache-ul trebuie să aibă, de asemenea, mecanisme pentru a ști ce date trebuie să păstreze în interior, pentru a oferi spațiu altora care vor avea acces mai mare pe termen scurt de către procesoare sau GPU-uri.
  • A treia valoare este Miss Penalty, acesta este timpul de latență care necesită accesarea unei date dacă este în memoria RAM și nu în cache. Acesta este un moment imens când vine vorba de cicluri de ceas. Deoarece este evident, în cazul în care datele sunt în RAM și nu în cache, trebuie adăugat timpul de căutare furnizat în ierarhia cache-urilor înainte de RAM.

Performanța cache-ului va depinde, așadar, de modul în care este optimizat Hit Time sau Miss Rate, deoarece optimizarea unei secțiuni înseamnă deteriorarea celeilalte, arhitecții trebuie să decidă la ce valoare acordă mai multă importanță atunci când proiectează una nouă. CPU sau un GPU nou.