O nouă abordare a memoriei cache a procesorului. Ce este un cache, de ce este necesar și cum funcționează?

Bun venit pe GECID.com! Este bine cunoscut faptul că viteza de ceas și numărul de nuclee de procesor afectează în mod direct nivelul de performanță, în special în modelele multi-threaded. Am decis să verificăm ce rol joacă memoria cache L3 în asta?

Pentru a studia această problemă, am primit cu amabilitate un procesor cu 2 nuclee cu un nominal frecventa de functionare 3,7 GHz și 3 MB cache L3 cu 12 canale asociative. Adversarul era unul cu 4 nuclee, cu două nuclee dezactivate și frecvența de ceas redusă la 3,7 GHz. Dimensiunea sa de cache L3 este de 8 MB și are 16 canale asociative. Adică, diferența cheie dintre ele constă tocmai în memoria cache de ultimul nivel: Core i7 are cu 5 MB în plus.

Dacă acest lucru afectează semnificativ performanța, atunci va fi posibil să se efectueze un alt test cu un reprezentant al seriei Core i5, care are 6 MB de cache L3 la bord.

Dar deocamdată să revenim la testul actual. O placă video și 16 GB de memorie RAM DDR4-2400 MHz vor ajuta participanții. Vom compara aceste sisteme în Rezoluție completă HD.

În primul rând, să începem cu un joc live nesincronizat, în care este imposibil să determinați în mod clar câștigătorul. ÎN Lumină pe moarte pe setări maxime calitate, ambele sisteme arată un nivel FPS confortabil, deși încărcarea procesorului și a plăcii video a fost în medie mai mare în cazul Intel Core i7.

Arma 3 are o dependență pronunțată de procesor, ceea ce înseamnă că o cantitate mai mare de memorie cache ar trebui să joace un rol pozitiv chiar și la setări grafice ultra-înalte. Mai mult, încărcarea plăcii video în ambele cazuri a ajuns la maximum 60%.

Joc DOOM la setări grafice ultra-înalte a permis sincronizarea doar a primelor cadre, unde avantajul Core i7 este de aproximativ 10 FPS. Desincronizarea gameplay-ului ulterioară nu ne permite să determinăm gradul de influență a cache-ului asupra vitezei secvenței video. În orice caz, frecvența a fost menținută peste 120 de cadre/s, așa că nici 10 FPS nu are mare impact asupra confortului de joc.

Termină mini-seria de jocuri live Evoluție Etapa 2. Aici probabil că am observa o diferență între sisteme, deoarece în ambele cazuri placa video este încărcată aproximativ pe jumătate. Prin urmare, subiectiv pare că nivelul FPS în cazul lui Core i7 este mai mare, dar este imposibil de spus cu siguranță, din moment ce scenele nu sunt identice.

Benchmark-urile oferă o imagine mai informativă. De exemplu, în GTA V puteți vedea că în afara orașului avantajul cache-ului de 8 MB ajunge la 5-6 cadre/s, iar în oraș - până la 10 FPS datorită mai multor sarcină mare plăci video. În același timp, acceleratorul video în sine în ambele cazuri este departe de a fi încărcat la maxim și totul depinde de procesor.

Al treilea vrăjitor am lansat cu setări grafice extreme și un profil ridicat de post-procesare. Într-una dintre scenele scriptate, avantajul Core i7 în unele locuri ajunge la 6-8 FPS cu o schimbare bruscă a unghiului și necesitatea de a încărca date noi. Când încărcarea procesorului și a plăcii video ajunge din nou la 100%, diferența scade la 2-3 cadre.

Presetat maxim setări grafice V XCOM 2 nu a fost un test serios pentru ambele sisteme, iar rata de cadre a fost în jur de 100 FPS. Dar și aici, o cantitate mai mare de memorie cache a fost transformată într-o creștere a vitezei de la 2 la 12 cadre/s. Și deși ambele procesoare nu au reușit să încarce placa video la maximum, versiunea de 8 MB a fost și mai bună la acest capitol pe alocuri.

Cel mai mult m-a surprins jocul Miting de murdărie, pe care l-am lansat cu presetarea foarte mare. În anumite momente, diferența a ajuns la 25 fps doar datorită cache-ului L3 mai mare. Acest lucru a permis ca placa video să fie încărcată cu 10-15% mai bine. Cu toate acestea, rezultatele medii de referință au arătat o victorie mai modestă pentru Core i7 - doar 11 FPS.

A apărut o situație interesantă cu Rainbow Six Siege: pe strada, in primele cadre ale benchmark-ului, avantajul Core i7 era 10-15 FPS. În interior, încărcarea procesorului și a plăcii video în ambele cazuri a ajuns la 100%, așa că diferența a scăzut la 3-6 FPS. Dar la final, când camera a ieșit în afara casei, decalajul Core i3 a depășit din nou 10 fps pe alocuri. Cifra medie s-a dovedit a fi de 7 FPS în favoarea a 8 MB de cache.

Divizia la calitate maxima grafica răspunde, de asemenea, bine la o creștere a memoriei cache. Deja primele cadre ale benchmark-ului au încărcat complet toate firele Core i3, dar încărcarea totală pe Core i7 a fost de 70-80%. Totuși, diferența de viteză în aceste momente era de doar 2-3 FPS. Puțin mai târziu, încărcarea ambelor procesoare a ajuns la 100%, iar în anumite momente diferența era deja în spatele lui Core i3, dar doar cu 1-2 cadre/s. În medie, a fost de aproximativ 1 FPS în favoarea Core i7.

La rândul său, reperulRise of Tomb Riderla setări grafice ridicate în toate cele trei scene de testare, a arătat clar avantajul unui procesor cu o cantitate semnificativ mai mare de memorie cache. Performanța sa medie este de 5-6 FPS este mai bun, dar dacă te uiți cu atenție la fiecare scenă, pe alocuri decalajul lui Core i3 depășește 10 fps.

Dar atunci când alegeți o presetare cu setări foarte mari, sarcina pe placa video și pe procesoare crește, astfel încât în ​​majoritatea cazurilor diferența dintre sisteme se reduce la câteva cadre. Și doar pentru o perioadă scurtă de timp Core i7 poate arăta rezultate mai semnificative. Indicatorii medii ai avantajului său conform rezultatelor benchmark-ului au scăzut la 3-4 FPS.

Hitman de asemenea, mai puțin afectat de cache-ul L3. Deși aici, cu un profil de detaliu ultra-înalt, s-au oferit încă 5 MB cel mai bun download plăci video, transformând aceasta în 3-4 cadre/s suplimentare. Nu au un impact deosebit de critic asupra performanței, dar din motive pur sportive, este bine că există un câștigător.

Setări grafice ridicate Deus ex: Omenirea divizată a cerut imediat putere maximă de calcul de la ambele sisteme, așa că diferența a fost în cel mai bun caz de 1-2 cadre în favoarea Core i7, așa cum indică media.

Rularea din nou cu presetarea ultra-înaltă a încărcat placa video și mai mult, astfel încât impactul procesorului asupra vitezei generale a devenit și mai mic. În consecință, diferența de cache L3 nu a avut practic niciun efect asupra situației, iar FPS-ul mediu a fost diferit cu mai puțin de jumătate de cadru.

Pe baza rezultatelor testării, se poate observa că memoria cache L3 are un impact asupra performanței jocurilor, dar apare doar atunci când placa video nu este încărcată pe putere deplină. În astfel de cazuri, ar fi posibil să obțineți o creștere de 5-10 FPS dacă memoria cache ar fi crescută de 2,5 ori. Adică, aproximativ, se dovedește că, toate celelalte lucruri fiind egale, fiecare MB suplimentar de memorie cache L3 adaugă doar 1-2 FPS la viteza de afișare video.

Deci, dacă comparăm linii învecinate, de exemplu, Celeron și Pentium, sau modele cu cantități diferite de memorie cache L3 din seria Core i3, atunci creșterea principală a performanței este atinsă datorită mai multor frecvente inalte, și apoi prezența unor fire și nuclee de procesor suplimentare. Prin urmare, atunci când alegeți un procesor, în primul rând, trebuie să vă concentrați pe principalele caracteristici și abia apoi să acordați atenție cantității de memorie cache.

Asta e tot. Vă mulțumim pentru atenție. Sperăm că acest material a fost util și interesant.

Articolul citit de 19812 ori

Abonați-vă la canalele noastre

Cât de important este memoria cache L3 pentru procesoarele AMD?

Într-adevăr, este logic să echipați procesoarele cu mai multe nuclee cu memorie dedicată care va fi partajată de toate nucleele disponibile. În acest rol, un cache rapid de nivel al treilea (L3) poate accelera semnificativ accesul la datele care sunt solicitate cel mai des. Atunci nucleele, dacă este posibil, nu vor trebui să acceseze memoria principală lentă (RAM).

De cel puţin, în teorie. Recent, AMD a anunțat procesorul Athlon II X4, care este un model Phenom II X4 fără cache L3, sugerând că nu este atât de necesar. Am decis să comparăm direct două procesoare (cu și fără cache L3) pentru a testa modul în care cache-ul afectează performanța.

Click pe poza pentru marire.

Cum funcționează memoria cache?

Înainte de a ne aprofunda în teste, este important să înțelegem câteva elemente de bază. Principiul cum funcționează memoria cache este destul de simplu. Cache-ul tamponează datele cât mai aproape de nucleele de procesare ale procesorului pentru a reduce cererile CPU la o memorie mai îndepărtată și mai lentă. Pe platformele desktop moderne, ierarhia cache-ului include până la trei niveluri care preced accesul la RAM. Mai mult, cache-urile celui de-al doilea și, în special, al treilea nivel servesc nu numai la stocarea datelor. Scopul lor este de a preveni supraîncărcarea magistralei procesorului atunci când nucleele trebuie să facă schimb de informații.

Lovituri și rateuri

Eficacitatea arhitecturilor cache este măsurată prin rata de accesare. Solicitările de date care pot fi satisfăcute de cache sunt considerate accesări. Dacă cache-ul dat nu conține datele necesare, cererea este transmisă mai departe de-a lungul conductei de memorie și o ratare este contorizată. Desigur, greșelile duc la mai mult timp necesar pentru a obține informații. Ca rezultat, „bule” (inactiv) și întârzieri apar în conducta de calcul. Hiturile, dimpotrivă, vă permit să mențineți performanța maximă.

Intrare în cache, exclusivitate, coerență

Politicile de înlocuire dictează modul în care memoria cache este eliberată pentru noile intrări. Deoarece datele scrise în cache trebuie să apară în cele din urmă în memoria principală, sistemele pot face acest lucru în același timp cu scrierea în cache (scriere prin scriere) sau pot marca zonele de date ca murdare (rescriere) și pot scrie în memorie. când este evacuat din cache.

Datele din mai multe niveluri de cache pot fi stocate exclusiv, adică fără redundanță. Atunci nu veți găsi aceleași linii de date în două ierarhii de cache diferite. Sau cache-urile pot funcționa inclusiv, adică niveluri inferioare cache-ul este garantat să conțină datele prezente în niveluri superioare cache (mai aproape de miezul procesorului). U AMD Phenom cache-ul L3 exclusiv este folosit, în timp ce Intel urmează o strategie de cache inclusivă. Protocoalele de coerență asigură integritatea și prospețimea datelor în diferite nuclee, niveluri de cache și chiar procesoare.

Dimensiunea memoriei cache

Un cache mai mare poate stoca mai multe date, dar tinde să crească latența. În plus, un cache mare consumă un număr considerabil de tranzistori de procesor, așa că este important să găsim un echilibru între bugetul tranzistorului, dimensiunea matriței, consumul de energie și performanță/latență.

Asociativitatea

Intrările din RAM pot fi mapate direct în cache, adică există o singură poziție cache pentru o copie a datelor din RAM, sau pot fi asociative în n moduri, adică există n locații posibile în cache în care acest lucru datele pot fi stocate. Grade mai înalte de asociativitate (până la cache-uri complet asociative) oferă o flexibilitate mai mare de stocare în cache, deoarece datele existente în cache nu trebuie rescrise. Cu alte cuvinte, un grad n mare de asociativitate garantează mai mult procent mare hit-uri, dar acest lucru crește latența, deoarece este nevoie de mai mult timp pentru a verifica toate acele asociații pentru un hit. De obicei, cel mai înalt grad de asociere este rezonabil pentru ultimul nivel de stocare în cache, deoarece există disponibil capacitate maximă, iar căutarea datelor în afara acestui cache va duce la accesarea procesorului RAM lentă.

Iată câteva exemple: Core i5 și i7 folosesc 32 KB de cache L1 cu asociativitate cu 8 căi pentru date și 32 KB de cache L1 cu asociativitate în 4 căi pentru instrucțiuni. Este de înțeles că Intel dorește ca instrucțiunile să fie disponibile mai rapid și cache-ul de date L1 să aibă o rată de accesare maximă. cache L2 procesoare Intel are asociativitate în 8 căi, iar memoria cache L3 de la Intel este și mai inteligentă, deoarece implementează asociativitate în 16 căi pentru a maximiza accesările.

Cu toate acestea, AMD urmează o strategie diferită cu Procesoare Phenom II X4, care folosește un cache L1 cu asociativitate bidirecțională pentru a reduce latența. Pentru a compensa eventualele erori, capacitatea memoriei cache a fost dublată: 64 KB pentru date și 64 KB pentru instrucțiuni. Cache-ul L2 are asociativitate cu 8 căi, ca și designul Intel, dar memoria cache L3 de la AMD funcționează cu asociativitate cu 48 de căi. Dar decizia de a alege o anumită arhitectură cache nu poate fi evaluată fără a lua în considerare întreaga arhitectură a CPU. Este destul de firesc ca rezultatele testelor să aibă o semnificație practică, iar scopul nostru a fost tocmai un test practic al întregii structuri complexe de stocare în cache pe mai multe niveluri.

Fiecare procesor modern are un cache dedicat care stochează instrucțiunile și datele procesorului, gata de utilizare aproape instantaneu. Acest nivel este denumit în mod obișnuit cache de nivel 1 sau L1 și a fost introdus pentru prima dată în procesoarele 486DX. Recent procesoare AMD a devenit standard să se utilizeze 64 KB de cache L1 per nucleu (pentru date și instrucțiuni), iar procesoarele Intel folosesc 32 KB de cache L1 per nucleu (și pentru date și instrucțiuni)

Cache-ul L1 a apărut pentru prima dată pe procesoarele 486DX, după care a devenit o caracteristică integrală a tuturor procesoarelor moderne.

Cel de-al doilea nivel cache (L2) a apărut pe toate procesoarele după lansarea Pentium III, deși primele sale implementări pe ambalaj au fost în procesor Pentium Pro (dar nu pe cip). Procesoarele moderne sunt echipate cu până la 6 MB de cache L2 pe cip. De regulă, acest volum este împărțit între două nuclee pe un procesor Intel Core 2 Duo, de exemplu. Configurațiile tipice L2 oferă 512 KB sau 1 MB de cache per nucleu. Procesoarele cu dimensiuni mai mici ale memoriei cache L2 tind să fie la un nivel de preț mai scăzut. Mai jos este o diagramă a implementărilor timpurii L2 cache.

Pentium Pro avea memoria cache L2 în ambalajul procesorului. În generațiile ulterioare de Pentium III și Athlon, memoria cache L2 a fost implementată prin cipuri SRAM separate, ceea ce era foarte comun la acea vreme (1998, 1999).

Anunțarea ulterioară a unei tehnologii de proces de până la 180 nm a permis producătorilor să integreze în sfârșit cache-ul L2 pe matrița procesorului.


Primele procesoare dual-core au folosit pur și simplu modele existente care includeau două matrițe per pachet. AMD a introdus un procesor dual-core pe un cip monolitic, a adăugat un controler de memorie și un comutator, iar Intel a asamblat pur și simplu două cipuri single-core într-un singur pachet pentru primul său procesor dual-core.


Pentru prima dată, memoria cache L2 a fost partajată între două nuclee pe procesoarele Core 2 Duo. AMD a mers mai departe și a creat primul său Phenom quad-core de la zero, iar Intel a folosit din nou o pereche de matrițe, de data aceasta două matrițe dual-core Core 2, pentru primul său procesor quad-core pentru a reduce costurile.

Cel de-al treilea nivel cache există încă din primele zile ale procesorului Alpha 21165 (96 KB, procesoare introduse în 1995) sau IBM Power 4 (256 KB, 2001). Cu toate acestea, în arhitecturile bazate pe x86, cache-ul L3 a apărut pentru prima dată împreună cu Modele Intel Itanium 2, Pentium 4 Extreme (Gallatin, ambele procesoare în 2003) și Xeon MP (2006).

Implementările timpurii pur și simplu au oferit un alt nivel în ierarhia cache-ului, deși arhitecturile moderne folosesc memoria cache L3 ca un buffer mare și partajat pentru schimbul de date între nuclee în procesoare multi-core. Acest lucru este subliniat de gradul n ridicat de asociativitate. Este mai bine să cauți date puțin mai mult în cache decât să ajungi la o situație în care mai multe nuclee folosesc acces foarte lent la memoria RAM principală. AMD a introdus pentru prima dată memoria cache L3 pe un procesor desktop cu linia Phenom deja menționată. Phenom X4 de 65 nm conținea 2 MB de cache L3 partajat, iar Phenom II X4 modern de 45 nm are deja 6 MB de cache L3 partajat. Procesoarele Intel Core i7 și i5 folosesc 8 MB de cache L3.

Procesoarele moderne quad-core au cache L1 și L2 dedicate pentru fiecare nucleu, precum și un cache L3 mare partajat de toate nucleele. Cache-ul L3 partajat permite, de asemenea, schimbul de date pe care nucleele pot lucra în paralel.


Cache - memorie (cache, numerar, tampon- ing.) - folosit în dispozitive digitale, ca un clipboard de mare viteză. Memoria cache poate fi găsită pe dispozitive computerizate, cum ar fi procesoare, plăci de rețea, unități CD și multe altele.

Principiul de funcționare și arhitectura cache-ului pot varia foarte mult.

De exemplu, un cache poate servi ca obișnuit clipboard . Dispozitivul procesează datele și le transferă într-un buffer de mare viteză, unde controlerul transmite datele către interfață. Un astfel de cache este conceput pentru a preveni erorile, a verifica integritatea datelor hardware sau pentru a codifica semnalul de la dispozitiv într-un semnal de înțeles pentru interfață, fără întârzieri. Acest sistem este utilizat, de exemplu, în CD/DVD Unități CD.

Într-un alt caz, memoria cache poate servi la stocarea codului folosit frecvent și prin aceasta accelerarea procesării datelor. Adică, dispozitivul nu trebuie să calculeze sau să caute din nou datele, ceea ce ar dura mult mai mult decât citirea lor din cache. ÎN în acest caz, Dimensiunea și viteza cache-ului joacă un rol foarte important.

Această arhitectură se găsește cel mai adesea pe hard disk-uri, și unități centrale de procesare ( CPU).

Când dispozitivele funcționează, memoria cache se poate încărca firmware special sau programe de dispecer cu care ar funcționa mai lent ROM(numai citire memorie).

Cele mai multe dispozitive moderne folosesc tip mixt cache , care poate servi ca clipboard și poate stoca codul folosit frecvent.

Există câteva funcții foarte importante implementate pentru memoria cache a procesoarelor și cipurilor video.

Fuzionarea unităților de execuție . Procesoarele și procesoarele video folosesc adesea un cache partajat rapid între nuclee. În consecință, dacă un nucleu a procesat informații și se află în cache și se primește o comandă pentru aceeași operațiune sau pentru a lucra cu aceste date, atunci datele nu vor fi procesate din nou de procesor, ci vor fi preluate din cache pentru procesare ulterioară. Nucleul va fi descărcat pentru a procesa alte date. Acest lucru crește semnificativ performanța în calcule similare, dar complexe, mai ales dacă memoria cache are volum mare si viteza.

Cache partajat, permite, de asemenea, nucleelor ​​să lucreze direct cu acesta, ocolind lentul .

Cache pentru instrucțiuni. Există fie un cache L1 partajat, foarte rapid pentru instrucțiuni și alte operațiuni, fie un cache dedicat pentru acestea. Cu cât mai multe instrucțiuni sunt stocate într-un procesor, cu atât mai mare este memoria cache de instrucțiuni de care necesită. Acest lucru reduce latența memoriei și permite blocului de instrucțiuni să funcționeze aproape independent Când este plin, blocul de instrucțiuni începe să devină inactiv, ceea ce încetinește viteza de calcul.

Alte funcții și caracteristici.

Este de remarcat faptul că în CPU(unități centrale de procesare), aplicate corectarea erorilor hardware (ECC), deoarece o mică eroare în cache poate duce la o eroare continuă în timpul procesării ulterioare a acestor date.

ÎN CPUŞi GPU există ierarhie cache , care vă permite să separați datele pentru nuclee individuale și cele generale. Deși aproape toate datele din memoria cache de al doilea nivel sunt încă copiate la al treilea nivel, general, dar nu întotdeauna. Primul nivel de cache este cel mai rapid, iar fiecare nivel ulterior este mai lent, dar mai mare ca dimensiune.

Pentru procesoare, este considerat normal treiși mai puține niveluri de cache. Acest lucru permite un echilibru între viteză, dimensiunea memoriei cache și disiparea căldurii. Este dificil să găsești mai mult de două niveluri de cache în procesoarele video.

Dimensiunea memoriei cache, impactul asupra performanței și alte caracteristici.

Natural, cu cât este mai mare cache-ul, cu atât poate stoca și procesa mai multe date, dar există o problemă serioasă.

Cache mare- Asta buget mare. În procesoarele de server ( CPU), memoria cache poate folosi până la 80% bugetul tranzistorului. În primul rând, acest lucru afectează costul final și, în al doilea rând, crește consumul de energie și disiparea căldurii, ceea ce nu este comparabil cu productivitatea crescută cu câteva procente.

Toți utilizatorii sunt bine conștienți de astfel de elemente informatice, cum ar fi procesorul responsabil cu prelucrarea datelor, precum și RAM(RAM sau RAM), responsabil cu stocarea acestora. Dar probabil că nu toată lumea știe că există și o memorie cache a procesorului (cache CPU), adică memoria RAM a procesorului în sine (așa-numita ultra-RAM).

Care este motivul care i-a determinat pe designerii de calculatoare să folosească memorie dedicată pentru procesor? Capacitatea RAM a computerului nu este suficientă?

Într-adevăr, pentru o lungă perioadă de timp, computerele personale au făcut fără nicio memorie cache. Dar, după cum știți, procesorul este cel mai rapid dispozitiv de pe un computer personal și viteza lui a crescut cu fiecare nouă generație de CPU. În prezent, viteza sa este măsurată în miliarde de operații pe secundă. În același timp, RAM standard nu și-a crescut semnificativ performanța pe parcursul evoluției sale.

În general, există două tehnologii principale de cip de memorie - memoria statică și memoria dinamică. Fără să ne adâncim în detaliile designului lor, vom spune doar că memoria statică, spre deosebire de memoria dinamică, nu necesită regenerare; în plus, în memorie statică Pentru un bit de informație, se folosesc 4-8 tranzistoare, în timp ce în dinamică - 1-2 tranzistoare. În consecință, memoria dinamică este mult mai ieftină decât memoria statică, dar în același timp mult mai lentă. În prezent, cipurile RAM sunt fabricate pe baza memoriei dinamice.

Evoluția aproximativă a raportului dintre viteza procesoarelor și RAM:

Astfel, dacă procesorul ar lua informații din RAM tot timpul, ar trebui să aștepte încetul memorie dinamică, și ar fi inactiv tot timpul. În același caz, dacă s-ar folosi memoria statică ca RAM, costul computerului ar crește de câteva ori.

De aceea a fost dezvoltat un compromis rezonabil. Cea mai mare parte a memoriei RAM a rămas dinamică, în timp ce procesorul a primit propria memorie cache rapidă bazată pe cipuri de memorie statică. Volumul său este relativ mic - de exemplu, dimensiunea cache-ului de al doilea nivel este de doar câțiva megaocteți. Cu toate acestea, merită să ne amintim că întreaga memorie RAM a primelor computere IBM PC avea mai puțin de 1 MB.

În plus, fezabilitatea introducerii tehnologiei de cache este influențată și de faptul că aplicatii diferite, situat în RAM, încarcă procesorul diferit și, ca urmare, există o mulțime de date care necesită procesare prioritară față de restul.

Istoricul memoriei cache

Strict vorbind, înainte ca memoria cache să fie mutată pe computerele personale, aceasta fusese deja folosită cu succes în supercomputere de câteva decenii.

Pentru prima dată, într-un PC bazat pe procesorul i80386 a apărut o memorie cache de doar 16 KB. Astăzi, procesoarele moderne folosesc diferite niveluri de cache, de la primul (cel mai rapid cache de cea mai mică dimensiune - de obicei 128 KB) până la al treilea (cel mai lent cache de cea mai mare dimensiune - până la zeci de MB).

La început, memoria cache externă a procesorului a fost localizată pe un cip separat. Cu timpul, însă, acest lucru a făcut ca magistrala situată între cache și procesor să devină un blocaj, încetinind schimbul de date. În microprocesoarele moderne, atât primul cât și cel de-al doilea nivel de memorie cache sunt situate în miezul procesorului însuși.

Multă vreme, procesoarele au avut doar două niveluri de cache, dar procesorul Intel Itanium a fost primul care a prezentat un cache de nivel al treilea, comun tuturor nucleelor ​​de procesor. Există și dezvoltări de procesoare cu un cache pe patru niveluri.

Arhitecturi și principii cache

Astăzi se cunosc două tipuri principale de organizare a memoriei cache, care provin din primele dezvoltări teoretice în domeniul ciberneticii – arhitecturile Princeton și Harvard. Arhitectura Princeton presupune un singur spațiu de memorie pentru stocarea datelor și comenzilor, în timp ce arhitectura Harvard implică unele separate. Majoritatea procesoarelor calculatoare personale Linia x86 folosește un tip separat de memorie cache. În plus, în procesoare moderne a apărut și un al treilea tip de memorie cache - așa-numitul buffer de traducere asociativă, conceput pentru a accelera conversia adreselor memorie virtuală sistem de operare la adresele memoriei fizice.

O diagramă simplificată a interacțiunii dintre memoria cache și procesor poate fi descrisă după cum urmează. În primul rând, se verifică disponibilitatea necesare procesorului informații în cel mai rapid - cache de nivel întâi, apoi - în cache de nivel al doilea etc. Dacă informatiile necesare nu există cache la nici un nivel, apoi vorbesc despre o eroare sau o pierdere de cache. Dacă nu există deloc informații în cache, atunci procesorul trebuie să o ia din RAM sau chiar din memorie externă(de pe hard disk).

Ordinea în care procesorul caută informații în memorie:

Acesta este modul în care Procesorul caută informații

Pentru a controla funcționarea memoriei cache și interacțiunea acesteia cu unitățile de calcul ale procesorului, precum și RAM, există un controler special.

Schema de organizare a interacțiunii nucleului procesorului, cache-ului și RAM:

Controlerul cache este element cheie comunicarea între procesor, RAM și memoria cache

Trebuie remarcat faptul că stocarea în cache a datelor este un proces complex care utilizează multe tehnologii și algoritmi matematici. Printre concepte de bază, folosit în cache, putem distinge metodele de scriere cache și arhitectura asociativității cache.

Metode de scriere în cache

Există două metode principale de scriere a informațiilor în memoria cache:

  1. Metoda de rescriere – datele sunt scrise mai întâi în cache și apoi, când anumite conditii, și în RAM.
  2. Metoda de scriere – datele sunt scrise simultan în RAM și cache.

Arhitectura asociativității cache

Arhitectura asociativității cache definește modul în care datele din RAM sunt mapate în cache. Principalele opțiuni pentru memorarea în cache a arhitecturii asociativității sunt:

  1. Cache mapat direct - o anumită secțiune a memoriei cache este responsabilă pentru o anumită secțiune a RAM
  2. Cache complet asociativ - orice parte a memoriei cache poate fi asociată cu orice parte a memoriei RAM
  3. Cache mixt (set-asociativ)

Nivelurile de cache diferite pot utiliza de obicei arhitecturi de asociativitate cache diferite. Memoria RAM Direct Mapped Caching este cea mai mare varianta rapida cache, astfel încât această arhitectură este de obicei folosită pentru cache-uri mari. La rândul său, un cache complet asociativ are mai puține erori de cache (gașuri).

Concluzie

În acest articol, vi s-a prezentat conceptul de memorie cache, arhitectura memoriei cache și tehnicile de stocare în cache și modul în care afectează performanța. calculator modern. Prezența memoriei cache poate optimiza în mod semnificativ funcționarea procesorului, poate reduce timpul de inactivitate al acestuia și, în consecință, poate crește performanța întregului sistem.

Cache - buffer intermediar cu acces rapid, care conțin informații care sunt cel mai probabil să fie solicitate. Accesarea datelor din cache este mai rapidă decât preluarea datelor sursă din memoria operațională (RAM) și mai rapidă decât memoria externă ( hard disk sau unitate SSD) memorie, datorită căreia timpul mediu de acces scade și crește performanța generală sistem informatic.

O serie de modele de unități centrale de procesare (CPU) au propriul cache pentru a minimiza accesul la memoria cu acces aleatoriu (RAM), care este mai lentă decât registrele. Memoria cache poate oferi beneficii semnificative de performanță atunci când viteza de ceas a RAM este semnificativ mai mică decât viteza de ceas a procesorului. Frecvența ceasului pentru memoria cache, de obicei, nu este cu mult mai mică decât frecvența procesorului.

Niveluri de cache

Cache procesor centralîmpărțit în mai multe niveluri. Într-un procesor de uz general, numărul de niveluri poate fi acum până la 3. Cache-urile de nivel N+1 sunt de obicei mai mari ca dimensiune și mai lente ca viteze de acces și transfer de date decât cache-urile de nivel N.

Cea mai rapidă memorie este cache-ul de prim nivel - L1-cache. De fapt, este o parte integrantă a procesorului, deoarece este situat pe același cip și face parte din blocurile funcționale. La procesoarele moderne, memoria cache L1 este de obicei împărțită în două cache, cache-ul de instrucțiuni și cache-ul de date (arhitectura Harvard). Majoritatea procesoarelor fără cache L1 nu pot funcționa. Cache-ul L1 funcționează la frecvența procesorului și, în caz general, poate fi accesat în fiecare ciclu de ceas. Este adesea posibilă efectuarea simultană a mai multor operații de citire/scriere. Latența de acces este de obicei de 2-4 cicluri de ceas de bază. Volumul este de obicei mic - nu mai mult de 384 KB.

Al doilea cel mai rapid este L2-cache - un cache de al doilea nivel, situat de obicei pe cip, ca L1. În procesoarele mai vechi - un set de cipuri pe placa de sistem. Volumul cache L2 de la 128 KB la 1-12 MB. În procesoarele moderne cu mai multe nuclee, cache-ul de al doilea nivel, situat pe același cip, este o memorie separată - cu o dimensiune totală a cache-ului de nM MB, fiecare nucleu are nM/nC MB, unde nC este numărul de nuclee de procesor. De obicei, latența cache-ului L2 situat pe cipul central este de la 8 la 20 de cicluri de ceas de bază.

Cel de-al treilea nivel cache este cel mai puțin rapid, dar poate fi foarte impresionant ca dimensiune - mai mult de 24 MB. Cache-ul L3 este mai lent decât cache-urile anterioare, dar totuși semnificativ mai rapid decât RAM. În sistemele multiprocesor este de uz comun și este destinat sincronizării datelor din diferite L2.

Uneori există și un cache de nivel 4, de obicei este situat într-un cip separat. Utilizarea cache-ului de nivel 4 este justificată numai pentru servere și mainframe de înaltă performanță.

Problemă de sincronizare între diverse cache-uri(atât unul cât și mai multe procesoare) este rezolvată prin coerența cache. Există trei opțiuni pentru schimbul de informații între cache-uri de diferite niveluri sau, după cum se spune, arhitecturi cache: inclusive, exclusive și neexclusive.