# RAM

In elettronica e informatica, la memoria ad accesso casuale, meglio nota come RAM (in inglese random access memory), è un tipo di memoria volatile caratterizzata dal permettere l'accesso diretto a qualunque indirizzo di memoria con gli stessi tempi.
La RAM si contrappone alla memoria ad accesso sequenziale, in cui i dati sono disposti in modo sequenziale e per accedervi è necessario scorrere su tutti i dati precedenti.

## Funzionamento

Nella memoria RAM vengono copiati (caricati) i programmi che la CPU deve eseguire. Una volta chiuso il programma, le modifiche effettuate, se non opportunamente salvate sul disco rigido o su altra memoria non volatile, verranno perse.
Per le sue caratteristiche, la RAM viene utilizzata come memoria primaria nei computer più comuni. Inoltre, si può utilizzare una porzione di RAM come RAM disk, ovvero trattarla come se fosse memoria secondaria, col vantaggio di avere prestazioni in lettura e scrittura enormemente più elevate, con tempi di accesso significativamente migliori.
Il tipo di memoria ad accesso diretto più comune attualmente è a stato solido, a lettura-scrittura e volatile, ma rientrano nel tipo di memoria ad accesso casuale la maggior parte dei tipi di ROM (memoria a sola lettura), la NOR Flash (un tipo di memoria flash), oltre a vari tipi di memorie informatiche utilizzate ai primordi dell'informatica e oggi non più utilizzate come ad esempio la memoria a nucleo magnetico.
L'acronimo RAM (non il termine "memoria ad accesso diretto") ha anche una seconda accezione più ristretta, ma attualmente più diffusa, che identifica le schede fisiche che vengono installate negli odierni computer (vedi moduli DIMM, SIMM, SO-DIMM).
Per testare i moduli di memoria si può utilizzare il software Memtest86.

## Tipologia
### SRAM

Nelle SRAM, acronimo di Static Random Access Memory, ovvero RAM statica ogni cella è costituita da un Flip-Flop di tipo D. Le celle sono disposte a matrice e l'accesso avviene specificando la riga e la colonna.
Consentono di mantenere le informazioni per un tempo infinito ma, perdono le informazioni in esse contenute se non alimentate da corrente, sono molto veloci, consumano poca energia e calore. La necessità di usare molti componenti, però, le rende molto costose, difficili da impacchettare e con una scarsa capienza.
Proprio per la loro bassa capienza, sono solitamente usate per le memorie cache, dove sono necessarie elevate velocità in abbinamento a ridotti consumi e capienze non troppo elevate (dell'ordine di pochi Megabit).

### DRAM

La DRAM, acronimo di Dynamic Random Access Memory, ovvero ram dinamica, a livello concettuale è costituita da un transistor che separa un condensatore, il quale mantiene l'informazione, dai fili di dati. A livello pratico non viene usato un vero condensatore ma si sfruttano le proprietà elettrico/capacitive dei semiconduttori. È così possibile usare un solo componente per ogni cella di memoria, con costi molto ridotti e la possibilità di aumentare notevolmente la densità di memoria.
A causa del non perfetto isolamento, il condensatore si scarica, quindi dopo un breve lasso di tempo il suo contenuto diventa completamente inaffidabile. Si rende necessario perciò ricaricarlo, l'operazione è detta di "refreshing", provvedendo ad eseguire un'operazione di lettura fittizia e riscrittura entro il tempo massimo in cui il contenuto può essere considerato ancora valido. Queste operazioni sono eseguite da un circuito interno alle memorie stesse. Oltre a comportare un certo dispendio di energia rendono più lenta la memoria in quanto, mentre si sta eseguendo il refreshing, non è possibile accedervi. Le memorie DRAM si possono considerare abbastanza affidabili anche perché molto spesso ad ogni riga della memoria è associato un bit di parità, che consente di individuare eventuali errori singoli all'interno della riga, oppure una serie di bit (login), che opportunamente impostati nel momento di ogni scrittura, generano il codice di Hamming corrispondente, che consente di individuare e correggere errori singoli e individuare errori doppi.
È importante sottolineare come l'operazione di lettura sia distruttiva, in quanto nel momento in cui un dato viene letto viene anche perso; risulta quindi necessaria la sua riscrittura immediata e questa porta a uno spreco di tempo.
Le DRAM sono asincrone, ovvero l'accesso in scrittura ed in lettura è comandato direttamente dai segnali in ingresso, al contrario delle memorie sincrone in cui il passaggio da uno stato all'altro è sincronizzato ad un segnale di clock.
Per ogni cella sono presenti un numero basso di componenti che permettono di ottenere un'alta capacità complessiva del dispositivo, un basso assorbimento di potenza e costi ridotti, sono dunque utilizzate generalmente per la memoria principale del sistema.

#### SDRAM

La SDRAM, acronimo di Synchronous Dynamic Random Access Memory, ovvero DRAM sincrone, si differenzia dalla DRAM normale per il fatto che l'accesso è sincrono, ovvero governato dal clock. Tale segnale di clock temporizza e sincronizza le operazioni di scambio di dati con il processore, raggiungendo una velocità almeno tre volte maggiore delle SIMM con EDO RAM.
Tipicamente saldata in un modulo di tipo DIMM, è normalmente impiegata come memoria principale dei Personal Computer di tipo Pentium e successivi.
Alcuni esempi sono classificati come:
* SDR SDRAM: indica le originarie memorie SDRAM. Con l'evoluzione tecnica, questo tipo ha preso il suffisso SDR ossia Single Data Rate, per differenziarle dalle successive SDRAM con controller DDR. Il single data rate indicava l'accettazione di un comando e il trasferimento di 1 word di dati per ciclo di clock (tipicamente 100 e 133 MHz). Il data bus era diversificato ma tipicamente erano impiegate su moduli DIMM da 168 pin e potevano operare su 64 bit (non-ECC) o 72 bit (ECC) alla volta.
* DDR SDRAM
* DDR2
* DDR3
* DDR4
* DDR5
* SODIMM: da notare che il package SODIMM non necessariamente contiene memoria SDRAM.

### FeRAM

La FeRAM, acronimo di Ferroelectric Dynamic Random Access Memory, ha la peculiarità di mantenere i dati senza l'ausilio del refresh di sistema. Utilizzano un materiale denominato ferroelettrico che ha la capacità di mantenere la propria polarizzazione anche dopo esser scollegato dalla fonte energetica.

### Memoria a cambiamento di fase

Le memorie a cambiamento di fase sono delle memorie ad accesso casuale che utilizzano il cambiamento di fase di un materiale per memorizzare le informazioni. Questo permette alla memoria di mantenere le informazioni anche senza alimentazione, come le memorie flash ma rispetto a queste hanno alcuni vantaggi. Il principale è la velocità di scrittura che può arrivare ad essere più rapida di 30 volte, come ciclo di vita 10 volte maggiore e, nota non trascurabile, un costo minore dato dalla lavorazione più veloce.

## Frequenze a confronto

La memoria scambia dati con gli altri componenti attraverso il Bus, che ha una sua frequenza operativa di base, a multipli di 33 MHz, così come la memoria e il processore. I tre componenti vanno sincronizzati su un multiplo della frequenza di base del bus. La frequenza di clock interna della memoria differisce dalla frequenza del bus di I/O del modulo, che è quella con la quale il modulo stesso si interfaccia col bus della piastra madre.
Nella tabella sottostante è possibile vedere le frequenze operative dei vari tipi di moduli di memoria; si fa riferimento agli standard utilizzati dai produttori e non solo a quelli standardizzati dal JEDEC:

### SDR

| Chip | Modulo | Frequenza | Frequenza | Tensione |
| Chip | Modulo | Single Channel | Dual Channel | Tensione |
| SDR-66 | PC-66 | 66 MHz | - | 3.30 V |
| SDR-100 | PC-100 | 100 MHz | - | 3.30 V |
| SDR-133 | PC-133 | 133 MHz | - | 3.30 V |

### DDR (2002)

| Chip | Modulo | Frequenza | Frequenza | Tensione |
| Chip | Modulo | Single Channel | Dual Channel | Tensione |
| DDR-200 | PC-1600 | 100 MHz | 200 MHz | 2.50 V |
| DDR-266 | PC-2100 | 133 MHz | 266 MHz | 2.50 V |
| DDR-333 | PC-2700 | 166 MHz | 333 MHz | 2.50 V |
| DDR-400 | PC-3200 | 200 MHz | 400 MHz | 2.50 V |

### DDR2 (2004)

| Chip | Modulo | Frequenza | Frequenza | Tensione |
| Chip | Modulo | Single Channel | Dual Channel | Tensione |
| DDR2-400 | PC2-3200 | 200 MHz | 400 MHz | 1.80 V |
| DDR2-533 | PC2-4200 | 104 MHz | 533 MHz | 1.80 V |
| DDR2-667 | PC2-5300 | 333 MHz | 667 MHz | 1.80 V |
| DDR2-800 | PC2-6400 | 400 MHz | 800 MHz | 1.80 V |
| DDR2-1066 | PC2-8500 | 533 MHz | 1066 MHz | 1.80 V |

### DDR3 (2007)

| Chip | Modulo | Frequenza | Frequenza | Tensione | Tensione |
| Chip | Modulo | Single Channel | Dual Channel | VDD | Low |
| DDR3-800 | PC3-6400 | 400 MHz | 800 MHz | 1.50 V | 1.35 V |
| DDR3-1066 | PC3-8500 | 533 MHz | 1.066 MHz | 1.50 V | 1.35 V |
| DDR3-1333 | PC3-10600 | 667 MHz | 1.333 MHz | 1.50 V | 1.35 V |
| DDR3-1600 | PC3-12800 | 800 MHz | 1600 MHz | 1.50 V | 1.35 V |
| DDR3-1866 | PC3-14900 | 933 MHz | 1866 MHz | 1.50 V | 1.35 V |
| DDR3-2000 | PC3-16000 | 1000 MHz | 2000 MHz | 1.50 V | - |
| DDR3-2133 | PC3-17000 | 1066 MHz | 2133 MHz | 1.50 V | - |
| DDR3-2400 | PC3-19200 | 1200 MHz | 2400 MHz | 1.50 V | - |
| DDR3-2666 | PC3-21300 | 1333 MHz | 2666 MHz | 1.50 V | - |

### DDR4 (2012)

| Chip | Modulo | Frequenza | Frequenza | Tensione | Tensione |
| Chip | Modulo | Single Channel | Dual Channel | VDD | Low |
| DDR4-1600 | PC4-12800 | 800 MHz | 1600 MHz | 1.20 V | 1.05 V |
| DDR4-1866 | PC4-14900 | 933 MHz | 1866 MHz | 1.20 V | 1.05 V |
| DDR4-2133 | PC4-17000 | 1066 MHz | 2133 MHz | 1.20 V | 1.05 V |
| DDR4-2400 | PC4-19200 | 1200 MHz | 2400 MHz | 1.20 V | 1.05 V |
| DDR4-2666 | PC4-21300 | 1333 MHz | 2666 MHz | 1.20 V | 1.05 V |
| DDR4-3000 | PC4-24000 | 1500 MHz | 3000 MHz | 1.20 V | - |
| DDR4-3200 | PC4-25600 | 1600 MHz | 3200 MHz | 1.20 V | - |
| DDR4-4266 | PC4-34100 | 2133 MHz | 4266 MHz | 1.20 V | - |
| DDR4-4800 | PC4-38400 | 2400 MHz | 4800 MHz | 1.20 V | - |
| DDR4-5332 | PC4-42656 | 2666 MHz | 5332 MHz | 1.20 V | - |
| DDR4-5600 | PC4-44800 | 2800 MHz | 5600 MHz | 1.20 V | - |
| DDR4-6000 | PC4-48000 | 3000 MHz | 6000 MHz | 1.20 V | - |
| DDR4-6400 | PC4-51200 | 3200 MHz | 6400 MHz | 1.20 V | - |
| DDR4-6932 | PC4-55456 | 3466 MHz | 6932 MHz | 1.20 V | - |
| DDR4-8266 | PC4-66128 | 4133 MHz | 8266 MHz | 1.20 V | - |
| DDR4-8532 | PC4-68256 | 4266 MHz | 8532 MHz | 1.20 V | - |
| DDR4-8666 | PC4-69328 | 4333 MHz | 8666 MHz | 1.20 V | - |
| DDR4-8800 | PC4-70400 | 4400 MHz | 8800 MHz | 1.20 V | - |
| DDR4-9000 | PC4-72000 | 4500 MHz | 9000 MHz | 1.20 V | - |
| DDR4-9200 | PC4-73000 | 4600 MHz | 9200 MHz | 1.20 V | - |

### DDR5 (2020)

| Chip | Modulo | Frequenza | Frequenza | Tensione | Tensione |
| Chip | Modulo | Single Channel | Dual Channel | VDD. | Low |
| DDR5-3200 | PC5 | - | - | 1.10 V | - |
| DDR5-3600 | PC5 | - | - | 1.10 V | - |
| DDR5-4000 | PC5 | - | - | 1.10 V | - |
| DDR5-4400 | PC5 | - | - | 1.10 V | - |
| DDR5-4800 | PC5 | - | - | 1.10 V | - |
| DDR5-5200 | PC5 | - | - | 1.10 V | - |
| DDR5-5600 | PC5 | - | - | 1.10 V | - |
| DDR5-6000 | PC5 | - | - | 1.10 V | - |
| DDR5-6400 | PC5 | - | - | 1.10 V | - |
| DDR5-6000 | PC5 | - | - | 1.10 V | - |
| DDR5-6400 | PC5 | - | - | 1.10 V | - |