# DDR SDRAM

DDR SDRAM ou Double Data Rate Synchronous Dynamic Random Access Memory est un type de mémoire à circuit intégré utilisé dans les ordinateurs depuis 2000 et communément abrégée sous le sigle DDR. La DDR fournit une meilleure bande passante que l'ordinaire SDRAM en transférant les données à la fois sur le front montant et sur le front descendant des impulsions d'horloge, ce qui a pour effet de doubler la vitesse d'accès à la mémoire, en lecture et en écriture. Cette particularité lui donne son nom : « Double Data Rate » signifie « débit de données double » (par rapport à la SDR SDRAM).
Ainsi, une carte mère dotée de mémoire DDR-SDRAM et ayant un bus mémoire cadencé à 133 MHz est équivalente en débit de données à de la SDRAM à 266 MHz.
Les fabricants de mémoire ont eu des difficultés à produire en masse de la DDR à plus de 400 MHz. Ainsi, depuis 2005, elle est progressivement remplacée par la DDR-2, qui fonctionne selon le même principe que la DDR, mais plus simple à produire, et permettant des fréquences d'horloge plus élevées. La DDR2 était en compétition avec la Rambus XDR-DRAM mais est devenue le standard, alors que la QDR (Quad Data Rate) était trop complexe pour être implémentée.
La RDRAM est une alternative à la DDR SDRAM, mais de nombreux fabricants ne l'utilisent plus.
La DDR4 SDRAM est appelée à succéder à la DDR3 SDRAM.
JEDEC a établi des standards de vitesse pour la DDR SDRAM, divisés en 2 parties : la première pour les puces et la seconde pour les mémoires.

## Spécification des barrettes mémoires

Les mémoires DDR possèdent généralement une appellation commerciale du type PC...., où les « .... » représentent le débit d'information en Mo/s. Note : Toutes les vitesses de RAM non indiquées dans cette liste ne sont pas agréées par JEDEC — il s'agit d'optimisation de tolérance réalisée par les fabricants.
| Dénomination | Type de mémoire | Fréquence réelle du bus | Bande passante par canal |
| PC1600 | DDR-200 | 100 MHz | 1,6 Gio/s |
| PC2100 | DDR-266 | 133 MHz | 2,133 Gio/s |
| PC2400 | DDR-300 | 150 MHz | 2,4 Gio/s |
| PC2700 | DDR-333 | 166 MHz | 2,667 Gio/s |
| PC3200 | DDR-400 | 200 MHz | 3,2 Gio/s |
| PC3500 | DDR-433 | 217 MHz | 3,5 Gio/s |
| PC3700 | DDR-466 | 233 MHz | 3,7 Gio/s |
| PC4000 | DDR-500 | 250 MHz | 4 Gio/s |
| PC4200 | DDR-533 | 266 MHz | 4,2 Gio/s |
| PC4300 | DDR-538 | 269 MHz | 4,3 Gio/s |
| PC4400 | DDR-550 | 275 MHz | 4,4 Gio/s |
| PC4800 | DDR-600 | 300 MHz | 4,8 Gio/s |
Il n'y a pas de différence architecturale entre les différentes DDR SDRAM conçues pour les différentes fréquences d'horloge, par exemple PC1600 (conçu pour fonctionner à 100 MHz) et PC2100 (conçu pour fonctionner à 133 MHz). Le nombre indique simplement le niveau de fonctionnement garanti pour chaque type de mémoire. Cela dit, il est possible d'utiliser de la DDR SDRAM à une fréquence inférieure à celle prévue (sous-fréquençage) ou supérieure (surfréquençage). Le surfréquençage ne peut être tenté qu'avec des mémoires de haute qualité et par des utilisateurs expérimentés (voir surfréquençage).

## Débit mémoire DDR

Le débit mémoire (et par conséquent le nom) d'une mémoire est calculé comme suit : Les DDR sont des mémoires 64 bits (8 octets). Cela signifie qu'une barrette de mémoire DDR peut transmettre : $8*2=16$ octets à chaque cycle d'horloge, le facteur 2 provenant de « l'effet DDR ». Pour l'exemple, supposons que cette mémoire tourne à la fréquence de 133 MHz, on a donc à chaque seconde : $16*133*10^{6}octets=2128Mo$, soit un débit théorique d'environ 2 100 Mo/s : c'est donc de la PC2100.

## Différenciation physique des différents types de mémoires

Les DDR SDRAM existent sous trois formes :
* les SO-DIMM avec 200 broches ;
* les Micro-DIMM(en) avec 172 broches ;
* les DIMM de DDR SDRAM ont 184 broches (alors que la SDRAM n'en compte que 168), et peuvent être différenciées des DIMM de SDRAM par le nombre d'encoches (la DDR SDRAM en a une au centre, la SDRAM en a deux excentrées). La DDR fonctionne à une tension de 2,5 V, comparé au 3,3 V pour la SDRAM. Ceci peut réduire significativement la consommation électrique.

## Canal double

Certains contrôleurs mémoire utilisent un double canal (en anglais dual channel) ou même quadri channel pour la mémoire. Il s'agit d'exploiter les modules de mémoire par paire afin de cumuler la bande passante et ainsi exploiter au maximum les capacités du système en doublant ou quadruplant la bande passante effective. Il est essentiel, lors de l'utilisation du dual channel, d'utiliser des barrettes identiques par paire (fréquence, capacité et préférentiellement de même marque) pour optimiser les performances et permettre au contrôleur mémoire de croiser les accès sans souci.

## Synchronisation

La synchronisation de la mémoire (en anglais timing) est une succession de cycles d'horloge nécessaires pour accéder à une donnée stockée en mémoire vive. Symbolisé par quatre chiffres (3-4-4-8 par exemple), elles correspondent dans l'ordre aux valeurs suivantes :
* CAS delay ou CAS latency (CAS signifiant column address strobe) : il s'agit du nombre de cycles d'horloge s'écoulant entre l'envoi de la commande de lecture et l'arrivée effective de la donnée. Autrement dit, il s'agit du temps d'accès à une colonne.
* RAS precharge time (noté tRP, RAS signifiant row address strobe) : il s'agit du nombre de cycles d'horloge entre deux instructions RAS, c'est-à-dire entre deux accès à une ligne.
* RAS to CAS delay (noté parfois tRCD) : il s'agit du nombre de cycles d'horloge correspondant au temps d'accès d'une ligne à une colonne.
* RAS active time (noté parfois tRAS) : il s'agit du nombre de cycles d'horloge correspondant au temps d'accès à une ligne.

## Correction d'erreurs

Certaines barrettes de mémoire possèdent des systèmes de correction d'erreur afin de garantir l'intégrité des données qu'elles contiennent. Elles se trouvent la plupart du temps sur les serveurs, surtout dans le cas où la manipulation de données est critique. Lorsqu'une barrette possède ce système de correction, une étiquette ECC (error correction coding) lui est accolée, et elle coûte plus cher.