Diferència entre revisions de la pàgina «Memòria»
m (→Freqüències) |
|||
(Hi ha 25 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 3: | Línia 3: | ||
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. | 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. | ||
− | [[Imatge:piramide_memoria.jpg|450px]] | + | [[Imatge:piramide_memoria.jpg|450px|thumb|dreta|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: | Podem distingir, doncs, diversos tipus de memòria: | ||
Línia 58: | Línia 58: | ||
|- | |- | ||
− | | style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| DRAM (Dynamic) | + | | rowspan="5" style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| DRAM (Dynamic) |
| style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| FPM | | style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| FPM | ||
| style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Fast Page Mode | | style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Fast Page Mode | ||
Línia 66: | Línia 66: | ||
| style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| EDO | | style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| EDO | ||
| style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Extended Data Output | | style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Extended Data Output | ||
− | |||
| style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| | | style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| | ||
Línia 73: | Línia 72: | ||
| style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Synchronous DRAM | | style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Synchronous DRAM | ||
| style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| DIMM | | style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| DIMM | ||
− | |||
|- | |- | ||
Línia 79: | Línia 77: | ||
| style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Rambus DRAM | | style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Rambus DRAM | ||
| style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| RIMM | | style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| RIMM | ||
− | |||
|- | |- | ||
Línia 85: | Línia 82: | ||
| style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Double-Data Rate | | style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Double-Data Rate | ||
| style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| DIMM | | style="background-color:#cccc00;border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| DIMM | ||
− | |||
|} | |} | ||
Línia 93: | Línia 89: | ||
Les EPROM es podien esborrar amb un llum ultraviolat aplicat a una ranura del xip. D'aquesta manera es podien reprogramar de nou. | 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 == | == SRAM o memòria estàtica == | ||
Línia 103: | Línia 98: | ||
== DRAM o memòria dinàmica == | == 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/cm<sup>2</sup>). | ||
+ | |||
Característiques: | 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". | *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". | ||
Línia 131: | Línia 128: | ||
== Memòria Cau (Caché) == | == 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. | Memòria ràpida (estàtica) situada entre el micro i la DRAM principal per accelerar l'accés a memòria del microprocessador. | ||
+ | [[Imatge:cache.gif|300px|thumb|dreta]] | ||
*Memòria tipus '''SRAM''' (estàtica). | *Memòria tipus '''SRAM''' (estàtica). | ||
*'''Velocitat alta''' (comparable a la del microprocessador). | *'''Velocitat alta''' (comparable a la del microprocessador). | ||
Línia 137: | Línia 135: | ||
*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. | *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. | *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. | ||
+ | |||
+ | [[Imatge:dimm168pins.jpg|300px|thumb|dreta]] | ||
+ | [[Imatge:simm30pins.jpg|400px]] | ||
+ | |||
+ | *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. | ||
+ | [[Imatge:dimm184pins.jpg|380px]] | ||
+ | |||
+ | El següent quadre sumaritza els empaquetaments pels diferents tipus de RAM: | ||
+ | |||
+ | |||
+ | {| style="border-spacing:0;" | ||
+ | |- style="color:white;font-weight:bold;background-color:black;text-align:center;" | ||
+ | | style="border-top:0.002cm solid #000000;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Encapsulament | ||
+ | | width="150px" style="border-top:0.002cm solid #000000;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Nº de contactes | ||
+ | | style="border-top:0.002cm solid #000000;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Tipus RAM | ||
+ | | style="border-top:0.002cm solid #000000;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Microprocessador | ||
+ | | style="border:0.002cm solid #000000;padding:0.097cm;"| Comentaris | ||
+ | |||
+ | |- | ||
+ | | rowspan="4" style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| SIMM | ||
+ | | rowspan="2" style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| 30 | ||
+ | | rowspan="2" style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| FPM | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| i386 | ||
+ | | rowspan="2" style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| Calen 4 mòduls (8 bits x4 = 32 bits) | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| i486 | ||
+ | |||
+ | |- | ||
+ | | rowspan="2" style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| 72 | ||
+ | | rowspan="2" style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| EDO | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| i486 | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| 32 bits: es poden posar mòduls individuals | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Pentium | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| De 2 en 2 | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| RIMM | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| RDRAM (Rambus) | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Pentium | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| | ||
+ | |||
+ | |- | ||
+ | | rowspan="4" style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| DIMM | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| 168 (2 osques) | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| SDRAM | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Pentium II, III AMD K6, K7 | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| 184 (1 osca) | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| DDR-1 | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Pentium IV | ||
+ | |||
+ | AMD Athlon | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| 240 (1 osca però a diferent posició) | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| DDR-2 | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Intel Core | ||
+ | |||
+ | AMD Athlon 64 | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| 240 (1 osca però a diferent posició) | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| DDR-3 | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Core Core 2, AMD Phenom | ||
+ | | style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| | ||
+ | |||
+ | |} | ||
+ | |||
+ | [[Fitxer:DDR_Memory_Comparison.svg|350px]] | ||
+ | [[Fitxer:SODIMM_Memory_Comparison.svg|350px]] | ||
+ | |||
+ | <br> | ||
+ | |||
+ | == 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). | ||
+ | |||
+ | {| style="border-spacing:0;" | ||
+ | |- style="background-color:black;color:white;font-wight:bold;" | ||
+ | |style="border:solid 0.5px black;"|Memòria | ||
+ | |style="border:solid 0.5px black;"|Factor DDR | ||
+ | |style="border:solid 0.5px black;"|Comentari | ||
+ | |- | ||
+ | |style="border:solid 0.5px black;"|DDR1 | ||
+ | |style="border:solid 0.5px black;"|x2 | ||
+ | |style="border:solid 0.5px black;"|Duplica la velocitat del bus de dades de la memòria (FSB) aprofitant el flanc de pujada i baixada del rellotge. | ||
+ | |- | ||
+ | |style="border:solid 0.5px black;"|DDR2 | ||
+ | |style="border:solid 0.5px black;"|x4 | ||
+ | |style="border:solid 0.5px black;"|Quadriplica la velocitat del FSB. | ||
+ | |- | ||
+ | |style="border:solid 0.5px black;"|DDR3 | ||
+ | |style="border:solid 0.5px black;"|x8 | ||
+ | |style="border:solid 0.5px black;"|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. | ||
+ | |||
+ | 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 === | ||
+ | '''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 (f<sub>RAM</sub> = 800 MHz). | ||
+ | |||
+ | Cal distingir 2 conceptes diferents: | ||
+ | *'''Freqüència del FSB (Front Side Bus) (f<sub>FSB</sub>)''': és la velocitat a la que corre el bus del processador (FSB). | ||
+ | *'''Freqüència de la memòria (f<sub>RAM</sub>)''': é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 f<sub>RAM</sub> 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). | ||
+ | f<sub>RAM</sub> = f<sub>FSB</sub> × 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 = f<sub>RAM</sub> × 8 B/transfer | ||
+ | BW = f<sub>FSB</sub> × factorDDR × 8 B/transfer | ||
+ | |||
+ | <br> | ||
+ | |||
+ | == Detecció d'errors en les memòries == | ||
+ | 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). <u>Quan detectem que una memòria té errors permanents (amb el test de memòria) és millor que la llencem</u>. | ||
+ | |||
+ | 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 === | ||
+ | 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. | ||
+ | |||
+ | [[Imatge:parity.jpg]] | ||
+ | |||
+ | |||
+ | === 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 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? === | ||
+ | |||
+ | [[Imatge:memtest_ubuntu.png|400px|thumb|dreta|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, <u>en la distribució GNU/Linux Ubuntu apareix una opció al menú d'arranc (GRUB) que permet fer un test de memòria</u>. | ||
+ | |||
+ | |||
+ | '''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'''. | ||
+ | |||
+ | <br> | ||
+ | |||
+ | == Dual-channel i triple-channel == | ||
+ | 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. | ||
+ | |||
+ | [[Imatge:single_vs_dual_channel2.png|800px]] | ||
+ | |||
+ | |||
+ | Intel també ha tret plaques base amb tecnologia '''triple channel'''. | ||
+ | |||
+ | |||
+ | === Implementació en la placa base === | ||
+ | |||
+ | [[Imatge:dual-channel.gif|300px|thumb|dreta|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. | ||
+ | |||
+ | [[Imatge:dualchannel-diagrama.jpg|500px]] | ||
+ | |||
+ | Per saber més podeu fer un vistasso al [http://www.kingston.com/newtech/MKF_520DDRwhitepaper.pdf white paper de Kingston sobre l'arquitectura dual channel] (en anglès). |
Revisió de 18:13, 19 nov 2015
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.
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).
Contingut
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.
- 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.
- 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.
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[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.
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]
- 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.
Intel també ha tret plaques base amb tecnologia triple channel.
Implementació en la placa base[modifica]
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.
Per saber més podeu fer un vistasso al white paper de Kingston sobre l'arquitectura dual channel (en anglès).