Perturbation par une particule isolée
# Perturbation par une particule isolée

Une perturbation par une particule isolée (PPI) (en anglais : Single event upset) est un changement d'état provoqué par une seule particule ionisante (ions, électrons, photons ...) frappant un nœud sensible dans un dispositif microélectronique, comme dans un microprocesseur, une mémoire à semi-conducteur, ou transistors de puissance. Le changement d'état est le résultat de la charge libre créée par ionisation dans ou à proximité d'un nœud important d'un élément logique (par exemple dans un "bit" de mémoire). L'erreur de la donnée de sortie ou du fonctionnement de l'appareil causée par cette impact est appelée perturbation par une particule isolée ou erreur logicielle.

Une perturbation par une particule isolée en elle-même n'est pas considérée comme endommageant de façon permanente la fonctionnalité du transistor ou des circuits contrairement au cas du déclenchement parasite isolé, d’une rupture de grille isolée ou d’un claquage isolé. Ce sont tous des exemples d'une classe générale d'effets de rayonnement dans les appareils électroniques appelés effets à événement unique (EEU).

## Historique

Des perturbations par une particule isolée furent décrites pour la première fois lors d'essais nucléaires en surface, de 1954 à 1957, lorsque de nombreuses anomalies furent observées dans les équipements de surveillance électronique. D'autres problèmes furent observés dans de l'électronique spatiale au cours des années 1960, bien qu'il ait été difficile de séparer les défaillances de logiciels des autres formes d'interférences. En 1972, un satellite Hughes connut une PPI lorsque la communication avec le satellite fut perdue pendant 96 secondes, puis retrouvée. Les scientifiques, les Dr Edward C. Smith, Al Holman et le Dr Dan Binder expliquèrent l'anomalie comme une perturbation par une particule isolée et publièrent le premier article sur les PPI en 1973 dans le journal IEEE Transactions on Nuclear Science. En 1978, le premier rapport décrivant des erreurs logicielles dues aux particules alpha fut fait par Timothy C. May et M.H. Woods. En 1979, James Ziegler de la société IBM, avec W. Lanford de l'université Yale, décrivit pour la première fois le mécanisme par lequel un rayon cosmique au niveau de la mer pouvait provoquer une perturbation par une particule isolée dans un équipement électronique.

## Cause

Les PPI terrestres surviennent en raison de la collision de particules cosmiques avec des atomes dans l'atmosphère, créant des cascades ou des douches de neutrons et de protons, qui à leur tour peuvent interagir avec les circuits électroniques. Dans les géométries submicroniques profondes, cela affecte les dispositifs semi-conducteurs dans l'atmosphère.

Dans l'espace, des particules ionisantes de haute énergie font partie du fond naturel, appelées rayons cosmiques galactiques. Les éruptions de particules solaires et de protons de haute énergie piégés dans la magnétosphère terrestre (ceinture de Van Allen) aggravent ce problème. Les hautes énergies associées au phénomène dans l'environnement des particules spatiales rendent généralement le blindage accru des engins spatiaux inutile vis-à-vis de l'élimination des PPI et des phénomènes catastrophiques à événement unique (par exemple, un déclenchement parasite destructif). Les neutrons atmosphériques secondaires générés par les rayons cosmiques peuvent également avoir une énergie suffisamment élevée pour produire des PPI dans l'électronique lors du vol des avions au-dessus des pôles ou à haute altitude. Des traces d'éléments radioactifs dans les encapsulations de puces peuvent provoquer également à des PPI.

## Essai de sensibilité aux PPI

La sensibilité d'un dispositif à une PPI peut être estimée empiriquement en plaçant un dispositif de test dans un flux de particules dans un cyclotron ou un autre accélérateur de particules. Cette méthodologie d’essai particulière est particulièrement utile pour prédire le taux d'erreur d’un programme informatique dans les environnements spatiaux connus, mais peut être problématique pour estimer le taux d'erreur d’un logiciel sur terre soumis à des neutrons. Dans ce cas, un grand nombre de pièces doivent être évaluées, éventuellement à différentes altitudes, pour trouver le taux réel de perturbations.

Une autre façon d'estimer empiriquement la tolérance aux PPI consiste à utiliser une chambre protégée contre les radiations, avec une source de rayonnement connue, comme le césium 137.

Lors de l’essai de résistance des microprocesseurs aux PPI, le logiciel utilisé pour faire fonctionner l'appareil doit également être évalué pour déterminer quelles sections de l'appareil sont touchées lorsque des PPI se produisent.

## PPI et conception de circuits

Par définition, les PPI ne détruisent pas les circuits impliqués, mais ils peuvent provoquer des erreurs. Dans les microprocesseurs spatiaux, l'une des parties les plus vulnérables est souvent les mémoires cache de 1er et 2ème niveau, car celles-ci doivent être très petites et avoir une vitesse très élevée, ce qui signifie qu'elles ne tiennent pas beaucoup de charge. Souvent, ces caches sont désactivés si les conceptions terrestres sont configurées pour survivre aux PPI. Un autre point de vulnérabilité est la machine d'état dans la commande du microprocesseur, en raison du risque d'entrer dans des états "morts" (sans sortie), cependant, ces circuits doivent piloter l'ensemble du processeur, de sorte qu'ils ont des transistors relativement grands pour fournir des courants relativement importants et ne sont pas aussi vulnérables qu'on pourrait le penser. Un autre composant vulnérable de processeur est la RAM. Pour assurer la résilience aux PPI, une mémoire à code correcteur d'erreurs est souvent utilisée, ainsi que des circuits pour lire périodiquement (conduisant à une correction) ou nettoyer (si la lecture ne conduit pas à une correction) la mémoire d'erreurs, avant que les erreurs ne submergent les circuits de correction d'erreurs.

Dans les circuits numériques et analogiques, un seul événement peut provoquer la propagation d'une ou plusieurs impulsions de tension (c'est-à-dire des parasites) à travers le circuit, auquel cas il est appelé transitoire à événement unique (TEU). Etant donné que propagation de l'impulsion n'est pas techniquement un changement d '"état" comme dans une mémoire soumis à un PPI, il faut différencier TEU et PPI. Cependant si un TEU se propage à travers des circuits numériques et entraîne une valeur incorrecte dans une unité logique séquentielle, il est alors considéré comme une PPI.

Des problèmes matériels peuvent également survenir pour des raisons connexes. Dans certaines circonstances (de la conception des circuits, des processus de conception et des propriétés des particules), un thyristor "parasite" inhérent aux conceptions CMOS peut être activé, pouvant provoquer un court-circuit apparent entre l'alimentation et la masse. Cette condition est appelée verrouillage, et en l'absence de mise en place de contre-mesures lors de construction, détruit souvent l'appareil en raison de l'emballement thermique.

La plupart des fabricants mettent en œuvre des conceptions pour empêcher le verrouillage et testent leurs produits pour s'assurer que le verrouillage ne se produit pas à cause d’impacts de particules atmosphériques. Afin d'empêcher le verrouillage dans l'espace, des substrats épitaxiaux, du silicium sur isolant (SOI) ou du silicium sur saphir (SOS) sont souvent utilisés pour réduire ou éliminer davantage la sensibilité à ce phénomène.

## PPI notables

* Lors des élections de 2003 dans la municipalité de Bruxelles à Schaerbeek (Belgique), un candidat à une élection a reçu 4 096 voix supplémentaires à la suite d'une PPI. Cette erreur n'a été remarquée que parce que le nombre de votes obtenus était supérieur au nombre maximal possible, ce qui a donné lieu à une enquête.
* En 2013, un speedrunner du jeu vidéo Super Mario 64 utilisant la console Nintendo 64 a connu un problème qui a téléporté le personnage Mario en hauteur. Il est supposé que cela a été causé par une PPI, changeant le bit le moins significatif de l’octet le plus significatif de la valeur de la hauteur de Mario. Les tentatives d’autres joueurs de reproduire le bug, même en utilisant les entrées exactes du contrôleur pour recréer le speedrun à l’identique, n’ont pas réussi. Ce n’est qu’en modifiant manuellement la valeur de mémoire spécifique dans l’éditeur de mémoire d’un émulateur que les joueurs arrivent à reproduire systématiquement le $bug^,.$
