Articles

Magyarázkodó: L1 vs L2 vs L3 Cache

Minden egyes CPU található bármely számítógép, egy olcsó laptop, hogy egy millió dolláros szerver, akkor úgynevezett cache. Nagyobb valószínűséggel, mint nem, akkor rendelkeznek több szinten is.

fontosnak kell lennie, különben miért lenne ott? De mit csinál a gyorsítótár, és miért van szükség a különböző szintekre? Mi a fenét jelent a 12-utas asszociatív egyáltalán?

mi is pontosan a gyorsítótár?

TL; DR: kicsi, de nagyon gyors memória, amely közvetlenül a CPU logikai egységei mellett helyezkedik el.
de természetesen sokkal többet tudunk meg a gyorsítótárról…

kezdjük egy képzeletbeli, varázslatos tárolórendszerrel: végtelenül gyors, egyszerre végtelen számú adattranzakciót képes kezelni, és mindig biztonságban tartja az adatokat. Nem mintha bármi távolról is létezne, de ha igen, a processzor kialakítása sokkal egyszerűbb lenne.

A CPU-knak csak logikai egységekkel kell rendelkezniük a hozzáadáshoz, megszorzáshoz stb. és egy rendszer, ami kezeli az adatátvitelt. Ez azért van, mert az elméleti tároló rendszer azonnal küldeni, majd megkapja az összes szükséges számot; a logikai egységek egyike sem Várna adatügyletet.

de, mint mindannyian tudjuk, nincs mágikus tárolási technológia. Ehelyett kemény vagy szilárdtest-meghajtóink vannak, sőt ezek közül a legjobbak még távolról sem képesek kezelni a tipikus CPU-hoz szükséges összes adatátvitelt.

az adattárolás Nagy T ‘ Phonja

az oka annak, hogy a modern CPU-k hihetetlenül gyorsak-csak egy óraciklust vesznek igénybe két 64 bites egész érték hozzáadásához, és egy 4 GHz-en futó CPU esetében ez csak 0 lenne.0000000025 másodperc vagy negyed nanoszekundum.

Közben forog merevlemezek több ezer ns csak, hogy megtalálják az adatok a lemezeket, nemhogy át, illetve ssd meghajtók még több tíz vagy több száz ns.

Az ilyen meghajtók nyilvánvalóan nem építhetők be processzorokba, így ez azt jelenti, hogy fizikai elválasztás lesz a kettő között. Ez csak több időt ad az adatok mozgatására, ami még rosszabbá teszi a dolgokat.

az adattárolás nagy A ‘ Tuinja, sajnos

tehát szükségünk van egy másik adattároló rendszerre, amely a processzor és a fő tároló között helyezkedik el. Gyorsabbnak kell lennie, mint egy meghajtó, képesnek kell lennie arra, hogy egyszerre sok adatátvitelt kezeljen, és sokkal közelebb legyen a processzorhoz.

Nos, már van egy ilyen dolog, amit RAM-nak hívnak, és minden számítógépes rendszernek van valami erre a célra.

szinte az összes ilyen típusú tároló DRAM (dinamikus véletlen hozzáférésű memória), és sokkal gyorsabban képes átadni az adatokat, mint bármely meghajtó.

azonban, míg DRAM szuper gyors, nem tudja tárolni bárhol közel annyi adatot.

a Micron, a DRAM kevés gyártójának egyike által gyártott legnagyobb DDR4 memória chipek 32 Gbit vagy 4 GB adatot tartalmaznak;a legnagyobb merevlemezek ennél 4000-szer többet tartanak.

tehát bár javítottuk adathálózatunk sebességét, további rendszerekre – hardverre és szoftverre – lesz szükség ahhoz, hogy kiderítsük, milyen adatokat kell tartani a CPU-ra kész, korlátozott mennyiségű DRAM-ben.

legalább DRAM lehet gyártani, hogy a chip csomag (ismert beágyazott DRAM). A CPU-k elég kicsik, bár, így nem lehet ragaszkodni, hogy sok bennük.

10 MB DRAM csak az Xbox 360 grafikus processzorától balra. Forrás: CPU Grave Yard

a DRAM túlnyomó többsége közvetlenül a processzor mellett található, az alaplaphoz csatlakoztatva, és mindig a CPU legközelebbi összetevője, egy számítógépes rendszerben. És még mindig nem elég gyors…

a DRAM még mindig körülbelül 100 nanoszekundumot vesz igénybe az adatok megtalálásához, de legalább másodpercenként milliárd bitet továbbíthat. Úgy tűnik, szükségünk lesz a memória újabb szakaszára, hogy a processzor egységei és a DRAM közé kerüljünk.

írja be a színpadot balra: SRAM (statikus véletlen hozzáférésű memória). Ahol a DRAM mikroszkopikus kondenzátorokat használ az adatok elektromos töltés formájában történő tárolására, az SRAM tranzisztorokat használ ugyanarra a dologra, és ezek majdnem olyan gyorsan működhetnek, mint a processzor logikai egységei (nagyjából 10-szer gyorsabban, mint a DRAM).

természetesen hátránya van az SRAM-nak, és ismét a térről szól.

a tranzisztor alapú memória sokkal több helyet foglal el, mint a DRAM: az azonos méretű 4 GB-os DDR4 chip esetében kevesebb, mint 100 MB értékű SRAM-ot kapna. De mivel ugyanazt a folyamatot hajtja végre, mint a CPU létrehozása, az SRAM közvetlenül a processzor belsejébe építhető, a lehető legközelebb a logikai egységekhez.

a tranzisztor alapú memória sokkal több helyet foglal el, mint a DRAM: az azonos méretű 4 GB-os DDR4 chip esetében kevesebb, mint 100 MB értékű SRAM-ot kapna.

minden extra szakaszban megnöveltük az adatok mozgásának sebességét, annak költségére, hogy mennyit tudunk tárolni. Folytathatnánk további szakaszok hozzáadását, mindegyik gyorsabb,de kisebb.

és így érkezik egy technikai meghatározása, hogy mi cache: ez több blokk SRAM, minden belsejében található a processzor; ők használják annak biztosítására, hogy a logikai egységek tartják a lehető legforgalmasabb, küldésével és tárolásával adatok szuper gyors sebességgel. Elégedett vagy vele? Jó … mert mostantól sokkal bonyolultabb lesz!

gyorsítótár: egy többszintű parkoló

ahogy megbeszéltük, gyorsítótárra van szükség, mert nincs olyan varázslatos tárolórendszer, amely képes lépést tartani a processzor logikai egységeinek adatigényeivel. A Modern CPU-k és grafikus processzorok számos SRAM-blokkot tartalmaznak, amelyek belsőleg hierarchiába vannak rendezve – a gyorsítótárak sorrendje a következő:

a fenti képen a CPU-t a fekete szaggatott téglalap képviseli. Az ALUs (aritmetikai logikai egységek) a bal szélen vannak; ezek azok a struktúrák, amelyek táplálják a processzort, kezelik a chip által végzett matematikát. Bár technikailag nem gyorsítótár, az Alu-khoz legközelebbi memóriaszint a regiszterek (regiszterfájlba vannak csoportosítva).

mindegyiknek egyetlen száma van, például egy 64 bites egész szám; maga az érték lehet valami adatdarab, egy adott utasítás kódja vagy más adatok memóriacíme.

a regiszterfájl egy asztali CPU-ban meglehetősen kicsi – például az Intel Core i9-9900K-ban két bank van mindegyik magban, az egészek esetében pedig csak 180 64 bites regisztert tartalmaz. A másik regiszterfájl, a vektorok számára (kis számsorok), 168 256 bites bejegyzéssel rendelkezik. Tehát az egyes magok teljes nyilvántartási fájlja kissé 7 kB alatt van. Összehasonlításképpen, az Nvidia GeForce RTX 2080 Ti Streaming Multiprocesszorainak nyilvántartási fájlja (A CPU magjának megfelelő GPU) 256 kB méretű.

a regiszterek SRAM-ok, csakúgy, mint a gyorsítótár, de ugyanolyan gyorsak, mint az általuk kiszolgált ALU-k, az adatokat egyetlen órajelciklusban ki-be tolva. De nem úgy tervezték, hogy nagyon sok adatot tároljanak (csak egy darabot), ezért mindig van néhány nagyobb memóriablokk a közelben: ez az 1.szintű gyorsítótár.

Intel Skylake CPU, nagyított lövés egy mag. Forrás: Wikichip

a fenti kép egy nagyított lövés egy mag az Intel Skylake asztali processzor design.

az ALUs és a regiszter fájlok a bal szélen láthatók, zöld színnel kiemelve. A kép felső közepén, fehérben az 1. szintű adat gyorsítótár található. Ez nem tartalmaz sok információt, csak 32 kB-t, de a regiszterekhez hasonlóan nagyon közel áll a logikai egységekhez, és ugyanolyan sebességgel fut, mint ők.

a másik fehér téglalap az 1. szintű utasítás gyorsítótárat jelzi,szintén 32 kB méretű. Ahogy a neve is sugallja, ez tárolja a különböző parancsokat, amelyek készen állnak arra, hogy kisebb, úgynevezett mikro műveletekre bonthatók (általában µops-ként címkézve), hogy az ALUs végrehajthassa. Nekik is van egy gyorsítótár, amit 0-as szintnek lehet besorolni, mivel kisebb (csak 1500 műveletet tartalmaz), és közelebb van az L1 gyorsítótárhoz.

lehet, hogy vajon miért ezek a blokkok SRAM olyan kicsi; miért nem egy megabájt méretű? Együtt, az adatok, majd az utasítás-cache vegye fel szinte ugyanannyi helyet a chip, mint a fő logikai egységek, szóval így nagyobb növelné a teljes méret a halált.

de a fő ok, amiért csak néhány kB-t tartanak, az az, hogy az adatok megtalálásához és letöltéséhez szükséges idő növekszik, mivel a memória kapacitása nagyobb lesz. L1 cache kell nagyon gyors, ezért kompromisszumot kell kötni, között, mérete, sebesség … a legjobb esetben körülbelül 5 óra ciklus (több lebegőpontos értékek), hogy az adatokat ki ez a cache, készen áll a használatra.

Skylake L2 gyorsítótára: 256 kB SRAM jóság

de ha ez volt az egyetlen gyorsítótár egy processzoron belül, akkor a teljesítménye hirtelen falat ért volna. Ezért van mindegyiknek egy másik memóriaszintje a magokba: a 2. szintű gyorsítótár. Ez egy általános tárolási blokk, amely az utasításokat és az adatokat tartja.

mindig egy kicsit nagyobb, mint az 1. szint: az AMD Zen 2 processzorok akár 512 kB-ot is csomagolnak, így az alsó szintű gyorsítótárak jól szállíthatók. Ez az extra méret azonban költséggel jár, és nagyjából kétszer annyi időt vesz igénybe az adatok megtalálása és átvitele ebből a gyorsítótárból, mint az 1.szint.

visszatérve az időben, az eredeti Intel Pentium napjaihoz, a 2. szintű gyorsítótár külön chip volt, akár egy kis plug-in áramköri kártyán (például egy RAM DIMM), akár a fő alaplapba építve. Végül maga a CPU csomagon dolgozott, míg végül a Pentium III és az AMD K6-III processzorokba integrálódott.

ezt a fejlesztést hamarosan követte egy másik gyorsítótár-szint, ott a többi alacsonyabb szint támogatása, ami a többmagos chipek növekedése miatt jött létre.

Intel Kaby Lake chip. Forrás: Wikichip

Ez a kép egy Intel Kaby Lake chipről 4 magot mutat a bal közepén (az integrált GPU a szerszám majdnem felét veszi fel, a jobb oldalon). Mindegyik magnak megvan a saját “privát” 1. és 2. szintű gyorsítótárkészlete (fehér és sárga kiemelések), de egy harmadik SRAM blokkkészlettel is rendelkeznek.

3. szintű gyorsítótár, annak ellenére, hogy közvetlenül egy mag körül van, teljes mértékben meg van osztva a többiekkel-mindegyik szabadon hozzáférhet egy másik L3 gyorsítótár tartalmához. Sokkal nagyobb (2 és 32 MB között), de sokkal lassabb is, átlagosan több mint 30 cikluson keresztül, különösen, ha egy magnak olyan adatokat kell használnia, amelyek bizonyos távolságra vannak a gyorsítótárban.

Az alábbiakban egy mag látható az AMD Zen 2 architektúrájában: a 32 kB-os 1-es szintű adat-és utasítástárak fehérben, az 512 KB-os 2-es szint sárga színben, és egy hatalmas 4 MB-os L3-as gyorsítótár piros színben.

AMD Zen 2 CPU, nagyított lövés egy mag. Forrás: Fritzchens Fritz

várjon egy percet. Hogyan vehet fel 32 kB több fizikai helyet, mint 512 kB? Ha az 1. szint olyan kevés adatot tartalmaz, miért arányosan sokkal nagyobb, mint az L2 vagy az L3 gyorsítótár?

több, mint egy szám

gyorsítótár növeli a teljesítményt azáltal, hogy felgyorsítja az adatátvitelt a logikai egységekre, és megtartja a gyakran használt utasítások és adatok másolatát a közelben. A gyorsítótárban tárolt információk két részre oszlanak: magára az adatra és annak a helyére, ahol eredetileg a rendszermemóriában/tárolóban volt-ezt a címet gyorsítótár-címkének nevezik.

amikor a CPU olyan műveletet futtat, amely adatokat szeretne olvasni vagy írni a memóriából/a memóriába, akkor az 1.szintű gyorsítótárban lévő címkék ellenőrzésével kezdődik. Ha a szükséges van jelen (gyorsítótár találat), akkor az adatok szinte azonnal elérhetők. A gyorsítótár hiánya akkor fordul elő, ha a szükséges címke nem a legalacsonyabb gyorsítótár-szinten van.

tehát egy új címke jön létre az L1 gyorsítótárban, a processzor architektúrájának többi része pedig átveszi a többi gyorsítótár-szintet (szükség esetén egészen a fő tároló meghajtóig), hogy megtalálja az adott címke adatait. De ahhoz, hogy helyet szerezzen az új címke L1 gyorsítótárában, valami mást mindig ki kell indítani az L2-be.

Ez az adatok közel állandó keverését eredményezi, mindezt csak néhány órajelciklus során érik el. Ennek egyetlen módja az SRAM körüli komplex struktúra, az adatok kezelésének kezelése. Más módon: ha egy CPU mag csak egy ALU-ból áll, akkor az L1 gyorsítótár sokkal egyszerűbb lenne, de mivel tucatnyi van (amelyek közül sok két utasításszálat fog zsonglőrködni), a gyorsítótárhoz több kapcsolat szükséges, hogy mindent mozgásban tartson.

használhatja ingyenes programok, mint például a CPU-Z, hogy nézd meg a gyorsítótár információt a processzor tápellátását a saját számítógépén. De mit jelent ez az információ? Fontos elem a címkekészlet asszociatív-ez az egész azokról a szabályokról szól, amelyeket a rendszermemóriából származó adatblokkok gyorsítótárba másolása hajt végre.

a fenti gyorsítótár információ egy Intel Core i7-9700k-ra vonatkozik.az 1. szintű gyorsítótárak mindegyike 64 kis blokkra oszlik, úgynevezett készletekre, és ezek mindegyikét tovább osztják gyorsítótár-sorokra (64 bájt méretű). A set asszociatív azt jelenti, hogy a rendszermemóriából származó adatblokk egy adott készlet gyorsítótár-soraira van leképezve, ahelyett, hogy bárhol szabadon térképezhetne.

a 8-utas rész azt mondja nekünk, hogy egy blokk társítható egy készlet 8 gyorsítótár sorához. Minél nagyobb az asszociativitás szintje (azaz több “módszer”), annál nagyobb az esélye annak, hogy gyorsítótárat találjanak, amikor a CPU adatokra vadászik, valamint a gyorsítótár hiánya által okozott büntetések csökkentése. A hátránya, hogy növeli a komplexitást, növeli az energiafogyasztást, valamint csökkentheti a teljesítményt, mert több gyorsítótár-sor van egy adatblokk feldolgozásához.

L1+L2 inclusive cache, L3 victim cache, write-back polices, even ECC. Forrás: Fritzchens Fritz

A gyorsítótár összetettségének másik szempontja az adatok különböző szinteken történő tárolásának módja. A szabályokat az úgynevezett befogadási politika határozza meg. Például az Intel Core processzorok teljes mértékben tartalmazzák az L1+L3 gyorsítótárat. Ez azt jelenti, hogy ugyanazok az adatok az 1. szinten például a 3. szinten is lehetnek. Ez úgy tűnhet, mintha értékes gyorsítótár-helyet pazarolna, de az az előnye, hogy ha a processzor hiányzik, ha alacsonyabb szintű címkét keres, akkor nem kell a magasabb szinten vadásznia, hogy megtalálja.

ugyanazon processzorokban az L2 gyorsítótár nem befogadó: az ott tárolt adatokat nem másolják más szintre. Ez helyet takarít meg, de azt eredményezi, hogy a chip memóriarendszerének át kell keresnie az L3-at (ami mindig sokkal nagyobb), hogy megtalálja a nem fogadott címkét. Az áldozat gyorsítótárak hasonlóak ehhez, de hozzászoktak az alacsonyabb szintről kiszorított tárolt információkhoz – például az AMD Zen 2 processzorai L3 áldozat gyorsítótárat használnak, amely csak az L2 adatait tárolja.

vannak más házirendek a gyorsítótárhoz, például amikor az adatok a gyorsítótárba vagy a fő rendszermemóriába kerülnek. Ezeket írási házirendeknek hívják, és a mai CPU-k többsége visszaírási gyorsítótárakat használ; ez azt jelenti, hogy amikor az adatok gyorsítótárba kerülnek, késés van, mielőtt a rendszermemória frissítésre kerül annak másolatával. A legtöbb esetben ez a szünet addig fut, amíg az adatok a gyorsítótárban maradnak – csak akkor, ha elindul, a RAM megkapja az információkat.

az Nvidia GA100 grafikus processzor, tele összesen 20 MB L1 40 MB L2 cache

A processzor tervezők, kiválasztják azt az összeget írja be, majd politika cache arról szól, kiegyensúlyozó, a vágy, a nagyobb feldolgozó képesség, fokozott ellen összetettsége, illetve szükség, halni tér. Ha lehetséges volt, hogy 20 MB, 1000-utat teljesen asszociatív 1-es Szintű cache nélkül a chips válik a méret Manhattan (illetve fogyasztása ugyanolyan teljesítmény), akkor mi lenne minden számítógépek sport ilyen chips!

a cache-k legalacsonyabb szintje a mai CPU-kban nem változott annyira az elmúlt évtizedben. A 3. szintű gyorsítótár azonban továbbra is növekszik. Egy évtizeddel ezelőtt, akkor kap 12 MB belőle, ha szerencséd volt ahhoz, hogy a saját $999 Intel i7-980X. a fele, hogy az összeg ma, kapsz 64 MB.

gyorsítótár, dióhéjban:feltétlenül szükséges, teljesen fantasztikus technológia. Nem néztünk más gyorsítótárakat a CPU-kban és a GPU-kban (például fordítási Keresési pufferek vagy textúra gyorsítótárak), de mivel mindannyian egy egyszerű struktúrát és szintmintát követnek, amint azt itt lefedtük, talán nem hangzik olyan bonyolultnak.

volt olyan számítógépe, amelyen L2 gyorsítótár volt az alaplapon? Mi a helyzet azokkal a slot-alapú Pentium II és Celeron CPU-kkal(például 300A), amelyek egy daughterboard-ban jöttek? Emlékszel az első CPU-ra, amely megosztotta Az L3-at? Tudassa velünk a megjegyzések részben.

vásárlási hivatkozások:
  • AMD Ryzen 9 3900x az Amazonon
  • AMD Ryzen 9 3950x az Amazonon
  • Intel Core i9-10900k az Amazonon
  • AMD Ryzen 7 3700x az Amazonon
  • Intel Core i7-10700k az Amazonon
  • AMD Ryzen 5 3600 az Amazonon
  • Intel Core i5-10600k az Amazonon

olvassa tovább. A TechSpot

  • Wi-Fi 6 magyarázói kifejtették: a Wi-Fi következő generációja
  • mik azok a Tensor magok?
  • mi az A Chip Binning?