Od úrovně k úrovni aneb klikaté cesty dat

Rychlost a výkon, to jsou slova, která se vám obvykle vybaví v souvislosti s pojmem cache memory. Je to známá, ale velmi...


Rychlost a výkon, to jsou slova, která se vám obvykle vybaví v souvislosti s
pojmem cache memory. Je to známá, ale velmi důmyslná technika, jak dosáhnout
plynulejšího a vyššího výkonu procesoru, a tudíž obvykle jeden z důležitých
faktorů, které se těší pozornosti výrobců předhánějících se v jeho maximalizaci.
Představte si, že paměť počítače je organizována jako vaše kancelář: Malý počet
velmi často používaných informací (např. údaje o právě probíhajících
projektech) si ponecháte při ruce, zatímco ostatní odkládáte na police, či do
skříní.
Stejně tak i počítač ukládá veškerá data v podobné hierarchii. Při startu
aplikace jsou potřebná data a instrukce přesunuta z pomalého harddisku do
hlavní paměti (DRAM, Dynamic RAM), kde je přístup CPU k nim mnohem rychlejší.
Takto by se tedy vlastně dalo zjednodušeně říci, že DRAM funguje jako cache pro
harddisk.
K čemu více úrovní?
Ačkoliv díky DRAM už bude přístup k datům podstatně rychlejší, o ideálním stavu
stále hovořit nelze. Proto jsou častěji používaná data přemísťována do paměti
ještě rychlejší, tzv. Level 2 (L2) cache (sekundární cache). Ta může být
umístěna odděleně na separátním RAM čipu následujícím po CPU, ale většina
nových CPU už používá interní cache, tzn. umístěnou přímo v čipu procesoru.
A konečně nejčastěji používaná data (např. opakovaně prováděný cyklus
instrukcí) jsou ukládána do speciální sekce procesorového čipu, který je
označován jako Level 1 (L1) cache. Toto je paměť nejvyšší úrovně, jinými slovy
je nejrychlejší ze všech.
Kupříkladu procesory Pentium III společnosti Intel mají 32 KB L1 cache v čipu
procesoru a buďto 256 KB interní L2 nebo 512 KB mimo čip. Interní L2 cache je
přibližně 4krát rychleji přístupná než L2 na samostatném čipu. Proto se AMD i
Intel v poslední době soustřeďují právě na tento typ cache.
Jestliže chce procesor provést určitou instrukci, prohledá nejdříve své vlastní
datové registry. Nenalezne-li zde potřebná data, pokračuje v L1 a poté v L2.
Když data nejsou v žádné cache, přichází na řadu RAM, případně následují další
úrovně (pevný disk a jiná média), odkud pak požadovaná data načte. U dobře
navržených procesorů s kvalitními algoritmy dosahuje míra úspěšnosti nalezení
požadovaných dat bez zbytečného zpoždění prohledáváním všech úrovní paměti až
90 %.
U high-end procesorů trvá přenesení informace z L1 1-3 hodinové cykly (impulzy)
zatímco CPU čeká a nepracuje. Totéž se děje v periodě 6-12 impulzů pro interní
L2 cache, u externí L2 jsou to pak desítky až stovky cyklů.
Obecně můžeme konstatovat, že úloha cache je mnohem důležitější v serverech
nežli v obyčejných PC. To jednoduše proto, že výměna dat mezi procesorem a
pamětí je většinou podstatně vyšší (díky transakcím s klienty). Intel v roce
1991 vytvořil z 50MHz PC (s procesory 80486) servery přidáním 50MHz cache do
čipu procesoru. Ta zajistila běh programů na plných 50 MHz, ačkoliv rozhraní
mezi procesorem a pamětí pracovalo na pouhých 25 MHz.
Procesor vs. zbytek systému
Právě popsané hierarchické uspořádání paměti pomáhá v současné době překlenout
stále se rozšiřující propast mezi rychlostí procesorů a přístupovou rychlostí
DRAM pamětí. Výrobci procesorů soustřeďují pozornost víceméně výlučně na
rychlost samotného procesoru a dosahují během 1 roku jejího zvýšení o takřka 50
%. Vývoj DRAM je naproti tomu znatelně pomalejší, činí ročně cca 5 %. "Řešením
tohoto rostoucího výkonnostního chaosu by se mělo stát přidání cache 3., možná
i 4. úrovně," říká k tomu profesor John Shen z pittsburské Carnegie Mellon
University.
Něco na tom zřejmě bude, důkazem je fakt, že Intel by měl ještě v letošním roce
představit v 64bitovém procesoru Itanium právě terciární (Level 3, L3) cache.
Spojení mezi procesorem a L3 cache by přitom mělo zajišťovat rozhraní pracující
na stejné frekvenci jako samotný procesor, tj. 800 MHz.
Také společnost IBM pilně pracuje na vývoji vlastního řešení L3 cache, která by
měla být určena pro její 32 a 64bitové servery Netfinity (s intelovskými
procesory). Má být umístěna na čipu paměťového řadiče. K reálnému použití bude
ale definitivně připravena až koncem příštího roku.
Obě uvedená řešení mají jeden podstatný rozdíl: IBM své řešení hodlá používat v
serverech
se 4-16 procesory a půjde o L3 na úrovni systému. Což znamená, že by měla
pozitivně ovlivnit výkon celého systému, zatímco intelovská L3 zvýší výkon
pouze jednoho procesoru. L3 cache IBM by měla zajistit vysokou dostupnost,
která je důležitá pro elektronický byznys. L3 údajně umožní výměnu či upgrade
hlavní paměti za běhu systému.
V této chvíli je ovšem předčasné posuzovat, které řešení se ukáže jako
výhodnější. Za povšimnutí bude jistě stát také jejich cenový rozdíl.
Větší neznamená nutně lepší
Frekvence neúspěšných prohledávání cache může být samozřejmě jednoduše snížena
zvětšením jejího objemu. To však přináší jiné problémy: Velká cache je poměrně
dosti náročná na spotřebu, vyzařuje tedy velké množství tepla.
Jedním ze způsobů eliminace tohoto problému by mohl být přesun logiky pro cache
management z hardwaru do softwaru. John Shen vysvětluje: "Kompilátor by mohl
potenciálně analyzovat chování programu a generovat instrukce pro přesun dat v
hierarchii úrovní pamětí."
Softwarově řízené cache jsou ale zatím uvězněny mezi zdmi výzkumných
laboratoří. K hlavním problémům patří zejména nutnost přepsat kompilátory a
rekompilovat kódy pro každou novou generaci CPU.
0 1067 / wepn
Co je to cache?
Paměť cache je rychlá vyrovnávací paměť s přímým přístupem používaná procesorem
k dočasnému ukládání informací. Zvyšuje jeho výkon tím, že uchovává často
používaná data a instrukce fyzicky v blízkosti čipu procesoru či přímo na něm,
odkud mohou být rychleji vyhledána a načítána.









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.