Memoria cache

Ca să pot să explic ce este memoria cache trebuie să vă prezint o schemă. [Ştiu că sunteţi înnebuniţi după desenele mele, dar să vedeţi şi ce listă am tras.] Sper că din această schemă corelată cu explicaţia  va rezulta destul de evident la ce este bună memoria cache.

Schema profan – principială de funcţionare a memoriei cache (sau algoritmul cache generalizat, în viziunea mea):

Notă:

  • Răspunsul la cererea către hard disk (linia punctată) apare doar după ce s-a constatat că niciuna din memoriile cache (se observă modul de conectare, se numeşte conectare în cascadă) nu conţine informaţia cerută şi circulă pe "calea inversă".

Dacă nu este destul de clar cu funcţionează explic şi în cuvinte (ar fi cam greu de explicat prin mimă):

Partea de execuţie a instrucţiunilor are nevoie de o parte din conţinutul unui fişier. Acesta îi comunică părţii de control ce nevoie are. Acesta întreabă memoria cache internă, care stochează datele utilizate cel mai recent (hai să nu ne legăm de liste FIFO şi alte asemenea). [Urmează o listă extremă.]

Dacă memoria cache din microprocesor (CPU):

    1. Are informaţia cerută – o trimite unde este nevoie.
    2. Nu are informaţia cerută – o cere din memoria cache externă (să zicem că e aceea de pe placa de bază).

      Dacă memoria cache externă:

      1. Are informaţia cerută – o trimite unde este nevoie.
      2. Nu are informaţia cerută – o cere din memoria RAM care s-ar putea să o aibe de la o cerere similară prealabilă.

        Dacă memoria RAM:

        1. Are informaţia cerută – o trimite unde este nevoie.
        2. Nu are informaţia cerută – o cere de la hard disk, prin intermediul controller-ului de hard disk. Ştim că orice hard disk are o memorie cache.

          Dacă memoria cache din hard disk:

          1. Are informaţia cerută – o trimite spre RAM care o trimite mai apoi spre microprocesor, unde este nevoie.
          2. Nu are informaţia cerută – o citeşte de pe disk. Acum o are. Şi o trimite spre memoria RAM, prin microcontroller-ul cu DMA (acces direct la memorie) care memorie RAM o trimite mai apoi spre microprocesor, unde este nevoie.

Ştiu că pare complex. Este. Ştiu că pare o operaţie lentă. Nu este. Pentru că fiecare tip de cache menţionat mai sus funcţionează după nişte algoritmi care să crească şansele ca acestea să aibe informaţia cerută plus că timpul necesar interogării acesteia este infinit (mult) mai mic decât timpul necesar crererii şi primirii răspunsului (în acest caz o parte dintr-un fişier).

Memoria cache, generic vorbind, fiind mai rapidă decât orice altă memorie (cu excepţii) poate trimite mai rapid informaţiile spre microprocesor. Aceasta înseamnă că microprocesorul poate să nu mai irosească timp preţios în aşteptarea unor date sau informaţii necesare execuţiei unui program. Ceea ce duce la creşterea performanţelor sistemului pentru că în loc să stea acesta lucrează.

Desigur, cu cât dimensiunile fiecărui tip de cache sunt mai mari cu atât cresc şansele ca aceasta să aibe informaţia cerută. Din păcate, fiind memorii rapide (de exemplu cea din microprocesor lucrează la frecvenţa internă a acestuia) sunt şi scumpe.

Explicaţie şi mai profană (nu cred că se poate mai profan de atât): un meşter îşi pune sculele cele mai folosite mai aproape de mână, iar sculele cel mai puţin folosite mai departe. Sculele cele mai apropiate de mână se cheamă că sunt în memoria cache, pentru că s-ar putea să le fi folosit recent şi acestea sunt mai la îndemână.

Sper că am reuşit cât de cât să explic ce este cu această memorie numită cache, care vedem că este de mai multe tipuri. Oricum, numai studierea tuturor memoriilor şi algoritmilor cache este subiect pentru o carte aşa că eu, prin articolul acesta, n-am reuşit nici măcar să zgârii suprafaţa.

Ca şi curiozitate memoria cache a apărut relativ recent. Primele microprocesoare din PC-uri cu memorie cache internă fiind cele din clasa 486. Sper că v-a plăcut articolul.

12 Comentarii

  1. Mihai Todor 16 aprilie 2009 la 23:17 - Raspunde

    Eh, ar mai fi multe chestii de zis pe aici. Mai ales ca mai nou au aparut procesoarele astea cu mai multe core-uri care fie au o memorie cache partajata, fie au cache separat, caz in care se complica si mai tare povestea… Cica am dat examen la o materie unde trebuia sa stim destul de bine mecanismele prin care se asigura coerenta memoriei cache, da nici sa ma bati ca nu vreau sa mai imi aduc aminte detalii despre acest subiect 😀 Exista destui masochisti pe lumea asta carora le place sa studieze subiecte de genul acesta. Eu prefer sa evit pe cat posibil 😛

    • Robin Molnar 17 aprilie 2009 la 07:18 - Raspunde

      😆 Şi eu care ziceam că te momesc să bagi un comentariu d-ăla lung ca să intri în detalii… 😆 Pur şi simplu subiectul este mult prea stufos… 😆 De exemplu şi RAM-ul poate să aibe cache sau un microprocesor modern cu mai multe nuclee care are propriul cache plus cache-ul fiecărui nucleu… 😆 Să nu mai spun de plăcile video cum au cache-ul, că iese o epopee… 😀

  2. Mihai Todor 17 aprilie 2009 la 07:45 - Raspunde

    Pentru asa ceva ar trebui sa faci o noua sectiune a blogului 😛

    • Robin Molnar 17 aprilie 2009 la 08:00 - Raspunde

      😆 Dacă nu îţi faci tu blog după licenţă îţi fac o secţiune separată: „Mishu Says”… :woohoo:

  3. Anonim 31 martie 2010 la 17:36 - Raspunde

    Fabulos,….cititi bine ce s-a scris mai sus, nu sariti randurile. Cei care incearca sa evite astfel de subiecte inseamna ca nu-i intereseaza si ca atare ar fi bine sa evite sa si comenteze aiurea, faptul ca au aparut procesoare cu doua nucleie sau cu 2 memorii cache sint simplu de dedus cum lucreaza,….partea cea mai grea si interesanta este ce s-a spus mai sus. Citi dintre voi aveati habar cum circula informatia intr-un calculator si ce rol are memoria cache. Personal pot spune ca am invatat ceva foarte important de aici. Ma repet…FABULOS

    • Robin Molnar 01 aprilie 2010 la 14:06 - Raspunde

      =D Fii blând cu prietenul meu Mihai. El a făcut doar o completare pertinentă. =D Oricum, mă bucur că ai învățat ceva nou. =D

      • Mihai Todor 01 aprilie 2010 la 14:13 - Raspunde

        Eh, no, l-am iertat 😛 (e vina mea că am uitat să trec la secțiunea de contact că am făcut 5 ani de Automatică :P)

        • Robin Molnar 01 aprilie 2010 la 14:37 - Raspunde

          =D Vrei să trec și asta? Spune-mi și se face. =D

          • Mihai Todor 01 aprilie 2010 la 15:21 -

            Eh, las\’ că prefer să fiu modest 😛

          • Robin Molnar 01 aprilie 2010 la 23:28 -

            =D Cred că ai ratat [url=http://www.robintel.ro/index.php/blog/revelatii/despre-modestie.html]articolul despre modestie[/url]: =D [quote=Robin Molnar]Dacă un om trebuie să-și asume eșecurile, atunci un om trebuie să-și asume și succesele![/quote]

          • Mihai Todor 02 aprilie 2010 la 07:13 -

            L-am lecturat, da\’ no… Acuma\’ și tu… 🙂

          • Robin Molnar 02 aprilie 2010 la 11:44 -

            =D Pai io sunt chiar nesimtit, nu asa! =D

Lasa un raspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Vreau să fiu părtaș la faptă. Poți, de asemenea, să fii părtaș și fără martori.

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

Robintel
Despre Politica de Confidențialitate

Acest website are nevoie să folosească cookies, care sunt niște fișiere text de mici dimensiuni ce conțin referințe specifice, dar nu explicite, stocate pe computerul voastru, astfel încât, de exemplu, atunci când lăsați un comentariu, datele din formular să se salveze, dar nu numai.

Fără acces la cookies, aceste date nu se vor salva.

Pentru a afla mai multe despre cum folosim informațiile și despre dreptul vostru asupra datelor voastre, vă rugăm să consultați pagina Politica de Confidențialitate.

Puteți modifica accesul la aceste cookies accesând taburile din stânga.