Memòria

De Cacauet Wiki
Salta a la navegació Salta a la cerca

La memòria és un dispositiu electrònic capaç d'emmagatzemar informació digital.

A la següent piràmide es pot veure els diferents tipus de suports d'emmagatzematge. Cal notar que els de més amunt són més ràpids i mes cars (€/B), i els de més avall són de més capacitat.

Piràmide dels suports d'informació. Quant més amunt més ràpids, i quan més avall més capacitat.

Podem distingir, doncs, diversos tipus de memòria:

  • Registres de la CPU: els més ràpids, però només podem tenir uns pocs bytes.
  • Caché: memòria estàtica (SRAM) molt ràpida però amb capacitats molt reduïdes:
    • Cache L1 (level 1): pocs KB
    • Cache L2 (level 2): 1 MB
    • Cache L3 (level 3): 10 MB
  • Memòria principal: (1-16 GB) del tipus DRAM (Dynamic RAM) amb més densitat per l'ús general de les aplicacions que s'executen al sistema.
  • Disc dur: (fins a 2 TB) per emmagatzemament massiu.
  • CD/DVD/BD: suports extraïbles
    • CD:700MB
    • DVD:4GB
    • BD:50GB
  • Flash: (uns 32 GB) per emmagatzemament de dades en suport extraïble.
  • Cintes DAT: ja obsoletes. En el seu moment podien assolir 20GB (llavors era molt adequat per còpies de seguretat).


Classificació de les memòries

Segons la capacitat de ser escrites o no, i de la tecnologia emprada, podem classificar les memòries de la següent manera:

Memòria principal ROM (no volàtil) ROM Read-Only Memory
PROM Programmable ROM
EPROM Erasable Programmable ROM
EEPROM Electrical EPROM BIOS
RAM (volàtil) SRAM Static RAM Caché (integrada al uP)
DRAM (Dynamic) FPM Fast Page Mode SIMM
EDO Extended Data Output
SDRAM Synchronous DRAM DIMM
RDRAM Rambus DRAM RIMM
DDR (1,2,3) - SDRAM Double-Data Rate DIMM


Les memòries FLASH són un híbrid elaborades amb una tecnologia particular, que no ens entra en aquesta classificació. A efectes pràctics les podem considerar una EEPROM ja que no són volàtils però es poden regravar amb un senyal elèctric.

Les EPROM es podien esborrar amb un llum ultraviolat aplicat a una ranura del xip. D'aquesta manera es podien reprogramar de nou.


SRAM o memòria estàtica

Les característiques son:

  • Manté la informació mentre estigui alimentada.
  • Avantatge: és una memòria molt ràpida (es sol utilitzar per les Caché).
  • Inconvenient: ocupa molt espai físic.


DRAM o memòria dinàmica

Es va inventar per aconseguir tenir més memòria principal a les màquines. L'objectiu era aconseguir major densitat d'integració, ja que amb les memòries estàtiques no s'aconseguia suficient capacitat. Es van dissenyar així les memòries dinàmiques que tenen una major densitat d'integració (més MB/cm2).

Característiques:

  • Basada en petites cel·les de memòria a mode de "condensadors". Si estan carregats equivalen a un "1" i si no, equivalen a un "0".
  • Aquests condensadors tenen fugues internes i amb el pas del temps (pocs microsegons) es descarreguen: això faria que els 1's esdevinguessin zeros. Per tant, caldrà recarregar les cel·les (refrescar-les) perquè mantinguin la informació.
  • Un circuit de refresc serà l'encarregat de recarregar les cel·les. Això provocarà una menor velocitat d'accés a memòria.
  • Ocupen poc espai físic, el que permet una alta denistat d'integració (més bits per unitat de superfície). Això les fa òptimes com a memòria principal del PC.


Evolució història de les DRAM

  • FPM: Fast Page Mode. Funcionaven ràpidament si accedies a una zona de memòria concreta (pàgina). Temps d'accés de 60 nanosegons.
  • EDO: Extended Data Output. Milloraven l'accés a memòria si s'accedia per blocs. Arribaven a temps d'accés de 30 nanosegons.
  • SDRAM: Synchronous DRAM. Tenen una alta eficiència d'accés si es fa per blocs. Apareixen juntament amb els nous mòduls DIMM. Arribaven a temps d'accés de 10 ns. Hi havia els següents tipus depenent de la freqüència de treball:
    • PC66: la velocitat del bus de Memòria es de 66 Mhz.
    • PC100: La velocitat del bus de Memòria es de 125 Mhz.
    • PC133: La velocitat de bus de Memòria es de 133 Mhz.
  • RDRAM: Rambus DRAM (empresa). Millora de la tenologia DRAM per part de la companyua Rambus que Intel va intentar impulsar, però que finalment s'ha deixat de banda.
  • DDR-RAM: Double Data Rate
    • DDR-SDRAM: Double Data Rate - Synchronous DRAM. Doblen la velocitat d'accés a memòria enviant 2 dades per cada cicle de rellotge. Utilitzen DIMMs però amb 184 contactes.
    • DDR2-SDRAM: la segona generació de DDR quadripliquen l'accés a memòria.
    • DDR-3: la tercera generació de DDR multipliquen per 8 la velocitat d'accés a memòria, però tenen l'inconvenient de que no milloren la latència de les DDR originals, augmentant proporcionalment a la capacitat del buffer.

NOTA IMPORTANT: Els diferents tipus de memòria són incompatibles i utilitzen encapsulaments diferents (veure quadre secció "encapsulament").

VRAM o Vídeo RAM

La VRAM (Vídeo RAM) és un tipus de memòria dinàmica molt ràpida utiltizada per l'adaptador de vídeo. Mereix una menció especial perquè es basa en utiltizar una RAM de doble port. Això vol dir que aquesta memòria pot ser accedida simultàniament per la targeta de vídeo i pel microprocessador sense interferint-se, accelerant el rendiment. La targeta de vídeo és un dels dispositus més importants per les estacions de treball (workstations), i per això se li ha dedicat més atenció que a altres dispositius menys crítics.


Memòria Cau (Caché)

Memòria ràpida (estàtica) situada entre el micro i la DRAM principal per accelerar l'accés a memòria del microprocessador.

Cache.gif
  • Memòria tipus SRAM (estàtica).
  • Velocitat alta (comparable a la del microprocessador).
  • Latència baixa: entreguen les dades immediatament, encara que siguin de zones de memòria disperses (just al contrari de les DRAM que tenen latències altes, el que fa molt ineficient l'accés aleatori a zones disperses).
  • Carreguen blocs de memòria de la DRAM (principal). La DDR-SDRAM és molt eficient quan descarregues blocs i per tant, al baixar dades per blocs, s'aprofita l'ample de banda del bus.
  • Hi ha diferents nivells de memòria cau: L1, L2 i L3. Quan més alt és el número més lenta és la memòria i més lluny està del micro. Per tant, no és el mateix tenir 6MB de L2 que de L3. És millor i més car tenir-les en els nivells més baixos ja que donarà més rendiment.
  • Des de fa bastants anys ve integrada dins el microprocessador. Això fa que el preu del microprocessador variï molt en funció de la memòria cau de què disposa.


La DRAM principal del sistema, malgrat s'ha accelerat molt la seva velocitat té molta latència. És eficient només si es carrega per blocs grans. Però la CPU demana dades de manera "dispersa", aleatòria. Si la CPU ataca directament la DRAM l'eficiència seria molt baixa.

La solució és la memòria caché, que carrega blocs de la DRAM (accés eficient) suficientment grans perquè la CPU treballi més ràpidament. Quan a la CPU li falta alguna regió de memòria carrega tot el bloc sencer, acostant la regió de memòria a la CPU. La caché (SRAM) sí és eficient per servir dades aleatòries ("disperses"), ja que la seva latència és baixa.

La memòria caché és un element que canvia molt el rendiment global de la CPU, i és vital tenir-ho en compte per entendre quin tipus de microprocessador estem comprant (ve integrada al xip del micro).


Encapsulament

L'encapsulament és el suport físic on van muntats el xips de DRAM per ser integrats modularment i còmoda al PC.

Dimm168pins.jpg

Simm30pins.jpg

  • SIMM: Single Inline Memory Module. Només tenen contactes per una cara del circuit imprès.
    Nº contactes: 30/72.
    Bus de dades: 8/16 bits.
  • RIMM: Rambus Inline Memory Module. Es va fer servir per les RDRAM (Rambus) però s'ha deixat d'utilitzar ja que les les DDR s'han imposat al mercat.
  • DIMM: Double Inline Memory Module.
    Tenen contactes per ambdós costats del circuit imprès.
    Contactes: 168/184/240
    Bus de dades: 64 bits.
  • SO-DIMM: versió reduïda per ordinadors portàtils.
    Nº contactes: 144.

Dimm184pins.jpg

El següent quadre sumaritza els empaquetaments pels diferents tipus de RAM:


Encapsulament Nº de contactes Tipus RAM Microprocessador Comentaris
SIMM 30 FPM i386 Calen 4 mòduls (8 bits x4 = 32 bits)
i486
72 EDO i486 32 bits: es poden posar mòduls individuals
Pentium De 2 en 2
RIMM RDRAM (Rambus) Pentium
DIMM 168 (2 osques) SDRAM Pentium II, III AMD K6, K7
184 (1 osca) DDR-1 Pentium IV

AMD Athlon

240 (1 osca però a diferent posició) DDR-2 Intel Core

AMD Athlon 64

240 (1 osca però a diferent posició) DDR-3 Core Core 2, AMD Phenom

DDR SDRAM: Double Data Rate

Double Data Rate – Synchronous Dynamic RAM

Són memòries del tipus SDRAM (Syncronoys Dynamic RAM) però amb millores per aconseguir un major ample de banda (velocitat de transmissió de dades, normalment expressat en MB/s).

Memòria Factor DDR Comentari
DDR1 x2 Duplica la velocitat del bus de dades de la memòria (FSB) aprofitant el flanc de pujada i baixada del rellotge.
DDR2 x4 Quadriplica la velocitat del FSB.
DDR3 x8 Octuplica la velocitat del FSB.


Les DDR s'han imposat al mercat (per davant de les RDRAM i d'altres) per la seva eficiència en la transferència de dades per blocs. Tot i així, tenen el problema de la latència, que augmenta cada cop que dupliquem la velocitat del bus. Així, la DDR3 té molta més velocitat de transferència que les anteriors amb el mateix clock del bus intern, però a la pràctica tenen el problema de la latència.

Nomenclatura dels noms DDR

Les memòries DDR es nomenen com a PC-xxxx, on xxxx és el nombre de Mbytes/s (ample de banda) que pot transferir. Per exemple, una PC-1600 tindria una amplada de banda de 1600 MB/s o bé 1,6 GB/s.

No hem de confondre aquests noms amb els de la EDO RAM que eren també PC33, PC100 o PC133 però que indicaven la freqüència del rellotge enlloc de l'amplada de banda.

Les DDR-2 tenen el prefix PC2-xxxx enlloc del PC-xxxx de les DDR-1. Les DDR, al seu torn, tenen el prefix PC3-xxxx. Cal tenir en compte que aquest prefix no ens dona informació de la velocitat interna de les RAM, només del resultat final del seu ample de bada. Així, una PC-4200 (DDR-1) seria equivalent a una PC2-4200, només que la DDR-1 tindria l'avantatge de tenir menys latència. Normalment, les successives generacions de DDR tenen el problema de la latència però arriben a taxes de transferència majors.


Detecció d'errors en les memòries

Algunes memòries disposen de control d'errors. Veiem algunes tècniques possibles per aconseguir-ho.

Paritat

Aquestes memòries disposen, a més dels 8 bits de cada cel·la, un bit de paritat addicional. Amb aquest es pot detectar si hi ha hagut un error d'1 bit o d'un nombre imparell d'aquests. En aquest bit addicional es posa un 1 si el nombre d'1's del byte és parell, i si no es posa un 0. D'aquesta manera es permet detectar errors, malgrat no es puguin corregir.

ECC – Error Correction Code

Alguns controladors de RAM per servidors i sistemes segurs poden utilitzar la RAM en un mode especial per detectar errors i corregir-los. Es basen en modes complexes de l'anomenat Codi Hamming que permet:

  • Corregir errors d'1 bit
  • Detectar si hi ha errors de fins a 4 bits sense corregir-los.

Per implementar la ECC cal un controlador i una memòria específica. Sembla ser que la inclusió de controls ECC en la memòria va a "modes", i realment només s'utiltiza en servidors i supercomputació.

Què fer amb els errors de memòria?

Programa de test de memòria inclòs amb les distribucions Debian/Ubuntu. Es posa en marxa a l'arranc, sense carregar el sistema operatiu per poder chequejar tota la memòria RAM.
  • En les sistemes amb ECC el sistema operatiu és notificat pel controlador de RAM amb una excepció quan hi ha un error de memòria, i el mateix S.O. ha de decidir què fer, si ignorar-lo i continuar, o bé parar (halt) el sistema (pantalla blava del windows). En qualsevol cas se sol aconsellar a l'usuari de fer un test de memòria.
  • El test de memòria es pot fer des de la pròpia BIOS si ho permet. Hi ha programes per fer-ho però no es pot fer una aplicació normal, ja que no se li permetria accedir a posicions de memòria utiltizades pel sistema operatiu. Per tant, cal efectuar el test abans d'arrancar el S.O. Per exemple, en la distribució GNU/Linux Ubuntu apareix una opció al menú d'arranc (GRUB) que permet fer un test de memòria.

Dual-channel i triple-channel

Dual-channel és una tecnologia de la placa base per multiplicar per dos la velocitat d'accés a la memòria. Es basa en fer treballar dos bancs de RAM alhora, repartint les dades entrellaçades, el que fa augmentar l'amplada de banda resultant amb la mateixa latència. Intel ha començat a treure models del seu nou Core i7 amb arquitectures triple-channel, AMD encara no ha reaccionat a la novetat (Nov/2009).