unde se află cache-urile L1, L2 și L3 în computer?

să începem cu asta:

cred că cele mai recente procesoare SMP utilizează cache-uri de nivel 3, așa că vreau să înțeleg ierarhia nivelului Cache și arhitectura lor .

pentru a înțelege cache-urile trebuie să știți câteva lucruri:

un procesor are registre. Valori în care pot fi utilizate direct. Nimic nu este mai rapid.

cu toate acestea, nu putem adăuga registre infinite la un cip. Aceste lucruri ocupă spațiu. Dacă facem cipul mai mare, devine mai scump. O parte din asta se datorează faptului că avem nevoie de un cip mai mare (mai mult siliciu), dar și pentru că numărul de jetoane cu probleme crește.

(imagine o placă imaginară cu 500 cm2. Am tăiat 10 jetoane din ea, fiecare cip de 50cm2. Unul dintre ei este rupt. Am aruncați-l și am lăsat-o 9 chips-uri de lucru. Acum luați aceeași napolitană și am tăiat 100 de Jetoane din ea, fiecare de zece ori mai mică. Unul dintre ei dacă este rupt. Am aruncat cipul rupt și am rămas cu 99 de jetoane de lucru. Aceasta este o fracțiune din pierderea pe care altfel aș fi avut-o. Pentru a compensa cipurile mai mari, ar trebui să cer prețuri mai mari. Mai mult decât prețul pentru siliciul suplimentar)

acesta este unul dintre motivele pentru care dorim cipuri mici și accesibile.

cu toate acestea, cu cât memoria cache este mai aproape de CPU, cu atât poate fi accesată mai repede.

acest lucru este, de asemenea, ușor de explicat; semnalele electrice se deplasează aproape de viteza luminii. Aceasta este rapidă, dar totuși o viteză finită. CPU Modern funcționează cu ceasuri GHz. Și asta este rapid. Dacă iau un procesor de 4 GHz, atunci un semnal electric poate călători aproximativ 7,5 cm pe ceas. Aceasta este de 7,5 cm în linie dreaptă. (Chips-uri sunt nimic, dar conexiuni drepte). În practică, veți avea nevoie de mult mai puțin decât cei 7, 5 cm, deoarece acest lucru nu permite niciun moment pentru ca jetoanele să prezinte datele solicitate și pentru ca semnalul să se deplaseze înapoi.

linia de fund, vrem cache-ul cât mai aproape fizic posibil. Ceea ce înseamnă cipuri mari.

aceste două trebuie să fie echilibrate (performanță vs.cost).

unde se află cache-urile L1, L2 și L3 într-un computer?

presupunând doar stilul PC hardware (mainframe-urile sunt destul de diferite, inclusiv în performanță vs. echilibru cost);

IBM XT
originalul 4.77 Mhz unul: nu cache. CPU accesează memoria direct. O citire din memorie ar urma acest model:

  • CPU pune adresa pe care doriți să o citiți pe magistrala de memorie și afirmă steagul de citire
  • memoria pune datele pe magistrala de date.
  • CPU copiază datele din magistrala de date în registrele sale interne.

80286 (1982)
încă nu există cache. Accesul la memorie nu a fost o mare problemă pentru versiunile cu viteză mai mică (6MHz), dar modelul mai rapid a rulat până la 20MHz și de multe ori a trebuit să întârzie la accesarea memoriei.

veți obține apoi un scenariu ca acesta:

  • CPU pune adresa pe care doriți să o citiți pe magistrala de memorie și afirmă steagul de citire
  • memoria începe să pună datele pe magistrala de date. CPU așteaptă.
  • memoria a terminat obținerea datelor și acum este stabilă pe magistrala de date.
  • CPU copiază datele din magistrala de date în registrele sale interne.

acesta este un pas suplimentar petrecut în așteptarea memoriei. Pe un sistem modern, care poate fi cu ușurință 12 pași, motiv pentru care avem cache.

80386: (1985)
procesoarele devin mai rapide. Atât pe ceas, cât și prin rularea la viteze mai mari de ceas.
memoria RAM devine mai rapidă, dar nu la fel de rapidă ca procesoarele.
ca urmare sunt necesare mai multe stări de așteptare.Unele plăci de bază lucrează în jurul acestui lucru adăugând cache (care ar fi cache de nivel 1) pe placa de bază.

o citire din memorie începe acum cu o verificare dacă datele sunt deja în memoria cache. Dacă este, este citit din memoria cache mult mai rapidă. Dacă nu aceeași procedură ca cea descrisă cu 80286

80486: (1989)
acesta este primul CPU din această generație, care are unele cache pe CPU.
este un cache unificat de 8KB, ceea ce înseamnă că este utilizat pentru date și instrucțiuni.

în această perioadă devine obișnuit să puneți 256kb de memorie statică rapidă pe placa de bază ca cache de nivel 2. Astfel, cache-ul de nivel 1 pe CPU, cache-ul de nivel 2 pe placa de bază.

486 plăci de bază Cu locația procesorului și cache-ul de nivel 2 marcat

80586 (1993)
586 sau Pentium-1 utilizează un nivel divizat 1 cache. 8 KB fiecare pentru date și instrucțiuni. Cache-ul a fost împărțit astfel încât cache-urile de date și instrucțiuni să poată fi reglate individual pentru utilizarea lor specifică. Încă mai aveți un cache 1 mic, dar foarte rapid, lângă CPU și un cache 2 mai mare, dar mai lent, pe placa de bază. (La o distanță fizică mai mare).

în aceeași zonă pentium 1 Intel a produs Pentium Pro (‘80686’). În funcție de model, acest cip avea o memorie cache de 256kb, 512kb sau 1MB la bord. De asemenea, a fost mult mai scump, ceea ce este ușor de explicat cu următoarea imagine.

imagine a unui procesor pentium Pro, Model cache 256kb

observați că jumătate din spațiul din cip este utilizat de cache. Și aceasta este pentru modelul de 256kb. Mai mult cache-ul a fost posibil punct de vedere tehnic și unele modele în cazul în care a produs cu 512kb și cache-uri 1MB. Prețul de piață pentru acestea a fost ridicat.

de asemenea, observați că acest cip conține două matrițe. Unul cu CPU-ul real și cache-ul 1 și un al doilea mor cu cache-ul 256kb 2nd.

Pentium-2

pentium 2 este un nucleu pentium pro. Din motive economice nu cache 2nd este în CPU. În schimb, ceea ce este vândut un CPU ne un PCB cu cipuri separate pentru CPU (și 1 cache) și 2 cache.

pe măsură ce tehnologia progresează și începem să creăm cipuri cu componente mai mici, devine posibil din punct de vedere financiar să punem memoria cache a 2-a înapoi în matrița CPU reală. Cu toate acestea, există încă o divizare. Foarte rapid cache 1st înghesuit până la CPU. Cu un cache 1 pentru fiecare nucleu CPU și un cache 2 mai mare, dar mai puțin rapid, lângă nucleu.

imagine a unui pentium 2 ' CPU ' (atât cu și fără capac)

Pentium-3
Pentium-4
acest lucru nu se schimbă pentru pentium-3 sau pentium-4.

în această perioadă am ajuns la o limită practică cu privire la cât de repede putem ceas procesoare. Un 8086 sau un 80286 nu au nevoie de răcire. Un pentium-4 care rulează la 3.0 GHz produce atât de multă căldură și folosește atât de multă putere încât devine mai practic să puneți două CPU separate pe placa de bază, mai degrabă decât unul rapid.

(două CPU-uri de 2,0 GHz ar folosi mai puțină energie decât un singur procesor identic de 3,0 GHz, dar ar putea face mai multă muncă).

acest lucru ar putea fi rezolvat în trei moduri:

  1. Faceți procesoarele mai eficiente, astfel încât acestea să funcționeze mai mult la aceeași viteză.
  2. utilizați mai multe procesoare
  3. utilizați mai multe procesoare în același ‘chip’.

1) este un proces continuu. Nu este nou și nu se va opri.

2) a fost realizat din timp (de exemplu, cu plăci de bază Dual Pentium-1 și chipset-ul NX). Până acum aceasta a fost singura opțiune pentru construirea unui computer mai rapid.

3) necesită procesoare în cazul în care mai multe ‘cpu core’ sunt construite într-un singur cip. (Am numit apoi acel procesor un procesor dual core pentru a crește confuzia. Vă mulțumim de marketing 🙂 )

aceste zile ne referim doar la CPU ca un ‘core’ pentru a evita confuzia.

acum primiți jetoane precum pentium-D (duo), care este practic două nuclee pentium-4 pe același cip.

pentium-D Timpuriu (2 nuclee P4)

amintiți-vă imaginea vechiului pentium-Pro? Cu dimensiunea imensă a cache-ului?
vedeți cele două zone mari din această imagine?

se pare că putem partaja acel cache 2nd între ambele nuclee CPU. Viteza ar scădea ușor, dar un cache 2 partajat de 512kib este adesea mai rapid decât adăugarea a două cache-uri independente de nivelul 2 de jumătate din Dimensiune.

acest lucru este important pentru întrebarea dvs.

înseamnă că dacă citiți ceva dintr-un nucleu CPU și mai târziu încercați să îl citiți dintr-un alt nucleu care împărtășește același cache, veți obține o lovitură cache. Memoria nu va trebui accesată.

deoarece programele migrează între CPU, în funcție de sarcină, numărul de bază și Planificatorul puteți obține performanțe suplimentare prin fixarea programelor care utilizează aceleași date la același CPU (cache hit-uri pe L1 și mai mici) sau pe aceleași procesoare care împărtășesc L2 cache (și, astfel, obține rateaza pe L1, dar hit-uri pe L2 cache citește).

astfel, pe modelele ulterioare veți vedea cache-uri de nivel 2 partajate.

 imaginea unui procesor Core2 deschis

dacă programați pentru procesoare moderne, atunci aveți două opțiuni:

  1. nu te deranja. Sistemul de operare ar trebui să poată programa lucrurile. Planificatorul are un impact mare asupra performanței calculatorului și oamenii au petrecut o mulțime de efort în optimizarea acest lucru. Dacă nu faci ceva ciudat sau sunt optimizarea pentru un anumit model de PC-ul sunt mai bine cu Planificatorul implicit.
  2. dacă aveți nevoie de ultimul bit de performanță și hardware-ul mai rapid nu este o opțiune, atunci încercați să lăsați treptele care accesează aceleași date pe același nucleu sau pe un nucleu cu acces la o memorie cache partajată.

îmi dau seama că nu am menționat încă L3 cache, dar ele nu sunt diferite. Un cache L3 funcționează în același mod. Mai mare decât L2, mai lent decât L2. Și este adesea împărțită între nuclee. Dacă este prezent, este mult mai mare decât cache-ul L2 (altfel nu ar avea sens) și este adesea partajat cu toate nucleele.

modernCPUwithL3.png

Lasă un răspuns

Adresa ta de email nu va fi publicată.