hvor præcis L1, L2 og L3 Caches placeret i computer?

lad os starte med dette:

jeg tror, at de nyeste SMP-processorer bruger 3-niveau caches, så jeg vil forstå Cache-niveauhierarki og deres arkitektur .

for at forstå caches skal du vide et par ting:

en CPU har registre. Værdier i det kan bruges direkte. Intet er hurtigere.

men vi kan ikke tilføje uendelige registre til en chip. Disse ting tager plads. Hvis vi gør chippen større, bliver den dyrere. En del af det skyldes, at vi har brug for en større chip (mere silicium), men også fordi antallet af chips med problemer stiger.

(billede en imaginær skive med 500 cm2. Jeg skar 10 chips fra den, hver chip 50cm2 i størrelse. En af dem er brudt. Jeg kassere det, og jeg er tilbage det 9 arbejder chips. Tag nu den samme skive, og jeg skar en 100 chips fra den, hver ti gange så lille. En af dem, hvis brudt. Jeg kasserer den ødelagte chip, og jeg er tilbage med 99 arbejdschips. Det er en brøkdel af det tab, jeg ellers ville have haft. For at kompensere for de større chips ville jeg nødt til at spørge højere priser. Mere end bare prisen for det ekstra silicium)

dette er en af grundene til, at vi ønsker små, overkommelige chips.

men jo tættere cachen er på CPU ‘ en, jo hurtigere kan den nås.

dette er også let at forklare; elektriske signaler bevæger sig nær lyshastighed. Det er hurtigt, men stadig en endelig hastighed. Moderne CPU arbejde med ure. Det er også hurtigt. Hvis jeg tager en 4 GHS CPU, kan et elektrisk signal rejse omkring 7,5 cm pr. Det er 7,5 cm i lige linje. (Chips er alt andet end lige forbindelser). I praksis har du brug for betydeligt mindre end de 7, 5 cm, da det ikke tillader nogen tid for chipsene at præsentere de ønskede data og for signalet at rejse tilbage.

bundlinjen, vi vil have cachen så fysisk så tæt som muligt. Hvilket betyder store chips.

disse to skal afbalanceres (ydelse vs. omkostninger).

hvor præcist er L1, L2 og L3 Caches placeret i en computer?

forudsat kun PC-stil udstyr (mainframes er helt forskellige, herunder i performance vs. 4262 >

IBM
den oprindelige 4.77 MH en: ingen cache. CPU får direkte adgang til hukommelsen. En læsning fra hukommelsen ville følge dette mønster:

  • CPU ‘ en sætter den adresse, den vil læse på hukommelsesbussen, og hævder læseflagget
  • hukommelse sætter dataene på databussen.
  • CPU ‘ en kopierer dataene fra databussen til dens interne registre.

80286 (1982)
stadig ingen cache. Hukommelsesadgang var ikke et stort problem for versionerne med lavere hastighed (6 mm), men den hurtigere model løb op til 20 mm og var ofte nødvendig for at forsinke, når man fik adgang til hukommelse.

du får derefter et scenarie som dette:

  • CPU ‘ en sætter den adresse, den vil læse på hukommelsesbussen, og hævder læseflagget
  • hukommelsen begynder at sætte dataene på databussen. CPU ‘ en venter.
  • hukommelsen er færdig med at få dataene, og den er nu stabil på databussen.
  • CPU ‘ en kopierer dataene fra databussen til dens interne registre.

det er et ekstra skridt brugt på at vente på hukommelsen. På et moderne system, der nemt kan være 12 trin, hvorfor vi har cache.

80386: (1985)
CPU ‘ erne bliver hurtigere. Både pr. ur og ved at køre ved højere urhastigheder.
RAM bliver hurtigere, men ikke så meget hurtigere som CPU ‘ er.
som følge heraf er der behov for flere ventetilstande.Nogle bundkort arbejder rundt om dette ved at tilføje cache (det ville være cache på 1.niveau) på bundkortet.

en læsning fra hukommelsen starter nu med en check, om dataene allerede er i cachen. Hvis det er, læses det fra den meget hurtigere cache. Hvis ikke den samme procedure som beskrevet med 80286

80486: (1989)
dette er den første CPU i denne generation, der har noget cache på CPU ‘ en.
det er en 8KB samlet cache, hvilket betyder, at den bruges til data og instruktioner.

omkring dette tidspunkt bliver det almindeligt at sætte 256 KB hurtig statisk hukommelse på bundkortet som cache på 2.niveau. Således 1. niveau cache på CPU, 2. niveau cache på bundkortet.

486 bundkort Med CPU placering og 2. niveau cache markeret

80586 (1993)
586 eller Pentium-1 bruger en a split level 1 cache. 8 KB hver for data og instruktioner. Cachen blev delt, så data-og instruktionscacherne kunne indstilles individuelt til deres specifikke brug. Du har stadig en lille, men meget hurtig 1. cache nær CPU ‘ en, og en større, men langsommere 2.cache på bundkortet. (På en større fysisk afstand).

i samme pentium 1-område producerede Intel Pentium Pro (‘80686’). Afhængigt af modellen havde denne chip en 256kb, 512KB eller 1MB ombord cache. Det var også meget dyrere, hvilket er let at forklare med følgende billede.

billede af en pentium Pro CPU, 256kb cache model

Bemærk, at halvdelen af pladsen i chippen bruges af cachen. Og det er til 256kb modellen. Mere cache var teknisk muligt, og nogle modeller blev produceret med 512KB og 1MB caches. Markedsprisen for disse var høj.

Bemærk også, at denne chip indeholder to matricer. En med den faktiske CPU og 1. cache, og en anden dør med 256kb 2.cache.

Pentium-2

pentium 2 er en pentium pro-kerne. Af økonomiske grunde er der ingen 2. cache i CPU ‘ en. I stedet hvad der sælges en en CPU os en PCB med separate chips til CPU (og 1st cache) og 2nd cache.

efterhånden som teknologien skrider frem, og vi begynder at sætte create chips med mindre komponenter, bliver det økonomisk muligt at sætte 2.cache tilbage i den faktiske CPU-matrice. Der er dog stadig en splittelse. Meget hurtig 1. cache snuggled op til CPU ‘ en. Med en 1. cache pr. CPU-kerne og en større, men mindre hurtig 2.cache ved siden af kernen.

 billede af en pentium 2 ' CPU '( både med og uden dækning)

Pentium-3
Pentium-4
dette ændres ikke for pentium-3 eller pentium-4.

omkring dette tidspunkt har vi nået en praktisk grænse for, hvor hurtigt vi kan ur CPU ‘ er. En 8086 eller en 80286 behøvede ikke afkøling. En pentium – 4, der kører på 3,0 g, producerer så meget varme og bruger så meget strøm, at det bliver mere praktisk at sætte to separate CPU ‘ er på bundkortet i stedet for en hurtig en.

(to 2,0 CPU ‘ er ville bruge mindre strøm end en enkelt identisk 3,0 CPU, men kunne gøre mere arbejde).

dette kunne løses på tre måder:

  1. gør CPU ‘ erne mere effektive, så de gør mere arbejde med samme hastighed.
  2. Brug flere CPU ‘er
  3. Brug flere CPU’er i samme ‘chip’.

1) er en løbende proces. Det er ikke nyt, og det stopper ikke.

2) blev udført tidligt (f.eks. med dobbelt Pentium-1 bundkort og chipsættet). Indtil nu var det den eneste mulighed for at opbygge en hurtigere PC.

3) kræver CPU ‘er, hvor flere’ cpu core ‘ er er indbygget i en enkelt chip. (Vi kaldte derefter den CPU en dual core CPU for at øge forvirringen. Tak marketing:))

i disse dage henviser vi bare til CPU ‘en som en’ kerne ‘ for at undgå forvirring.

du får nu chips som pentium-D (duo), som stort set er to pentium-4 kerner på samme chip.

 tidlig pentium-D (2 P4 kerner)

Husk billedet af den gamle pentium-Pro? Med den enorme cache størrelse?
se de to store områder på dette billede?

det viser sig, at vi kan dele den 2.cache mellem begge CPU-kerner. Hastigheden ville falde lidt, men en 512 KB delt 2.cache er ofte hurtigere end at tilføje to uafhængige 2. niveau caches af halv størrelse.

dette er vigtigt for dit spørgsmål.

det betyder, at hvis du læser noget fra en CPU-kerne og senere prøver at læse det fra en anden kerne, der deler den samme cache, får du et cache-hit. Hukommelse behøver ikke at være tilgængelig.

da programmer migrerer mellem CPU ‘er, afhængigt af belastningen, antallet af kerne og planlæggeren, kan du få yderligere ydeevne ved at fastgøre programmer, der bruger de samme data til den samme CPU (cache hits på L1 og lavere) eller på de samme CPU’ er, der deler L2 cache (og dermed får Misser på L1, men hits på L2 cache læser).

således på senere modeller vil du se delte niveau 2 caches.

 billede af en åben Core2 CPU

hvis du programmerer til moderne CPU ‘ er, har du to muligheder:

  1. Forstyr ikke. Operativsystemet skal kunne planlægge ting. Planlæggeren har stor indflydelse på computerens ydeevne, og folk har brugt en stor indsats for at optimere dette. Medmindre du gør noget underligt eller optimerer til en bestemt PC-model, har du det bedre med standardplanlæggeren.
  2. hvis du har brug for hver eneste bit af ydeevne og hurtigere udstyr ikke er en mulighed, så prøv at forlade slidbanerne, der får adgang til de samme data på den samme kerne eller på en kerne med adgang til en delt cache.

jeg er klar over, at jeg endnu ikke har nævnt L3 cache, men de er ikke anderledes. En L3-cache fungerer på samme måde. Større end L2, langsommere end L2. Og det deles ofte mellem kerner. Hvis det er til stede, er det meget større end L2-cachen (ellers ville det ikke give mening), og det deles ofte med alle kerner.

moderncpu med L3.png

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.