Qu'est-ce que la mémoire ECC ?

Une partie de la RAM, ou mémoire à accès aléatoire, est annoncée comme mémoire ECC. ECC signifie Error Correcting Code et est un processus d'identification et de correction des erreurs dans la mémoire. Les erreurs dans la RAM peuvent entraîner une corruption ou une altération des données, ce qui peut entraîner des pannes de l'appareil et même des failles de sécurité. La RAM ECC n'est généralement pas compatible avec le matériel PC grand public.

Que sont les erreurs de mémoire ?

Les erreurs de mémoire sont un problème lorsque la valeur stockée dans la mémoire est modifiée. Les données dans la RAM sont stockées en binaire, avec des valeurs de 1 ou 0. Si la valeur d'un 1 passe à un 0 ou vice versa, dans un processus appelé "bit-flip", les données stockées dans la RAM changent.

Par exemple, le bit modifié peut être utilisé pour stocker une valeur dans une feuille de calcul. Dans ce cas, la valeur dans la feuille de calcul pourrait être changée en un nombre complètement différent qui affecterait le résultat de tout calcul, par exemple en modifiant les prévisions économiques d'un Entreprise. Dans d'autres cas, le bit modifié peut désactiver une fonction de sécurité ou créer une faute de frappe qui modifie la façon dont un programme est exécuté. Ces deux exemples sont extrêmement difficiles à détecter et à résoudre sans l'utilisation de la mémoire ECC. Dans un scénario extrême, un seul bit inversé pourrait provoquer une erreur catastrophique qui provoquerait une panne du système.

Le basculement de bits a de nombreuses causes potentielles, la cause la plus courante est le résultat d'un rayonnement de fond, principalement causé par des neutrons créés par des événements de rayons cosmiques. Un rayon cosmique est une particule de haute énergie, généralement un proton, qui se déplace presque à la vitesse de la lumière. Ils sont émis par des corps stellaires, notamment le Soleil et d'autres objets astronomiques de haute énergie. Lorsqu'un rayon cosmique frappe un atome, une pluie de neutrons et d'autres particules subatomiques sont créées, ces neutrons ont alors des interactions secondaires.

On pense que ces interactions secondaires de neutrons sont la principale source d'erreurs de basculement des bits. Les rayons cosmiques sont plus fréquents à des altitudes plus élevées avec une augmentation de 3,5 fois à 1,5 km au-dessus du niveau de la mer et une augmentation de 300 fois à l'altitude de croisière des avions de ligne. Ce risque accru en altitude nécessite des mesures de fiabilité supplémentaires.

Quelle est la fréquence des erreurs de mémoire ?

La plupart des gens ne voient pas leurs ordinateurs planter tous les jours, il serait donc facile de penser qu'il s'agit principalement d'un risque théorique. Des recherches menées dans des centres de données à grande échelle ont été utilisées pour analyser le taux d'incidents de basculement de bits. Les recherches effectuées par Google dans ses centres de données ont montré un taux d'erreur d'environ 1 erreur sur un seul bit par gigaoctet de RAM toutes les 1,8 heures.

La mission Cassini-Huygens de la Nasa lancée en 1997 pour se rendre à Saturne était configurée avec deux ordinateurs de vol identiques dotés chacun de 2,5 Go de RAM. Au cours des deux premières années et demie de son voyage, le vaisseau spatial a observé 280 erreurs constantes sur un seul bit par jour. Au cours d'une journée, lorsque Cassini-Huygens était sur le chemin d'une éruption solaire, une multiplication par quatre de peu des erreurs ont été observées, fournissant une preuve supplémentaire que le Soleil est la cause de la plupart des basculements de bits problèmes.

Certains craignaient que l'augmentation continue de la densité des modules de RAM ne rende les versions ultérieures de la RAM de plus en plus vulnérables aux basculements de bits. Des études plus récentes ont montré que le contraire est en fait le cas, car les erreurs ont diminué au fur et à mesure que la géométrie du processus diminuait.

Comment la mémoire ECC protège-t-elle contre les erreurs ?

La mémoire ECC utilise des codes de correction d'erreurs, tels que des codes de Hamming, pour corriger les erreurs sur un seul bit dans la RAM. Les erreurs de bit double peuvent être détectées mais pas corrigées. Les codes de correction d'erreur de Hamming fonctionnent en utilisant un tableau de bits de parité. Ensemble, ces bits de parité peuvent être utilisés pour détecter si des bits de données ont changé. Si un bit est identifié comme ayant basculé, il est automatiquement remplacé.

Astuce: Une erreur sur un seul bit est un incident de basculement de bits lorsqu'un seul bit est inversé. Dans les erreurs double0bit, deux bits sont inversés. Les deux bits n'ont pas besoin d'être inversés dans le même incident, le deuxième bit-flip n'a besoin d'avoir lieu qu'avant que le premier bit inversé ne soit corrigé.

Un bit de parité de plus que nécessaire est inclus dans les codes de correction d'erreur de Hamming. Ce bit de parité supplémentaire donne au code la possibilité de détecter l'apparition d'erreurs à double bit, cependant, ces erreurs ne peuvent pas être corrigées.

Le processus d'exécution de la détection et de la correction des erreurs est effectué sur le contrôleur de mémoire à bord de la clé RAM.

Disponibilité et accompagnement des consommateurs

La plupart du matériel PC grand public ne prend pas en charge la mémoire ECC. Il s'agit en partie d'une méthode permettant de distinguer artificiellement le matériel serveur du matériel grand public. La RAM ECC, cependant, coûte plus cher et fonctionne légèrement plus lentement. De plus, la stabilité supplémentaire qu'il offrirait aux particuliers est minime, car les erreurs de basculement des bits ne sont pas la principale cause des pannes du système.

Aucun des processeurs Intel grand public et amateurs ne prend en charge la mémoire ECC, seuls ses processeurs de qualité serveur, tels que les processeurs de la gamme Xeon, le font. Les processeurs grand public d'AMD ne prennent pas en charge ECC, cependant, leurs processeurs de station de travail et de serveur, Threadripper et EPYC respectivement, prennent en charge la mémoire ECC.