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 évoque la difficulté à essayer de trouver où une erreur inexplicable du noyau s'est produite, affirmant que les erreurs pourraient souvent être le résultat d'un problème matériel et non d'un problème de code - tout cela aurait donc pu être corrigé avec ECC.
Torvalds a également félicité AMD pour son soutien officieux à ECC. Même s'il s'agit d'un support non officiel, Linus est toujours très heureux qu'AMD étende même l'option sur les plateformes grand public Ryzen, offrant aux consommateurs la possibilité d'utiliser ECC sans avoir à payer des sommes astronomiques pour du matériel de classe serveur. La question de savoir si le « soutien non officiel » est la meilleure tactique pour augmenter l'adoption de l'ECC est un autre débat, mais Torvalds pense évidemment que c'est un pas dans la bonne direction.
Quelques jours plus tard, il est revenu à la charge
Quelques jours plus tard, il a décidé de clarifier certaines choses que les gens « ne semblent pas comprendre ».
« Je ne me soucie pas beaucoup de savoir si mon système est équipé d'ECC ou non. Ce n'est pas le problème. Si j'ai des erreurs de mémoire, je suis en fait assez doué pour les comprendre. De plus, je finis par utiliser des machines assez "sûres". Je m'assure d'avoir une puissance surspécifiée, je vis essentiellement au niveau de la mer, je ne fais pas d'overclocking et j'achète des produits réputés », a précisé Torvalds.
Torvalds semble avoir l'impression que les gens pensent que sa diatribe originale était motivée par ses propres besoins dans l'espace PC. Il a également noté qu'il « avait lu des réactions ridicules » dans le fil en cours, comme les joueurs ne voulant pas d'ECC.
« C'est le comble total. Les joueurs qui construisent des stations de travail de jeu haut de gamme pour l'overclocking devraient être l'une des principales cibles d'ECC, car sans ECC, vous ne pouvez pas vraiment savoir si (et à quelle hauteur) vous pouvez overclocker votre RAM en toute sécurité », a écrit Torvalds.
Il en a encore profité pour blâmer Intel au passage, affirmant que c'était à cause des politiques de l'entreprise que la RAM ECC sur le marché de masse était si rare.
Cela n'aura pas beaucoup d'importance lorsque la mémoire DDR5 deviendra mainstream, car l'ECC fait partie de la norme de mémoire de nouvelle génération. En attendant, Torvalds a apparemment beaucoup à dire sur la question.
Source : Linus Torvalds, Linus Torvalds (suite)
Et vous ?
Que pensez-vous des propos tenus par Linus Torvalds qui voudrait voir une RAM ECC plus largement distribuée au grand public ?
Partagez-vous le point de vue de Linus Torvalds lorsqu'il rend Intel responsable de cet échec ?