Ierarhia memoriei

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 6 octombrie 2021; verificările necesită 3 modificări .

Ierarhia memoriei computerului  este conceptul de construire a unei interconexiuni între clase de diferite niveluri ale memoriei computerului pe baza unei structuri ierarhice.

Esența necesității de a construi memorie ierarhică este necesitatea de a asigura un sistem de calcul (un computer separat sau un cluster) cu o cantitate suficientă de memorie, atât operațională, cât și permanentă.

Având în vedere eterogenitatea frecvenței de acces la înregistrări specifice (registre de procesor intern , memorie cache , pagini și fișiere ), se folosesc diverse soluții tehnice care au caracteristici excelente, atât tehnice, cât și de preț și greutate și dimensiune. De regulă, stocarea pe termen lung în memorie scumpă ultra -rapidă și chiar cu acces aleatoriu nu este profitabilă, astfel încât acest tip de date sunt stocate pe unități - disc , bandă , flash etc.

Pentru a asigura backupul datelor , de exemplu, în scopul siguranței, utilizatorii pot crea biblioteci pe medii amovibile (de exemplu, o bibliotecă de benzi virtuale sau o matrice de discuri ), umplându-le cu propriile fișiere de diferite formate. Accesul la aceste date durează cel mai mult timp, dar în același timp capacitatea lor este uriașă.

Practic, caracteristicile tehnice sunt temporare, adică ce criterii de timp se potrivește unei anumite soluții. Nevoia de memorie de mare viteză este de obicei limitată fie de costurile generale mari pentru asigurarea funcționării circuitelor, fie de consumul mare de energie, fie de costul ridicat al soluției.

Diferite tipuri de memorie formează o ierarhie, la diferite niveluri, există memorii cu timpi de acces, complexitate, cost și volum diferiți. Posibilitatea de a construi o ierarhie de memorie se datorează faptului că majoritatea algoritmilor accesează un set mic de date la fiecare interval de timp, care poate fi plasat în memorie mai rapidă, dar costisitoare și deci mică (vezi en:locality of reference ). Utilizarea unei memorie mai rapide crește performanța complexului de calcul. Memoria în acest caz se referă la un dispozitiv de stocare a datelor (dispozitiv de memorie ) în memoria de calcul sau computer .

Atunci când proiectați computere și sisteme de înaltă performanță, există multe compromisuri care trebuie făcute, cum ar fi dimensiunea și tehnologia pentru fiecare nivel al ierarhiei. Se poate considera un set de memorii diferite (m 1 ,m 2 ,…,m n ) situate în ierarhie, adică fiecare nivel m i este, parcă, subordonat nivelului m i-1 al ierarhiei. Pentru a reduce timpul de așteptare la nivelurile superioare, nivelurile inferioare pot pregăti date în bucăți cu tamponare și, când tamponul este plin, semnalează nivelului superior că datele pot fi primite.

Adesea există 4 niveluri principale (mărgite) de ierarhie: [1]

  1. Memoria internă a procesorului ( registre organizate într-un fișier de registru și memoria cache a procesorului ).
  2. RAM de sistem ( RAM ) și carduri de memorie auxiliare.
  3. Unități cu acces la cald (stocare în masă on-line) - sau memorie secundară a computerului. Hard disk -uri și unități SSD , care nu necesită acțiuni lungi (secunde sau mai multe) pentru a începe să primească date.
  4. Unități care necesită comutare media (stocare în vrac offline) sau memorie terțiară. Acestea includ benzi magnetice , biblioteci de benzi și discuri care necesită rebobinare lungă sau comutare mecanică (sau manuală) a suporturilor de stocare.

Majoritatea computerelor moderne folosesc următoarea ierarhie de memorie:

  1. Registrele procesorului organizate într-un fișier de registru  sunt cel mai rapid acces (de ordinul unui ciclu), dar doar câteva sute sau, rar, mii de octeți în dimensiune.
  2. Cache al procesorului de nivel 1 (L1) - timp de acces de ordinul mai multor cicluri, dimensiunea de zeci de kiloocteți
  3. Cache de nivel 2 al procesorului (L2) - timp de acces mai lung (de 2 până la 10 ori mai lent decât L1), aproximativ jumătate de megaoctet sau mai mult
  4. Cache al procesorului de nivel 3 (L3) - timpul de acces este de aproximativ o sută de cicluri, variind ca dimensiune de la câțiva megaocteți la sute
  5. Cache al procesorului de nivel 4 (L4) - timp de acces de câteva sute de cicluri, dimensiunea de la una la câteva sute de megaocteți. Folosit la procesoarele Intel de generația a 5-a
  6. RAM de sistem - timp de acces de la sute la posibil mii de cicluri, dar dimensiuni uriașe, de la câțiva gigaocteți la câțiva terabytes. Timpul de acces la RAM poate varia pentru diferite părți ale acesteia în cazul complexelor de clasă NUMA (cu acces neuniform la memorie)
  7. Stocare pe disc  - multe milioane de cicluri, dacă datele nu au fost stocate în cache sau tamponate în avans, dimensiuni de până la câțiva teraocteți
  8. Memorie terțiară - întârzieri de până la câteva secunde sau minute, dar volume practic nelimitate ( biblioteci de benzi ).

Majoritatea programatorilor presupun de obicei că memoria este împărțită în două niveluri, memoria principală și stocarea pe disc, deși în limbaje de asamblare și limbaje compatibile cu asamblarea (cum ar fi C ) este posibil să se lucreze direct cu registre. Pentru a profita de ierarhia memoriei necesită o acțiune concertată din partea programatorului, hardware-ului și compilatorilor (precum și suport de bază în sistemul de operare):

Mulți programatori nu iau în considerare memoria pe mai multe niveluri atunci când programează. Această abordare funcționează atâta timp cât aplicația nu suferă o degradare a performanței din cauza performanței subsistemului de memorie. La corectarea codului ( refactoring ), este necesar să se țină cont de prezența și particularitățile muncii nivelurilor superioare ale ierarhiei memoriei pentru a obține cea mai înaltă performanță.

Vezi și

Literatură

Note

  1. Ty, Aripă; Zee, Benjamin. Arhitectura hardware/software de calculator  (neopr.) . - Bell Telephone Laboratories, Inc, 1986. - P.  30 . — ISBN 0-13-163502-6 .