Vahemälu: erinevus redaktsioonide vahel

Eemaldatud sisu Lisatud sisu
PResümee puudub
P Salvestus > salvestis
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; IPA: [kæʃ]) on komponent, mis hoiustab andmeid nende kiireks uuesti kasutamiseks. Vahemälust andmete lugemine on kiirem kui lähteandmete lugemine [[muutmälu]]st (RAM) või kõvakettalt. Vahemälu kasutamise tulemusena väheneb korduvalt kasutatavate andmete lugemseks kulunud aeg ja suureneb üldine tulemuslikkus arvutisüsteemis.
 
== Ajalugu ==
Esimest korda kasutati sõna "cache" elektroonilises kontekstis aastal [[1967]] artiklis, mis kirjutati avaldamiseks ajakirjas «[[IBM Systems Journal]]». Artikkel puudutas mälu parandamist väljatöötataval mudelil 85-seeriast [[IBM System/360]]. Ajakirja toimetaja Lyle Johnson palus välja mõelda tabavam termin kui "ülikiire puhver”, kuid ideede puudumise tõttu soovitas ta ise sõna "cache". See artikkel ilmus 1968. aasta alguses, autorid pälvisid [[IBM]] preemia, nende töö levis ja on hiljem parandatud, aga sõna "cache" hakati peagi kasutama arvutialases kirjanduses nagu üldtunnustatud terminit.
 
== Tööpõhimõte ==
8. rida:
Vahemälu on suure juurdepääsukiirusega mälu, mille eesmärk on saavutada vähima juurdepääsuajaga ligipääs andmetele, mis sisalduvad püsimälus (edaspidi "[[põhimälu]]s"). Vahemälu kasutatakse keskprotsessoris ([[CPU]]), [[kõvaketas]]tel, [[brauser]]ites, [[veebiserver]]ites, [[Domeeninimede süsteem|DNS]]-is ja [[WINS]]-is.
 
Vahemälu koosneb kirjete kogumist. Iga kirje on seotud andmeühikuga või andmete blokigaplokiga (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.
 
Kui vahemälu kasutaja ([[CPU]], [[veebibrauser]], [[operatsioonisüsteem]]) soovib andmeid, uuritakse kõigepealt vahemälu. Kui vahemälus leitakse kirje ID-ga, mis sobib otsitud andmeühiku ID-ga, siis kasutatakse andmeelementide vahemälu. Seda nimetatakse vahemälu tabamuseks (''cache hit''). Kui vahemälust ei leitud kirjet, mis sisaldab otsitud ID-d, siis loetakse see põhimälust vahemällu ja on sealt edaspidistel vahemälu otsingutel kättesaadav. Seda nimetatakse vahemälu möödalask (''cache miss''). Vahemälust leitud tulemuste protsenti võrreldes päringutega nimetatakse cache tabamuse tasemeks või tabamuse koefitsiendiks.
14. rida:
Näiteks veebilehitseja kontrollib [[URL]]-s küsitud veebilehe lokaalse koopia olemasolu ketta lokaalses vahemälus. Selle näite puhul on URL tunnus, aga veebilehe sisu – andmete osa.
 
Kui vahemälu maht on piiratud, siis möödalase puhul võib olla vastu võetud otsus loobuda mõnest salvestusestsalvestisest vaba ruumi tekitamiseks. Väljajäetava salvestusesalvestise valikuks kasutatakse erinevaid algoritmide väljasurumiseidväljasurumisi. Kui modifitseeritakse vahemälu andmete osasid, toimub nende ajakohastamine põhimälus. Viivitust ajas vahemälu andmete muutmise ja põhimälu uuendamise vahel kontrollib niinimetatudnn “kirjetekirjete poliitika”poliitika.
 
''Write-through'' vahemälus kutsub iga muudatus esile sünkroonse andmete uuendamise põhimälus.
28. rida:
 
===Vahemälu tasemed===
Keskprotsessori CPU vahemälu on jaotatud mitmeks tasandiks. Käesoleval ajal võib universaalses protsessoris olla kuni 3 tasandit. Vahemälu tasand N+1 on üldiselt mõõtmetelt suurem ja andmete kättesaadavuse ja andmeedastuse kiiruselt aeglasem, kui vahemälu tase N. Kõige kiirem mälu on esimese taseme vahemälu L1. Tegelikult on ta protsessori lahutamatu osa, kuna asub protsessoriga ühel ja samal kristallil ja kuulub funktsioneerivate blokkideplokkide koosseisu. Protsessorites on vahemälu L1 tavaliselt jagatud kaheks vahemäluks, käskude (juhised) vahemälu ja andmete vahemälu (Harvardi arhitektuur). Enamik protsessoreid ei saa ilma L1 vahemäluta töötada. L1 vahemälu töötab protsessori sagedusel ja üldjuhul võib pöördumine tema poole toimuda iga takti ajal. Paljudel juhtudel on võimalik läbi viia mitu loe/kirjuta toimingut samaaegselt. Juurdepääsu latentsus võrdub tavaliselt 2–4 tuuma takti. Maht on tavaliselt väike – alla 128 kB.
 
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 208–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 muutmälust. Mitmeprotsessorilistes süsteemides on üldkasutatav ja mõeldud erinevate andmete sünkroniseerimiseks L2 vahemälu.
44. rida:
 
== Väliste kõvaketaste puhverdamine==
Paljud andmete salvestuseandmesalvestuse välisseadmed kasutavad vahemälu töö kiirendamiseks, eriti kõvakettad, kasutavad vahemälu 1töö kunikiirendamiseks vahemälu 641–64 MB (NCQ/TCQ toetusega mudelid kasutavad seda päringute hoiustamiseks ja töötlemiseks), [[CD (andmekandja)|CD]]/[[DVD]]/BD-plaatide lugemisseadmed samuti puhverdavad loetavat teavet, et sama info poole teistkordne pöördumine oleks kiirem. Samuti kasutab operatsioonisüsteem osa muutmälust kettaoperatsioonide vahemäluna (sealhulgassh väliste seadmete jaoks, millel endal ei ole vahemälu, nt. kõvakettad, [[flash-mälu]], CD).
 
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älublokkemäluplokke kasutavad mitmed protsessid samaaegselt ja on mõttekas lugeda blokkiplokki üks kord, seejärel hoida muutmälus üks koopia blokistplokist kõikide protsesside jaoks;
# pöördumine mõningate muutmälus olevate blokkideplokkide poole esineb palju sagedamini kui teistele, seega selliste blokkideplokkide jaoks puhverdamise kasutamine üldiselt suurendab süsteemi jõudlust.
# mõned väliste kõvaketaste mälublokidmäluplokid ei nõua peale muutmist kohest salvestamist ja selliste blokkideplokkide puhul vahemälu kasutamine optimeerib sisend-väljund kasutamise.
 
== Puhverdamine läbi operatsioonisüsteemi kaudu ==
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 andmeblokileandmeplokiga;
# puhvrite nimetuste kogu, mis kirjeldavad vastava puhvri seisukorda;
# hash tabelid, mis sisaldavad blokiploki numbri vastavust nimetusele;
# vabade puhvrite nimekiri.
 
79. rida:
=== 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äljasurutaksevälja surutakse puhver, mis on kõige kauem kasutamata;
# [[MRU]] (''Most Recently Used'') väljasurutaksevälja surutakse viimati kasutatud puhver;
# [[LFU]] (''Least Frequently Used'') väljasurutaksevälja surutakse kõige harvem kasutatud puhver;
# [[ARC]] (''Adaptive Replacement Cache'') väljasurumise algoritm, LRU JA LFU kombinatsioon, patenteeritud [[IBM]].
 
Ühe või teise algoritmi kasutamine sõltub andmete puhverdamise strateegiast. LRU on kõige efektiivsem, kui on tagatud, et andmeid kasutatakse korduvalt lähitulevikus. MRU on kõige efektiivsem, kui on tagatud, et andmeid ei kasutata korduvalt lähitulevikus. Kui taotlus määratleb selgesõnaliselt teatud hulga andmete puhverdamise strateegia, töötab vahemälu kõige tõhusamalt.
91. rida:
 
On olemas kaks peamist vahemälu üleskirjutamise poliitikat – ''write-through cache'' ja ''write-back cache'':
# write-through – üleskirjutamine toimub vahetult põhimällu (ja dubleeritakse vahemällu), st. üleskirjutus ei ole puhverdatud;
# write-back – andmete üleskirjutamine toimub vahemällu. Kirjutamine põhimällu tehakse hiljem (väljatõrjumise või aja möödumise järel), rühmitades ühes operatsioonis mitu üleskirjutuse operatsiooni kõrvalasuvatesse pesikutesse. Write-back'i töötlemise tehnoloogia teeb mõneks ajaks andmed põhimälus ebaolulisteks, keskprotsessori jaoks need ebaolulisused ei ole märgatavad, kuid enne teise juhtiva mälusüsteemi siini poole pöördumist ([[DMA controller]], sinihaldur-[[PCI siin]]i seadmed) tuleb vahemälu salvestada mällu sunniviisiliselt. Kui kasutada write-back'i mitmeprotsessilises süsteemis, siis erinevate keskprotsessorite vahemälud peavad olema kooskõlastatud (või peavad protsessorid kasutama sama vahemälu).