Vahemälu: erinevus redaktsioonide vahel

Eemaldatud sisu Lisatud sisu
Resümee puudub
Lihur (arutelu | kaastöö)
Resümee puudub
1. rida:
'''Vahemälu''' <ref>Большой толковый словарь русского языка / автор, сост. и гл. ред. С. А. Кузнецов. 2000 г. РАН Институт лингвистических исследований</ref><ref>Захаренко Е. Н., Комарова Л. Н., Нечаева И. В. Новый словарь иностранных слов. М.: 2003</ref><ref>Толковый словарь по вычислительной технике. Microsoft Press, из-во «Русская Редакция», 1995</ref><ref>Русский орфографический словарь: около 180 000 слов / Российская академия наук. Институт русского языка им. В. В. Виноградова / О. Е. Иванова, В. В. Лопатин (отв. ред.), И. В. Нечаева, Л. К. Чельцова. — 2-е изд., испр. и доп. — М.: 2004. — 960 с.</ref>([[inglise keel|inglise]] ''cache''; [[prantsuse keel|prantsuse]] ''cacher'' — peita; hääldatakse [{{IPA|kæʃ}}]) on kiire juurdepääsuga vahepuhver, mis sisaldab kõige suurema tõenäosusega informatsiooni päringu kohta. Juurdepääs andmete vahemällu on kiirem kui lähteandmete võtmine [[muutmälu]]st (RAM) või veel aeglasemast välisest ([[kõvaketas]] või pooljuhtketas [[SSD]]) mälust, mille tulemusena väheneb keskmine kasutamise aeg ja suureneb üldine tulemuslikkus arvutisüsteemis.
 
== Ajalugu ==
7. rida:
== Tööpõhimõte ==
[[Pilt:Cache,basic.svg|pisi|CPU mälu vahemälu diagramm]]
Vahemälu on suure juurdepääsukiirusega mälu, mille eesmärk on saavutada vähima juurdepääsuajaga juurdepääsligipääs andmetele, mis sisalduvad püsimälus (edaspidi "[[põhimälu]]s"). Vahemälu kasutatakse keskprotsessoris ([[CPU]]), [[kõvaketas]]tel, [[brauser]]ites, [[veebiserver]]ites, [[DNS]] ja [[WINS]].
 
Vahemälu koosneb kirjete kogumist. Iga kirje on seotud andmeühikuga või andmete blokiga (väikese osaga andmetest), mis on andmeühiku koopia püsimälus. Igal sissekandel on tunnus ID, mis määratleb andmeühikute vastavuse vahemälus nende koopiatega põhimälus.
21. rida:
''Write-back'' vahemälu uuendamine toimub andmeelementide eemaldamisel perioodiliselt või kliendi päringu järel. Et jälgida modifitseeritud andmeelemente, säilitavad vahemälu kirjed modifitseerimise tunnuse (“muudetud”). Möödalask ''write-back cache''’st võib nõuda kahte pöördumist põhimälu juurde: esiteks vahemälust andmeelementide üleskirjutamiseks, teiseks vajaliku andmeelemendi lugemiseks.
 
Juhul, kui andmeid põhimälus saab muuta sõltumata vahemälust, siisvõib vahemälu kirje võib muutuda mitteaktuaalseks. Vahemälude vahelisi koostööprotokolle, mis säilitavad andmete kooskõlastust, nimetatakse vahemälu sidususe [[protokoll]]ideks.
 
== Keskprotsessori vahemälu==
 
Mitmed keskprotsessori (CPU) mudelid omavad oma vahemälu selleks, et minimeerida ligipääsu põhimälule ([[RAM]]), mis on aeglasem, kui registrid. Vahemälu võib anda olulise jõudluse kasvu, juhul kui RAM-i taktisagedus on oluliselt väiksem keskprotsessori CPU taktisagedusest. Vahemälu taktisagedus ei ole tavaliselt palju väiksem kui CPU.
 
Virtuaalse adresseerimise toega protsessoritesse on sageli lisatud väike kiirelttegutsevkiirelt tegutsev aadresside translatsiooni puhver (inglise [[TLB]]). Selle kiirus on oluline, kuna teda vajatakse igal mälusse pöördumisel.
 
===Vahemälu tasemed===
34. rida:
Kiiruselt teine on L2-vahemälu – teise taseme vahemälu. Tavaliselt asub ka see kristallil nagu L1. Vanades protsessorites on [[mikroskeem]]id [[emaplaat|emaplaadil]]. L2 maht on 128 kB kuni 1–12 MB. Tänapäevastes ''[[multi-core]]'' protsessorites teise tasandi vahemälu, asudes samal kristallil ja on eraldi kasutatav mälu, kus vahemälu maht võrdub nM MB ja iga tuuma vahemähe on nM/nC MB, kus nC võrdub protsessori tuumade arvuga. Üldiselt tuuma kristallil paikneva L2 vahemälu moodustab 8 kuni 20 tuuma takti.
 
Kolmanda taseme vahemälu on kõige väiksema kiirusega, kuid võib olla väga muljetavaldava suurusega – rohkem kui 24 MB. L3 vahemälu on aeglasem, kui eelnimetatud, kuid siiski tunduvalt kiirem, kui muutmälumuutmälust. Mitmeprotsessorilistes süsteemides on üldkasutatav ja mõeldud erinevate andmete sünkroniseerimiseks L2 vahemälu.
 
Mõnikord on olemas ka 4-sneljas vahemälu tasand, mis asub tavaliselt eraldi mikrokiibil. 4-ndaNeljanda tasandi vahemälu on õigustatud ainult suure jõudlusega [[server]]ites ja suurarvutites.
 
Erinevate vahemälude sünkroonimise probleemid (nii ühe kui ka mitme protsessori puhul) lahendab vahemälu kogerentsus (''cache coherence''). On olemas kolm infovahetuse võimalust erinevate vahemälude tasandite vahel, või nagu öeldakse, vahemälu arhitektuuri: inklusiivne, eksklusiivne ja mitteeksklusiivne. Inklusiivne arhitektuur eeldab ülemise tasandi vahemälu info dubleerimist alumises tasandis (eelistab [[Intel]]). Eksklusiivne vahemälu eeldab erinevatel tasanditel oleva informatsiooni unikaalsust ([[AMD]]). Mitteeksklusiivses võivad vahemälud käituda nagu soovivad.
51. rida:
 
Väliste kõvaketaste puhverdamist õigustavad järgnevad tegurid:
# protsessori juurdepääsu kiirus muutmällu on mitu korda suurem, kui väliste kõvaketaste mällu;
# väliste kõvaketaste mõningaid mälublokke kasutavad mitmed protsessid samaaegselt ja on mõttekas lugeda blokki üks kord, seejärel hoida muutmälus üks koopia blokist kõikide protsesside jaoks;
# pöördumine mõningate muutmälus olevate blokkide poole esineb palju sagedamini, kui teistele, seega selliste blokkide jaoks puhverdamise kasutamine üldiselt suurendab süsteemi jõudlust.
# mõned väliste kõvaketaste mälublokid ei nõua peale muutmist kohest salvestamist ja selliste blokkide puhul vahemälu kasutamine optimeerib sisend-väljund kasutamise.
 
== Puhverdamine läbi operatsioonisüsteemi ==
 
Muutmälu vahemälu koosneb järgmistest elementidest :
# muutmälu lehekülgede hulk, mis on jagatud puhvriteks, mis on pikkuselt võrdsed vastava välismälu seadme andmeblokile;
# puhvrite nimetuste kogu, mis kirjeldavad vastava puhvri seisukorda;
69. rida:
 
# püüab leida hash tabelis (räsitabelis) puhvri nimetuse antud numbriga;
# juhul, kui antud puhver on hõivatud, siis ootab tema vabanemist;
# juhul, kui puhvrit hash tabelis ei leita, võtab esimese vaba puhvri vabade puhvrite nimekirja lõpust;
# juhul, kui vabade puhvrite nimekiri on tühi, siis toimub algoritmi nihe (vt allpool);
# juhul, kui antud puhver on märgitud kui “määrdunud”, kirjutab puhvri sisu asünkroonselt välisesse mällu.;
# eemaldab puhvri hash tabelist, kui see oli sinna paigutatud;
# asetab uue numbriga puhvri hash tabelisse.
 
 
Protsess loeb andmed saadud puhvrisse ja vabastab selle. Kui toimub muutmine, siis enne vabastamist protsess märgib puhvri kui “määrdunud”. Vabastamisel asetsetakseasetatakse puhver vabade puhvrite nimekirjas ette.
 
Seega:
 
# kui protsess luges mingi ploki puhvrisse, siis on tõenäoline, et teine protsess leiab selle ploki lugemiseks puhvri [[ muutmälu|muutmälust]].
# välisesse mällu kirjutatakse andmed ainult siis, kui ei ole “puhtaid” puhvreid, või nõudmise korral.
 
=== Väljasurumise algoritm===
 
Kui vabade puhvrite nimekiri on tühi, siis tehakse puhvris algoritmi nihe. Algoritmi nihe mõjutab oluliselt vahemälu tootlust. On olemas järgmised algoritmid:
# [[LRU]] (''Least Recently Used'') — väljasurutakse puhver, mis on kõige kauem kasutamata;
# [[MRU]] (''Most Recently Used'') — väljasurutakse viimati kasutatud puhver;