Articles

Explainer: L1 vs. L2 vs. L3 Cache

Každý CPU nalézt v každém počítači, z levného notebooku na milion-dolar server, bude mít něco, co se nazývá cache. Spíše než ne, bude mít několik úrovní, také.

musí to být důležité, jinak by to tam bylo? Ale co dělá mezipaměť a proč je potřeba různých úrovní věcí? Co na Zemi vůbec znamená 12-way set asociativní?

co přesně je cache?

TL; DR: je to malá, ale velmi rychlá paměť, která sedí hned vedle logických jednotek CPU.
ale samozřejmě, je toho mnohem víc, co se můžeme dozvědět o cache…

začněme imaginárním, magickým úložným systémem: je nekonečně rychlý, dokáže zpracovat nekonečný počet datových transakcí najednou a vždy udržuje data v bezpečí. Ne, že by k tomu něco vzdáleně existovalo, ale pokud by Ano, Návrh procesoru by byl mnohem jednodušší.

procesory by musely mít pouze logické jednotky pro přidávání, násobení atd. a systém pro zpracování datových přenosů. Je to proto, že náš teoretický úložný systém může okamžitě odesílat a přijímat všechna požadovaná čísla; žádná z logických jednotek by se nezdržovala čekáním na datovou transakci.

ale jak všichni víme, neexistuje žádná technologie magického úložiště. Místo toho máme pevné nebo pevné disky a ani ty nejlepší z nich nejsou ani vzdáleně schopné zvládnout všechny datové přenosy potřebné pro typický procesor.

Velké T’Phon ukládání dat

důvod, proč je to, že moderní Procesory jsou neuvěřitelně rychle … berou jen jednoho cyklu, přidat dva 64 bitové celočíselné hodnoty společně, a na CPU běžící na 4 GHz, toto bude prostě 0.00000000025 sekund nebo čtvrt nanosekundy.

mezitím spinning pevné disky trvat tisíce nanosekund jen najít data na discích uvnitř, natož přenést, a SSD disky stále trvat desítky nebo stovky nanosekund.

takové jednotky samozřejmě nemohou být zabudovány do procesorů, takže to znamená, že mezi nimi bude fyzické oddělení. To jen přidává více času na přesun dat, dělat věci ještě horší.

Velké A ‚ tuin pro ukládání dat, bohužel

Takže to, co potřebujeme, je další ukládání dat systém, který sedí mezi procesor a hlavní paměť. Musí být rychlejší než disk, být schopen zvládnout spoustu datových přenosů současně a být mnohem blíže procesoru.

No, už máme takovou věc a nazývá se RAM a každý počítačový systém má některé pro tento účel.

téměř ze všech tohoto druhu úložiště je DRAM (dynamic random access memory) a je schopen přenášet data mnohem rychleji než jakýkoli disk.

nicméně, zatímco DRAM je super rychlý, nemůže ukládat nikde poblíž tolik dat.

Některé z největších DDR4 čipy vyrobené společností Micron, jeden z mála výrobců DRAM, drží 32 Gbits nebo 4 GB dat; největší pevné disky držte 4000 krát více, než je tato.

i když jsme zlepšili rychlost naší datové sítě, další systémy-hardware a software-bude nutné zjistit, jaké údaje by měly být uchovávány v omezeném množství DRAM, připraveno pro CPU.

alespoň DRAM může být vyroben tak, aby byl v balíčku čipů (známý jako embedded DRAM). Procesory jsou však docela malé, takže do nich nemůžete tolik držet.

10 MB DRAM nalevo od grafického procesoru Xbox 360. Zdroj: CPU Grave Yard

drtivá většina DRAM je umístěna hned vedle procesoru, zapojena do základní desky a je to vždy nejbližší součást CPU, v počítačovém systému. A přesto to stále není dost rychlé…

DRAM stále trvá asi 100 nanosekund, než najde data, ale alespoň může přenášet miliardy bitů každou sekundu. Vypadá to, že budeme potřebovat další fázi paměti, abychom se dostali mezi jednotky procesoru a DRAM.

zadejte stage left: SRAM (static random access memory). Kde DRAM používá mikroskopické kondenzátory ukládat data v podobě elektrického náboje, SRAM používá tranzistory udělat stejnou věc, a ty mohou pracovat téměř tak rychle, jako logické jednotky v procesoru (zhruba 10 krát rychlejší než DRAM).

existuje samozřejmě nevýhoda SRAM a opět jde o prostor.

tranzistorová paměť zabírá mnohem více místa než DRAM: pro stejný čip 4 GB DDR4 byste získali méně než 100 MB v hodnotě SRAM. Ale protože je vyroben stejným procesem jako vytvoření CPU, SRAM může být postaven přímo uvnitř procesoru, co nejblíže logickým jednotkám.

tranzistorová paměť zabírá mnohem více místa než DRAM: pro stejný čip 4 GB DDR4 byste získali méně než 100 MB v hodnotě SRAM.

s každou další fází jsme zvýšili rychlost přesunu dat o nákladech na to, kolik můžeme uložit. Mohli bychom pokračovat v přidávání ve více sekcích, přičemž každá z nich je rychlejší, ale menší.

a tak se dostáváme k techničtější definici toho, co je mezipaměť: je to několik bloků SRAM, všechny jsou umístěny uvnitř procesoru; používají se k zajištění toho, aby logické jednotky byly co nejvíce zaneprázdněny odesíláním a ukládáním dat při super rychlých rychlostech. Spokojená? Dobře, protože odteď to bude mnohem složitější!

Cache: víceúrovňové parkoviště

jak jsme diskutovali, mezipaměť je nutná, protože neexistuje magický úložný systém, který dokáže držet krok s požadavky na data logických jednotek v procesoru. Moderní Procesory a grafické procesory obsahují řadu SRAM bloky, které jsou vnitřně uspořádány do hierarchie-posloupnost cache, které jsou řazeny následovně:

na obrázku výše, CPU je reprezentován černý čárkovaný obdélník. ALUs (aritmetické logické jednotky) jsou zcela vlevo; jedná se o struktury, které napájejí procesor a zpracovávají matematiku, kterou čip dělá. Zatímco jeho technicky není cache, nejbližší úroveň paměti ALUs jsou registry (jsou seskupeny do souboru registru).

každý z nich má jedno číslo, například 64bitové celé číslo; samotná hodnota může být údaj o něčem, kód pro konkrétní instrukci nebo paměťová adresa některých jiných dat.

soubor registru v stolním CPU je poměrně malý – například v jádru Intel i9-9900K jsou v každém jádru dvě banky a jedna pro celá čísla obsahuje pouze 180 64bitových registrů. Druhý soubor registru pro vektory (malá pole čísel) má 168 256bitových záznamů. Celkový soubor registru pro každé jádro je tedy o něco méně než 7 kB. Pro srovnání, soubor registru ve streamovacích Multiprocesorech (ekvivalent GPU jádra CPU) Nvidia GeForce RTX 2080 Ti má velikost 256 kB.

Registry jsou SRAM, stejně jako cache, ale jsou stejně rychlé jako ALUs, které slouží, tlačí data dovnitř a ven v jediném hodinovém cyklu. Ale nejsou navrženy tak, aby obsahovaly příliš mnoho dat (jen jeden kus), což je důvod, proč jsou v okolí vždy nějaké větší bloky paměti: toto je mezipaměť úrovně 1.

Intel Skylake CPU, zvětšil záběr jednoho jádra. Zdroj: Wikichip

výše uvedený obrázek je zvětšený záběr jednoho jádra z návrhu stolního procesoru Skylake společnosti Intel.

ALUs a soubory registru lze vidět zcela vlevo, zvýrazněné zeleně. V horní polovině obrázku, v bílé barvě, je mezipaměť dat úrovně 1. To nemá moc informací, jen 32 kB, ale stejně jako registry, je to velmi blízko do logických celků a běží stejnou rychlostí jako oni.

druhý bílý obdélník označuje mezipaměť instrukcí úrovně 1, také o velikosti 32 kB. Jak již název napovídá, ukládá různé příkazy připravené k rozdělení na menší, takzvané mikro operace (obvykle označené jako µops), aby ALUs mohl provádět. K dispozici je také mezipaměť a můžete ji klasifikovat jako úroveň 0, protože je menší (drží pouze 1 500 operací) a blíže než mezipaměti L1.

možná se divíte, proč jsou tyto bloky SRAM tak malé; proč nejsou megabajty? Spolu, dat a instrukční cache zabírají téměř stejné množství prostoru v čipu jako hlavní logické celky, takže větší by zvýšení celkové velikosti die.

ale hlavním důvodem, proč mají jen několik kB, je to, že čas potřebný k nalezení a načtení dat se zvyšuje s větší kapacitou paměti. L1 cache musí být opravdu rychlý, a tak kompromis musí být dosaženo mezi velikostí a rychlostí … v nejlepším případě, to trvá asi 5 hodiny cykly (delší pro hodnoty s plovoucí desetinnou čárkou) získat data z mezipaměti, připraven k použití.

Skylake je L2 cache: 256 kB SRAM bohu,

Ale pokud to byl pouze vyrovnávací paměť uvnitř procesoru, pak jeho výkon by zasáhla náhlá zdi. To je důvod, proč mají všichni do jader zabudovanou další úroveň paměti: mezipaměť úrovně 2. Jedná se o obecný blok úložiště, který drží pokyny a data.

je To vždycky trochu větší, než Úroveň 1: AMD Zen 2 procesory balení až 512 kB, takže nižší úrovně cache mohou být stále dobře zásobený. Tato extra velikost je však za cenu a nalezení a přenos dat z této mezipaměti trvá zhruba dvakrát déle, ve srovnání s úrovní 1.

Jít zpět v čase, do dob původní Intel Pentium, Level 2 cache byl samostatný čip, a to buď na malém plug-in spojů (jako RAM DIMM), nebo zabudované do hlavní desky. To se nakonec propracovala na CPU balíček sám, až je konečně integrován do CPU die, v likes Pentium III a AMD K6-III procesory.

tento vývoj byl brzy následován další úrovní mezipaměti, tam podporovat další nižší úrovně, a to přišlo kvůli vzestupu vícejádrových čipů.

čip Intel Kaby Lake. Zdroj: Wikichip

tento obrázek čipu Intel Kaby Lake ukazuje 4 jádra vlevo uprostřed(integrovaný GPU zabírá téměř polovinu matrice vpravo). Každé jádro má svou vlastní „soukromou“ sadu mezipaměti úrovně 1 a 2 (bílé a žluté zvýraznění), ale také přicházejí s třetí sadou bloků SRAM.

mezipaměť úrovně 3, i když je přímo kolem jednoho jádra, je plně sdílena s ostatními-každý z nich může volně přistupovat k obsahu mezipaměti L3 jiného. Je mnohem větší (mezi 2 a 32 MB), ale také mnohem pomalejší, v průměru přes 30 cyklů, zejména pokud jádro potřebuje použít data, která jsou v bloku mezipaměti v určité vzdálenosti.

níže vidíme jediné jádro v architektuře AMD Zen 2: 32 kB Úroveň 1 datové a instrukční mezipaměti v bílé barvě, 512 KB úroveň 2 ve žluté barvě a obrovský blok 4 MB mezipaměti L3 v červené barvě.

AMD Zen 2 CPU, zvětšený záběr jednoho jádra. Zdroj: Fritzchens Fritz

počkejte chvíli. Jak může 32 kB zabírat více fyzického prostoru než 512 kB? Pokud Úroveň 1 obsahuje tak málo dat, proč je proporcionálně mnohem větší než mezipaměť L2 nebo L3?

více než jen číslo

Cache zvyšuje výkon tím, že urychluje přenos dat do logických jednotek a udržuje kopii často používaných instrukcí a dat v okolí. Informace uložené v mezipaměti je rozdělen do dvou částí: samotná data a místo, kde byl původně umístěn v systémové paměti/storage-tato adresa se nazývá cache tag.

když procesor spustí operaci, která chce číst nebo zapisovat data z / do paměti, spustí se kontrolou značek v mezipaměti úrovně 1. Pokud je přítomen požadovaný (zásah do mezipaměti), lze k těmto datům přistupovat téměř okamžitě. K chybě mezipaměti dochází, když požadovaná značka není na nejnižší úrovni mezipaměti.

nový záznam je vytvořen v L1 cache, a zbytek architektura procesoru přebírá, lov zpět přes další úrovně vyrovnávací paměti (celou cestu zpět do hlavního úložného disku, pokud je to nutné) najít data pro tuto značku. Ale aby se v mezipaměti L1 pro tuto novou značku vytvořilo místo, musí být do L2 vždy zavedeno něco jiného.

to má za následek téměř konstantní míchání o datech, vše dosaženo jen v několika hodinových cyklů. Jediným způsobem, jak toho dosáhnout, je mít složitou strukturu kolem SRAM, která zvládne správu dat. Dát jinou cestu: pokud CPU jádro tvořilo jen jednu ALU, pak L1 cache by bylo mnohem jednodušší, ale protože tam jsou desítky z nich (z nichž mnohé budou žonglování dvě vlákna instrukcí), paměť vyžaduje více připojení, aby vše, co na cestách.

můžete použít bezplatné programy, jako je CPU-Z, pro kontrolu informací o mezipaměti procesoru, který napájí váš vlastní počítač. Ale co všechny tyto informace znamenají? Důležitým prvkem je sada štítků asociativní – jedná se o pravidla vynucená tím, jak jsou bloky dat ze systémové paměti zkopírovány do mezipaměti.

výše uvedené informace o mezipaměti je pro Intel Core i7-9700K. Jeho Level 1 cache jsou každý rozděleny do 64 malých bloků, tzv. sad, a každý z nich je dále rozdělena do vyrovnávací paměti řádků (64 bajtů velikost). Set asociativní znamená, že blok dat ze systémové paměti je mapován na řádky mezipaměti v jedné konkrétní sadě, spíše než být volně mapován kdekoli.

8cestná část nám říká, že jeden blok může být spojen s 8 řádky mezipaměti v sadě. Vyšší úroveň asociativita (tj. více způsoby), tím lepší šance na získání cache hit, když CPU jede na lov dat a snížení sankce způsobené cache. Nevýhodou je, že přidává větší složitost, zvýšenou spotřebu energie a může také snížit výkon, protože existuje více řádků mezipaměti pro zpracování bloku dat.

L1+L2 včetně cache, L3 oběť cache, write-back politiky, dokonce ECC. Zdroj: Fritzchens Fritz

další aspekt složitosti mezipaměti se točí kolem toho, jak jsou data uchovávána na různých úrovních. Pravidla jsou nastavena v něčem, čemu se říká politika inkluze. Například procesory Intel Core mají plně inkluzivní mezipaměť L1+L3. To znamená, že stejná data například v úrovni 1 mohou být také v úrovni 3. To se může zdát jako plýtvání cenný prostor mezipaměti, ale výhodou je, že pokud se procesor dostane slečna, při hledání značek v nižší úrovni, není třeba lovit přes vyšší úrovni najít.

ve stejných procesorech je mezipaměť L2 neinkluzivní: všechna uložená data nejsou zkopírována na žádnou jinou úroveň. To šetří místo, ale vede k tomu, že paměťový systém čipu musí prohledávat L3 (což je vždy mnohem větší), aby našel zmeškanou značku. Mezipaměti obětí jsou podobné tomuto, ale používají se k ukládání informací, které jsou vytlačeny z nižší úrovně – například procesory AMD Zen 2 používají mezipaměť obětí L3, která pouze ukládá data z L2.

existují další zásady pro mezipaměť, například když se data zapisují do mezipaměti a do hlavní systémové paměti. Jedná se o tzv. napište politiky a většina dnešních Procesorů použít write-back cache; to znamená, že když data budou zapsána do cache úrovni, tam je zpoždění, než se systém paměti se aktualizuje s kopii. Z větší části tato pauza běží tak dlouho, dokud data zůstanou v mezipaměti – pouze poté, co je spuštěn, získá RAM informace.

Nvidia GA100 grafický procesor, zabalené s celkem 20 MB L1 a 40 MB L2 cache

Pro procesor návrhářů, výběr množství, typ a politiky cache je především o vyrovnávání touha po větší procesor schopnosti proti zvýšené složitosti a požadované zemřít prostor. Pokud by bylo možné mít 20 MB, 1000-way plně asociativní úrovně 1 Cache bez čipy stává velikost Manhattan (a spotřebovává stejný druh energie), pak bychom všichni měli Počítače Sportovní takové čipy!

nejnižší úroveň mezipaměti v dnešních procesorech se za poslední desetiletí tolik nezměnila. Mezipaměť úrovně 3 však nadále rostla. Před deseti lety jste mohli získat 12 MB, pokud jste měli to štěstí, že vlastníte 999 $ Intel i7-980X. za polovinu této částky dnes získáte 64 MB.

Cache, v kostce: naprosto potřebné, naprosto úžasné kousky technologie. Už jsme se podíval na další cache, typy Procesorů a Gpu (např. překlad vyhledávání nárazníky nebo textury cache), ale protože všichni sledovat jednoduchou strukturu a vzor úrovních, jak jsme probrali tady, že možná nebude znít tak složité.

vlastníte počítač, který měl mezipaměť L2 na základní desce? A co ty procesory Pentium II a Celeron založené na slotech (např. Vzpomenete si na svůj první procesor, který sdílel L3? Dejte nám vědět v sekci komentáře.

Nákupní zkratky:
  • AMD Ryzen 9 3900X na Amazonu
  • AMD Ryzen 9 3950X na Amazonu
  • Intel Core i9-10900K na Amazonu
  • AMD Ryzen 7 3700X na Amazonu
  • Intel Core i7-10700K na Amazonu
  • AMD Ryzen 5 3600 na Amazonu
  • Intel Core i5-10600K na Amazonu

Čtení. Vysvětlivky na TechSpot

  • Wi-Fi 6 vysvětleno: Nová generace Wi-Fi
  • co jsou tenzorová jádra?
  • co je Binning Chip?