Qu'est-ce que la mémoire ECC, et quand en avez-vous besoin
Ce que la correction d'erreurs rattrape vraiment, en quoi les modules registered et load-reduced diffèrent des non tamponnés, et pourquoi la plateforme décide.
Mis à jour
Sur cette page
La mémoire à correction d'erreurs est l'un des rares éléments d'une configuration où la bonne réponse devient évidente dès qu'on sait ce que la fonction fait. Elle rattrape une panne précise et rare, elle coûte de l'argent et un peu de latence, et elle ne fonctionne que si trois choses distinctes sont réunies. L'essentiel de la confusion vient d'une quatrième, qui porte presque le même nom sans être la même fonction.
Ce que l'ECC rattrape réellement
Un module sans correction d'erreurs enregistre les bits qu'on lui a demandé d'enregistrer et restitue ensuite ce qu'il y trouve. Parfois ce qu'il y trouve n'est pas ce qui y était entré : une particule égarée retourne une cellule, une puce en limite perd sa charge, un signal arrive déformé sur le bus. Rien dans le module ne s'en aperçoit, la mauvaise valeur part vers le processeur et le programme agit dessus.
Un module ECC porte des puces mémoire supplémentaires en plus de celles qui contiennent vos données, et enregistre une somme de contrôle à côté de chaque mot. À chaque lecture, le contrôleur mémoire la recalcule. Un bit retourné est corrigé sur-le-champ et consigné ; deux bits retournés sont détectés sans être corrigés, et la machine s'arrête au lieu de continuer sur des données qu'elle sait fausses.
Voyez ce que cela apporte et ce que cela n'apporte pas. La correction ne rend pas la mémoire plus rapide, ne la fait pas durer plus longtemps et ne sauve pas un module réellement défaillant — elle signale la panne plus tôt et plus clairement, ce qui vaut souvent davantage que la correction elle-même. Ce qui change, c'est qu'une mauvaise réponse silencieuse devient un événement consigné, et savoir si cela mérite d'être payé dépend entièrement de ce que fait la machine. Une station de travail qui mène une simulation d'une semaine, un serveur de fichiers gardant des données qui seront relues dans cinq ans, une base de données qui ne doit jamais écrire une ligne corrompue : pour celles-là, un bit faux que personne ne remarque est l'issue coûteuse. Une machine de jeu plante, on la redémarre, et on a perdu quelques minutes.
L'ECC sur puce n'est pas la mémoire ECC
C'est le point où les gens trébuchent, et la DDR5 a aggravé les choses.
Chaque puce DDR5 intègre une correction d'erreurs dans le silicium. Cela fait partie de la norme plutôt que d'un ajout d'un fabricant : aux densités auxquelles la DDR5 est produite, les erreurs internes au réseau de cellules sont assez fréquentes pour qu'on doive les corriger dans la puce si l'on veut des rendements tenables. Un kit DDR5 de bureau tout ordinaire porte donc bien une correction d'erreurs, en un sens réel.
Ce n'est pas la même fonction. La correction sur puce couvre les erreurs internes au réseau de cellules et rien d'autre. Elle agit avant que les données ne quittent la puce, elle ne couvre donc pas le trajet du module jusqu'au contrôleur mémoire — les contacts, les pistes de la carte, le bus lui-même — et c'est sur ce trajet que se produit une part notable des erreurs mémoire. Elle ne signale rien non plus : aucun compteur à lire, aucune entrée de journal, aucun moyen pour le système d'exploitation d'apprendre qu'une correction a eu lieu ou qu'elles deviennent fréquentes. L'ECC sur puce est une mesure de fabrication qui vous aide au passage. La mémoire ECC est une fonction système qui vous dit la vérité sur votre propre matériel.
La conséquence pratique tient en une phrase : qu'un module DDR5 porte une correction sur puce ne dit rien sur la présence de mémoire ECC dans la machine. Ce sont deux questions distinctes, avec deux réponses distinctes.
Non tamponné, registered, load-reduced
La correction d'erreurs est un axe. La façon dont un module est piloté électriquement en est un autre, et les deux sont confondus parce que la mémoire serveur réunit généralement les deux.
Sur un module non tamponné — une UDIMM dans un ordinateur de bureau, une SO-DIMM dans un portable — les lignes d'adresse et de commande vont du contrôleur mémoire directement à chaque puce DRAM de la barrette. C'est l'agencement le plus simple et la latence la plus basse. Le coût est électrique : chaque puce est une charge sur ces lignes, donc plus un canal porte de puces et de modules, plus le contrôleur peine et plus tôt le signal cesse d'être propre. C'est pourquoi les plateformes de bureau s'arrêtent à une poignée d'emplacements et à un plafond de capacité par emplacement.
Un module registered — une RDIMM — place une puce de registre entre le connecteur et la DRAM. Le contrôleur pilote une charge par module au lieu de plusieurs dizaines, et le registre redistribue le signal à partir de là. Cela coûte un cycle d'horloge sur l'adresse et la commande, et achète la possibilité d'accrocher à un canal bien plus de mémoire qu'une conception non tamponnée n'en supporte.
Un module load-reduced — une LRDIMM — tamponne aussi les lignes de données. Cela lève la limite électrique restante et permet aux modules les plus gros et aux rangs les plus nombreux de fonctionner tout court, seule raison d'en accepter le surcoût.
| Non tamponné | Registered | Load-reduced | |
|---|---|---|---|
| Tamponne | Rien | Adresse et commande | Adresse, commande, données |
| Latence | La plus basse | Un cycle de plus | Un cycle de plus |
| Séjour habituel | Bureaux et portables | Cartes serveur et station de travail | Cartes serveur, aux plus grandes capacités |
Rien dans ce tableau ne concerne la correction d'erreurs. Les modules registered la portent presque toujours, parce que les plateformes qui les acceptent la veulent — mais les modules ECC non tamponnés existent et sont des pièces ordinaires. Notre catalogue en compte plusieurs, et ils figurent sur la page mémoire de bureau plutôt que sur celle-ci, car ce qui place un module sur la page mémoire serveur est son format et rien d'autre : RDIMM et LRDIMM, les deux écritures qui signifient qu'un module est tamponné.
C'est la plateforme qui tranche, pas le module
Un module ECC dans une machine qui ne gère pas l'ECC fait l'une de deux choses. Il fonctionne avec les bits de contrôle ignorés, ou il ne fonctionne pas. Dans les deux cas, vous avez payé une fonction qui ne fait rien.
Trois choses doivent être présentes. Le module doit porter les puces supplémentaires. Le contrôleur mémoire — qui vit dans le processeur sur toutes les plateformes actuelles — doit savoir les vérifier. Et le micrologiciel et le système d'exploitation doivent en restituer le résultat, car une correction que personne ne voit ne vaut guère mieux que pas de correction du tout. Les plateformes serveur et station de travail réunissent les trois. Les plateformes de bureau grand public le plus souvent non, et là où une carte et un processeur de bureau gèrent effectivement l'ECC non tamponné, cela figure dans la documentation de la carte plutôt que d'être sous-entendu par le socket. C'est là que la question se tranche, et elle mérite d'être tranchée avant l'achat du module.
Ce que nous consignons, et ce que nous ne consignons pas
Nous consignons la prise en charge de la correction d'erreurs sur le module, comme un champ qu'une fiche technique énonce ou n'énonce pas. Là où un fabricant ne l'énonce pas, nous laissons le champ vide plutôt que de le déduire d'une référence, si bien qu'un champ vide signifie que nous n'avons pas trouvé l'affirmation — pas que le module est dépourvu de la fonction. Tous les modules registered et load-reduced de notre catalogue l'énoncent, et aucune SO-DIMM de portable ne le fait.
Ce n'est pas non plus un critère de comparaison chez nous. La mémoire est comparée sur trois chiffres — la capacité, la vitesse en MT/s et la latence CAS, plus haut valant mieux pour les deux premiers et plus bas pour le dernier — et la correction d'erreurs n'entre dans aucun d'eux, parce que ce n'est pas un chiffre qui se classe. Un module porte les puces supplémentaires ou ne les porte pas, et la question qui suit est de savoir si votre plateforme sait s'en servir. Le module est d'ailleurs le seul endroit du site où la correction d'erreurs est consignée : aucune fiche de processeur ni de carte mère ici ne lui réserve de champ, si bien que la question part d'une fiche technique et se termine dans la documentation de la carte.
Deux habitudes de ce catalogue méritent d'être connues avant de le lire. La mémoire serveur est listée en modules seuls plutôt qu'en kits, parce que les canaux se peuplent emplacement par emplacement et que c'est le nombre d'emplacements d'une carte qui décide combien vous en achetez. Et la suite complète de timings qu'impriment les kits de bureau est absente de tous les modules registered d'ici — les fabricants publient la latence CAS et s'arrêtent là.
À ce sujet : les chiffres CAS de la DDR5 registered paraissent alarmants à côté de ceux de la DDR4, et chaque module DDR5 d'ici en porte un plus élevé que chaque module DDR4. Ils désignent à peu près la même attente, parce qu'un cycle d'horloge raccourcit à mesure que la vitesse monte — comment vitesse et latence travaillent ensemble en donne le calcul. Et si la question sous tout cela est combien de mémoire acheter plutôt que laquelle, commencez par la capacité, qui pèse bien plus, pour bien plus de machines, que la correction d'erreurs.
La mémoire serveur et la RAM de bureau tiennent chacune sur une page, avec des spécifications issues de la fiche technique et des prix suivis dans la durée.
Questions fréquentes
- Utiliser de la DDR5 signifie-t-il que j'ai déjà de la mémoire ECC ?
- Non. Chaque puce DDR5 embarque une correction sur puce pour les erreurs survenant dans son propre réseau de cellules, et cela fait partie de la norme plutôt que d'être un argument d'un module particulier. Elle ne couvre pas la liaison entre le module et le processeur et ne signale rien au système d'exploitation, donc un ordinateur de bureau en DDR5 n'est pas une machine dotée de mémoire ECC.
- Puis-je mettre une barrette registered dans une carte mère de bureau ?
- Non — une carte est câblée pour un seul type de module, et une barrette registered ne démarrera pas sur une plateforme de bureau. La puce de registre placée entre le connecteur et les puces mémoire change la façon dont la carte doit piloter le module, si bien que ce sont la carte et le processeur qui tranchent, pas la barrette achetée.