Vahemälu

From ICO wiki
Revision as of 22:41, 24 October 2011 by Raarop (talk | contribs)
Jump to navigationJump to search

Autor: Raido Aarop, A21

Sissejuhatus

Vahemälu (ingl. k. cache) Kasutatakse korduvalt vajaminevate andmete hoidmiseks ja serveerimiseks. Vahemälu kasutamisel puudub vajadus pöörduda andmete algallika poole (kõvaketas, RAM, CPU jne), vaid andmed serveeritakse vahemälust. Tänu selle suureneb arvutisüsteemi töö kiirus.

Valimaks, millised andmeid vähemälus hoida on kasutusel erinevaid loogikaid, vastavalt süsteemi otstarbele.

Vahemälu õige kasutamisega on võimalik kogu süsteemi tööd kardinaalselt optimiseerida (kiirendada).

Mõned süsteemid, kus vahemälu on kasutusel:

  • Arvuti protsessor (CPU)
  • Salvestuseadmed (Information Storage)

Arvuti protsessor (ingl. k. CPU – Central Processing Unit)

Tänapäeval on protsessorite kiirus (sagedus) ületanud mälude kiiruse (sageduse) mitmekordselt. On võimalik valmistada ka sama kiired mälukiipe, kuid nende hind oleks väga kõrge. Suure mahuga kiired mälud oleksid väga kallid. Samuti tekiks probleem mälu andmete kirjutamisega salvestuseadmetele.

Lahendus tekib siis, kui kasutaba väikese mahuga kiiret mälukiipi, mis on toimiks protssesori ja ülejäänud mälu vahel. See kiire mälukiip täidaks vahemälu ülesannet. Vahemällu salvestatakse enim kasutatavad käsud ja nende vastused. Seega sama käsu saamisel teisel korral jääb ära põhimällu pöördumine käsu väljalugemiseks ja protsessori töö käsu täitmisel.

Kuigi von Neumann-i arhitektuuri järgi on tänapäeva arvutitel andmed ja käsud säilitatud samas mälus, siis vahemälude puhul, see reegel ei kehti. Andmeid ja käske hoitakse erinevates vahemäludes. Tänapäeva protsessoritel on enamjaolt kolme tasandilised vahemälud.

Vahemälud on eriti efektiivsed, kuna tänapäeva operatsioonisüsteemid ja programmid kasutavad väga palju samu meetoteid korduvalt.

Salvestuseadmed (ingl. k. Information Storage Devices)

Kõige tavalisem kasutus vahemälule on tavalises kõvakettas, mida leidub pea igas arvutis. Selleks et operatsioonisüsteem saaks mingi infolt kõvakettalt lugeda, peab kõvaketas lugemispea viima õigesse kohta ja liigutama magnetketast. See on aga füüsiline töö ja võib väga palju aega nõuda, eriti kui andmed ei asu järest ühel kettal.

Vahemäluna on kasutusel mälukiip, kuhu siis salvestatakse kettalt loetud andmed ja kettale salvestatavad andmed.

Kõvaketta vahemälu jaguneb kaheks osas vastavalt andemete osa ja märgistusosa, milles registreeritakse andmeta asukoht kõvakettal, kas andmed on kirjutatud kõvakettale ja samuti ka aeg millal neid andmeid viimati kasutati. Märgistusosa oleva aja järgi otsustatakse, kas need andmed on veel vajalikud ja jäävad edasi vahemällu või siis võib vastavad andmed kustutada.

Kõvaketta lugemisoperatsiooni ajal pöördutakse kõige pealt vahemälu poole sooviga saada andmeid. Kui need andmed on olemas, siis tagastatakse need väga kiirelt, kõvaketta enda poole pöördumata. Kui aga andemd puuduvad, siis pöördutakse edasi kõvaketta poole, loetakse sealt vajalikud andmed vahemällu ja alles siis tagastatakse süsteemile.

Kõvakettale kirjutamisoperatisooni ajal kirjutatakse andmeid kõigepealt vahemällu. Seejärel võib süsteem käituda kahel viisil, kas kirjutada andmed kohe vahemälust kõvakettale, mis on ohutum aga aeglasem, või siis kirjutda andmed kõvakettale hetkedel, kui kõvaketta kirjutamispea on sobivates kohtades. Viimane viis on kiirem kuid mitte nii ohutu ,kuna vähemälus olevad admed võivad rikke puhul kaduma minna.


Allikad

What Every Programmer Should Know About Memory

Information Storage and Management: Storing, Managing, and Protecting Digital Information, G. Somasundaram; Alok Shrivastava, 2009

--Raarop 23:40, 24 October 2011 (EEST)

Lingid