Ce este CPU Cache?

Procesoarele moderne rulează incredibil de rapid; acestea pot depăși semnificativ RAM-ul sistemului. Acest dezechilibru al vitezei dintre CPU și memorie ar face ca procesorul să rămână adesea inactiv, așteptând ca datele să îi fie trimise pentru a putea continua să ruleze un proces. Pentru a preveni acest lucru, permițând CPU-urilor să continue să ruleze din ce în ce mai repede, se folosește un cache al procesorului.

Cum accelerează memoria cache a procesorului un procesor?

Cache-ul CPU este proiectat să fie cât mai rapid posibil și apoi să memoreze în cache datele pe care CPU le solicită. Cache-ul CPU are viteza optimizată în trei moduri: latență, lățime de bandă și proximitate. Cache-ul CPU funcționează la latențe foarte scăzute, minimizând timpul necesar pentru ca un rezultat să fie returnat. De exemplu, Intel i9-9900k are o latență de cache de 0,8, 2,4 și 11,1 nanosecunde pentru cache-ul L1, L2 și, respectiv, L3. În comparație, latența RAM modernă de mare viteză este de ordinul a 14 nanosecunde.

Sfat: Nivelurile de cache vor fi explicate mai detaliat mai târziu, dar pur și simplu, straturile inferioare de cache sunt mai rapide, dar sunt mai scumpe, așa că au capacități mai mici. O nanosecundă este o miliardime de secundă, așa că o latență de 0,8 secunde înseamnă că este nevoie de mai puțin de o miliardime de secundă pentru a returna un rezultat.

În ceea ce privește lățimea de bandă, memoria cache a procesorului oferă îmbunătățiri semnificative de performanță față de stocarea tradițională și RAM. Vitezele de citire ale memoriei cache L1 și L3 pot atinge un vârf de 2,3 TB/s, respectiv 370 GB/s, în timp ce lățimea de bandă a RAM este de obicei de aproximativ 40 GB/s. Această lățime de bandă crescută înseamnă că memoria cache a procesorului poate transfera date către procesor mult mai rapid decât poate RAM-ul.

Pentru a atinge vitezele maxime posibile, memoria cache a procesorului este de fapt încorporată în siliciul matriței procesorului în sine. Acest lucru minimizează distanța pe care trebuie să o parcurgă orice semnal electric, menținând astfel latența cât mai mică posibil. De exemplu, atunci când memoria cache L3 a fost mutată prima dată de pe placa de bază în die CPU, procesorul vremii (Pentium 4 EE) a reușit să obțină o îmbunătățire a performanței cu 10-20%.

Arhitectura cache a procesorului

Procesoarele moderne folosesc, în general, trei straturi de memorie cache a procesorului etichetate L1-3, cache-urile cu numere mai mici fiind mai aproape de nucleele CPU, mai rapide și mai scumpe. Fiecare nucleu individual al procesorului dintr-un procesor multi-core are propriul său cache L1. De obicei, este împărțit în două părți, L1I și L1D. L1I este folosit pentru a stoca în cache instrucțiunile pentru CPU, în timp ce L1D este folosit pentru a stoca în cache datele pe care urmează să fie efectuate acele instrucțiuni.

Fiecare nucleu al procesorului are de obicei propriul cache L2 pe un procesor modern. Cache-ul L2 este mai mare și mai lent decât cache-ul L1 și este folosit în primul rând pentru a stoca date care altfel nu ar încadra în memoria cache L2. Având un cache L2 dedicat per nucleu, se evită conflictul în cache. Conflictul în cache este locul în care diferite nuclee luptă pentru a revendica spațiu cache pentru propriile sarcini de lucru, ceea ce poate duce la ștergerea datelor importante din cache.

Cache-ul L3 este de obicei partajat între toate nucleele procesorului. Din nou, cache-ul L3 este mai lent decât cache-ul L2, dar este mai ieftin și mai mare. Prin furnizarea unui cache partajat, este posibil să se reducă cantitatea de date care ar fi duplicată pe niveluri inferioare de cache per-core.

Sfat: De exemplu, în dimensiunile memoriei cache, i9-9900K de la Intel are un cache L1 de 64KB și un cache L2 de 256KB per nucleu (pentru un total de 512KB L1 și 2MB L2), are și un cache L3 partajat de 16MB.

Cum se folosește memoria cache a procesorului?

Toate nivelurile memoriei cache ale procesorului sunt folosite pentru a accelera performanța procesorului prin memorarea în cache a datelor din RAM. Când un procesor solicită date, de obicei caută mai întâi prin straturile sale de cache, în încercarea de a obține datele cât mai repede posibil. Dacă datele sunt găsite într-o lovitură de cache, atunci procesorul își poate continua procesarea. Dacă datele nu sunt în cache, în ceea ce se numește o pierdere de cache, atunci CPU trebuie să verifice memoria RAM și apoi hard disk-ul dacă datele nu sunt nici acolo. Straturile mai rapide sunt întotdeauna verificate primele pentru performanță maximă.

Pentru a ajuta procesorul să aibă datele de care are nevoie în cache atunci când are nevoie de ele, memoria cache încearcă să anticipeze ce date ar putea avea nevoie CPU în continuare. De exemplu, dacă CPU a solicitat unele date pentru o imagine, acesta redă memoria cache poate încerca să memoreze preventiv mai multe date din imagine, astfel încât acestea să poată fi alimentate CPU cât mai repede posibil.