CACHE

 TOC \o "1-4" CACHE......................................................................................................................... GOTOBUTTON _Toc379807524   PAGEREF _Toc379807524 1

Funkce...................................................................................................................... GOTOBUTTON _Toc379807525   PAGEREF _Toc379807525 1

Druhy cache............................................................................................................. GOTOBUTTON _Toc379807526   PAGEREF _Toc379807526 2

Organizace cache u procesoru I80486............................................................... GOTOBUTTON _Toc379807527   PAGEREF _Toc379807527 3

Organizace Cache u pentia................................................................................... GOTOBUTTON _Toc379807528   PAGEREF _Toc379807528 4

Vnější cache............................................................................................................ GOTOBUTTON _Toc379807529   PAGEREF _Toc379807529 4

Provedení vnějších cache................................................................................. GOTOBUTTON _Toc379807530   PAGEREF _Toc379807530 4

Nastavování Cache................................................................................................ GOTOBUTTON _Toc379807531   PAGEREF _Toc379807531 5

Nastavení v CR0................................................................................................. GOTOBUTTON _Toc379807532   PAGEREF _Toc379807532 5

Nastavení registru CR3...................................................................................... GOTOBUTTON _Toc379807533   PAGEREF _Toc379807533 5

Funkce

 Vyrovnávací paměť - cache - je velmi rychlá paměť relativně malé kapacity, sloužící ke zrychlení toku dat mezi procesorem a operační pamětí, resp. jinými částmi počítače. Je zapojena mezi procesor a operační paměť a to jak uvnitř procesoru (486DX) nebo vně procesor. Mohou být zapojeny současně jak vnitřní tak i vnější cache.

 Zavádění CACHE pamětí se řeší nesoulad mezi rychlostí procesoru a paměti. Rychlosti procesoru se zvyšují mnohem rychleji než pamětí. Také počet strojových cyklů na zpracování instrukce se rapidně snížil. U procesorů typu RISC je to již jen jeden strojový cyklus.

 Vyrovnávací paměť typu cache je chápána jako nejvyšší úroveň paměťové hierarchie. Nižším stupněm je operační paměť a nejnižším jsou vnější paměti. Kapacita a vybavovací doba roste od nejvyšší k nejnižším, cena na byte paměti naopak.

 Řízení paměti CACHE je záležitostí FIRMWARE.

 Přenos dat mezi procesorem a vyrovnávací pamětí probíhá po bytech (počet záleží na šířce sběrnice) a mezi vyrovnávací pamětí a fyzickou pamětí po blocích.

 Je-li obsah na adrese paměti žádaný procesorem ve vyrovnávací paměti, je tento obsah rychle předán procesoru. Není-li ve vyrovnávací paměti, zavede se do ní celý blok po sobě jdoucích dat. Tento proces trvá déle než přímý přístup do fyzické paměti a tedy zvýšení výkonu nastane pouze tehdy, je-li počet úspěšných zásahů řádově větší než neúspěšných. Při správné organizaci bývá úspěšnost až 97% .

 Vyrovnávací paměti mohou být zvlášť pro data a zvlášť pro instrukce.

 Instrukce a data jsou ve vyrovnávací paměti adresovány virtuální adresou, čímž se také zrychlí přenos, neboť odpadá dekódování virtuální adresy na fyzickou. Současně s prohledáváním vyrovnávací paměti se vypočítává fyzická adresa, takže pokud se adresa ve vyrovnávací paměti nenajde je již připravena fyzická adresa.

 Vyrovnávací paměť se používá pouze na čtení, nikoliv na zápis. Proto modifikovaná data uložená v cache jsou označena jako neplatná a při vyprazdňování je přehrán celý blok do fyzické paměti. Druhý způsob je , že data jsou přepisována jak v cache tak i ve fyzické paměti současně. Pokud data nejsou v Cache, je zápis prováděn pouze do fyzické paměti. Třetí způsob je Write back to je zpětný zápis do cache. přepis do paměti je prováděn až při zaplnění cache.

 Při plném obsazení vyrovnávací paměti jsou bloky uvolňovány podle doby, po kterou nebyl blok využit. Tím se v paměti zachovávají jenom využívané bloky.

Druhy cache

Cache může být:

1. podle přístupu

·       asynchronní . U asynchronní paměti řadič po zadání adresy čeká  na data

·      Synchronní  Pracovní cyklus je rozdělen na dvě části

·      zadání adresy (CPU nečeká na data)

·      čtení SRAM- udržuje si původní adresu v registrech

CPU po zadání adresy nečeká až se objeví data na sběrnici, ale o data       požádá v dalším taktu, takže odpadá wait stav procesoru. Tím se zrychlí tok dat  a průměrné zpoždění SRAM se sníží na 9 ns.

·      synchronní - pipelined burst SRAM cache (s hromadným přístupem). Činnost paměti je rozdělena na dvě etapy , stejně jako u synchronní paměti. Rozdíl je ale v tom, že tato paměť zasílá po požadovaných datech ještě 3 další  (následující) data, pokud je sběrnice volná a řadič v odpovídajícím stavu. Na výstupu je tedy registr, který umožňuje zadávat další adresy i v době, kdy data nejsou z výstupního bufferu SRAM  ještě přečtena.

2.  podle způsobu vyhledávání

·      asociativní vyhledává podle obsahu

·      neasociativní - vyhledává podle adres - nepoužívá se

3.  podle vztahu k Operační paměti (OP)

·      Netransparentní - zastaralá  - změna obsahu OP není zachycena do cache, pak cache obsahuje nesprávné údaje. Např. při natažení nového programu na stejné fyzické adresy.

·      Transparentní - procesor (čipová sada) obsahuje další řadič, který sleduje transakce na sběrnici a podle nich upravuje I (invalid) tag v cache.

4.  podle počtu položek na jedné adrese

·      jednocestné

·      dvoucestné

·      čtyřcestné

5.  podle možnosti současného přístupu

·      jednoportové

·      dvouportové

6.  podle adresace

·      s fyzickou adresací (obvykle umístěné mezi MMU a OP). Přepočet adres na fyzické trvání několik taktů a tak tato paměť je pomalejší. Nemůže nastat kolise adres.

·      s virtuální  nebo logickou adresací (obvykle umístěné mezi CPU a MMU). Virtuální adresa je téměř ihned k dispozici a tedy vyhledávání je rychlé. U multiprocesorových systémů. U multitaskingu může stejná virtuální adresa znamenat různé fyzické adresy. Nutno ošetřovat cache.

7.  podle obsahu

·      společná pro data a instrukce

·      pouze pro data - datová

·      instrukční - pouze pro instrukce

8.  podle umístění vzhledem k procesoru

·      vnitřní

·      vnější

9.  podle pořadí od procesoru

·      L1 - cache první úrovně - obvykle vnitřní cache. Rychlost přístupu  je až 2,88GB/s, šířka sběrnice podle procesoru (až 128b)

·      L2 - cache 2. Úrovně a to buď vnitřní nebo vnější. Pr L2 cache se používá Pipened Burst Cache (PBCache), která vytlačila asynchronní  SRAM cache

10. podle spolupráce s OP

·      Write Through -zápis se provádí současně do cache a OP. Výstup na sběrnici je obvykle bufrován(FIFO délky 1až4), aby se nezdržoval proces čekáním na ukončení zápisu.

·      Write Back - zápis se provádí pouze do cache. Do OP se provede až při rušení položky v cache. Nemusí tedy souhlasit obsah cache a OP.

 

 Organizace cache u procesoru I80486.

 U procesoru 486DX i SX je interní cache (IVP) velikosti 8kB. Vnější Cache je tvořena přídavnými obvody. Před každým čtením se zkoumá adresa neshoduje-li se s adresou přiřazenou IVP. Pokud není, uvolní se místo v cache a zapíše se do IVP nový blok, obsahující tuto adresu, tj. 16 bajtů. IVP je společná pro data i instrukce. Při modifikaci dat je změna současně provedena v cache i ve fyzické paměti.

 IVP je 4cestná asociativní paměť obsahující 4x128 klíčů. Klíč, který je částí 32bitové fyzické adresy, má 21 bitů a obsahuje právě 21 nejvyšších bitů fyzické adresy. Nižší část fyzické adresy určuje polohu dat v tabulce cache. Bity A4 až A10 určují řádek tabulky, A0 až A3 slabiku (32 bitové slovo) v tabulce. Ke každému klíči je přiřazeno 16B jako obsah položky (tj. 4 slova po 32bitech). To znamená,že každá položka musí začínat na fyzické adrese dělitelné 16.

 Každé fyzické adrese je bity 4 až 10 jednoznačně přidělen řádek IPV. Při čtení se kontroluje shodnost klíčů a platnost dat. Pro zápis je vybrána na daném řádku podle adres 4 až 10 ta, která má neplatný klíč, jinak ta, která je nejdéle nepoužívána podle hodnot 3 bitů LRU (Last Recently Used). Každá položka má svůj bit udávající platnost klíče.

Organizace Cache u pentia

Pentium má oddělené cache pro  instrukce a data.

·      IC - 8kB ,, 2cestná asociativní 128řádků po 32bytech (x2), 3 portová (zpracovává současně požadavky procesoru u a procesoru v a od FPU. Protokol MESI

·      DC - 8kB, protokol SI.

Označení dat je protokolem MESI (Modified, Exclusive, Shared, Invalid)

·      M - R/W nemusí vyvolat R/W na sběrnici, a tedy položka v cache může            být modifikována oproti položce v OP. Může nastat pouze u jedné cache!

·      E - smí být nastaven jen u jedné cache (položka OP je jen v této cache). Položka musí být shodná s OP. Po modifikaci cache se flag automaticky mění na modified.

·      S - stejný obsah u více cache. Při modifikaci se ostatní cache označují za neplatné. Zápis se provádí současně do OP.

 

 Vnější cache

 Vnější cache jsou tvořeny rychlými SRAM pamětmi. Spolu s pamětí musí být na sběrnici napojen organizátor - ovladač cache, který může být externí nebo integrovaný do procesoru.

Provedení vnějších cache

 EDRAM - enhanced DRAM je výrobek firmy Ramtron. Jedná se o integrovanou 4MB paměť DRAM s dobou přístupu 35 ns s 2kB cache SRAM s dobou přístupu 15ns. Testy vykazují větší rychlosti této paměti než klasické vnější cache.

 EDO RAM - obecný název pro enhanced DRAM (Enhanced Data Output RAM). Funkce stejná jako u EDRAM a urychluje zejména přesun dat z hlavní paměti. Data jsou na výstupu připraveny, zatím co řadič paměti vyhledává nová data signálem CAS.

 

 CDRAM - cache DRAM od firmy Mitsubishi je obdobná paměť integrující 16kB cache SRAM a 4 nebo 16 MB DRAM. Je to synchronní paměť jejíž frekvence je dána frekvencí sběrnice, čímž vylučuje Wait stavy. Navržená frekvence je do 100MHz, což plně vyhovuje Pentiu.

REALIZACE

 Cache je realizována statickou rychlou RAM nebo nověji pipelined burst  RAM s přenosovou rychlostí 300MB/s, tj zrychlí přísun dat do procesoru.

Externí i interní cache s integrovaným řadičem v procesoru mohou mít až dvojnásobně širokou datovou sběrnici tj. 128 bitů. Pak je nutné aby u sekundární Cache byla tato sběrnice vyvedena zvlášť.Kromě asynchronních Cache se začínají rozšiřovat i synchronní cache.

Další použití Cache je VFAT cache, umožňující 32bitový přístup k souborům.

 

Nastavování Cache

Položky které se mohou nebo nesmí zapisovat do cache se nastavují tabulce stránkování.

Při přechodu na do protected modu a zpět  je nutné cache nulovat.

Nastavení v CR0

·      NW  - not Write Through

·      =0 Write Through

·      =1 ukládání jen do fyzické paměti (default)

·      CD - Cache Disable

·      =1 vypíná cache

·      =0pro /KEN=0 a PCD=0 (registr CR3) - zapnuto

Nastavení registru CR3

totéž ve stránkovacím režimu jako specifikace v tabulce

·      PWT - Page Write Through - určuje způsob práce externí  cache

·      =1 Write Through

·      =0 Write Back

·      PCD - Page Cache Disable pro interní cache

·      =0 podmínka pro CD

·      =1 vypnuta interní cache