RAM ECC : la mémoire à code correcteur d’erreurs

La sécurité est pour de nombreux secteurs d’activités la plus haute priorité pendant le traitement des données. Les entreprises peuvent gérer des processus d’affaires importants et dépendent de la stabilité des données à partir d’un fournisseur d’hébergement qui stocke le contenu de leurs clients. 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.

RAM ECC : définition et arrière-plan

La random Access Memory (RAM), en français « mémoire à accès direct », est un support de stockage qui est utilisé comme mémoire dans les systèmes informatiques. Plus largement connu sous le terme de mémoire vive, elle 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 sur-cadencement),
  • 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.

La solution la plus simple à ce problème est le code correcteur d’erreurs, de l’anglais error correcting code (ECC). Il s’agit d’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.

Comment fonctionne le processus de correction d’erreurs ?

Le processus de correction d’erreurs pour les erreurs à bit unique qui est utilisé pour les modules de RAM) a été développé en 1950 par le mathématicien Richard Hamming. On parle donc de code de Hamming. La particularité de ce code est l’utilisation de plusieurs bits de parité. Si vous souhaitez utiliser le code Hamming pour corriger des erreurs à bit unique, vous avez besoin d’un code binaire à sept chiffres composé de trois bits de parité (P), de quatre bits utiles (N) et de trois groupes de validation. Les bits de parité sont donc réglés sur les positions de mots de code, dont le nombre est une puissance de 2, dans cet exemple 1, 2 et 4:

Les groupes de validation des bits de parité des séquences de bits reçues sont comparés aux séquences de bits stockées. Une erreur se produit toujours lorsque le nombre total de bits avec la valeur 1 est impair.

Appliqué à la séquence de bits exemplaire 0001001, le code de Hamming détecte les erreurs comme ci-dessous :

  • Le groupe de validation de bit de parité 1 (1, 3, 5, 7) contient un bit avec la valeur 1 et est donc incorrect.
  • Le groupe de validation de bit de parité 2 (2, 3, 5, 7) contient un bit avec la valeur 1 et est donc incorrect.
  • Le groupe de validation de bit de parité 3 (4, 5, 6, 7) contient deux bits avec la valeur 1 et est donc incorrect.

La position du mot de code 3 étant présente dans les deux premiers groupes de validation incorrects, l’erreur se trouve ici. La séquence correcte de bit est 0011001.

RAM ECC : adaptée pour un usage personnel ?

Le code correcteur d’erreurs (ECC) protège entièrement la mémoire principale contre les erreurs à bit unique et empêche une grande partie des erreurs de stockage de données possibles. Il est de plus étroitement lié à la réduction des blocages du système, ce qui est particulièrement important pour les services ou applications qui doivent garantir une disponibilité élevée et pour un grand nombre d’utilisateurs. Ces avantages de la mémoire ECC assurent le fait que les modules de mémoire spécifiques sont nécessaires notamment comme solutions pour le serveur RAM et font partie du programme de surveillance des centres d’excellence. 

La RAM ECC présente cependant des inconvénients mineurs par rapport à la RAM non ECC. D’une part, les modules de mémoire de correction d’erreur sont un peu plus chers que les modules de mémoire habituels, d’autre part, le processus de détection d’erreurs conduit à une baisse de deux pourcent en moyenne de la performance du système. En outre, la mémoire ECC n’est pas prise en charge sur toutes les cartes mères. Donc si vous prévoyez d’utiliser une RAM ECC sur une carte normale, il est important de vérifier la compatibilité et d’évaluer les avantages. Combiner la  mémoire ECC et la RAM non ECC n’est pas possible. Par défaut, votre ordinateur personnel ou un serveur est livré avec un module de mémoire de travail ordinaire sans correction d’erreurs.