Vahemälu töö ja printsiibid: Difference between revisions
No edit summary |
No edit summary |
||
Line 10: | Line 10: | ||
Töö: | Töö: | ||
[[Image:cache_pilt1.jpg]] | |||
Kui kasutaja tekitab vajaduse andmete järele (soovib faili avada, hakkab programmi avama jne), kontrollitakse esimesega ega antud andmed juba kasutusel ei ole. Sel juhul saab soovitud andmed kohe kätte. | Kui kasutaja tekitab vajaduse andmete järele (soovib faili avada, hakkab programmi avama jne), kontrollitakse esimesega ega antud andmed juba kasutusel ei ole. Sel juhul saab soovitud andmed kohe kätte. |
Revision as of 20:32, 3 October 2013
Sissejuhatus
Artiklis Vahemälu sai selgeks mida kujutavad endast vahemälu, CPU ning salvestusseadmed. Järgnevalt üritan illustratsioonide abil kirjeldada kuidas vahemälu täpselt töötab.
Kihid (Layers)
Tavalisel arvutil on üks kuni kolm vahemälu kihti (L1-L3). Erinevad kihid on kasutusel, kiirendamaks andmete leidmist ning optimeerimaks nende säilitamist vahemälus. 1. tase (Level-1) kujutab endast väikeseid mälusüsteemikesi mis on protsessori sisse ehitatud. 2. tase (Level-2) koosneb väikestest mälupankadest emaplaadil. Mõndadel mikroprotsessoritel on kaks vahemälu taset ehitatud otse enda kiibile, sellisel juhul muutub emaplaadil olev vahemälu (asub mikroprotsessori ning põhimälu vahel) 3. kihiks (Layer-3).
Töö:
Kui kasutaja tekitab vajaduse andmete järele (soovib faili avada, hakkab programmi avama jne), kontrollitakse esimesega ega antud andmed juba kasutusel ei ole. Sel juhul saab soovitud andmed kohe kätte. Järgmisena küsitakse 1.taseme vahemälust, andmete olemasolu korral saab ned kohe välja anda.
Kui ka 1. kihis vajalikke andmeid ei leidunud, küsitakse neid 2. kihist. Kui ka 2. kihis andmeid ei olnud, liigub päring edasi põhilise mäluseadme juurde. Sealt leitud tulemused saadetakse 2. kihi vahemällu nig sealt edasi kuni päringu tegijani välja.
Vahemälu printsiibid
Efektiivse mälu sihiks on efektiivne ajakasutus. Mida kiirem on protsessori töö andmetele ligi pääsemisel, seda parem. Vahemälud töötavad programmi käitumise lokaalsuse baasil, ning seda väljendavad 3 printsiipi:
1. Ruumiline lokaalsus (Spatial Locality) – kui pöördumine on tehtud kindlasse kohta mälus, on suur tõenäosus et järgnevad pöördumised tehakse samasse või ligilähedasse kohta programmi eluea kestel.
2. Ajaline lokaalsus (Temporal Locality – täiendab ruumilist lokaalsust. Saanud jada viiteid kohta n, on taaskord suur tõenäosus et antud viidetele järgnevad viited sobivad omakorda jadasse sisse. Jada elementidele viidatakse kindalsti taas programmi eluea kestel.
3. Järjestuvus (Sequentiality) – kui viide on tehtud kindlasse kohta s, on tõenäoline et järgnevad mitu viidet viitavad kohta s+1.
Järjestuvus on ruumilise lokaalsuse piiratud tüüp ning võidakse pidada selle alamhulgaks
Üks vahemälu põhimõtteid seisneb selles, et protsessor pääseks mälule ligi võimalikult kiiresti, samal ajal võimaldades säilitada ja hoiustada võimalikult suurt andmehulka ning tehes seda kõike minimaalsete kuludega. Seda võib kokku võtta kolme küsimusega:
Kui palju? Kui kiire? Kui kallis?
Kahjuks on kolme elemendi omavaheline suhe selline, et kõike korraga ei saa. Kui tõuseb kiirus, tõuseb ka hind; kui tõuseb mahutavus, hind langeb kuid samal ajal langeb ka kiirus.
Lingid
http://news.softpedia.com/news/How-Cache-Memory-Works-83803.shtml
Pildi allikas: https://github.com/orientechnologies/orientdb/wiki/Caching
http://www.ecs.umass.edu/ece/koren/architecture/Cache/tutorial.html