Instructeur : Dans cette
leçon, nous allons parler de la mémoire ECC, connue
sous le nom de code correcteur d'erreurs.
Mais tout d'abord, nous devons aborder
les concepts de non-parité et de parité en termes de mémoire.
Lorsque nous parlons de non-parité, il s'agit
d'une mémoire qui n'est qu'une mémoire standard.
Elle ne vérifie pas les erreurs et permet
d'entrer ou de sortir des données de la mémoire à volonté,
ce qui est le cas de la plupart des mémoires.
La mémoire sans parité est très bon marché à fabriquer
et sa vitesse est plus élevée que celle de la mémoire avec parité.
La mémoire de parité, quant à elle, sera
utilisée pour effectuer un contrôle d'erreur de
base et pour garantir la fiabilité
et l'intégrité du contenu de la mémoire.
Pour cette raison,
cette mémoire sera plus lente que la mémoire non
paritaire, mais elle offre la fiabilité
nécessaire aux serveurs et à
certaines stations de travail haut de gamme.
La mémoire qui dispose d'un contrôle de parité
va pouvoir effectuer un calcul de base sur la
base de ce qu'elle voit pour
vérifier si les données sont bonnes ou non.
Et si ces données sont bonnes, il les utilisera.
Si ce n'est pas le cas, une erreur se produira, mais il ne
sera pas possible de la corriger.
Il pourra simplement dire qu'il y a une erreur mais
que je ne sais pas comment la corriger.
Fondamentalement, cela fonctionne en associant
à chaque octet un bit de parité.
Ainsi, au lieu d'avoir huit bits, vous avez maintenant
neuf bits car huit bits de données plus un bit pour la parité.
Le bit de parité sera alors placé au bon moment.
Ensuite, ces données seront calculées et comparées
lors de la lecture de la mémoire afin de déterminer
si l'un des bits a changé depuis la dernière
fois que ces données ont été écrites dans la mémoire.
Ce type de contrôle se limite
toutefois à la détection des erreurs d'un seul bit.
Et si deux bits ont été modifiés,
le contrôle de parité peut passer,
car les bits ne peuvent être que des 0 ou des 1.
Par exemple, supposons que je stocke
le nombre
0, qui s'écrit 00000000 en binaire.
Si j'additionne tous ces bits, j'obtiens huit
0, ce qui me donne 0 comme bit de parité.
Maintenant, si je lis ce nombre dans la mémoire
et que je vois qu'il y a huit 0, je
les additionne et j'obtiens 0. Le 0 correspond
à mon bit de parité qui est 0, donc ce sont
des données correctes.
En revanche,
imaginons que j'écrive
le chiffre 1, qui s'écrit 00000001.
Si j'additionne tous ces chiffres, j'obtiens 1.
Je le mettrai dans mon bit de parité du neuvième bit.
En faisant cela, je lis maintenant à partir de
cela et j'obtiens 00000001.
Mais si j'ai mis ces données
en mémoire, qu'elles
y sont restées pendant quelques
heures et que ce 1 s'est
transformé en 0 par accident,
si je les lis maintenant et que j'obtiens 00000000,
et que j'additionne ces
données, j'obtiens 0, et que je les compare à mon bit de parité
qui contenait un 1, cela m'indique maintenant qu'il y a une erreur et que quelque
chose n'a pas fonctionné.
Je ne sais pas lequel de ces huit bits a été modifié,
mais au moins l'un d'entre eux l'a été.
D'un autre côté,
si ce nombre
de 00000001 a été modifié en quelque chose comme
01010001, j'ai maintenant deux bits qui ont été modifiés
de 0 à 1 par accident par
la mémoire.
Lorsque je regarde ma parité, ce sera toujours un 1 parce que
lorsque j'additionne les chiffres, si c'est un nombre impair,
ce sera un 1 pour mon bit de parité.
Et si je les additionne et que le résultat est
un nombre pair, ce sera un 0.
Comme vous pouvez le constater,
vous ne pourrez pas détecter une
erreur si deux bits ont été changés à l'intérieur de
cette zone si vous utilisez un calcul de type parité.
La bonne nouvelle, c'est qu'environ 90 % de la plupart des
erreurs sont des erreurs d'un seul bit et
que le contrôle de parité est donc suffisant
dans la plupart des cas.
Mais s'il s'agit de faire fonctionner
les serveurs d'une banque, toute
erreur peut être néfaste.
Nous voulons donc quelque chose de mieux
que la parité et c'est là que l'ECC entre en jeu.
ECC est l'abréviation de Error Correcting Code (code de correction d'erreur).
Un code correcteur d'erreur est le type de
mémoire qui porte la parité au niveau supérieur.
Il peut non seulement détecter une erreur,
comme le fait la parité,
mais aussi corriger cette erreur pour vous.
L'ECC est un peu plus lent que la parité, qui est également
plus lente que la non-parité.
Vous renoncez donc à certaines performances
pour cette capacité supplémentaire,
mais vous bénéficiez d'une intégrité
et d'une fiabilité accrues de votre mémoire lorsque
vous utilisez la technologie ECC, car
elle sera en mesure de détecter ces erreurs et
de les corriger.
En général, l'ECC (code correcteur d'erreurs)
n'est utilisé que dans les stations
de travail ou les serveurs haut de gamme, en raison du coût supplémentaire
et du fait que ce niveau élevé
d'intégrité n'est nécessaire que dans ce type
d'environnement.
Vous vous demandez peut-être
maintenant comment l'ECC détermine ce qui n'allait
pas et comment le réparer ?
Pour ce faire, il va utiliser
ce que l'on appelle la mémoire tampon ou
la mémoire enregistrée.
La mémoire tampon ou mémoire enregistrée dispose
d'un matériel supplémentaire
qui s'interpose entre la mémoire et le processeur.
Ce matériel, appelé registre, stocke les données
dans une mémoire tampon avant qu'elles
ne soient envoyées à l'unité centrale.
Cette fonction est utilisée comme mesure de fiabilité dans
de nombreux systèmes, en particulier
les systèmes tels que les serveurs qui comportent
un grand nombre de modules de mémoire différents où des
erreurs peuvent se produire.
Ces systèmes nécessitent la mise en mémoire tampon ou l'enregistrement
des données afin de réduire la charge électrique
utilisée par ces systèmes
qui ont de grandes quantités de modules de mémoire, et
cela peut être associé à la parité ou à la mémoire
de code correcteur d'erreurs pour vous donner
la fiabilité supplémentaire que vous recherchez
et détecter ces erreurs.
Pour pouvoir utiliser des modules de code correcteur d'erreurs,
votre carte mère doit les prendre en charge, tout comme votre processeur.
Si l'un ou l'autre de ces composants ne prend pas en charge l'ECC,
même si vous achetez des modules ECC qui coûtent plus cher, vous ne bénéficierez
pas de l'avantage supplémentaire de l'ECC.
Il faut donc garder cela à l'esprit.
En outre, la plupart des cartes mères prennent en charge ou non la technologie ECC.
Ce n'est généralement pas une option.
Par conséquent, si vous achetez une carte mère qui prend
en charge l'ECC, vous devrez acheter des modules ECC,
c'est-à-dire des modules de mémoire enregistrés.
Si vous trouvez une carte mère qui prend en charge
les modules ECC ou non ECC, elle ne prend
généralement pas en charge les deux en même temps.
Ainsi, tous vos modules doivent être ECC ou
aucun de vos modules ne peut être ECC.
La présence d'un mélange de ces éléments peut provoquer des erreurs dans
le système et la carte mère ne saura pas comment les gérer.
La dernière chose que je voudrais
mentionner, c'est que si vous utilisez des DDR5,
ces derniers disposent d'un système de contrôle d'erreur
interne aux modules eux-mêmes.
Il ne s'agit pas d'un ECC ou d'un module ECC.
Cette correction d'erreur dans
les nouveaux modules DDR5 peut donc être utilisée sur des cartes
mères qui ne prennent pas en charge l'ECC et vous aurez toujours
une certaine capacité de contrôle d'erreur.
Il s'agit d'une forme différente de contrôle d'erreur,
qui n'est pas considérée comme un code correcteur d'erreur.
Gardez donc cela à l'esprit et ne vous laissez pas désorienter
lorsque vous êtes sur le terrain.
Il s'agit d'une forme différente de contrôle
des erreurs et les modules DDR5 peuvent toujours être
vendus en tant que modules ECC ou non ECC, parce qu'en plus de
ce contrôle interne des erreurs, ils peuvent également
fonctionner avec le CPU et la carte mère s'ils prennent en
charge l'ECC et ils sont maintenant également
des codes correcteurs d'erreurs.
Je sais que cela peut prêter à confusion.
Il faut donc en être conscient lorsque l'on est sur le terrain.