Revenons aux bases en rappelant les apports de la DDR2 par rapport à la DDR1. C’est important étant donné que la DDR3 reprend certains principes de la DDR2. La DDR1 a apporté l’utilisation de flancs montants et descendants de données, d’où son nom : Dual Data Rate. La DDR est une mémoire 64 bit (8 octets) capable d’envoyer par cycle d’horloge 2x8 octets par cet effet « dual ». La DDR2 a un fonctionnement différent puisque sa fréquence de bus « externe » est deux fois plus élevée que la fréquence interne des puces. Cela signifie donc que ce sont quatre mots de données qui peuvent être envoyés par cycle d’horloge et non deux. Par conséquent, avec une fréquence interne de 100 MHz, on se retrouve avec une fréquence « externe » I/O (Input/Output, entrées/sorties donc) de 200 MHz ; soit de la DDR2-400 là où la DDR1-400 classique utilisait une fréquence interne de 200 Mhz, identique à sa fréquence de bus externe.
La DDR3 va plus loin puisque son bus externe a une fréquence quatre fois plus élevée que la fréquence interne des puces. Par cycle d’horloge, la DDR3 est donc capable de transférer 8 mots de données. Ceci signifie qu’avec une fréquence interne de puces de 100 MHz, on a une fréquence de bus externe de 400 MHz. La DDR3-800 a donc des puces fonctionnant en interne à 100 MHz, là où la DDR2-800 a des puces internes fonctionnant à 200 MHz. Ceci va donc permettre à la DDR3 de monter plus haut en fréquence afin d’offrir toujours plus de bande passante. La DDR3 démarre donc avec la DDR3-800 et est actuellement prévue jusque la DDR3-1600. Intel parle déjà de DDR3-2133 mais ce n’est pas encore à l’ordre du jour, ni ratifié par le Jedec

Autre point particulier de la DDR2 : des temps de latence très élevés. Là où le CAS 2 pouvait être de mise sur les modules DDR1, pour la DDR2, on commençait avec du CAS 5 avant l’arrivée du CAS4 et pour les plus performant du CAS3. De CAS 2 il ne fut jamais question sur les barrettes de DDR2. C’est un peu la contrepartie négative des apports de la DDR2. En effet, on augmente la bande passante au détriment de la latence, en compensant à l’intérieur du processeur par de meilleurs mécanismes de prefetch pour récupérer les données avant que l’on en ait besoin, pour que la latence ne soit plus un problème. Le passage à la DDR3 augmentant encore la bande passante, il ne faut pas s’attendre à des latences agressives. AU mieux, nous aurons droit à du CAS 5 en DDR3-800 et du CAS6 en DDR3-1066. Seul l’avenir nous le dira. Nos exemplaires de tests Corsair et Kingston étaient des DDR3-1333 avec pour le premier un CAS 9 et le second un CAS 8. La Kingston s’est révélé être la plus performante, tenant le CAS 7 en DDR3-1333, le CAS 6 en DDR3-1066 et le CAS 5 en DDR3-800.
Kit DDR3-1333 2x1024 Mo fourni par Kingston
La DDR3 a aussi pour but de monter plus haut en fréquence et d’augmenter la bande passante. Pour ce faire le PHY (Physical Layer, le support physique des puces mémoire) reçoit quelques modifications. Un module DDR2 gère les adressages mémoire selon une topologie en forme de T illustrée ci-dessous. Les adressages sont répartis vers chaque module en simultané, ce qui d’une part réduit le délai de transmission mais d’autre part peut être source d’erreurs à cause de la multiplication des conversions de données. En effet avant d’arriver dans chaque module, chaque adressage fait l’objet d’une « traduction » en une suite d’octets avant d’être retraduite dans le même format qu’à son arrivée. Dans l’exemple ci-dessous avec 8 puces, on a donc 8 « traductions » avant entrée des données et 8 « retraductions » à la sortie du module. Ces opérations sont gérées par le contrôleur mémoire inclus sur la barette.

Fonctionnement de la DDR2
(source : Memory Design Considerations
when migrating to DDR3 interfaces from DDR2, Raj Mahajan, Mecore Inc.) La DDR3 apporte un énorme changement dans la manière de traiter les adressages mémoire. Les signaux du contrôleur mémoire sont désormais connectés en série à toutes les puces mémoire. Le signal arrive par le milieu du PHY et nécessite une seule traduction du signal avant l’entrée dans la première puce mémoire. La contrepartie est que contrairement à la DDR2 qui adressait en simultané chaque puce, la DDR3 adresse les puces séquentiellement, entraînant un délai supplémentaire selon l’endroit où se trouve la puce dans ladite séquence. La DDR3 introduit alors d’autres nouveautés dans la gestion de la lecture et de l’écriture des données dans les puces afin de compenser ces délais supplémentaires. Il s’agit du Leveling dont l’objectif est de compenser le délai de lecture de la puce vers la sortie de la barette. Nous ne rentrerons pas plus en détail dans le cadre de cet article, faute de temps.

Fonctionnement de la DDR3
(source : Memory Design Considerations
when migrating to DDR3 interfaces from DDR2, Raj Mahajan, Mecore Inc.) Une autre nouveauté de la DDR3 est la présence d’un « Reset pin » qui va permette de vider toutes les données de la DDR3 sans devoir vider individuellement chaque registre ou sans devoir éteindre le système. Le but est de gagner du temps et de l’énergie lors de passage du système à certains états comme le mode veille par exemple. Autre apport : le 8-bit prefetch utilisé en conjonction avec une longueur de burst de 4 ou 8. Le but est d’améliorer les performances lors des accès séquentiels. Enfin la calibration ZQ, visant à supprimer les préambules et de s’assurer de l’intégrité du signal, augmente le temps de calibration de la mémoire au démarrage mais diminue le temps de calibration lors d’activités périodiques de calibration. Cette calibration est désormais présente sur la barrette alors que pour la DDR2, elle était gérée en dehors de la barette. Ca c’est la théorie. Voyons voir ce que cela donne en pratique…