Cache paměť - mezipaměť 10.přednáška
Urychlení přenosu mezi procesorem a hlavní pamětí Hlavní paměť procesoru je typu DRAM a je pomalá. Proto se mezi pomalou hlavní paměť a procesor vkládá menší, ale rychlá vyrovnávací (cache) paměť SRAM. Rychlost cache paměti nespočívá jen v použití rychlejší technologie SRAM, ale také v tom, že je menší (je jednodušší proces dekódování adresy).
[email protected]
2
Mezipaměť - cache Mezipaměť (cache) je vlastně velmi rychlým paměťovým zásobníkem (typ SRAM), určeným k dočasnému ukládání dat, které procesor potřebuje nebo bude potřebovat s velkou pravděpodobností. Díky tomu je procesor schopen načíst data podstatně rychleji než přímo z hlavní paměti. V současnosti se v počítačích používají dvě až tři úrovně mezipamětí: L1 cache – mezipaměť první úrovně L2 cache – mezipaměť druhé úrovně L3 cache – mezipaměť třetí úrovně
[email protected]
3
Mezipaměť procesor
L1 cache
L2 cache
L3 cache
hlavní paměť
L1 cache integrována do procesoru velikost 8-64 KB pro ukládání právě využívané či potřebné pracovní sady dat a kódu pracuje stejnou rychlostí jako procesor
[email protected]
4
Mezipaměť procesor
L1 cache
L2 cache
L3 cache
hlavní paměť
L2 cache, L3 cache součást procesoru nebo základní desky velikost L2:64-512 KB, L3:1-4MB mezistupeň mezi L1 a hlavní pamětí, obsahuje data, která procesor přímo nepoužívá, ale pravděpodobně bude potřebovat pracuje stejnou rychlostí jako procesor nebo základní deska – stále rychlejší než čtení přímo z hlavní paměti
[email protected]
5
Mezipaměť Procesor Blok
L1 cache
L2 (L3) cache
Operační paměť
Blok
Práce cache paměti vychází ze skutečnosti, že program má tendenci se při své práci určitou dobu zdržovat na určitém místě paměti, a to jak při zpracování instrukcí, tak při načítání (zapisování) dat z (do) paměti - tzv. princip lokality
[email protected]
6
Druhy cache pamětí Podle způsobu organizace rozlišujeme následující tři druhy cache paměti: Cache s přímým zobrazením Asociativní cache Cache s omezenou asociativitou (cache se stupněm asociativity n)
[email protected]
7
Cache s přímým zobrazením Hlavní paměť
Hlavní paměť 2n bytů, rozdělena do bloků 4B Cache 2p řádků (slotů)
Adresa 0 1 2 3
Číslo bloku 0
Cache
4 Řádek
Bit platnosti 1
Bit platnosti udává, zda je obsah slotu platný
[email protected]
Obsah bloku
Řádek 0 1 2
Do slotu lze uložit obsah jednoho bloku, tj. 4B dat Tag slouží k identifikaci bloku, který je v slotu uložen
Tag
2p–1
n
2 –1
Adresa Číslo bloku n – 2 – p bitů tag
Byte p bitů
2 bity
Adresa řádky v cache
8
Cache s přímým zobrazením Pro přiřazení řádku cache paměti i bloku paměti k se používá funkce i = k modulo M , kde M = 2p je počet řádků cache tabulky. Počet řádků tabulky se tedy volí tak, aby byl mocninou 2. Do řádky 0 cache paměti budou tedy ukládány bloky: 0, M , 2M, . . . Do řádky 1 budou ukládány bloky: 1 , M + 1 , 2M + 1 , . . . Do řádky j budou ukládány bloky: j , M + j , 2M + j , . . . atd.
[email protected]
9
Cache s přímým zobrazením
[email protected]
Adresa
Tag
Tag
Slot
Data
Inf.
Dekodér
Určitý blok je vždy uložen do stejného řádku cache tabulky. Je-li M = 2p , pak p méně významných bitů čísla bloku určuje číslo řádku cache tabulky, ve kterém je blok uložen. Číslo bloku má n – 2 bitů. Bloky, které jsou ukládány do stejné řádky, se liší v n – 2 – p nejvyšších bitech čísla bloku. Obsah těchto bitů je ukládán do cache paměti jako tag.
Komparátor Data
10
Příklad Fyzická adresa paměti je n = 24 bitů. Paměťová buňka má velikost 1B. Velikost hlavní paměti je 16 MB. Bloky paměti, které se přenášejí mezi cache pamětí a hlavní pamětí, mají velikost 4B. Paměť je tedy rozdělena na 4M bloků. Kapacita cache paměti je 256 kB. Proto současně v ní může být umístěno 256k/4 bloků, tj. 64k bloků. Cache tabulka má 64k řádek s adresami 0,1 ,2 , . . . FFFF. Bit platnosti
Tag
Obsah bloku
Ukládané bloky (hexadecimálně)
0
0 , 1 00 00 , . . . , 3F 00 00
1
1 , 1 00 01 , . . . , 3F 00 01
2
2 , 1 00 02 , . . . , 3F 00 02
FFFF
FF FF, 1 FF FF, . . . 3FF FF
Adresa Tag
[email protected]
6
Řádek cache paměti 16
Byte 2
11
Po zapnutí procesoru je obsah cache paměti náhodný. Proto se nejdříve nastaví všechny bity platnosti na 0. Postupně je tabulka zaplňována bloky, které procesor potřebuje ke své činnosti a které proto přepisuje do cache paměti – 17 00 00, 1A 00 02 Do cache paměti byly dále postupně uloženy následující bloky: 37 00 01 , 27 00 00 , 23 FF FF, B 00 00
[email protected]
Příklad Bit platnosti
Tag
Obsah bloku
Uložený blok (hexadecimálně) 17 00 00
0 1 2
1 0 1
1A 00 02
FFFF
1
1 FF FF
Bit platnosti 0
Tag
Obsah bloku
Uložený blok (hexadecimálně) B 00 00 37 00 01
1 2
1 1 1
1A 00 02
FFFF
1
23 FF FF
12
Asociativní cache U asociativní cache paměti může být blok uložen do libovolné řádky cache tabulky. Jako tag proto musí sloužit celé číslo bloku. Při hledání konkrétního bloku v cache je nutno porovnat tag ve všech řádcích cache tabulky. To je obtížný úkol a je řešitelný pouze dost složitými obvody, které vyžadují velké množství dalších hradel. Proto se konstruují asociativní paměti jen s menší kapacitou.
[email protected]
13
Asociativní cache Adresa Komparátor
Tag Tag
Data
Inf.
Komparátor Komparátor
Data Adresa
[email protected]
Tag
Byte
22
2
14
Strategie při výběru řádku (slotu) pro uložení bloku Přitom se mohou řídit jednou z následujících strategií: Výběr nejméně používané řádky (least freaquently used strategy) Výběr nejdéle nepoužívané řádky (least recently used strategy) Výběr řádky, která je obsazena nejdéle (FIFO strategy) Náhodný výběr řádku (random strategy)
První tři strategie vyžadují, aby v každé řádce byla položka, do které řídící obvody ukládají informaci o využití řádky. Náhodná strategie to nevyžaduje a nejjednodušeji se proto implementuje. Experimenty ukázaly, že náhodná strategie výběru řádky je jen o málo méně efektivní než ostatní strategie.
[email protected]
15
Cache se stupněm associativity n Pokud má cache asociativitu n, skládá se z n tabulek se stejným počtem řádků, umístěných vedle sebe. Řádek výsledné tabulky tvoří skupina řádků původních tabulek (skupina, angl. set). Původní řádky, ze kterých se skupina skládá, nazveme pro odlišení sloty. Každý slot skupiny obsahuje bit platnosti, tag a data (tj. obsah jednoho bloku). Bit platn.
Tag
O bsah bloku
B it platn.
Tag
O bsah bloku
0 1 2
7FFF Adresa Tag 7
[email protected]
Skupina 15
B yte 2
16
Cache se stupněm associativity n Má-li výsledná tabulka M skupin, ukládá se k-tý blok do jednoho ze slotů skupiny i , kde i = k modulo M. Při hledání bloku v cache paměti, řídící obvody nejdříve podle adresy vyberou skupinu, ve které může být blok uložen. Blok může být uložen jen v jedné skupině a výběr této skupiny je přímý. Hledání bloku v rámci skupiny pak řídící obvody provedou asociativně. Adresa Tag Skupina Data Inf.
Tag
Data Inf.
Dekodér
Dekodér
Tag
Komparátor
Komparátor Data
[email protected]
Data Data
17
Cache se stupněm associativity n Cache se stupněm asociativity n je mezistupněm mezi cache pamětí s přímým výběrem a asociativní pamětí. Pokud je asociativita n = 1, jedná se o cache s přímým zobrazením. Pokud je počet skupin M = 1 (tj . výsledná tabulka má jen jeden řádek či skupinu), jedná se o asociativní cache.
[email protected]
18
Spolupráce procesor-cache paměť Při čtení HP procesor její obsah zapíše do cache Při zápisu do HP používá tyto základní strategie : Okamžitý zápis (write through strategy) Opožděný zápis (write back strategy) Okamžitý zápis je jednodušší strategie. Procesor zapíše nový obsah paměťového místa do hlavní paměti i do cache paměti. Při každé strojové instrukci zápisu do paměti se tedy provádí i zápis do hlavní paměti. Tento způsob řešení tedy znamená značné zatížení systémové sběrnice.
[email protected]
19
Spolupráce procesor-cache paměť Opožděný zápis Procesor zapíše nový obsah paměťového místa pouze do cache paměti. V řádce cache tabulky zaznamená do bitu UPDATE, že došlo ke změně obsahu bloku. Nastavení bitu UPDATE znamená, že obsah řádky cache tabulky již nadále není platný. Předtím než řídící obvody cache paměti zapíší do této řádky cache tabulky obsah nového bloku, musí zajistit přepis obsahu původního bloku do hlavní paměti. Výhodou tohoto způsobu zápisu je menší zátěž systémové sběrnice.
[email protected]
20
Koherence cache pamětí V multiprocesorovém systému, každý procesor má obvykle vlastní cache. Procesory pracují nezávisle na sobě a sdílejí společnou paměť. Musí být zajištěno, že procesory čtou z hlavní paměti stejný obsah - koherence cache pamětí. Adaptéry dnešních počítačů používají přímý přístup do paměti (DMA) a pracují nezávisle na procesoru. Proto se může stát, že adaptér pozmění v hlavní paměti obsah paměťového místa a vnitřní cache procesoru nebude obsahovat platná data.
[email protected]
21
Koherence cache pamětí Řešení koherence podle typu zápisu Okamžitý zápis (write through strategy) Řešení koherence cache pamětí je jednodušší v případě použití této strategie. Spočívá v tom, že řadiče cache pamětí musí sledovat provoz na systémové sběrnici. Pokud zjistí, že do hlavní paměti byl zapsán blok, jehož kopii mají v cache paměti, musí svoji kopii označit jako neplatnou (tj. nastavit bit platnosti v řádku, kde je kopie uložena na 0).
[email protected]
22
Koherence cache pamětí Opožděný zápis (write back strategy) Byla navržena celá řada protokolů, které problém koherence řeší. PENTIUM například používá protokol MESI K realizaci protokolu jsou tedy třeba čtyři bity a sice: – – – –
bit modified (M) (bit změny) bit excluded (E) (bit vyloučení) bit shared (S) (bit sdílení) bit invalid (I) (bit platnosti)
Název protokolu MESI je složen ze zkratek těchto bitů.
[email protected]
23
Přehled architektur procesorů
Architektura vybraných procesorů Přehled procesorů firmy Intel ostatní výrobci procesorů (např. AMD) procházejí podobným vývojem Procesor 4004 Navržen v roce 1969 4bitový procesor určený pro elektronické kalkulátory Procesor 8080 8bitový procesor určený pro první 8bitové osobní počítače
[email protected]
25
Architektura vybraných procesorů Procesor 8086 uveden na trh v letech 1979 - 1980 plně 16bitový procesor: šířka slova: 16 bitů šířka přenosu dat: 16 bitů kompatibilní s procesorem 8080 používaný v prvních počítačích PC a PC/XT vybaven 20bitovou adresovou sběrnicí ⇒ velikost adresovatelné paměti 1 MB Procesor 8088 podobný svému předchůdci má pouze 8bitovou datovou sběrnici zaveden z cenových důvodů
[email protected]
26
Architektura vybraných procesorů Procesor 80186/80188 podobné procesorům 8086/8088 efektivnější mikrokód nezaznamenaly většího rozšíření Procesor 80286 navržen v roce 1981 obsahuje asi 134 000 tranzistorů 24-bitová adresová sběrnice – 16MB podporovaná paměť 16-bitová datová sběrnice, 16-bitové registry bez cache pracuje ve dvou režimech: reálný režim (real mode) chráněný režim (protected mode)
[email protected]
27
Architektura vybraných procesorů Intel 80386 Na trh uveden v roce 1986 Později prodáván pod oficiálním názvem 80386DX 32-bitová adresová sběrnice – 4GB podporovaná paměť 32-bitová datová sběrnice, 32-bitové registry bez L1 cache, obsahuje TLB cache Pracuje ve třech režimech: reálný režim (real mode): režim podobný reálnému režimu předchozích procesorů používá stejný adresovací mechanismus: – stejná maximální velikost operační paměti (1 MB) – stejná velikost jednoho segmentu (64 kB)
v tomto režimu mohou pracovat programy určené pro předešlé procesory (8086/8088, 80186/80188)
[email protected]
28
Architektura vybraných procesorů chráněný režim (protected mode): podobný chráněnému režimu procesoru 80286 adresová sběrnice má šířku 32 bitů ⇒ fyzický adresový prostor 4 GB virtuální režim (virtual mode): plně podřízen chráněnému režimu procesor pracuje podobně jako procesory 8086/8088 (80186/80188) má možnost virtualizovat 1 MB operační paměti, který mohl adresovat procesor 8086 a uložit jej kdekoliv do 4 GB operační paměti
[email protected]
29
Architektura vybraných procesorů Intel 80386SX Velmi podobný procesoru 80386DX Pracuje ve stejných režimech Není plně 32bitový: - šířka slova: 32 bitů - šířka přenosu dat: 16 bitů Zaveden z cenových důvodů Dovoluje, aby na něm pracoval 32bitový software Výkon odpovídal zhruba procesoru 80286
[email protected]
30
Architektura vybraných procesorů Intel 80486 Vyroben v roce 1989 32-bitová adresová sběrnice – 4GB podporovaná paměť 32-bitová datová sběrnice, 32-bitové registry interní L1 cache 8-16KB bez L2 cache součástí procesoru je jednotka pro operace s čísly v pohyblivé řádové čárce (FPU) – koprocesor má rychlejší a rozsáhlejší mikrokód pracuje ve stejných třech režimech jako procesor 80386, používá stejný adresovací mechanismus Proudové zpracování instrukcí – pipelining - je prováděno v jedné frontě (pipeline) ⇒ skalární procesor
[email protected]
31
Architektura vybraných procesorů Intel 80486SX plná šířka přenosu dat (32 bitů) obsahuje 8 kB L1 cache paměti „nemá“ numerický koprocesor - numerický koprocesor ve skutečnosti má, ale je vyřazen z činnosti (uživatel jej nemůže nijak aktivovat) zaveden z cenových důvodů
[email protected]
32
Architektura vybraných procesorů Intel 80486DX2 Prakticky stejný procesor jako 80486DX Pracuje se dvěmi frekvencemi: navenek s frekvencí x MHz (např. 33 MHz) vnitřně s frekvencí 2x MHz (např. 66 MHz) Rychlost odpovídá asi 2/3 rychlosti, jakou by měl procesor DX se stejnou frekvencí podobně pracoval i procesor 80486DX4: navenek x MHz (např. 33 MHz) vnitřně 3x MHz (např. 100 MHz)
[email protected]
33
Architektura vybraných procesorů Procesory páté generace:
Pentium procesor vyrobený v roce 1993 32-bitová adresová sběrnice – 4GB podporovaná paměť 64-bitová vnější datová sběrnice 32-bitové registry interní oddělená (pro data a instrukce) L1 cache 2x8-2x16KB bez L2 cache dvě ALU, interní FPU superskalární architektura dynamické předvídání skoků – paměť BTB
[email protected]
34
Architektura vybraných procesorů dynamické předvídání skoků – paměť BTB (Branch Target Buffer) Nová položka do BTB
skok byl Hodnoty bitů: 11 Předpověď: skok bude skok nebyl
skok byl
Hodnoty bitů: 10 Předpověď: skok bude skok nebyl
skok byl
Hodnoty bitů: 01 Předpověď: skok bude skok nebyl
skok byl
Hodnoty bitů: 00 Předpověď: skok nebude skok nebyl
[email protected]
35
Architektura vybraných procesorů Procesory šesté generace:
P6 (Pentium Pro, Pentium II, Celeron, Pentium III, …) od roku 1995 36-bitová adresová sběrnice – 64GB podporovaná paměť 64-bitová vnější datová sběrnice 32-bitové registry interní oddělená L1 cache 2x16KB interní L2 cache 128KB-2MB tři ALU (Celeron dvě), interní FPU vylepšená superskalární architektura – 3 fronty dynamické vykonávání instrukcí architektura DIB – 2 datové sběrnice (P-zákl.deska, P-cache) architektura ATC (PIII) podpora technologie SSE – zrychlení při práci se zvukem, grafikou, internetem, … podpora MMX – instrukce pro multimédia
[email protected]
36
Architektura vybraných procesorů DIB (Dual Independent Bus) L2 cache paměť komunikuje s procesorem prostřednictvím speciální sběrnice Pentium Pro L2 cache
1 GB/s
Jádro (čip)
CPU bus - 528 MB/s Operační paměť
[email protected]
CPU-PCI bridge
37
Architektura vybraných procesorů ATC (Advanced Transfer Cache) - PIII L2 cache, která je integrována na stejném čipu jako procesor, pracuje na stejné frekvenci a komunikuje s procesorem pomocí 256 b sběrnice
Čip
Tag
[email protected]
Pentium III L2 cache
Čip
Tag
Pentium III
L2 cache
38
Architektura vybraných procesorů Technologie MMX Rozšíření architektury procesorů Intel Poskytuje podporu pro multimediální aplikace Zahrnuje: – 57 nových instrukcí orientovaných na práci s multimediálními aplikacemi – osm 64 bitových registrů – 4 datové typy
Používá techniku SIMD (Single Instruction Multiple Data), která dovoluje zpracovat mnoho informací během jedné instrukce Možnosti MMX jsou využívány především aplikacemi pro práci s: – – – – –
2D / 3D grafikou zvukem rozpoznáváním řeči videem kompresí dat
[email protected]
39
Architektura vybraných procesorů SSE - Internet Streaming SIMD Extensions (IST - Internet Streaming Technology): 70 nových instrukcí pro: – zpracování obrazu – práci s 3D grafikou – zpracování audia a videa (umožňuje softwarové dekódování formátu MPEG2 při plné rychlosti) – rozpoznávání řeči
podpora (nová jednotka) pro zpracování čísel v pohyblivé desetinné čárce – umožňuje provedení až čtyř operací s desetinnými čísly během jednoho taktu
[email protected]
40
Architektura vybraných procesorů Procesory sedmé generace:
Pentium 4, Xeon, Xeon MP 36-bitová adresová sběrnice – 64GB podporovaná paměť 64-bitová vnější datová sběrnice – vyšší rychlost 32-bitové registry interní oddělená L1 cache 12+8KB interní L2 cache 128-1024KB L3 cache 0-2MB hyperskalární architektura – architektura NetBurst hypervláknová technologie vylepšené dynamické vykonávání instrukcí architektura DIB podpora technologie SSE2, SSE3
[email protected]
41
Architektura vybraných procesorů mikroarchitektura NetBurst hyperskalární technologie – zdvojnásobuje (oproti procesoru Pentium III) hloubku proudového zpracování
systémová sběrnice s frekvencí „400 MHz“, „533 MHz“ nebo „800 MHz“ – dosaženo přidáním speciálních signálů, které dovo-lují během jednoho taktu na 100 MHz (133 MHz, 200 MHz) systémové sběrnici, uskutečnit čtyři datové přenosy (po 8 B) – přenosová rychlost až 3,2 GB/s (4,3 GB/s; 6,4 GB/s)
výkonná stopovací cache – cache paměť dovolující uložit 12 k dekódovaných mikrooperací (microops)
dvojnásobný takt ALU – dvě ALU, s dvojnásobným taktem oproti vnitřní frekvenci procesoru – základní operace prováděny během 1/2 taktu
[email protected]
42
Architektura vybraných procesorů Hypervláknová technologie (Hyperthreading technology) technologie umožňující programovému vybavení „vidět“ dva procesory dovoluje procesoru spouštět dvě výpočtová vlákna (threads) ve stejný okamžik
[email protected]
43
Architektura vybraných procesorů Procesory osmé generace:
Itanium, Itanium 2 44(50)-bitová adresová sběrnice – 16(1024)TB paměť 64-bitová virtuální adresace 64(128)-bitová vnější datová sběrnice 64-bitové registry interní oddělená L1 cache 16+16KB interní L2 cache 96KB interní L3 cache 2-4MB dvě ALU, dvě FPU (82-bitové operandy) technologie EPIC (Explicitly Parallel Instruction Computing) – až 20 instrukcí během jednoho cyklu Podporuje Bi-endian (Little i Big endian)
[email protected]
44
Architektura vybraných procesorů technologie EPIC (Explicitly Parallel Instruction Computing) všechny instrukce v 128 bitových balíčcích balíček = 3 x 41-bitové instrukce a 5-bitový informační kód balíček načten najednou – podle informačního kódu zjištěn typ operace (celočíselná operace, operace s reálnými čísly, …) jsou-li balíčky odlišného typu je možné zpracovat najednou libovolný počet balíčků lze seskupit do superbalíčku – instrukce se vzájemně neovlivňují Æ mohou být prováděny paralelně v libovolném pořadí
[email protected]
45
Děkuji za pozornost ! Příští přednáška: Adresace paměti, přerušení, sběrnice