L’ECC de la mémoire : détecter et corriger une erreur de bit en vol
Un bit bascule en RAM — un rayon cosmique, une cellule faible, une flash qui vieillit — et un ordinateur naïf continue de calculer sur un chiffre faux sans jamais le savoir. Les microcontrôleurs de sécurité refusent ça. Ils portent des bits en plus dont le seul rôle est d'attraper, et souvent de corriger, la bascule avant que le processeur ne la voie. C'est l'ECC.
Des bits en plus qui gardent les autres
- L'ECC stocke quelques bits redondants à côté de chaque mot. Ensemble, ils forment un code où un seul bit inversé se trahit : sa position se calcule à partir de l'incohérence, ce qu'on appelle le syndrome.
- Connue la position, on la réinverse : le processeur reçoit une donnée corrigée, de façon transparente, sans le moindre à-coup. Ces mémoires et leur adressage sont détaillés ailleurs — voir la carte mémoire.
- Le coût, c'est de la place : un octet de données réclame déjà plusieurs bits de contrôle. Plus le mot est large, plus c'est efficace — d'où des flash organisées en gros blocs de données suivis de leurs bits d'ECC.
SECDED : corrige un, détecte deux
- Le schéma courant sur la RAM s'appelle SECDED — correction d'une erreur simple, détection d'une erreur double. Il répare tout bit isolé à la volée et signale, sans pouvoir la réparer, une erreur sur deux bits.
- Sur les contrôleurs de sécurité de classe AURIX, la RAM emploie exactement ça : un code de Hamming, un bit corrigé, deux bits détectés. La flash de programme va parfois plus loin — certains schémas corrigent jusqu'à deux bits et en détectent trois — parce que la rétention de la flash se dégrade au fil des années.
- Une erreur corrigée n'est pas silencieuse : elle est journalisée, si bien qu'une mémoire qui commence à basculer des bits lève une alarme bien avant de devenir dangereuse.
Ce qui fait basculer un bit
- En RAM : les erreurs douces — une particule de passage dépose assez de charge pour retourner une cellule. Rare par bit, mais une voiture roule longtemps.
- En flash : la perte de rétention et les perturbations de lecture ou d'écriture, au fil des ans et de la chaleur. La cellule dérive jusqu'à lire faux.
- L'ECC transforme la plupart de ces cas d'une corruption silencieuse en une lecture corrigée, ou en un défaut propre et détecté.
Le double-bit, la limite
- Le SECDED ne répare pas deux bascules à la fois : il les détecte, et le microcontrôleur réagit — un déroutement, un reset, ou un saut vers un état sûr, orchestré par l'unité de sécurité embarquée.
- La philosophie est délibérée : mieux vaut un arrêt maîtrisé qu'une mauvaise réponse assurée. Dans un système qui pilote des injecteurs et des papillons, le silence vaut mieux qu'un chiffre faux.
Pourquoi ça vous concerne, en dumpant une mémoire
- Les octets stockés ne sont pas que vos données : ce sont les données plus les bits d'ECC, dans une organisation que le contrôleur mémoire maîtrise.
- Lisez le tableau brut sans tenir compte de la façon dont l'ECC est empaqueté, et le dump peut paraître faux alors que le contenu est bon. La correction qui protège le calculateur en marche façonne aussi la manière dont la mémoire se lit sur l'établi.
- Certains contrôleurs font même du nettoyage de fond, le scrubbing : ils relisent la mémoire en tâche de fond, corrigent les erreurs simples et réécrivent, pour empêcher deux erreurs simples de s'accumuler en une double, non corrigible.
L'ECC, c'est ce qui permet à un calculateur moderne d'encaisser une bascule de bit sans broncher — et pourquoi lire la mémoire brute n'est pas la même chose que lire ce que voit le processeur.
Sur ANP Engineering — file service de reprogrammation moteur pour professionnels : file service ECU, correction de checksum, calculateurs pris en charge, tarifs.
