La sécurité est pour de nombreux secteurs d’activités la plus haute priorité pendant le trai­te­ment des données. Les en­tre­prises peuvent gérer des processus d’affaires im­por­tants et dépendent de la stabilité des données à partir d’un four­nis­seur d’hé­ber­ge­ment qui stocke le contenu de leurs clients. Si des erreurs im­por­tantes de stockage se pro­dui­sent, il y a non seulement un risque de pertes fi­nan­cières et dans le pire des cas, la position d’une en­tre­prise peut être sé­rieu­se­ment 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 en­vi­ron­ne­ments de travail et de serveur qui né­ces­si­tent une grande intégrité des données, mettent l’accent sur la pro­tec­tion 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é­fi­ni­tion 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 in­for­ma­tiques. Plus largement connu sous le terme de mémoire vive, elle est res­pon­sable de l’exécution des pro­grammes y compris des données uti­li­sa­teurs qui en résultent. Le contenu volatil de la mémoire vive est stocké sous forme de code binaire et se compose uni­que­ment des chiffres « 1 » et « 0 » de sorte que l’or­di­na­teur puisse les traiter plus fa­ci­le­ment. Un chiffre binaire seul est appelé un bit. Ces dif­fé­rentes causes :

  • les va­ria­tions de tension,
  • l’over­clo­cking (ou sur-ca­den­ce­ment),
  • les modules de mémoire anciens ou dé­fec­tueux,
  • ou un rayon­ne­ment éner­gé­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 per­cep­tible dans de nom­breuses ap­pli­ca­tions. Si une erreur de bit se produit, par exemple lorsque vous tra­vail­lez avec un programme de retouche d’image, un pixel peut recevoir une couleur dif­fé­rente, ce qui n’est pas per­cep­tible pour l’œil humain. En revanche, c’est tout à fait différent dans des bases de données complexes ou des ap­pli­ca­tions de calcul où une seule erreur de bit unique peut entraîner de graves con­sé­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’ex­ploi­ta­tion, peut provoquer des pannes du système.

La solution la plus simple à ce problème est le code cor­rec­teur d’erreurs, de l’anglais error cor­rec­ting 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é­ter­mi­ner les rares erreurs de bit double. Pour pouvoir bé­né­fi­cier de cette méthode de cor­rec­tion, les modules de mémoire vive (RAM) or­di­naires sont étendus avec une barrette de mémoire ECC. C’est pourquoi, on parle de RAM ECC.

Comment fonc­tionne le processus de cor­rec­tion d’erreurs ?

Le processus de cor­rec­tion d’erreurs pour les erreurs à bit unique qui est utilisé pour les modules de RAM) a été développé en 1950 par le ma­thé­ma­ti­cien Richard Hamming. On parle donc de code de Hamming. La par­ti­cu­la­rité de ce code est l’uti­li­sa­tion 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 va­li­da­tion. 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 va­li­da­tion 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 exem­plaire 0001001, le code de Hamming détecte les erreurs comme ci-dessous :

  • Le groupe de va­li­da­tion de bit de parité 1 (1, 3, 5, 7) contient un bit avec la valeur 1 et est donc incorrect.
  • Le groupe de va­li­da­tion de bit de parité 2 (2, 3, 5, 7) contient un bit avec la valeur 1 et est donc incorrect.
  • Le groupe de va­li­da­tion 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 va­li­da­tion in­cor­rects, l’erreur se trouve ici. La séquence correcte de bit est 0011001.

RAM ECC : adaptée pour un usage personnel ?

Le code cor­rec­teur d’erreurs (ECC) protège en­tiè­re­ment la mémoire prin­ci­pale contre les erreurs à bit unique et empêche une grande partie des erreurs de stockage de données possibles. Il est de plus étroi­te­ment lié à la réduction des blocages du système, ce qui est par­ti­cu­liè­re­ment important pour les services ou ap­pli­ca­tions qui doivent garantir une dis­po­ni­bi­lité élevée et pour un grand nombre d’uti­li­sa­teurs. Ces avantages de la mémoire ECC assurent le fait que les modules de mémoire spé­ci­fiques sont né­ces­saires notamment comme solutions pour le serveur RAM et font partie du programme de sur­veil­lance des centres d’ex­cel­lence. 

La RAM ECC présente cependant des in­con­vé­nients mineurs par rapport à la RAM non ECC. D’une part, les modules de mémoire de cor­rec­tion 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 per­for­mance 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 com­pa­ti­bi­lité et d’évaluer les avantages. Combiner la  mémoire ECC et la RAM non ECC n’est pas possible. Par défaut, votre or­di­na­teur personnel ou un serveur est livré avec un module de mémoire de travail ordinaire sans cor­rec­tion d’erreurs.

Aller au menu principal