Dans un récent échange au sujet de l'ECC Memory (Error-Correcting Code Memory), Linus Torvalds, le père de Linux, a ouvertement critiqué Intel pour ne pas avoir intégré la RAM ECC sur les plateformes grand public tout en félicitant AMD de la prendre en charge sur les plateformes Ryzen.Une mémoire à code correcteur d'erreurs (en anglais, Error-Correcting Code Memory ou ECC Memory) est un type de mémoire vive qui contient un code correcteur lui permettant de détecter et de corriger les types les plus courants de corruption de données. Ce type de mémoire est utilisé dans les ordinateurs où la corruption de données ne peut être tolérée en aucun cas, comme pour les calculs scientifiques ou financiers.
Pour de nombreux secteurs d'activités, si des erreurs importantes de stockage se produisent, il y a non seulement un risque de pertes financières et dans le pire des cas, la position d’une entreprise peut être sérieusement affaiblie sur le marché. La tendance qui consiste à toujours avoir plus de mémoire vive est dans ce cadre critiquée ; en effet, plus la capacité de stockage augmente, plus le risque d’erreur augmente. C’est pourquoi les environnements de travail et de serveur qui nécessitent une grande intégrité des données mettent l’accent sur la protection complète des données. On utilise par exemple la mémoire ECC au lieu de la mémoire vive ordinaire pour mieux se protéger et prévenir les simples erreurs de bits.
La mémoire vive (RAM) est responsable de l’exécution des programmes y compris des données utilisateurs qui en résultent. Le contenu volatil de la mémoire vive est stocké sous forme de code binaire et se compose uniquement des chiffres « 1 » et « 0 » de sorte que l’ordinateur puisse les traiter plus facilement. Un chiffre binaire seul est appelé un bit. Ces différentes causes :
- les variations de tension,
- l’overclocking (ou surcadencement),
- les modules de mémoire anciens ou défectueux,
- ou un rayonnement énergétique
… peuvent conduire à une erreur de bit dans laquelle l’entrée de mémoire est modifiée. C’est ici qu’un bit prend une valeur erronée, c’est-à-dire « 1 » au lieu de « 0 » ou vice versa. Cela est à peine perceptible dans de nombreuses applications. Si une erreur de bit se produit, par exemple lorsque vous travaillez avec un programme de retouche d’image, un pixel peut recevoir une couleur différente, ce qui n’est pas perceptible pour l’œil humain. En revanche, c’est tout à fait différent dans des bases de données complexes ou des applications de calcul où une seule erreur de bit unique peut entraîner de graves conséquences. De plus, une erreur de bit lorsqu’elle se produit dans une partie de la mémoire utilisée par le système d’exploitation, peut provoquer des pannes du système.
Plusieurs approches ont été développées pour faire face aux erreurs de mémoire : l'immunity-aware programming, les bits de parité et la mémoire à code correcteur d'erreurs. Recourir à l'ECC revient à faire appel à un code de données qui a la capacité de détecter et de corriger les erreurs de bit unique. De plus, l’ECC peut aussi déterminer les rares erreurs de bit double. Pour pouvoir bénéficier de cette méthode de correction, les modules de mémoire vive (RAM) ordinaires sont étendus avec une barrette de mémoire ECC. C’est pourquoi on parle de RAM ECC.
En fin de compte, il y a un compromis entre la protection contre la perte de données et le coût plus élevé de la mémoire. Cela se fait donc avec certains inconvénients :
- La mémoire à code correcteur d'erreurs est plus coûteuse que la mémoire conventionnelle en raison du matériel supplémentaire nécessaire pour la produire et de plus faibles volumes de production de cette mémoire et des composantes associées. Les cartes mères, les chipsets et les processeurs prenant en charge la mémoire à code correcteur d'erreurs sont aussi plus coûteux...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Que pensez-vous des propos tenus par Linus Torvalds qui voudrait voir une RAM ECC plus largement distribuée au grand public ?