11. Jak pracují paměti cache pro disk

Nejpomalejší částí každého počítače jsou diskové mechaniky. Disky a klávesnice jsou jediné hlavní části vašeho osobního počítače, které obsahují pohyblivé součástky. Mechanické části se však pohybují v reálném světě hmoty a setrvačnosti. Bez ohledu na to, jak rychlé mohou být vaše disky, dělají z nich jejich mechanické komponenty lenocha ve srovnání s jinými prvky počítače, které přenášejí data rychlostí elektřiny.

Existuje způsob, jak co nejvíce zmenšit vrozenou lenost disku. Některé mechaniky jsou rychlejší než jiné. Můžete se přesvědčit, zda soubory na disku nejsou fragmentovány, tj. zda skupiny sektorů se souborem se nacházejí blízko sebe, takže čtecí/zápisové hlavy nemusejí cestovat přes celý disk, aby se dostaly k jednotlivým částem souboru. Nebo místo fyzického disku můžete používat logický RAM disk, který je vytvořen v paměti počítače a který pro počítač vytváří iluzi, že je skutečným fyzickým diskem.

Jestliže však odhlédneme od těchto triků, je zcela nemožné zkrátit přístup k disku. Čtení programů a datových souborů z disku je základním prvkem pro jakýkoliv smysluplný výpočet. Nejúčinnějším a nejuniverzálnějším způsobem, jak se vyrovnat s malou rychlostí diskových mechanik, je použít pro ně paměť cache. Disková paměť cache podstatně urychluje operace ve vašem počítači, protože v paměti RAM uchovává ta disková data vaší aplikace, která jsou nejčastěji zapotřebí.

Koncepce, na které je princip diskové paměti cache založen, je podobná jako u paměti cache pro RAM. (Viz “Jak pracuje paměť cache pro RAM”). Díky velkému rozdílu rychlosti diskové mechaniky a paměti, jsou výsledky, kterých dosahuje paměť cache pro disk daleko dramatičtější, než jakých dosahuje paměť cache pro RAM. K mání je několik programů realizujících paměť cache pro disk a jeden z nich je dokonce přímo dodáván se systémem DOS. Některé programy jsou lepší než jiné, ale i ta nejméně efektivní paměť cache pro disk je úžasná ve srovnání s diskem bez paměti cache.

Dokonalejší řadiče disků se dodávají s obvody pro realizaci paměti cache ve své vlastní paměti RAM, takže tato cache nemusí používat paměť, kterou by mohly potřebovat vaše programy. Podobných výsledků však dosáhnete i použitím nepříliš drahého programu pro cache, který je trvale uložen v paměti, a který používá hlavní paměť systému pro urychlení činnosti vašich diskových mechanik.

Paměť cache pro disk
1. Po spuštění programu pro realizaci paměti cache pro disk, si tento, v paměti trvale uložený program, vyhradí část konvenční nebo rozšiřující paměti pro svoje účely. Velikost této paměti, používané programem cache, se pohybuje mezi několika kilobyte až po několik megabyte RAM; obecně platí, že čím více paměti RAM může program cache užít, tím efektivnější je jeho přínos. Některé programy cache rezervují jen určitou část paměti; jiné si zaberou veškerou dostupnou paměť, ale později její části uvolňují pro potřebu ostatních programů.
2. Jednotka CPU pod řízením vašeho aplikačního programu vydá pevnému disku povel na přečtení dat. Program cache tento požadavek na data zachytí.
3. Program cache přečte data z disku, ale kromě těchto požadovaných dat si z disku nabere dat o něco víc, obvykle ještě z následující skupiny sektorů. Program cache předá požadovaná data do CPU, ale jich kopii si zároveň s daty přečtenými z vlastní iniciativy uloží do paměti RAM, kterou si předtím rezervoval.
4. Během okamžiků, kdy CPU není aktivně zaměstnána prováděním instrukcí (což bývá poměrně často), převezme program cache řízení a přečte z disku ještě další data, která si uloží do RAM. Obvykle to jsou data z okolních sektorů těch souborů, které již byly čteny. Každý program cache má vestavěnou logiku, která inteligentním způsobem odhaduje, které skupiny sektorů bude aplikace v budoucnu požadovat. Inteligence této logiky ovlivňuje efektivnost programu cache.
5. Požaduje-li později program další data, program cache opět tento požadavek zachytí a zkoumá, zda požadovaná data již nejsou v paměti RAM. Pokud tam jsou, předá je ihned do CPU bez toho, že by se přistupovalo k disku. Pokud tam ale nejsou, program cache opakuje předešlý proces, získá nová data, předá je do CPU a společně s daty přečtenými z dalších skupin sektorů je uloží do RAM. Jak se paměť RAM používaná programem cache postupně zaplňuje, program cache uvolňuje ty části paměti, kde jsou data, která již nebyla delší dobu použita a nahrazuje je daty, která byla přečtena při posledních přístupech na disk.
6. Jakmile váš program vydá povel pro zápis dat na disk, některé programy cache data zachytí a zápis na disk odloží do té doby, než se uvolní jednotka CPU. Tím se urychlí činnost počítače, protože pozornost CPU není tříštěna mezi psaní na disk a ostatní aktivity.
7. Jestliže se soubor zapisovaný na disk ještě nachází v paměti RAM řízené programem cache, pak program cache zapíše na disk jen ty skupiny sektorů, které se skutečně změnily. Některé programy cache rovněž odkládají zápis na disk a provádějí ho pak v posloupnosti, která minimalizuje pohyby čtecích/zápisových hlav diskové mechaniky.

Poznámka: Řadiče disků s funkcemi programu cache pracují podobně jako tyto programy, ale nepoužívají žádnou hlavní paměť, dokonce ani pro logiku, která řídí cache nebo manipulaci s uloženými daty. Řadiče disků s vlastní cache nabízejí obecně vyšší výkonnost, ale jsou dražší než samotné programy cache.