hol található pontosan az L1, L2 és L3 gyorsítótár a számítógépben?

kezdjük ezzel:

úgy gondolom, hogy a legújabb SMP processzorok 3 szintű gyorsítótárakat használnak, ezért meg akarom érteni a gyorsítótár szintű hierarchiát és architektúrájukat .

a gyorsítótárak megértéséhez tudnia kell néhány dolgot:

a CPU-nak vannak regiszterei. Az értékek közvetlenül felhasználhatók. Semmi sem gyorsabb.

azonban nem tudunk végtelen regisztereket hozzáadni egy chiphez. Ezek a dolgok helyet foglalnak el. Ha nagyobb lesz a chip, akkor drágább lesz. Ennek egy része azért van, mert nagyobb Chipre (több szilíciumra) van szükségünk, hanem azért is, mert növekszik a problémás chipek száma.

(kép egy képzeletbeli ostya 500 cm2. 10 zsetont vágtam belőle, mindegyik chip 50cm2 méretű. Az egyik eltört. Eldobom, és én marad ez 9 működő chips. Most vegye ugyanazt az ostyát, és 100 zsetont vágtam belőle, mindegyik tízszer olyan kicsi. Az egyik, ha eltört. Eldobom a törött chipet, és 99 működő Chip marad. Ez a töredéke annak a veszteségnek, amelyet egyébként szenvedtem volna. A nagyobb zsetonok kompenzálásához magasabb árakat kell kérnem. Több, mint az extra Szilícium ára)

ez az egyik oka annak, hogy kicsi, megfizethető chipeket akarunk.

azonban minél közelebb van a gyorsítótár a CPU-hoz, annál gyorsabban érhető el.

ezt szintén könnyű megmagyarázni; az elektromos jelek fénysebesség közelében haladnak. Ez gyors, de még mindig véges sebesség. A modern CPU GHz-es órákkal működik. Ez is gyors. Ha 4 GHz-es CPU-t veszek, akkor egy elektromos jel körülbelül 7,5 cm-es órajelenként utazhat. Ez 7,5 cm egyenes vonalban. (Chips semmit, de egyenes kapcsolatok). A gyakorlatban lényegesen kevesebbre lesz szükség, mint a 7,5 cm, mivel ez nem teszi lehetővé a chipek számára a kért adatok bemutatását és a jel visszautazását.

a lényeg, hogy a gyorsítótárat fizikailag a lehető legközelebb akarjuk. Ami nagy zsetonokat jelent.

ennek a kettőnek kiegyensúlyozottnak kell lennie (teljesítmény vs.költség).

pontosan hol vannak az L1, L2 és L3 gyorsítótárak a számítógépben?

feltételezve, hogy a PC stílus csak hardver (nagygépek egészen más, beleértve a teljesítmény vs. költségegyenleg);

IBM XT
az eredeti 4,77 Mhz-es: Nincs gyorsítótár. A CPU közvetlenül hozzáfér a memóriához. A memóriából történő olvasás ezt a mintát követi:

  • a CPU elhelyezi az olvasni kívánt címet a memóriabuszon, és azt állítja, hogy az olvasási zászló
  • a memória az adatokat az adatbuszra helyezi.
  • a CPU átmásolja az adatokat az adatbuszról a belső regiszterekbe.

80286 (1982)
még mindig nincs gyorsítótár. A memória elérése nem jelentett nagy problémát az alacsonyabb sebességű verzióknál (6Mhz), de a gyorsabb modell 20MHz-ig futott, és gyakran késleltetni kellett a memória elérését.

ezután kapsz egy ilyen forgatókönyvet:

  • a CPU elhelyezi az olvasni kívánt címet a memóriabuszon, és érvényesíti az olvasási zászlót
  • a memória elkezdi az adatokat az adatbuszra helyezni. A CPU vár.
  • a memória befejezte az adatok megszerzését, és most már stabil az adatbuszon.
  • a CPU átmásolja az adatokat az adatbuszról a belső regiszterekbe.

ez egy extra lépés töltött vár a memória. Egy modern rendszeren, amely könnyen lehet 12 lépés, ezért van gyorsítótár.

80386: (1985)
a CPU-k gyorsabbak. Mind az óránkénti, mind a nagyobb órajel-sebességgel történő futással.
a RAM gyorsabb lesz, de nem annyira gyorsabb, mint a CPU-k.
ennek eredményeként több várakozási állapotra van szükség.Néhány alaplap úgy működik, hogy gyorsítótárat (ez az 1.szintű gyorsítótár lenne) ad hozzá az alaplaphoz.

a memóriából történő olvasás most egy ellenőrzéssel kezdődik, ha az adatok már a gyorsítótárban vannak. Ha ez olvasható a sokkal gyorsabb cache. Ha nem ugyanaz az eljárás, mint a 80286

80486: (1989)
ez a generáció első CPU – ja, amelynek van némi gyorsítótára a CPU-n.
ez egy 8KB-os egységesített gyorsítótár, ami azt jelenti, hogy adatokhoz és utasításokhoz használják.

ebben az időben gyakori, hogy 256KB gyors statikus memóriát helyeznek az alaplapra 2.szintű gyorsítótárként. Így 1. szintű gyorsítótár a CPU-n, 2. szintű gyorsítótár az alaplapon.

486 alaplap CPU hely és 2. szintű cache jelölve

80586 (1993)
az 586 vagy Pentium-1 egy osztott 1. szintű gyorsítótárat használ. 8 KB adat és utasítás. A gyorsítótárat úgy osztották fel, hogy az adatok és az utasítások gyorsítótárai külön-külön hangolhatók legyenek az adott felhasználáshoz. Még mindig van egy kicsi, de nagyon gyors 1. gyorsítótár a CPU közelében, és egy nagyobb, de lassabb 2.gyorsítótár az alaplapon. (Nagyobb fizikai távolság).

ugyanazon a pentium 1 területen az Intel gyártotta a Pentium Pro-t (‘80686’). A modelltől függően ez a chip 256kb, 512KB vagy 1 MB volt a fedélzeti gyorsítótárban. Ez is sokkal drágább volt, ami könnyen megmagyarázható a következő képpel.

kép egy pentium Pro CPU, 256kb cache modell

figyeljük meg, hogy a fele a tér a chip által használt gyorsítótár. Ez pedig a 256 KB-os modellre vonatkozik. Több gyorsítótár technikailag lehetséges volt, és néhány modell 512KB-os és 1 MB-os gyorsítótárral készült. Ezek piaci ára magas volt.

azt is vegye figyelembe, hogy ez a chip két meghal. Az egyik a tényleges CPU-val és az 1. gyorsítótárral, a másik pedig a 256kb 2.gyorsítótárral.

Pentium-2

a pentium 2 egy pentium pro mag. Gazdaságos okokból nincs 2. gyorsítótár a CPU-ban. Ehelyett mi értékesített egy CPU nekünk egy PCB külön chipek CPU (és 1.cache) és 2. cache.

a technológia fejlődésével és a kisebb komponensekkel rendelkező chipek létrehozásával pénzügyileg lehetővé válik a 2.gyorsítótár visszahelyezése a tényleges CPU-szerszámba. Azonban még mindig van egy osztott. Nagyon gyors 1. cache bújt fel a CPU. CPU-magonként egy 1. gyorsítótárral, a mag mellett pedig egy nagyobb, de kevésbé gyors 2.gyorsítótárral.

 pentium 2 'CPU' képe (fedéllel és fedél nélkül)

Pentium-3
Pentium-4
ez nem változik a pentium-3 vagy a pentium-4 esetében.

ebben az időben elértük a gyakorlati korlátot, hogy milyen gyorsan tudjuk órázni a CPU-kat. A 8086 vagy a 80286 nem volt szükség hűtésre. A pentium – 4, amely 3.0 GHz-en fut, annyi hőt termel és annyi energiát használ, hogy praktikusabbá válik két különálló CPU elhelyezése az alaplapon, nem pedig egy gyors.

(két 2,0 GHz-es CPU kevesebb energiát használna, mint egyetlen azonos 3,0 GHz-es CPU, mégis több munkát tudna végezni).

ezt három módon lehet megoldani:

  1. tegye hatékonyabbá a CPU-kat, így több munkát végeznek azonos sebességgel.
  2. több CPU használata
  3. több CPU használata ugyanabban a ‘chipben’.

1) Ez egy folyamatos folyamat. Ez nem új, és nem fog megállni.

2) már korán elkészült (pl. kettős Pentium-1 alaplapokkal és NX lapkakészlettel). Eddig ez volt az egyetlen lehetőség egy gyorsabb számítógép felépítésére.

3) olyan CPU-kat igényel, ahol több ‘cpu mag’ van beépítve egyetlen chipbe. (Ezután ezt a CPU-t kétmagos CPU-nak hívtuk, hogy növeljük a zavart. Köszönöm marketing :))

manapság csak a CPU-t ‘magnak’ nevezzük, hogy elkerüljük a zavart.

most olyan chipeket kap, mint a pentium-D (duo), amely alapvetően két pentium-4 mag ugyanazon a chipen.

 korai pentium-D (2 P4 mag)

emlékszel a régi pentium-Pro képére? A hatalmas gyorsítótár méretével?
látja a két nagy területet ezen a képen?

kiderült, hogy megoszthatjuk ezt a 2.gyorsítótárat mindkét CPU mag között. A sebesség kissé csökken, de az 512KiB megosztott 2. gyorsítótár gyakran gyorsabb, mint két független, fele méretű 2.szintű gyorsítótár hozzáadása.

ez fontos a kérdésedhez.

ez azt jelenti, hogy ha valamit az egyik CPU-magról olvas, majd később megpróbálja elolvasni egy másik magról, amely ugyanazt a gyorsítótárat osztja meg, akkor gyorsítótár találatot kap. A memóriához nem kell hozzáférni.

mivel a programok a CPU-k között vándorolnak, a terheléstől, a mag számától és az ütemezőtől függően további teljesítményt érhet el, ha ugyanazokat az adatokat használó programokat ugyanarra a CPU-ra rögzíti (gyorsítótár-találatok L1-en és alacsonyabb szinten), vagy ugyanazon CPU-kon, amelyek megosztják az L2 gyorsítótárat (és így az L1-en hibásak, de az L2 gyorsítótár-olvasások).

így a későbbi modelleken megosztott 2.szintű gyorsítótárak láthatók.

 nyílt Core2 CPU képe

ha modern CPU-kra programoz, akkor két lehetősége van:

  1. ne fáradjon. Az operációs rendszernek képesnek kell lennie a dolgok ütemezésére. Az ütemező nagy hatással van a számítógép teljesítményére, és az emberek sok erőfeszítést fordítottak ennek optimalizálására. Hacsak nem csinálsz valami furcsát, vagy optimalizálsz egy adott PC-modellre, akkor jobban jársz az alapértelmezett ütemezővel.
  2. ha minden egyes bit teljesítményre szüksége van, és a gyorsabb hardver nem választható, akkor próbálja meg elhagyni azokat a futófelületeket, amelyek ugyanazon a magon vagy egy magon férnek hozzá egy megosztott gyorsítótárhoz.

rájöttem, hogy én még nem említettem L3 cache, de ezek nem különböznek. Az L3 gyorsítótár ugyanúgy működik. Nagyobb, mint L2, lassabb, mint L2. Gyakran megosztják a magok között. Ha jelen van, akkor sokkal nagyobb, mint az L2 gyorsítótár (különben nem lenne értelme), és gyakran meg van osztva az összes maggal.

 modernCPUwithL3.png

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.