Cache-ul procesorului, structura cache-ului este Life-prog

Deși cache-ul este invizibil pentru sistemul de operare, acesta interacționează cu hardware-ul asociat cu memoria. Mai mult, multe dintre principiile folosite în schemele de memorie virtuală sunt de asemenea aplicabile în memoria cache.

Argumentare

La executarea fiecărui ciclu de instrucțiuni, procesorul accesează memoria cel puțin o dată pentru a selecta comanda. Adesea, acest lucru se întâmplă în mod repetat și sunt posibile cazuri de mai multe apeluri repetate, în care operatorii sunt extrași și / sau rezultatele sunt salvate. Frecvența cu care procesorul execută comenzi este limitată de timpul necesar pentru a accesa memoria. De ani de zile, această limitare a reprezentat o problemă semnificativă din cauza discrepanței constante dintre viteza procesorului și viteza de acces la memoria principală - viteza procesorului a crescut mai repede decât viteza de acces la memorie. În mod constant a fost necesar să se încerce un compromis între viteză, cost și capacitate. În mod ideal, memoria principală ar trebui produsă utilizând aceeași tehnologie ca registrele procesorului, astfel încât timpul ciclului de memorie să fie comparabil cu timpul ciclului procesorului. Cu toate acestea, această strategie duce la costuri prea mari. Soluția la problemă a fost folosirea principiului localizării, în care se află o memorie cu o capacitate mică și un timp de acces rapid între procesor și memoria principală, și anume memoria cache.

Cum funcționează cache-ul

Cache-ul procesorului, structura cache-ului este Life-prog

Fig. 1.16. Memoria cache și memoria principală

Cache-ul procesorului, structura cache-ului este Life-prog

Fig. 1.17. Structura memoriei cache și a memoriei principale

Cache-ul procesorului, structura cache-ului este Life-prog

Fig. 1.18. Operația de citire a cache-ului

Dispozitiv cache intern

  • dimensiunea cache-ului;
  • dimensiunea blocului;
  • funcția de mapare;
  • algoritmul de substituție;
  • scrie strategie.


Cu o astfel de caracteristică ca dimensiunea cache-ului, suntem deja familiarizați. Se pare că chiar și o cache relativ mic poate avea un impact semnificativ asupra performanței computerului. Un alt parametru important este dimensiunea blocului care specifică cantitatea de date transferată din memoria principală în memoria cache. Când mărimea blocului este mărită în conformitate cu principiul localizării hiturilor, performanța căutării crește deoarece datele mai utile intră în memoria cache. Cu toate acestea, există o anumită valoare limită, dincolo de care eficiența căutării începe să scadă. Acest lucru se întâmplă atunci când probabilitatea utilizării datelor citite recent este mai mică decât probabilitatea de reutilizare a datelor care trebuie eliminate din memoria cache pentru a face loc noului bloc.

Atunci când noul bloc de date este stocat în cache, funcția de mapare determină locul care va fi alocat pentru acest bloc. Dezvoltând această funcție, este necesar să se ia în considerare doi factori care impun anumite restricții asupra acesteia. Mai întâi, atunci când citești un bloc, probabil că va înlocui un alt bloc din memoria cache. Aș dori să fac acest lucru astfel încât să minimizeze probabilitatea ca un bloc de înlocuire să fie necesar în viitorul apropiat. Cu cât este mai flexibilă funcția de afișare, cu atât mai multe posibilități de dezvoltare a unui astfel de algoritm de înlocuire, ceea ce ar permite creșterea eficienței căutării. În al doilea rând, odată cu creșterea flexibilității funcțiilor de afișare trebuie să devină scheme mai complicate, care detectează prezența în cache-ul de informații necesare și pentru a asigura căutarea.

Când încărcați blocuri în memoria cache, la sfârșit se va întâmpla o perioadă când toate sloturile sunt umplute, iar noul bloc trebuie să fie scris în locul ocupat de un alt bloc. Alegerea acestui bloc este efectuată în conformitate cu algoritmul de substituție. pe care funcția de mapare impune limitări. În acest caz, ar fi de dorit eliminarea blocului, care, cel mai probabil, nu va fi necesar în viitorul apropiat. Deși este imposibil să o determinăm în mod fiabil, o strategie eficientă este înlocuirea blocului, care nu a fost accesat pentru cel mai îndelungat timp. Această strategie este numită politica cel mai puțin recent folosită (LRU). Pentru a determina utilizarea blocurilor, este necesar un mecanism corespunzător implementat de hardware.

Înainte de a schimba conținutul slotului cache, conținutul său vechi trebuie scris în memoria principală. Cazurile când trebuie să efectuați operații de scriere sunt determinate de strategia de scriere. Unul dintre cazurile de limitare este că atunci când se face o înregistrare de fiecare dată când un bloc este actualizat. În alt caz, înregistrarea se efectuează numai atunci când se înlocuiește noul bloc. O astfel de strategie minimizează numărul operațiilor de scriere în memorie, dar blocurile de memorie principală conțin informații depășite, ceea ce poate duce la erori în operarea cu multiprocesori, precum și accesul direct la memorie de către modulele I / O.

Articole similare