Co je mezipaměť CPU?

Moderní CPU běží neuvěřitelně rychle; mohou výrazně překonat systémovou RAM. Tato nerovnováha rychlosti mezi CPU a pamětí by způsobila, že váš procesor bude často nečinný a čeká na odeslání dat, aby mohl pokračovat v procesu. Aby se tomu zabránilo a umožnilo procesorům nadále běžet rychleji a rychleji, používá se mezipaměť CPU.

Jak mezipaměť CPU zrychlí CPU?

Mezipaměť CPU je navržena tak, aby byla co nejrychlejší a aby pak do mezipaměti ukládala data, která CPU požaduje. Rychlost mezipaměti CPU je optimalizována třemi způsoby: latence, šířka pásma a blízkost. Mezipaměť CPU pracuje s velmi nízkou latencí, čímž se minimalizuje doba potřebná k vrácení výsledku. Například Intel i9-9900k má latenci mezipaměti 0,8, 2,4 a 11,1 nanosekund pro mezipaměť L1, L2 a L3. Pro srovnání, latence moderních vysokorychlostních RAM je řádově 14 nanosekund.

Tip: Úrovně mezipaměti budou podrobněji vysvětleny později, ale jednoduše řečeno, nižší vrstvy mezipaměti jsou rychlejší, ale jsou dražší, takže mají nižší kapacitu. Nanosekunda je miliardtina sekundy, takže latence 0,8 sekundy znamená, že návrat výsledku trvá méně než miliardtinu sekundy.

Pokud jde o šířku pásma, mezipaměť CPU nabízí výrazné zlepšení výkonu oproti tradičnímu úložišti a paměti RAM. Rychlosti čtení mezipaměti L1 a L3 mohou dosahovat maximálních 2,3 TB/s a 370 GB/s, zatímco šířka pásma paměti RAM je obvykle kolem 40 GB/s. Tato zvýšená šířka pásma znamená, že mezipaměť CPU může přenášet data do CPU mnohem rychleji než RAM.

Pro dosažení maximálních možných rychlostí je CPU cache ve skutečnosti zabudována do křemíku samotné CPU matrice. Tím se minimalizuje vzdálenost, kterou musí urazit jakékoli elektrické signály, a proto je latence co nejnižší. Když byla například mezipaměť L3 poprvé přesunuta ze základní desky do matrice CPU, tehdejší procesor (Pentium 4 EE) byl schopen dosáhnout 10-20% zlepšení výkonu.

Architektura mezipaměti CPU

Moderní procesory obecně používají tři vrstvy mezipaměti CPU označené L1-3, přičemž mezipaměti s nižším číslem jsou blíže k jádrům CPU, jsou rychlejší a dražší. Každé jednotlivé jádro CPU ve vícejádrovém CPU má svou vlastní mezipaměť L1. Obvykle se dělí na dvě části, L1I a L1D. L1I se používá k ukládání instrukcí do mezipaměti pro CPU, zatímco L1D se používá k ukládání do mezipaměti dat, na kterých mají být tyto instrukce prováděny.

Každé jádro CPU má na moderním CPU obvykle také svou vlastní mezipaměť L2. Mezipaměť L2 je větší a pomalejší než mezipaměť L1 a používá se především k ukládání dat, která by se jinak do mezipaměti L2 nevešla. Díky vyhrazené mezipaměti L2 na jádro se vyhnete sporům o mezipaměť. Spor o mezipaměť je místo, kde různá jádra bojují o nárok na mezipaměť pro své vlastní úlohy, což může vést k vymazání důležitých dat z mezipaměti.

Mezipaměť L3 je obvykle sdílena mezi všemi jádry CPU procesoru. Opět platí, že mezipaměť L3 je pomalejší než mezipaměť L2, ale je levnější a větší. Poskytnutím sdílené mezipaměti je možné snížit množství dat, která by byla duplikována na nižších úrovních mezipaměti jádra.

Tip: Například ve velikostech mezipaměti má Intel i9-9900K 64 KB L1 a 256 KB L2 mezipaměť na jádro (celkem 512 KB L1 a 2 MB L2), má také 16 MB sdílenou mezipaměť L3.

Jak se používá mezipaměť CPU?

Všechny úrovně mezipaměti CPU se používají ke zrychlení výkonu procesoru ukládáním dat z paměti RAM. Když CPU požaduje data, obvykle nejprve prohledává své vrstvy mezipaměti ve snaze získat data co nejrychleji. Pokud jsou data nalezena v mezipaměti, může CPU pokračovat ve zpracování. Pokud data nejsou v mezipaměti, v tom, co se nazývá chyba mezipaměti, musí CPU zkontrolovat RAM a poté pevný disk, pokud tam data také nejsou. U rychlejších vrstev se vždy nejprve kontroluje maximální výkon.

Aby procesor pomohl mít data, která potřebuje, v mezipaměti, když je potřebuje, mezipaměť se pokouší předjímat, jaká data by CPU mohl potřebovat jako další. Pokud si například CPU vyžádal nějaká data pro obrázek, který vykresluje, mezipaměť se může pokusit preventivně uložit do mezipaměti více obrazových dat, aby je bylo možné předat CPU co nejrychleji.