# DDR SDRAM

In informatica ed elettronica una DDR SDRAM (acronimo dell'inglese Double Data Rate Synchronous Dynamic Random Access Memory, lett. "memoria dinamica ad accesso casuale sincrona a doppia velocità") è un tipo di memoria RAM su circuiti integrati usati nei computer.

## Caratteristiche

Nelle memorie DDR i dati vengono trasmessi sia sul fronte di salita che sul fronte di discesa del segnale di clock; è possibile quindi raddoppiare la velocità di trasferimento rispetto alle SDRAM senza per questo aumentare la frequenza del clock interno alla memoria né quella del bus. Poiché i dati sono trasferiti 8 byte per volta (il bus è sempre a 64 bit) una RAM DDR consente una velocità teorica massima di trasferimento $V_{T}$ di:
$V_{T}=B_{M}\times 2\times 8$
dove $B_{M}$ è la velocità di clock del bus di memoria, 2 è il numero di invii per ciclo di clock, 8 è il numero di byte trasferiti ad ogni invio. Quindi con una frequenza di clock di 100 MHz, una DDR SDRAM dà una velocità massima di trasferimento di 1600 MB/s.
Nella realtà la situazione è più complessa, poiché la velocità di trasferimento è notevolmente influenzata dai fenomeni di latenza, che si verificano durante le operazioni di lettura/scrittura e che dipendono strettamente dal tipo e dalla qualità del chip, nonché dalla frequenza di funzionamento. Per quantificare tali fenomeni, ad ogni banco di memoria vengono associati dei tempi caratteristici detti timing, misurati in unità di cicli di clock: a valori più bassi corrispondono prestazioni migliori, a parità di frequenza.
I timing più importanti sono:
* CAS Latency Time (tCl): durante un'operazione di lettura, rappresenta l'intervallo di tempo tra l'istante in cui il comando di lettura giunge ad una certa cella di memoria e quello in cui inizia il trasferimento dei dati; la denominazione è dovuta al fatto che, per individuare la cella di memoria, l'indirizzo di colonna viene selezionato sempre per ultimo (tramite il segnale CAS), successivamente a quello di riga. Per le memorie DDR-400 (si veda la classificazione successiva) tCl è generalmente compreso tra 2 e 3 cicli di clock, che corrispondono a 12-17 nanosecondi.
* RAS to CAS Delay Time (tRCD): costituisce l'intervallo di tempo che passa tra l'attivazione della riga e della colonna che identificano la cella di memoria in cui si vuole leggere o scrivere il dato, cioè il ritardo del segnale CAS rispetto al segnale RAS; è di norma compreso tra 3 e 4 cicli di clock.
* RAS Precharge Time (tRP): Il RAS precharge Time è l'intervallo di tempo che impiega la DDR SDRAM a leggere la riga di codice corretto dopo una lettura di codice errato.
* Active-to-Precharge Delay (tRAS): questo tipo di latenza riguarda in realtà i diversi passi in cui può essere suddiviso il processo di accesso alla memoria, ed il suo numero indica il numero minimo di cicli che intercorrono fra il comando "active" e "precharge".
* Row Cycle Time (tRC): è l'intervallo di tempo che passa tra l'attivazione consecutiva di 2 righe di memoria dello stesso banco; in genere è compreso tra 6 e 9 cicli di clock.
A questi parametri, che sono impostati dal costruttore e memorizzati nel SPD, se ne aggiungono altri, che riguardano le latenze dipendenti dalle operazioni di interfaccia tra le memorie ed il resto del sistema; tra questi ultimi citiamo:
* Command Rate: è l'intervallo di tempo che intercorre tra 2 comandi consecutivi impartiti al chip di memoria; tipicamente esso può valere 1 o 2 cicli di clock. Viene anche definito come il tempo che deve trascorrere fra il segnale di selezione del chip e l'inizio dei comandi di selezione (riga e colonna)/lettura/scrittura.
* Dram Idle Timer: costituisce il tempo che la memoria deve attendere prima di iniziare ad eseguire il comando impartito.

## Specifiche
### Standard JEDEC

Il JEDEC ha stabilito gli standard e le specifiche per le DDR SDRAM; queste sono divise in due parti: le prime specifiche sono per i chip di memoria e le seconde sono per i banchi di memoria. Anche le dimensioni dei moduli di memoria DDR SDRAM sono standardizzati dal JEDEC.
| Standard | Modulo | Frequenza di clock (MHz) | Frequenza bus I/O (MHz) | Velocità di trasferimento (MT/s) | Banda massima per canale (MB/s) |
| DDR-200 | PC-1600 | 100 | 100 | 200 | 1 600 |
| DDR-266 | PC-2100 | 133 | 133 | 266 | 2 133 |
| DDR-333 | PC-2700 | 166 | 166 | 333 | 2 667 |
| DDR-400 | PC-3200 | 200 | 200 | 400 | 3 200 |

### Specifiche non conformi allo standard JEDEC

Le specifiche intermedie o superiori a quelle standard JEDEC sono ottimizzazioni dei produttori che utilizzano chip standard con tensioni superiori; sotto la tabella con le specifiche non standard:
| Standard | Modulo | Frequenza di clock (MHz) | Frequenza bus I/O (MHz) | Velocità di trasferimento (MT/s) | Banda massima per canale (MB/s) |
| DDR-300 | PC-2400 | 150 | 150 | 300 | 2 400 |
| DDR-433 | PC-3500 | 217 | 217 | 433 | 3 467 |
| DDR-466 | PC-3700 | 233 | 233 | 466 | 3 733 |
| DDR-500 | PC-4000 | 250 | 250 | 500 | 4 000 |
| DDR-550 | PC-4400 | 275 | 275 | 550 | 4 400 |
| DDR-600 | PC-4800 | 300 | 300 | 600 | 4 800 |

## Architettura

Non c'è alcuna differenza di architettura tra DDR SDRAM per diverse velocità di clock, ad esempio le PC-1600 (progettate per una frequenza di 100 MHz) e le PC2100 (progettate per funzionare a 133 MHz). La sigla indica semplicemente la velocità a cui quel chip è garantito come funzionante. Quindi una DDR SDRAM può essere fatta funzionare a velocità inferiori rispetto a quella per cui è stata progettata (underclocking) o a velocità superiori (overclocking), l'overclocking però può essere fatto solo con memorie adatte di alta qualità e con cognizione di causa.
I DIMM di DDR SDRAM hanno 184 piedini (contro i 168 della SDRAM) e possono essere riconosciuti dai DIMM SDRAM dal numero di tacche: le DDR SDRAM ne hanno una, gli SDRAM due oppure tre. Le memorie DDR operano con una tensione di 2,5V, contro i 3,3V per le SDRAM, questo può ridurre notevolmente i consumi.
Alcuni nuovi chipset utilizzano queste memorie in configurazioni a doppio canale (Dual channel) o quadruplo canale, che raddoppiano o quadruplicano la larghezza di banda teorica. Nelle configurazioni a due canali si raccomanda di usare una coppia di banchi di memoria dello stesso tipo per ottimizzare le prestazioni. I moduli in coppia devono avere stessa dimensione, velocità e tempi di latenza per permettere al chipset di effettuare gli accessi con la massima efficienza.

## Storia

Tra gli inizi del 1996 e giugno del 2000 la JEDEC sviluppò le specifiche delle DDR SDRAM (JESD79), al fine di offrire un miglioramento significativo per i sistemi che richiedevano maggiore larghezza di banda. Nel 2003 vennero completate le specifiche per le memorie DDR2 SDRAM (JESD79-2), le quali offrivano una larghezza di banda fino a 800Mb/s, il doppio delle DDR SDRAM. Durante lo sviluppo degli standard DDR e DDR2 SDRAM, gli ingegneri rivolsero maggiore attenzione verso la gestione dei timing complessivi del sistema, affrontando così le aree critiche che ne limitavano le prestazioni. Venne così migliorata la larghezza di banda, evitando però frequenze di clock più elevate ma sfruttando al meglio il funzionamento del ciclo di clock.
In seguito lo standard DDR è stato sostituito con gli standard DDR-II e DDR-III, che adottano alcune modifiche per permettere frequenze di clock del buffer I/O superiori, ma operano con lo stesso principio Double Data Rate e con chip di memoria dalle frequenze di funzionamento invariate. Nel corso del 2012, anno previsto per il loro debutto, sono stati commercializzati i primi esemplari dello standard DDR4.