Vahemälu: erinevus redaktsioonide vahel
Eemaldatud sisu Lisatud sisu
Resümee puudub |
|||
1. rida:
'''Vahemälu'''
== 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.
9. rida ⟶ 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 blokiga (väikese osaga andmetest), mis on andmeühiku koopia püsimälus. Igal sissekandel on tunnus
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
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 –
Kui vahemälu maht on piiratud, siis möödalase puhul võib olla vastu võetud otsus loobuda mõnest salvestusest vaba ruumi tekitamiseks. Väljajäetava salvestuse valikuks kasutatakse erinevaid algoritmide väljasurumiseid. 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 niinimetatud “kirjete poliitika”.
19. rida ⟶ 18. rida:
''Write-through'' vahemälus kutsub iga muudatus esile sünkroonse andmete uuendamise põhimälus.
''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''
Juhul, kui andmeid põhimälus saab muuta sõltumata vahemälust, võib vahemälu kirje 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 ([[muutmälu]]), mis on aeglasem kui registrid. Vahemälu võib anda olulise jõudluse kasvu, juhul kui RAM-i [[taktsagedus]] on oluliselt väiksem keskprotsessori CPU taktsagedusest. Vahemälu taktsagedus ei ole tavaliselt palju väiksem kui CPU.
41. rida ⟶ 39. rida:
=== Vahemälu assotsiatiivsus===
Üks põhilisi vahemälu omadusi – assotsiatiivsuse tase – näitab tema loogilist segmenteerimist. Asi on selles, et vajalike andmete otsimiseks vahemälu kõikide ridade järjestikune skanneerimine nõuaks kümneid takte ja muudaks kasutuks sisseehitatud keskprotsessori mälu kasutamise. Seepärast on muutmälu pesikud jäigalt seotud vahemälu ridade külge (igal real võivad olla fikseeritud aadresside komplektide andmed), mis vähendab oluliselt otsingu aega. Iga RAM pesik võib olla seotud rohkem kui ühe vahemälu reaga: näiteks, <math>n</math>- kanali assotsiatiivsus (inglise <math>n</math>-''way set associative'') tähendab, et mõne operatiivmälu aadressi informatsioon võib olla hoiul <math>n</math> asukohas vahemälus.
47. rida ⟶ 44. rida:
== Väliste kõvaketaste puhverdamine==
Paljud andmete salvestuse välisseadmed kasutavad vahemälu töö kiirendamiseks, eriti kõvakettad kasutavad vahemälu 1 kuni 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.
▲Paljud andmete salvestuse välisseadmed kasutavad vahemälu töö kiirendamiseks, eriti kõvakettad kasutavad vahemälu 1 kuni 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 (sealhulgas 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älublokke kasutavad mitmed protsessid samaaegselt ja on mõttekas lugeda blokki üks kord, seejärel
# 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
# puhvrite nimetuste kogu, mis kirjeldavad vastava puhvri seisukorda;
# hash tabelid, mis sisaldavad bloki numbri vastavust nimetusele;
65. rida ⟶ 60. rida:
=== ''Write-back'' vahemälu töö algoritm===
Algselt on kõik puhvrite nimetused paigutatud vabade puhvrite nimekirja. Kui protsess kavatseb lugeda või muuta plokki, siis ta täidab järgmise algoritmi:
# püüab leida hash tabelis (räsitabelis) puhvri nimetuse antud numbriga;
# juhul, kui antud puhver on hõivatud,
# juhul, kui puhvrit hash tabelis ei leita, võtab esimese vaba puhvri vabade puhvrite nimekirja lõpust;
# juhul, kui
# 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.
80. rida ⟶ 74. rida:
Seega:
# kui protsess luges mingi ploki puhvrisse,
# 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.
# [[
▲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:
# [[
# [[
▲# [[LFU]] (''Least Frequently Used'') — väljasurutakse 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.
== Tarkvara puhverdamine==
=== Üleskirjutamise poliitika puhverdamisel===
Vahemälu annab andmete lugemisel tootlikkuses suure kasu. Andmete üleskirjutamisel võib suur kasu tulla ainult usaldusväärsuse vähenemise hinnaga. Seega, erinevate juurdelisamiste puhul saab valida ühe või teise vahemälu üleskirjutamise poliitika.
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-
=== Veebilehtede puhverdamine ===
Informatsiooni ülekandmise protsessis läbi võrgu on võimalik kasutada veebilehtede puhverdamist – tihti küsitud dokumentide ladustamise protsessi (vahepealsetes) [[puhverserver|Proxy serverites]] või kasutaja arvutis, eesmärgiga takistada nende pidevat laadimist algserverist ja vähendada liikumist. Sellega teave lähendatakse kasutajale. Vahemälu juhtimine toimub [[HTTP]]-päiste abil.
109. rida ⟶ 100. rida:
=== Töötulemuste puhverdamine ===
Paljud programmid kirjutavad ükskõik kuhu vahepealsed ja abistavad töötulemused
▲Paljud programmid kirjutavad ükskõik kuhu vahepealsed ja abistavad töötulemused (ajutised, esialgsed), et mitte otsida neid iga kord, kui neid vajatakse. See kiirendab tööd, kuid nõuab lisamälu (põhimälu [[muutmälu]] või [[optiline andmekandja]]). Sellise puhverdamise näiteks on andmebaaside indekseerimine.
== Vaata ka ==
|