Vyrovnávací paměťi
Součástky okolo mikroprocesoru mají různou pracovní rychlost. Příkladem může být hlavní OP, která je realizovaná jako DRAM. Specifická realizace jedné paměťové buňky umožňuje snižovat dobu přístupu pomaleji, než se daří návrhářům a technologům zvyšovat pracovní rychlost procesoru (od 8086 k 80386 a 80486). V době představení 80386 byla doba vybavení DRAM asi Tv < 100 ns, v době uvedení 80486 na trh byly nejrychlejší DRAM s Tv ≥ 60 ns čili s maximální taktovací frekvencí asi 16MHz, zatímco procesor 80486DX už pracoval na frekvenci 66 MHz.
Použila se zkušenost známá ze sálových počítačů a to malá rychlá vyrovnávací paměť mezi CPU a feritovou OP. Velikost polovodičové vyrovnávací paměti byla určena velikostí celku programu, kde nejčastěji procesor opakuje svůj přístup (rozuměj do okolí určitého místa).
Pomocí cache je možný přístup do hlavní OP bez čekacího stavu Tw i v případě, když je OP složena z pomalých DRAM. Bez cache se musí zařadit pro DRAM (s Tv = 100 ns) až 3 čekací takty a celkový výkon počítače značně klesá. Ještě výhodnější je interní vyrovnávací paměť – interní cache pracuje podle zápisového mechanizmu Buffered WriteTrough . Tento mechanizmus zajišťuje, že data v hlavní OP jsou identická s daty v interní cache.
Pracovní činnost vyrovnávací paměti (VP) :
- a) po zapnutí je VP prázdná a jakmile procesor potřebuje z hlavní OP nějakou informaci, tak mu ji řadič VP dodá a zároveň ji zapíše i do VP pro případné další použití. Do VP ale řadič nepřenese jen samotnou informaci, ale i její okolí, takzv. položku z hlavní OP.
- b) během používání VP o velikosti segmentu (64 KB) dochází k zhruba 80℅ úspěšných pokusů, tedy v 80℅ případů komunikuje procesor s VP a jen 20℅ připadá na komunikaci s pomalou hlavní OP DRAM. Se zvýšením kapacity VP na 128 KB, vzrůstá počet úspěšných přístupů k VP až na 90℅, později se vzrůstem velikosti VP a vylepšeným řadičem VP se dosahuje až 95℅ úspěšnosti přístupu.
Pomocí výpočtů je možné určit Tef – efektivní doba vybavení – v paměťovém systému, který je tvořený VP typu SRAM s dobou vybavení Tv’ ≥ 10 ns a OP typu DRAM s dobou vybavení Tv’’ = 100 ns takto: Tef = 16 ns ( = průměr Tv’’ + průměr Tv’ ).
U PC třídy 80386 nebo 80486 je vnější VP velká od 16 KB (do 256 KB, později až 1 MB). Od 80486 je navíc malá VP 8 KB přiintegrovaná do mikroprocesoru. Takové VP se říká primární L1 (VP 1. úrovně) nebo interní VP (IVP), vnější VP se nazývá sekundární L2 (VP 2. úrovně), též externí VP.
Globální struktura VP:
– řadič VP (např. 80385) je složitý programovatelný obvod, který za procesor zajišťuje komunikaci mezi OP a VP a procesorem podle požadavků procesoru
– vlastní VP s adresářem a polem příznaků.
Paměť obsahuje dvojici údajů – adresu položky a data položky (položkám se také říká řádky, lines). Hledání adresy v adresáři probíhá asociativně ( paměť typu CAM), tedy vyhledávání podle obsahu. Adresa generovaná procesorem je porovnána se všemi adresami v adresáři VP za účelem nalezení dat nebo zjištění, že položka ve VP není. Přenos mezi procesorem a VP probíhá po násobcích bajtů, přenos mezi VP a OP probíhá po položkách, blocích dat – např. 16B řádek, 64B řádek apod.
Přiřazení VP a OP
K efektivnímu využití VP se používá několik způsobů přiřazení VP k hlavní OP (takzv. mapování OP do VP). Vlastní VP je organizovaná po řádcích ( lines ), dlouhých např. 16 B. Máme-li VP velkou 8 KB, vejde se do ní 512 řádků. K adresování jednoho bajtu uvnitř VP potřebujeme 9b na 512 řádků a 4b na rozlišení 16 B/řádek, celkem tedy 16b. Fyzická adresa 80486 má 32b, proto zbývajících dosud nepoužitých 19b FA pomůže určit v hlavní OP celky velké jako VP ( 512K celků * 8KB / celek = 4 GB).
Přímé mapování má čísla řádků čili adresy řádků ve VP odpovídající číslům 16B řádků v celcích (512K celků) umístěných v hlavní OP. Toto řešení není dost pružné, protože dotyčný řádek ve VP už může být obsazený.
Při plně asociativním mapování odpovídají čísla řádků ve VP takto malým blokům dat v hlavní OP. Protože uvnitř řádku VP adresuji jednotlivé bajty pomocí 4b adresy, zbývá z FA 28b. Tyto 28b čísla uložená v 512 řádcích VP zbývají k porovnávání v komparátoru s požadovanou adresou. Složité a dlouhé prohledávání.
Vícecestné asociativní mapování – je kompromisním řešením, pružné s méně prohledáváním. Celky v hlavní OP odpovídají velikostí polovině nebo čtvrtině použité VP.
Způsob komunikace :
Čtení: je-li objekt ve VP, přečte se z ní
není-li, přečte se z OP i se svým okolím a uloží do VP.
Zápis: každé slovo či bajt se zapisuje současně do obou pamětí (OP, VP) –Write Through
celý řádek se uloží najednou až při jeho uvolňování – Write Back – případ odkládaného řádku.
Interní vyrovnávací paměť ( v procesoru80486)
IVP (cache) L1 procesoru 80486 má pro instrukce a data kapacitu paměti 8KB. Cache je pro uživatele zcela transparentní, je 4 cestná asociativní, existují u ní 4 cesty vždy se 128 položkami – 16B řádky. Při aktualizaci 16B položek v cache se používá algoritmus Least Recently Used (LRU). Aktualizační způsob IVP Buffered Write Through znamená, že každý cyklus zápisu z procesoru do OP vede přes zápisové vyrovnávací paměti typu FIFO 4*128b. Ty umožní, že 80486 nemusí čekat s dalším výpočtem, až je zápis dokončen.
Paralelně ke struktuře vlastních paměťových míst VP se nachází indikační jednotka s 21b formátem. Každá položka (řádek) obsahuje:
– 16B a k dispozici je 128 položek (řádků) v bance.
Celkem jsou čtyři banky, což dává celkem 4*128 = 512 řádků (s 16B dat na každém z nich, 512*16B = 8 KB).
V jedné bance jsou 2 KB dat (= 128*16B). Obrázek při výkladu Touto strukturou se dosahuje redukování adresového dekodéru z 8192 adres na 512 adres (při 4 cestách na 128 adres) s průměrnou hodnotou úspěšnosti přístupu ≥ 90% (max. 94%).
Paralelně s položkou (řádkem) cache se nachází:
– indikační položka (řádek) –TAG v 21b formátu obsahuje adresu, TAGů je celkem 512
– testovací položka (řádek) v 7b formátu obsahuje 3b kód pro LRU a 4b platnosti, testů je celkem 128.
Pomocí bitů Fyzické adresy A10 – A4 vybere dekodér VP jeden ze 128 řádků (2↑7) ve čtyřech cestách naráz. Původní 512 řádkové prohledávání se tedy zredukuje na 128 řádkové. Ve 4 komparátorech najednou porovnáváme 21b adresu A31 – A11 s obsahy 21b TAGů. Obrázek při výkladu.
Před každým čtením z hlavní OP se zkoumá FA, není-li shodná s uloženou adresou v TAGu ve VP. Pokud dojde ke shodě, předá se obsah 16B řádku do fronty procesoru. Zjištění shody se zanese do záznamů úspěšnosti přístupu k datům (takzv. Cache Hit nebo opačný Cache Miss), které využívá řízení VP k určení náhrady za nepoužívaný řádek (položku). Pokud nedojde k nalezení adresy v TAGu, načte se obsah z OP do fronty procesoru a dále se obsah z OP s nejbližším okolím uloží do VP.
Algoritmus LRU s pomocí 3b v případě potřeby odstraňuje ty položky, které byly nejdelší dobu nepoužívané. Zjistí-li procesor 80486 (část integrovaného řadiče cache), že některá položka je nepoužívána, je odstraněna a nahrazena požadovaným údajem. Bity platnosti indikují, zda byl obsah paměti cache zadán nebo zda je tento obsah platný. Položka kódu také rozlišuje oblasti adresového prostoru určeného pro uživatelské programy a pro supervizor. K řádku (položce) s 16B jsou potřeba 4 bity platnosti.
Přenos informací z/do cache probíhá v nárazovém režimu (Burst Módu). Má-li se vyměnit 16B položka, jsou nutné na systémové sběrnici čtyři 32b přístupy. Jeden 32b přístup si vyžádá 5 taktů, výměna položky 20 taktů, což při frekvenci procesoru 25MHz představuje 800 ns. Jelikož se s OP typu DRAM pracuje po bajtech vzroste původní 32b přenosová rychlost přístupu z 20 MB/s na 80 MB/s. Tuto rychlost zvládaly v té době nejrychlejší DRAM s Tv = 80 ns. Pomalejší s Tv = 100 ns potřebují 1 čekací takt.
IVP (L1) v 80486 se ovládá dvěma řídícími bity v registru CR0 (CD a NW). Pro testování funkčních vlastností vyrovnávací paměti FIFO jsou k dispozici testovací registry TR3, TR4 a TR5.
Aktualizační způsob VP Buffered Write Through vyžaduje, aby mezi hlavní OP a interní VP byla zápisová vyrovnávací fronta FIFO 4 x 80b (10B pravděpodobně pro zápisy z FPU), která je integrovaná ve 80486. Úkolem fronty je, že IVP nemusí čekat, až je cyklus zápisu do DRAM zakončen.