C'est juste que de mon point de vue de néophyte ça me semble étrange.
Pour qu'une somme de contrôle fonctionne sur une ligne de cache il est nécessaire de lire la ligne en totalité à chaque vérification (donc à chaque accès) Et de faire le calcul avant que l'instruction ne fasse une action. Il faut que ce soit en un seul cycle, sinon le cache perd beaucoup d'efficacité. C'est à ce niveau que je suis étonné parce que ça fait pas mal de transistors et pas mal d'énergie.
Je viens de regarder des docs Intel et AMD. Ça existe depuis au moins le Pentium III et c'est désormais très commun (je n'ai pas vérifié tous les processeurs, mais les quelques Intel et AMD que j'ai regardé l'on tous). Alors là franchement je l'ignorais totalement.
Ce n'est pas par ligne de cache, mais par mot. Là effectivement ça fait sens.
Le processeurs "bas de gamme" ne l'ont pas sur le cache L1.
Suivant les modèles c'est de l'ECC ou de la parité. Ça protège soit les données, soit les données + le TAG. Je ne saisi pas trop l'intérêt de l'ECC vu que les données non erronées sont dans la RAM et que ça doit être vraiment très très rare d'avoir un problème. Par contre avoir une somme de contrôle sur plusieurs bits me semble plus solide. Bon bref je ne connais pas les raisons de ces choix, c'est probablement fait correctement.
Exemple d'un Xeon E7-8800/4800/2800 :
Cache L1 pour les instructions : ECC avec capacité de correction d'un bit (pas d'info sur la capacité de détection)
Cache L1 pour les données : parité si 32 kib, ECC sur données + TAG si 16 kib (pas de précisions sur les capacités de détection/correction)
Cache L2 : ECC (pas de précisions)
Cache L3 : ECC avec capacité de correction de 2 bits (pas d'info sur la capacité de détection)
[^] # Re: Eruption solaire
Posté par Kerro . En réponse au journal Un bug inhumain. Évalué à 5.
C'est juste que de mon point de vue de néophyte ça me semble étrange.
Pour qu'une somme de contrôle fonctionne sur une ligne de cache il est nécessaire de lire la ligne en totalité à chaque vérification (donc à chaque accès) Et de faire le calcul avant que l'instruction ne fasse une action. Il faut que ce soit en un seul cycle, sinon le cache perd beaucoup d'efficacité. C'est à ce niveau que je suis étonné parce que ça fait pas mal de transistors et pas mal d'énergie.
Je viens de regarder des docs Intel et AMD. Ça existe depuis au moins le Pentium III et c'est désormais très commun (je n'ai pas vérifié tous les processeurs, mais les quelques Intel et AMD que j'ai regardé l'on tous). Alors là franchement je l'ignorais totalement.
Ce n'est pas par ligne de cache, mais par mot. Là effectivement ça fait sens.
Le processeurs "bas de gamme" ne l'ont pas sur le cache L1.
Suivant les modèles c'est de l'ECC ou de la parité. Ça protège soit les données, soit les données + le TAG. Je ne saisi pas trop l'intérêt de l'ECC vu que les données non erronées sont dans la RAM et que ça doit être vraiment très très rare d'avoir un problème. Par contre avoir une somme de contrôle sur plusieurs bits me semble plus solide. Bon bref je ne connais pas les raisons de ces choix, c'est probablement fait correctement.
Exemple d'un Xeon E7-8800/4800/2800 :
Cache L1 pour les instructions : ECC avec capacité de correction d'un bit (pas d'info sur la capacité de détection)
Cache L1 pour les données : parité si 32 kib, ECC sur données + TAG si 16 kib (pas de précisions sur les capacités de détection/correction)
Cache L2 : ECC (pas de précisions)
Cache L3 : ECC avec capacité de correction de 2 bits (pas d'info sur la capacité de détection)
Merci pour l'info :-)