Memòria

De Cacauet Wiki
Dreceres ràpides: navegació, 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[modifica]

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[modifica]

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[modifica]

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[modifica]

  • 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[modifica]

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é)[modifica]

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[modifica]

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 Memory Comparison.svg SODIMM Memory Comparison.svg


DDR SDRAM: Double Data Rate[modifica]

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[modifica]

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.

Prefixes:

  • DDR-1: PC-xxxx
  • DDR-2: PC2-xxxx
  • DDR-3: PC3-xxxx

On "xxxx" és l'ample de banda en MB/s.

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.

Freqüències[modifica]

La informació de la DDR se'ns dona en forma de freqüència de la RAM. Per exemple:

Kingston ValueRAM 1GB DDR2 800 MHz PC2-6400

Aquesta memòria és de 1 GB de capacitat i ens donen la freqüència de treball de la RAM (fRAM = 800 MHz).

Cal distingir 2 conceptes diferents:

  • Freqüència del FSB (Front Side Bus) (fFSB): és la velocitat a la que corre el bus del processador (FSB).
  • Freqüència de la memòria (fRAM): és la velocitat a la que treballa la memòria internament. Com que la memòria DDR envia vàries dades per cada cicle del FSB, la fRAM serà major. Particularment estarà multiplicada pel factorDDR que hem esmentat en la secció anterior (x2 per la DDR, x4 la DDR2 i x8 la DDR3).
fRAM = fFSB × factorDDR

Disposem de 2 fórmules que cal seguir per calcular l'ample de banda o bandwidth (BW) en funció de la velocitat del bus o de la memòria:

BW = fRAM × 8 B/transfer
BW = fFSB × factorDDR × 8 B/transfer


Detecció d'errors en les memòries[modifica]

Les memòries poden tenir diversos tipus d'error:

  • Errors transitoris: un error que succeeix un sol cop. Per exemple, quan es penja la màquina per motius "misteriosos".
  • Errors permanents: la memòria te bytes malmesos. En aquest cas sol passar que la màquina es penja sovint, tot i que no té perquè seguir un patró determinístic (es pot penjar en diferents situacions). Quan detectem que una memòria té errors permanents (amb el test de memòria) és millor que la llencem.

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

  • Paritat: detecció d'errors.
  • ECC: detecció i correcció d'errors.


Paritat[modifica]

Aquestes memòries disposen, a més dels 8 bits de cada cel·la (bit), 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.

La tècnica consisteix en fer que el nombre total d'1s sigui parell (paritat parella). En aquest bit addicional es posa un 1 si el nombre d'1's del byte és senar, i si és parell es posa un 0. Si el nombre total d'1s és senar, detectem l'error, malgrat no es pugui corregir.

Parity.jpg


ECC – Error Correction Code[modifica]

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 afegir 4 bits més byte, utilitzant l'anomenat Codi Hamming que permet:

  • Corregir errors d'1 bit
  • Detectar el 100% dels errors de fins a 4 bits sense corregir-los.

Per implementar la ECC cal un controlador i una memòria específica. Els mòduls de memòria són més cars i només es solen utilitzar en servidors i supercomputació.


Què fer amb els errors de memòria?[modifica]

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 és una anàlisi més profunda del dispositiu i es pot fer des de la pròpia BIOS si ho permet. També hi ha programes que fan un examen més exhaustiu, però no es pot utilitzar una aplicació normal, ja que no se li permetria accedir a posicions de memòria utilitzades 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.


Si, després del test concloem que la memòria té errors permanents, és millor llençar-la perquè provocarà que la màquina es penji de manera aleatòria.


Dual-channel i triple-channel[modifica]

Dual-channel és una tecnologia implementada al xipset (Northbridge) per multiplicar per dos l'ample de banda de la memòria. Es basa en fer treballar dos bancs de RAM alhora, repartint les dades entrellaçades (interleaved), el que fa augmentar l'amplada de banda resultant amb la mateixa latència.

Single vs dual channel2.png


Intel també ha tret plaques base amb tecnologia triple channel.


Implementació en la placa base[modifica]

Placa base Intel amb dual-channel. Cal posar els mòduls de memòria de dos en dos per poder intercalar les dades.

Com es pot veure al següent diagrama, els mòduls de memòria s'han de disposar correctament als slots per aconseguir duplicar la velocitat. A les configuracions de la part superior el dual-channel està actiu.

Dualchannel-diagrama.jpg

Per saber més podeu fer un vistasso al white paper de Kingston sobre l'arquitectura dual channel (en anglès).