
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 pour les mêmes raisons.
- Une mémoire à code correcteur d'erreurs peut être de 2 à 3 pour cent plus lente qu'une mémoire conventionnelle en raison du temps additionnel nécessaire pour la vérification et la correction des erreurs. Toutefois, les systèmes modernes intègrent la gestion des erreurs dans le processeur, éliminant ainsi les délais de vérification et de correction des accès mémoire.
La perspective de Linus Torvalds
Lorsqu'il lui a été dit « alors oui, je suis tout à fait d'accord qu'AMD propose une offre supérieure. Cependant, l'ECC n'a pas vraiment d'importance ici », Linus Torvalds a répondu :
« L'ECC est absolument important.
« La disponibilité de l'ECC compte beaucoup - précisément parce qu'Intel a joué un rôle déterminant dans la destruction de l'ensemble du secteur de l'ECC avec sa segmentation du marché horriblement mauvaise.
« Sortez et tentez de trouver des modules DIMM ECC - c'est vraiment difficile. Bien sûr, probablement entièrement grâce à AMD, cela s'est peut-être légèrement amélioré ces derniers temps, mais c'est exactement où je veux en venir.
« Intel a été préjudiciable à l'ensemble du secteur et aux utilisateurs en raison de leurs politiques mauvaises et erronées vis-à-vis de l'ECC. Sérieusement.
« Et si vous ne me croyez pas, regardez simplement plusieurs générations de martèlement de mémoire, où à chaque fois Intel et les fabricants de mémoire bêlaient sur la façon dont cela allait être corrigé la prochaine fois ».
Dans sa publication, Torvald pointe du doigt Intel pour le manque d'adoption généralisée de l'ECC dans l'espace grand public. Torvalds estime que cela est dû au verrouillage complet par Intel du support ECC sur ses chipsets et processeurs grand public, affirmant que cela seul a tué toute incitation pour les fabricants de mémoire à créer une mémoire ECC de bureau pour le grand public.
Linus dénonce également les problèmes de martèlement de mémoire qui pourraient être facilement résolus avec la mémoire ECC. Le martèlement de mémoire, de l'anglais row hammer ou rowhammer, est un effet secondaire imprévu dans les mémoires dynamiques à accès aléatoire (DRAM) qui provoque une fuite de charge électrique dans des cellules de mémoire, et en conséquence provoque une interaction électrique entre ces cellules et d'autres cellules voisines. Le contenu mémorisé dans ces cellules voisines peut être ainsi modifié. Un programme informatique peut ainsi parvenir à modifier le contenu des cellules voisines sans avoir besoin d'accéder à ces cellules voisines, et donc sans avoir le droit d'y accéder. Les attaques par martèlement de mémoire utilisent cette spécificité comme mécanisme pour obtenir des droits systèmes élevés.
Torvalds indique également que la mémoire standard est un cauchemar à gérer lors du développement de code pour le noyau d'un système d'exploitation. Linus...
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.