hvor Nøyaktig L1, L2 Og L3 Cacher ligger i datamaskinen?

La oss starte med dette:

jeg tror at de nyeste SMP-prosessorene bruker 3-nivå caches, så jeg vil forstå Cache level hierarki og deres arkitektur .

for å forstå cacher må du vite noen ting:

EN CPU har registre. Verdier som kan brukes direkte. Ingenting er raskere.

men vi kan ikke legge til uendelige registre til en chip. Disse tingene tar opp plass. Hvis vi gjør brikken større blir det dyrere. En del av det er fordi vi trenger en større chip (mer silisium), men også fordi antall sjetonger med problemer øker.

(Bilde en imaginær wafer med 500 cm2. Jeg kuttet 10 chips fra det, hver chip 50cm2 i størrelse. En av dem er ødelagt. Jeg forkaster det og jeg forlot det 9 arbeider chips. Ta nå samme wafer og jeg kutter en 100 chips fra den, hver ti ganger så liten. En av dem hvis brutt. Jeg kaster den ødelagte brikken og jeg er igjen med 99 arbeidschips. Det er en brøkdel av tapet jeg ellers ville ha hatt. For å kompensere for de større sjetongene må jeg spørre høyere priser. Mer enn bare prisen for ekstra silisium)

Dette er en av grunnene til at vi vil ha små, rimelige chips.

Men jo nærmere cachen er TIL CPU, desto raskere kan den nås.

Dette er også lett å forklare; Elektriske signaler reiser nær lyshastighet. Det er raskt, men fortsatt en endelig hastighet. Moderne CPU arbeid Med GHz klokker. Det er også raskt. Hvis jeg tar en 4 GHz CPU, kan et elektrisk signal reise om 7,5 cm per klokke kryss. Det er 7,5 cm i rett linje. (Chips er alt annet enn rette tilkoblinger). I praksis trenger du betydelig mindre enn de 7,5 cm siden det ikke tillater noen tid for chips å presentere de forespurte data og for signalet å reise tilbake.

Bunnlinjen, vi vil ha cachen så fysisk så nær som mulig. Som betyr store chips.

Disse to må balanseres(ytelse vs kostnad).

hvor nøyaktig Er L1, L2 og L3 Cachene plassert i en datamaskin?

Forutsatt PC-stil bare maskinvare (stormaskiner er ganske forskjellige, inkludert i ytelsen vs. 4262 >

IBM XT
den opprinnelige 4.77 Mhz en: Ingen cache. CPU får tilgang til minnet direkte. En lese fra minnet ville følge dette mønsteret:

  • CPUEN setter adressen den vil lese på minnebussen og hevder leseflagget
  • Minne setter dataene på databussen.
  • CPUEN kopierer dataene fra databussen til sine interne registre.

80286 (1982)
fortsatt ingen cache. Minnetilgang var ikke et stort problem for de lavere hastighetsversjonene (6mhz), men den raskere modellen løp opp til 20Mhz og trengte ofte å forsinke når man fikk tilgang til minne.

du får da et scenario som dette:

  • CPUEN setter adressen den vil lese på minnebussen og hevder leseflagget
  • Minne begynner å sette dataene på databussen. CPU venter.
  • Minne ferdig med å få dataene, og det er nå stabilt på databussen.
  • CPUEN kopierer dataene fra databussen til sine interne registre.

det er et ekstra trinn brukt venter på minnet. På et moderne system som lett kan være 12 trinn, og det er derfor vi har cache.

80386: (1985)
Cpuene blir raskere. Både per klokke, og ved å kjøre på høyere klokkehastigheter.
RAM blir raskere, MEN ikke så mye raskere som Cpuer.
som et resultat er det behov for flere ventetilstander.Noen hovedkort jobber rundt dette ved å legge til cache (det ville være 1.nivå cache) på hovedkortet.

en les fra minnet starter nå med en sjekk om dataene allerede er i hurtigbufferen. Hvis det er det leses fra mye raskere cache. Hvis ikke samme prosedyre som beskrevet med 80286

80486: (1989)
Dette er den første CPU av denne generasjonen som har noen cache PÅ CPU.
det ER EN 8kb enhetlig cache som betyr at den brukes til data og instruksjoner.

rundt denne tiden blir det vanlig å sette 256KB raskt statisk minne på hovedkortet som 2. nivå cache. Dermed 1. nivå cache PÅ CPU, 2. nivå cache på hovedkortet.

486 hovedkort MED CPU-plassering og 2. nivå cache merket

80586 (1993)
586 Eller Pentium-1 bruker en delt nivå 1 cache. 8 KB hver for data og instruksjoner. Cachen ble delt slik at data – og instruksjonsbufferne kunne justeres individuelt for deres spesifikke bruk. Du har fortsatt en liten, men veldig rask 1. cache nær CPU, og en større, men tregere 2. cache på hovedkortet. (På en større fysisk avstand).

I samme pentium 1-område Produserte Intel Pentium Pro (‘80686’). Avhengig av modellen hadde denne brikken en 256kb, 512KB eller 1mb om bord cache. Det var også mye dyrere, noe som er lett å forklare med følgende bilde.

 Bilde av en pentium Pro CPU, 256kb cache modell

Legg Merke til at halvparten av plassen i brikken brukes av cachen. Og dette er for 256kb-modellen. Mer cache var teknisk mulig og noen modeller der produsert MED 512kb og 1mb cacher. Markedsprisen for disse var høy.

legg også merke til at denne brikken inneholder to dør. En MED den faktiske CPU og 1. cache, og en annen dør med 256KB 2. cache.

Pentium-2

pentium 2 er en pentium pro kjerne. Av økonomiske grunner er det ingen 2. cache i CPU. I stedet hva er solgt EN CPU oss EN PCB med separate chips FOR CPU (og 1. cache) og 2. cache.

som teknologien utvikler seg og vi begynner å sette lage chips med mindre komponenter det blir økonomisk mulig å sette 2nd cache tilbake i SELVE CPU die. Men det er fortsatt en splittelse. Veldig rask 1. cache snuggled opp TIL CPU. Med en 1. cache per CPU-kjerne og en større, men mindre rask 2. cache ved siden av kjernen.

 Bilde av en pentium 2 ' CPU '(både med og uten deksel)

Pentium-3
Pentium-4
dette endres ikke for pentium – 3 eller pentium-4.

Rundt denne tiden har vi nå en praktisk grense på hvor fort Vi kan klokke Cpuer. En 8086 eller en 80286 trengte ikke kjøling. En pentium – 4 kjører på 3.0 GHz produserer så mye varme og bruker så mye strøm at det blir mer praktisk å sette to separate CPU på hovedkortet i stedet for en rask en.

(To 2.0 GHz CPU-ER ville bruke mindre strøm enn en enkelt identisk 3.0 GHz CPU, men kunne gjøre mer arbeid).

Dette kan løses på tre måter:

  1. Gjør Cpuene mer effektive, slik at de gjør mer arbeid med samme hastighet.
  2. Bruk flere Cpuer
  3. Bruk flere Cpuer i samme ‘chip’.

1) det er en pågående prosess. Det er ikke nytt, og det vil ikke stoppe.

2) ble gjort tidlig (f. eks. med dual Pentium – 1 hovedkort og nx-brikkesettet). Inntil nå var det eneste alternativet for å bygge en raskere PC.

3) Krever Cpuer der flere ‘cpu core’ er bygget inn i en enkelt chip. (VI kalte DEN CPUEN en dual core CPU for å øke forvirringen. Takk markedsføring:))

I Disse dager refererer vi BARE TIL CPU som en kjerne for å unngå forvirring.

du får nå sjetonger som pentium – d (duo), som i utgangspunktet er to pentium-4-kjerner på samme chip.

 Tidlig pentium-D (2 p4 kjerner)

Husk bildet av den gamle pentium-Pro? Med den enorme cache størrelse?
Se de to store områdene i dette bildet?

det viser seg at vi kan dele den 2. cachen mellom BEGGE CPU-kjernene. Hastigheten vil falle litt, men en 512kib delt 2.cache er ofte raskere enn å legge til to uavhengige 2. nivå cacher på halvparten av størrelsen.

Dette er viktig for spørsmålet ditt.

det betyr at hvis du leser noe fra EN CPU kjerne og senere prøver å lese den fra en annen kjerne som deler samme cache som du vil få en cache hit. Minne trenger ikke å bli åpnet.

siden programmer migrere MELLOM CPU-er, avhengig av belastningen, antall kjerne og planleggeren kan du få ekstra ytelse ved å feste programmer som bruker de samme dataene til samme CPU (cache treff På L1 og lavere) eller på de samme Cpuer som deler L2 cache (og dermed få savner På L1, men treff På l2 cache leser).

dermed på senere modeller vil du se delte nivå 2 cacher.

 Bilde av en åpen Core2 CPU

hvis du programmerer for moderne Cpuer, har du to alternativer:

  1. ikke bry deg. OPERATIVSYSTEMET skal kunne planlegge ting. Planleggeren har stor innvirkning på datamaskinens ytelse, og folk har brukt mye arbeid på å optimalisere dette. Med mindre du gjør noe rart eller optimaliserer for en bestemt PC-MODELL, er du bedre med standardplanleggeren.
  2. hvis du trenger hver siste bit av ytelse og raskere maskinvare ikke er et alternativ, så prøv å la trinnene som har tilgang til de samme dataene på samme kjerne eller på en kjerne med tilgang til en delt cache.

jeg skjønner at Jeg enna ikke har nevnt L3 cache, men de er ikke forskjellige. En l3 cache fungerer på samme måte. Større Enn L2, langsommere Enn L2. Og det deles ofte mellom kjerner. Hvis det er til stede, er det mye større Enn L2-cachen (ellers har det ikke mening), og det deles ofte med alle kjerner.

 modernCPUwithL3.png

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.