Memorijska hijerarhija

S Vikipedije, slobodne enciklopedije
Dijagram memorijske hijerarhije računara

Termin memorijska hijerarhija se koristi u arhitekturi računara kada se govori o problemu performansi u arhitektonskom dizajnu računara, algoritmima pretpostavljanja, i programiranju na niskom nivou koje uključuje konstrukte kao što su lokalnost reference. "Memorijska hijerarhija" u slučaju kompjuterskih memorija razlikuje svaki nivo u hijerarhiji po vremenu odziva. S obzirom da su vreme odziva, složenost, i kapacitet međusobno povezani,[1] nivoi se mogu razlikovati i po kontrolišućoj tehnologiji.

Puno kompromisa pri dizajniranju sistema velikih performansi će uključivati strukturu memorijske hijerarhije, veličinu i tehnologiju svake komponente. Tako različite komponente mogu biti posmatrane kao deo hijerarhije (m1,m2,...,mn) u kojoj je svaki član mi podređen sledećem najvišem članu mi-1 hijerarhije. Da bi se ograničilo čekanje od strane viših nivoa, niži nivo će odgovoriti punjenjem bafera, a zatim signalizirati da se pokrene transfer.

Postoje četiri glavna nivoa.[1]

  1. Interni - Procesorski registri i keš.
  2. Glavni - sistemski RAM i kontroleri.
  3. Unutrašnja memorija - Sekundarna memorija.
  4. Spoljašnja memorija - Tercijarna memorija i spoljašnja memorija.

Ovo je tipična struktura memorijske hijerarhije. Puno drugih struktura su takođe korisne. Na primer, algoritam straničenja se može smatrati kao nivo virtuelne memorije pri dizajniranju računarske arhitekture.

Primer upotrebe termina[uredi | uredi izvor]

Evo nekih citata.

  • Povećanje složenosti usporava memorijsku hijerarhiju.
  • CMOx memorijska tehnologija rasteže prostor fleša u memorijskoj hijerarhiji[2]
  • Jedan od glavnih načina povećanja sistemskih performansi je minimizacija puta do dna hijerarhije koji se mora preći da bi se došlo do podataka.[3]
  • Kašnjenje i protok su dve mere povezane sa kešom i memorijom. Nijedna od njih nije uniformna, ali je specifićna odrećenoj komponenti memorijske hijerarhije.[4]
  • Teško je pretpostaviti gde se u memorijskoj hijerarhiji nalazi podatak.[4]
  • ...lokacija u memorijskoj hijerarhiji diktira vreme koje je potrebno za dohvat podataka.[4]

Primena koncepta[uredi | uredi izvor]

Memorijska hijerarhija AMD Bulldozer servera.

Broj nivoa u memorijskoj hijerarhiji i perforanse svakog nivoa su se povećavale vremenom. Na primer, memorijska hijerarhija Intel Haswell Mobile [5] procesora iz 2013-e je:

  • Procesorski registri - najbrži mogući pristup (obično 1 procesorski takt). Reda veličine nekoliko hiljada bajtova
  • keš
    • Nivo 0 (L0) Keš mikrooperacija - Reda veličine 6 KiB [6]
    • Nivo 1 (L1) Keš za instrukcije - Reda veličine 128 KiB
    • Nivo 1 (L1) Keš za podatke - Reda veličine 128 KiB. Najbolja brzina pristupa je oko 700 GiB po sekundi[7]
    • Nivo 2 (L2) Deljeni keš za instrukcije i podatke - Reda veličine 1 MiB. Najbolja brzina pristupa je oko 200 GiB po sekundi[7]
    • Nivo 3 (L3) Deljeni keš - Reda veličine 6 MiB. Najbolja brzina pristupa je oko 100 GB po sekundi[7]
    • Nivo 4 (L4) Deljeni keš - Reda veličine 128 MiB. Najbolja brzina pristupa je oko 40 GB po sekundi[7]
  • Glavna memorija - Reda veličine nekoliko gigabajta. Najbolja brzina pristupa je oko 10 GB po sekundi.[7] U sluačaju mašine neuniformnog pristupa memoriji, vreme pristupa ne mora biti uniformno
  • Disk za skladištenje - Reda veličine nekoliko terabajta. Od 2013-e, najbolja brzina pristupa je u slučaju SSD diska, oko 600 MB po sekundi [8]
  • Tercijarno skladište - Reda veličine nekoliko eksabajta. Od 2013-e, najbolja brzina pristupa je oko 160 MB po sekundi[9]

Većina modernih procesora su toliko brzi da za većinu programskih zadataka, usko grlo predstavlja lokalnost reference memorijskog pristupa i efikasnost procesorskog keša i memorijskog transfera izmeću različitih nivoa hijerarhije. Kao rezultat, procesor provodi većinu vremena neradeći ništa, čekajući da se operacije upisivanja/čitanja završe. Ovo se ponekad naziva cena prostora, pošto će veći memorijski objekat lakše da prelije mali/brzi nivo i zahteva korišćenje većeg/sporijeg nivoa.

Moderni programski jezici uglavnom podrazumevaju dva nivoa memorije, glavnu memoriju i skladište diska, iako se u asemblerskom jeziku i unutrašnjem asembleru jezika kao što je C, direktno može pristupiti procesorskim registrima. Iskorišćenje optimalne prednosti memorijske hijerarhije zahteva saradnju programera, hardvera, i kompajlera (kao i osnovne podrške operativno sistema):

  • Programeri su odgovorni za premeštanje podataka između diska i memorije kroz upis/čitanje fajlova.
  • Hardver je odgovoran za pomeranje podataka između glavne memorije i keša.
  • Optimizirajući kompajleri su odgovorni za generisanje koda koji pri izvršenju uzrokuje efikasno korišćenje keša i registara od strane hardvera.

Puno programera pretpostavlja jedan nivo memorije. Ovo lepo funkcioniše dok aplikacija ne postane ograničena performansom. Onda se memorijska hijerarhija uzima u obzir pri ispravci koda.

Reference[uredi | uredi izvor]

  1. ^ a b Ty, Wing; Zee, Benjamin (1986). Computer Hardware/Software Architecture. Bell Telephone Laboratories, Inc. str. 30. ISBN 978-0-13-163502-9. 
  2. ^ „Memory Hierarchy”. Unitity Semiconductor Corporation. Arhivirano iz originala 5. 8. 2009. g. Pristupljeno 16. 9. 2009. 
  3. ^ Pádraig Brady. „Multi-Core”. Pristupljeno 16. 9. 2009. 
  4. ^ a b v van der Pas, Ruud (2002). „Memory Hierarchy in Cache-Based Systems”. Santa Clara, California: Sun Microsystems: 26. 817-0742-10.  |contribution-url= ignorisan (pomoć)
  5. ^ Dissecting Intel's top graphics in Apple's 15-inch MacBook Pro | Apple - CNET News
  6. ^ AnandTech | Intel's Haswell Architecture Analyzed: Building a New PC and a New Intel
  7. ^ a b v g d SiSoftware Zone
  8. ^ Charts, benchmarks SSD Charts 2013, AS-SSD Sequential Read[mrtva veza]
  9. ^ „Ultrium - LTO Technology - Ultrium GenerationsLTO[[Kategorija:Botovski naslovi]]”. Arhivirano iz originala 27. 7. 2011. g. Pristupljeno 29. 11. 2013.  Sukob URL—vikiveza (pomoć)

Literatura[uredi | uredi izvor]