Remarque: cette réponse ne concerne pas la physique, mais les erreurs de mémoire silencieuses avec les modules de mémoire non ECC. Certaines erreurs peuvent provenir de l'espace extra-atmosphérique et d'autres - de l'espace interne du bureau.
Il existe plusieurs études sur les défaillances de la mémoire ECC dans les grandes batteries de serveurs comme les clusters CERN et les centres de données Google. Le matériel de classe serveur avec ECC peut détecter et corriger toutes les erreurs sur un seul bit et détecter de nombreuses erreurs sur plusieurs bits.
Nous pouvons supposer qu'il existe de nombreux ordinateurs de bureau non ECC (et smartphones mobiles non ECC). Si nous vérifions les papiers pour les taux d'erreur corrigeables ECC (bitflips simples), nous pouvons connaître le taux de corruption de mémoire silencieuse sur la mémoire non ECC.
Étude à grande échelle du CERN 2007 "Intégrité des données" : les fournisseurs déclarent "un taux d'erreur binaire de 10 à 12 pour leurs modules de mémoire ", " un taux d'erreur observé est de 4 ordres de grandeur inférieur à celui attendu ". Pour les tâches gourmandes en données (8 Go / s de lecture de mémoire), cela signifie que le basculement sur un seul bit peut se produire toutes les minutes ( BER de 10 à 12 fournisseurs) ou une fois tous les deux jours ( BER de 10 à 16 ).
Le document de 2009 de Google intitulé "Erreurs DRAM dans la nature: une étude de terrain à grande échelle" indique qu'il peut y avoir jusqu'à 25 000 à 75 000 FIT 1 bit par Mbit ( échecs de temps par milliard d'heures ), ce qui équivaut à 1 - 5 bits. erreurs par heure pour 8 Go de RAM après mes calculs. Le papier dit la même chose: " des taux d'erreur corrigibles moyens de 2000–6000 par Go par an ".
2012 Sandia report "Detection and Correction of Silent Data Corruption for Large-Scale High-Performance Computing" : "les flips à double bit étaient jugés improbables" mais à l'ORNL dense Cray XT5 ils sont "au rythme de un par jour pour 75 000+ DIMM" même avec ECC. Et les erreurs sur un seul bit devraient être plus élevées.
Donc, si le programme a un grand ensemble de données (plusieurs Go), ou a un taux élevé de lecture ou d'écriture en mémoire (Go / s ou plus), et qu'il s'exécute pendant plusieurs heures, alors nous pouvons nous attendre à plusieurs flips de bits silencieux sur le matériel de bureau. Ce taux n'est pas détectable par memtest, et les modules DRAM sont bons.
Les clusters longs s'exécutent sur des milliers de PC non ECC, comme l'informatique de grille à l'échelle de BOINC sur Internet, il y aura toujours des erreurs de bit-flips de mémoire ainsi que des erreurs silencieuses de disque et de réseau.
Et pour les machines plus grandes (10 000 serveurs), même avec une protection ECC contre les erreurs sur un seul bit, comme nous le voyons dans le rapport 2012 de Sandia, il peut y avoir des retournements sur deux bits tous les jours, vous n'aurez donc aucune chance d'exécuter en parallèle pleine taille programme pendant plusieurs jours (sans point de contrôle régulier et redémarrage à partir du dernier bon point de contrôle en cas de double erreur). Les énormes machines obtiendront également des bit-flips dans leurs caches et registres de processeur (à la fois les déclencheurs architecturaux et internes de la puce, par exemple dans le chemin de données ALU), car tous ne sont pas protégés par ECC.
PS: Les choses seront bien pires si le module DRAM est mauvais. Par exemple, j'ai installé une nouvelle DRAM dans un ordinateur portable, qui est mort plusieurs semaines plus tard. Cela a commencé à donner beaucoup d'erreurs de mémoire. Ce que j'obtiens: l'ordinateur portable se bloque, Linux redémarre, exécute fsck, trouve des erreurs sur le système de fichiers racine et dit qu'il veut redémarrer après avoir corrigé les erreurs. Mais à chaque redémarrage suivant (j'en ai fait environ 5-6), il y a toujours des erreurs sur le système de fichiers racine.