Comment pouvons-nous être sûrs que les ordinateurs ne basculeront jamais accidentellement un 0 par un 1?


63

J'ai lu un peu sur la construction d'un ordinateur numérique dans Shocken / Nisan: Les éléments des systèmes informatiques . Mais ce livre ne dit rien sur certains aspects électriques dans les ordinateurs, par exemple: On dit souvent que les 0 et les 1 sont représentés par la tension, si la tension est dans l'intervalle [0, 0.9), alors c'est un 0. Si la tension est dans l'intervalle [0.9, 1.5), alors c'est un 1 (les tensions peuvent varier, je ne donne qu'un exemple).

Mais je ne lis jamais ce qui maintient les tensions électriques "saines" de manière à ce qu'un 0 ne puisse jamais devenir accidentellement un 1 en raison de la volatilité électrique [1] à l'intérieur de l'ordinateur. Peut-être est-il possible que la tension soit très proche de 0,9, alors que fait-on pour l’éviter de dépasser le seuil?

[1]: En supposant qu'il existe.


7
Le courant n’est jamais très proche de 0,9, car rien ne le rend vraiment très proche de 0,9.
user253751

7
Parce que les choses sont conçues pour ne pas générer de courants très proches de 0,9. Vous pourriez aussi bien demander: "J'ai des preuves empiriques solides que mon ordinateur portable n'est pas facturé à 50 gigavolts; pourquoi pas?" Tout simplement parce qu'il n'y a pas de raison que ce soit le cas.
user253751

13
Nitpick: la plupart des logiques numériques utilisent des tensions, et non des courants, pour représenter les états logiques.
Crépuscule

11
Preuve anecdotique: En 2011, j'ai un peu échangé un fichier sur un disque dur qui fonctionnait bien pendant 5 ans.
PlasmaHH

7
Ces interrupteurs accidentels sont exploitables. L'explication de Google est un cas intéressant pour cela. La sécurité est bien plus difficile à gérer lorsque la véritable API pour "Définir le bit X sur 1" est "Définir le bit X sur 1 et, parfois, accidentellement, définissez le bit Y à 1". Cela devient également très courant dans le cas de machines overclockées. Je me souviens d’une entreprise qui a ajouté une série de calculs (chaque image) avec des résultats connus pour déterminer si le matériel était suffisamment fiable pour exécuter le jeu.
Brian

Réponses:


100

On dit souvent que les 0 et les 1 sont représentés par la tension, si la tension est dans l'intervalle [0, 0.9), alors il s'agit d'un 0. Si la tension est dans l'intervalle [0.9, 1.5), alors il s'agit d'un 1 ( les tensions peuvent varier, je ne donne qu’un exemple).

Dans une certaine mesure, vous avez principalement créé ce problème en utilisant un exemple peu réaliste. Il existe un écart beaucoup plus grand entre les valeurs logiques faibles et élevées dans les circuits réels.

Par exemple, la logique CMOS 5V émettra une sortie 0-0,2V pour une logique basse et 4,7-5 V pour une logique haute, et acceptera systématiquement toute valeur inférieure à 1,3 V si faible ou supérieure à 3,7 V si élevée. C'est-à-dire que les marges des sorties sont beaucoup plus étroites que celles des entrées et qu'il reste un énorme écart entre les tensions pouvant être utilisées pour les signaux logiques bas (<1,3 V) et celles pouvant être utilisées pour les valeurs logiques élevées (> 3,7 V). . Tout cela est spécialement conçu pour tenir compte du bruit et pour éviter le type même de commutation accidentelle que vous décrivez.

Voici une représentation visuelle des seuils pour diverses normes logiques que j'ai empruntées à interfacebus.com :

Seuils de niveau logique] [1]

Chaque colonne représente un standard logique et l'axe vertical correspond à la tension. Voici ce que chaque couleur représente:

  • Orange: les tensions dans cette plage sont générées pour un niveau logique élevé et seront acceptées comme étant logiquement élevées
  • Vert clair: les tensions comprises dans cette plage seront acceptées comme logiquement élevées.
  • Rose / bleu: les tensions dans cette plage ne seront pas interprétées de manière cohérente, mais celles de la zone rose finiront généralement par être interprétées comme étant élevées, et celles de la zone bleue seront généralement basses.
  • Vert bleuâtre: les tensions comprises dans cette plage seront acceptées comme logiquement basses.
  • Jaune: les tensions comprises dans cette plage sont générées pour un niveau logique bas et seront interprétées comme telles.

4
Bonne réponse, même si je pense que cela pourrait être plus complet: vous ne couvrez que l'immunité contre (ou plutôt la protection contre) le bruit. Il existe de nombreux autres mécanismes responsables d'erreurs numériques, et autant de moyens de protection. La bonne chose, c'est que je ne couvrais pas l'immunité au bruit dans ma réponse :)
Mister Mystère

1
@ MisterMystère C'est vrai! La correction d'erreur est un peu un sujet énorme, cependant, et je ne pourrais pas tout couvrir en une seule réponse.
Crépuscule

1
@ MisterMystère: Eh bien, "bruit" est un terme qui recouvre toutes sortes de sources d'erreur stochastiques. Vos exemples d'interférences électromagnétiques et de rayonnement cosmique entrent parfaitement dans la catégorie "bruit". La seule autre cause d'erreur numérique est déterministe, ce que nous appelons un "bug". Mais cette question concerne uniquement les erreurs accidentelles.
Ben Voigt le

Dans votre troisième puce, je pense que vous avez changé les couleurs ou la logique. le rose devrait être faible et le bleu devrait être élevé.
Guill

@ Huil Huu? La région rose est au-dessus de V_T, elle sera donc traitée de manière non fiable comme haute logique.
Crépuscule

65

Nous ne pouvons pas Nous ne faisons que réduire la probabilité d'erreurs en ajoutant des contrôles aux données. Selon le type de données à vérifier, cela peut être effectué via un matériel ou un logiciel, et peut prendre n'importe quelle forme, du simple bit de somme de contrôle dans les flux série aux automates à états cycliques, permettant uniquement d'effectuer des transitions spécifiques à un moment donné.

Mais c'est un cercle vicieux, n'est-ce pas? Comment pouvons-nous nous assurer que le circuit en charge de la vérification des données n'est pas affecté par les mêmes perturbations que les données et donne un faux positif? Ajout d'un autre? Vous pouvez voir comment cela peut devenir assez coûteux pour un très petit gain à la fin.

La question qui se pose est la suivante: quelle est la fiabilité de votre système? Les satellites, qui intègrent certains des systèmes informatiques les plus fiables disponibles, ont par exemple parfois recours à la redondance croisée de systèmes non identiques ainsi que de votes: trois ordinateurs différents exécutent le même algorithme codé par trois personnes différentes de trois manières différentes, et le cas échéant. des ordinateurs donne un résultat différent des deux autres, il est redémarré (et si cela se reproduit, isolé). Mais encore une fois, si deux ordinateurs sont défectueux en même temps, le mauvais ordinateur sera redémarré / isolé. Habituellement, une "redondance à froid" suffit: un circuit primaire et un circuit secondaire sont implémentés, le primaire s'exécute jusqu'à ce qu'une erreur soit détectée par un circuit de surveillance (non protégé) et que le circuit secondaire soit inversé. S'il ne s'agit que d'une erreur en RAM, le code peut être réexécuté pour actualiser les données. Il vous suffit de décider sagement où tracer la ligne, il est impossible de créer un circuit de détection d'erreur fiable à 100%.

Les satellites (en particulier à haute altitude ou dans la ceinture de Van Allen) et les ordinateurs des centrales nucléaires ou autres environnements radioactifs sont particulièrement soumis aux (mot clé :) Evènements ou verrous à événement unique en raison de la collision de particules d'énergie avec ou de leur absorption par des réseaux cristallins de semi-conducteurs . Les livres couvrant ces domaines seront certainement votre meilleur choix. La peinture est dégradée par les dommages dus au déplacement causés par le rayonnement. Il est donc parfaitement compréhensible que les semi-conducteurs puissent être endommagés ou perturbés par le rayonnement entrant.


2
Je ne sais pas si vous vouliez écrire «cercle vicieux», mais «cercle visqueux» sonne également drôle.
svavil

1
En fait, c’était un cercle visqueux, mais ce cercle m'a fait rire :)
Mister Mystère

1
Il suffit de log n bits pour pouvoir localiser et corriger une erreur sur un seul bit sur n bits.
Thorbjørn Ravn Andersen

1
Cela me rappelle une question récente sur la rédaction de programmes tenant compte d'erreurs matérielles sur les ordinateurs exposés à des composés radioactifs: stackoverflow.com/questions/36827659/…
Pharap

Je ne savais pas à propos des satellites que trois «groupes» différents (ou plus) codent la même chose d'une manière différente. Ça a l'air cool :)
kalmanIsAGameChanger

33

Les événements isolés ne sont plus une affaire d'espace ni d'avion. nous les voyons se produire à la surface depuis plus d'une décennie, peut-être deux maintenant.

Comme mentionné cependant, au moins dans les applications spatiales, nous traitons des problèmes en utilisant le triple vote (chaque bit est vraiment trois et un vote sur deux gagne, donc s'il y en a un qui change, les deux autres le couvriront.). Ensuite, ECC ou EDAC , avec des épurateurs qui parcourent la RAM à un taux supérieur au taux de mise à jour prévu d’un événement à l’autre pour nettoyer les événements uniques (ceux qui repoussent effectivement les deux tiers des votes).

Ensuite, il y a la dose totale; au fil du temps, le matériau devient trop radioactif pour fonctionner. Vous utilisez donc suffisamment de matériau pour dépasser la durée de vie du véhicule. Ce n'est pas quelque chose qui nous inquiète normalement à la surface. (Et latchup) L'utilisation de trois / plusieurs ensembles de logique en parallèle est / était un moyen d'essayer de ne pas avoir à utiliser la technologie rad-hard traditionnelle, et bien, vous pouvez voir à quel point cela fonctionne.

Les gens qui savaient comment créer des choses pour l'espace ont pour la plupart pris leur retraite ou sont partis, nous avons donc un certain nombre de programmes qui font de la corbeille de l'espace maintenant. Ou traiter l’espace comme des produits liés à la terre, au lieu d’essayer de faire travailler tout le monde et d’avoir une rentrée contrôlée et de l’épuiser, nous nous attendons maintenant à une certaine quantité de déchets dans l’espace de chaque constellation.

Nous voyons des bouleversements à la surface. Toute clé de mémoire ( DRAM ) que vous achetez a un FIT, Failures In Time, et toute puce contenant de la RAM (tous les processeurs, bien d’autres) aura également une spécification FIT (pour les blocs RAM (SRAM)). La RAM est plus dense et utilise des transistors plus petits, elle est donc plus susceptible d'être perturbée, créée en interne ou externe. La plupart du temps, nous ne le remarquons pas et ne nous en soucions pas, car la mémoire que nous utilisons pour les données, regarder une vidéo, etc. est écrite, lue et non utilisée à nouveau avant d'avoir été utilisée suffisamment longtemps pour être perturbée. Certaines mémoires, comme celles contenant un programme ou le noyau, sont plus risquées. Mais nous sommes depuis longtemps habitués à l’idée de simplement redémarrer notre ordinateur ou de réinitialiser / redémarrer notre téléphone (pour certains téléphones / marques, vous devrez régulièrement retirer la batterie). S'agit-il de bouleversements ou d'un mauvais logiciel ou d'une combinaison?

Les numéros FIT de votre produit individuel peuvent dépasser la durée de vie de ce produit, mais prenons une grande batterie de serveurs, vous tenez compte de la mémoire vive ou des puces, la ferme. Et vous avez ECC pour couvrir ce que vous pouvez de ceux-là. Ensuite, vous répartissez la charge de traitement avec les basculements pour couvrir les ordinateurs ou les logiciels qui ne terminent pas une tâche.

Le désir de stockage à l'état solide et le passage des médias en rotation ont créé un problème lié à cela. La mémoire utilisée pour les disques SSD (et autres mémoires non volatiles) plus rapidement et à moindre coût est beaucoup plus volatile que nous le souhaiterions et repose sur EDAC, car nous perdrions des données sans cela. Ils apportent beaucoup de ressources supplémentaires et font tout le nécessaire, en faisant le calcul pour équilibrer la vitesse, le coût et la longévité du stockage. Je ne nous vois pas revenir en arrière; les gens veulent partout plus de stockage non volatile qui rentre dans un emballage minuscule et ne domine pas le prix du produit.

En ce qui concerne les circuits normaux, depuis le début de l’utilisation des transistors pour les circuits numériques jusqu’au présent, nous passons à travers la partie linéaire du transistor et l’utilisons comme commutateur, nous le cognons entre les rails avec un peu d’excès pour s’assurer qu’il colle . Comme l'interrupteur sur votre mur, vous le retournez à plus de la moitié d'un ressort, aide le reste et le maintient à cet endroit. C'est pourquoi nous utilisons le numérique et n'essayons pas de vivre dans la région linéaire; ils ont essayé tôt, mais ont échoué. Ils ne pouvaient pas rester calibrés.

Nous plaçons donc simplement le transistor dans ses rails et les deux côtés d’un signal s’installeront d’ici le prochain cycle d’horloge. On se donne beaucoup de peine, et les outils actuels sont bien meilleurs qu’auparavant, lors de l’analyse de la conception de la puce, pour faire en sorte qu’il y ait une marge de manoeuvre au moment de la conception. Puis testez chaque puce sur chaque tranche (celle-ci et / ou après l’emballage) pour vérifier que chaque puce est bonne.

Chip Tech s'appuie fortement sur des statistiques basées sur des expériences. Lorsque vous overclockez votre processeur, vous augmentez votre marge, restez dans les limites de la fréquence d'horloge, de la température, etc. annoncées, et vos chances de rencontrer des problèmes sont considérablement réduites. Un processeur xyz à 3 GHz est simplement une puce à 4 GHz qui a échoué à 4 GHz mais qui est passée à 3 GHz. Les pièces sont classées à la vitesse d’une ligne de production.

Il existe également des connexions entre puces ou cartes, qui sont également sujettes à des problèmes, et il faut beaucoup de temps et d’efforts pour élaborer des normes et des conceptions de cartes, etc., afin de limiter les erreurs sur ces interfaces. USB , clavier, souris, HDMI , SATA , etc. Ainsi que toutes les traces sur le tableau. Sur et en dehors du conseil, vous avez des problèmes de diaphonie; encore une fois, de nombreux outils sont disponibles si vous les utilisez ainsi que l'expérience nécessaire pour éviter les problèmes en premier lieu, mais c'est une autre façon de ne pas voir ceux-ci et les zéros être totalement utilisés.

Aucune des technologies, même l’espace, n’est parfaite. Cela doit être suffisant, un pourcentage suffisant du produit doit couvrir la durée de vie attendue du produit. Un certain pourcentage des téléphones intelligents doit durer au moins deux ans, et c'est tout. Les fonderies ou les technologies plus anciennes disposent de plus de données expérimentales et peuvent produire un produit plus fiable, mais il est plus lent et peut-être pas de nouvelles conceptions, alors allez-y. Le tranchant n’est que cela, un pari pour tout le monde.

Pour répondre à votre question spécifique, les transistors situés à chaque extrémité d'un signal sont poussés rapidement dans leur région linéaire et se penchent dans l'un des rails. Une analyse est effectuée sur chaque chemin de combinaison pour déterminer qu'elle va s'installer avant que l'horloge située à la fin du chemin ne le verrouille, de sorte qu'elle soit réellement transformée en zéro ou en un. L'analyse est basée sur des expériences. Les premières puces d'une gamme de produits sont poussées au-delà des limites de la conception. Des tracés schmoo sont créés pour déterminer s'il existe une marge dans la conception. Des variations sont apportées au processus et / ou des candidats individuels sont trouvés qui représentent les puces lentes et rapides. C'est un processus compliqué et certains ont plus de matériel, d'autres moins, fonctionnant plus vite mais utilisant plus d'énergie ou plus lentement, etc.

Vous poussez ceux-ci aussi. Et en gros, vous avez l’impression que le design est acceptable pour la production. JTAG / périmètre de balayage sont utilisés pour exécuter des modèles aléatoires à travers les puces entre chaque état verrouillé pour voir les chemins de combinaison sont tous solides pour une conception. Et là où il y a des problèmes, des tests fonctionnels dirigés peuvent également être effectués. Des tests supplémentaires du premier silicium et peut-être des tests aléatoires pour s'assurer que le produit est bon. Si des pannes surviennent, cela peut vous obliger à effectuer davantage de tests fonctionnels sur la chaîne de production. Il dépend fortement des statistiques / pourcentages. 1/1000000 les mauvais en sortir peut être bon ou 1/1000 ou autre; cela dépend du nombre que vous pensez produire de cette puce.

Les vulnérabilités sont comme mentionné ici et avec d'autres. Tout d’abord, la puce elle-même, la conception et le processus, et la marge la plus faible d’une puce spécifique dans le produit que vous avez acheté. Si trop près du bord, le changement de température ou autre peut causer des problèmes de synchronisation et les bits verrouillent les données qui ne se sont pas stabilisées à un ou zéro. Ensuite, il y a des événements uniques. Et puis il y a du bruit. encore des trucs déjà mentionnés ...


4
Votre premier paragraphe laisse entendre que les environnements aérospatiaux ne posent plus de problèmes, alors que je pense que vous vouliez dire que les SEU ne sont plus uniquement expérimentés dans ces environnements.
W5VO

Notez que les UDE peuvent provenir de la soudure SnPb sur les BGA car une partie du plomb fait partie de la chaîne de désintégration de l'uranium, indépendamment de l'activité des neutrons libres.
Peter Smith

@ W5VO, oui, je voulais dire que les perturbations dues au rayonnement ne sont plus simplement un problème d'espace, elles le sont jusqu'à la surface. Pas aussi mauvais que dans l'espace, mais présent.
old_timer

1
Je pense me souvenir que certains bus de mini-ordinateurs DEC avaient des problèmes de métastabilité dans la pratique. C'est un mécanisme distinct pour les erreurs de bits de ceux que vous avez nommés, non? Ou pas?
davidbak

2
@davidbak: La métastabilité est un problème épineux dont l’effet le plus courant est que, dans les cas où la valeur de plusieurs bits dépend du fait que certaines entrées sont basses ou élevées à un moment donné dans un passé récent, elles ne peuvent pas toutes basculer ensemble d’une manière compatible avec les entrées. être faible, ni d’une manière compatible avec une valeur élevée, mais peut au contraire produire un mélange arbitraire des deux comportements. Par exemple, si le code est censé créer une branche lorsqu'un bouton est enfoncé, les bits du compteur de programme risquent de contenir un mélange arbitraire des valeurs qu’ils auraient obtenues si le bouton avait été enfoncé ou non.
Supercat

12

Si vous recherchez une réponse simple:

Chaque composant numérique d'un ordinateur est plus limité dans les sorties qu'il produit que dans les entrées qu'il accepte. Par exemple, toute valeur "entrée" comprise entre 0V et 2V sera acceptée en tant que 0, mais une "sortie" de 0 sera toujours comprise entre 0 et 0,5V. (Voir la réponse de duskwuff pour quelques valeurs réelles.)

Cela signifie que chaque composant aide à "corriger" une partie de la déviation ou du bruit survenu le long de la ligne. Bien entendu, si le bruit est suffisamment important, le système ne peut pas compenser. Les ordinateurs situés dans des environnements soumis à de fortes radiations peuvent souvent être affectés par le passage de 1 à 0 et inversement.

Fondamentalement, les ordinateurs sont conçus pour tolérer certains niveaux de bruit / interférences , ce qui est suffisant pour la plupart des applications pratiques.


8

Il est théoriquement possible que les signaux changent entre 0 et 1 à cause du bruit thermique (et autre), mais il est extrêmement improbable.

Les circuits numériques sont conçus avec un attribut appelé "marge de bruit". Il s’agit de la différence entre son entrée et son état avant que la sortie ne soit retournée. Généralement, dans les circuits CMOS, cela représente environ 50% de la tension d'alimentation. Les bruits thermiques inévitables (provenant d'électrons se déplaçant à toute température supérieure à 0 kelvin) dans ces circuits génèrent << 1 mV de bruit, et la probabilité que ces pointes puissent dépasser (disons) 500 mV est extrêmement faible.

Les portes numériques (par exemple, CMOS) ont des caractéristiques de gain et de saturation. Cela signifie que lorsque le signal d'entrée est proche du milieu de la plage, la sortie change rapidement (gain élevé), mais lorsqu'elle est proche des extrêmes de la plage, elle change lentement. Le résultat de ceci est que lorsqu'un signal d'entrée est «proche» des rails, la sortie est encore plus proche - cela signifie que le bruit n'est pas amplifié.

D'autres caractéristiques mentionnées ci-dessus (correction d'erreur, etc.) signifient que les erreurs, même si elles se produisent, ne se propagent pas.


4

Dans les systèmes sujets aux erreurs, tels que les canaux de communication et le stockage magnétique (et parfois même la RAM), une somme de contrôle, CRC ou ECC est enregistrée pour rejeter les données erronées ou corriger les petites erreurs.

Généralement, les systèmes binaires sont conçus pour que cela ne soit pas possible, mais une fois sur quelques millions ou milliards * de fois, un rayon cosmique ou un bruit de bruit bouge des choses sur la ligne, la détection / correction d'erreur est nécessaire pour maintenir la corruption. d'affecter l'ordinateur de manière sérieuse.

* Les canaux de communication peuvent avoir un taux d'erreur beaucoup plus élevé!


4

Le matériel informatique est devenu plus robuste et fiable. Mais le matériel est beaucoup trop large pour une réponse simple. Toutefois, il peut être intéressant de savoir qu’il existe une différence de fiabilité entre un ordinateur de bureau commun et un ordinateur serveur d’entreprise. J'ai trouvé ce fil de questions / réponses sur le matériel du serveur. Un serveur coûtera plusieurs fois plus qu'un bureau comparable. Le coût est le résultat d'un matériel de meilleure qualité qui est peut-être plusieurs fois moins susceptible de "passer inopinément d'un" 1 à 0 ".

Mais le matériel n’est que la moitié de l’histoire. Les ordinateurs peuvent également protéger les données contre les erreurs inattendues à l'aide d'un logiciel. Hamming Code est un exemple où, en ajoutant une petite quantité de données supplémentaires, un petit nombre d'erreurs peut non seulement être détecté, mais également corrigé.


à l'exception du flash MLC, où la fiabilité est échangée pour la densité,
Jasen

3

Il existe deux méthodes couramment utilisées pour minimiser la probabilité qu'un bit logique soit accidentellement activé (0 à 1 ou 1 à 0).
Le premier est de fournir en grande un écart entre les niveaux de tension définis pour un 0 et un 1, que possible . Comme vous le mentionnez, un 0 correspond à un niveau de tension <0,9 v, tandis que le 1 correspond à un niveau de tension> 2,9 v (et non comme vous le dites entre 0,9 et 1,5). Cela laisse un écart de tension de 2v. Cela signifie que la tension du signal devrait varier de 200% avant de commuter "accidentellement" l'état du bit (très improbable).
La seconde est en "pointant"les signaux logiques. Etant donné que la tension / le bruit "accidentel" est aléatoire et de courte durée, en permettant des changements d'état uniquement à des intervalles particuliers (et courts), la probabilité que la "variation" frappe au moment de l'horloge est minimisée.

Bien entendu, d’autres moyens et méthodes sont utilisés, en fonction du degré de fiabilité requis (ECD, ECC, etc.).


2

Bonne ingénierie.

Une conception demande beaucoup d'efforts pour éviter la corruption des données ou pour la corriger si elle ne peut pas être empêchée suffisamment (par exemple, mémoire ECC ).

Les choses pouvant causer une corruption de données incluent:

  • environnements électriquement bruyants
  • questions liées au pouvoir
  • problèmes de synchronisation (par exemple, entre l'horloge et les lignes de données, ou entre deux lignes différentielles)
  • diaphonie électrique

En bref, beaucoup de travaux d'ingénierie ont été faits dans les conceptions numériques afin que les ingénieurs en logiciel puissent supposer simplement que «0» signifie «0» et que «1» signifie «1».


Et bien sûr, la mémoire ECC peut également faire des choses amusantes, telles que déclencher une interruption non masquable (NMI) si plus de bits sont corrompus qu'il n'est possible de réparer. Je pense que pour la RAM ECC moderne, il s’agit d’une erreur de plus d’un bit sur 64 bits (les codages peuvent corriger les erreurs sur un bit et détecter mais pas corriger les erreurs sur deux bits), mais je peux me tromper à ce sujet. Dans les cas où vous vous souciez de vos données, il peut être préférable d'arrêter immédiatement le système si quelque chose ne va pas, bien au contraire, de ne pas savoir s'il est possible de faire confiance aux données (ou pire, de le savoir).
un CVn

2

Les deux aspects fondamentaux des ordinateurs électroniques pratiques sont les suivants:

  1. Une alimentation très stable

  2. Heure (généralement définie comme fréquence d'horloge ou délai)

Les alimentations pour les systèmes informatiques sont très précisément spécifiées et réglementées. En fait, pour tout système informatique, l’alimentation est généralement régulée à plusieurs reprises: au niveau de l’alimentation (ou du chargeur de batterie), à ​​l’entrée principale de la carte mère, à l’entrée des cartes filles et enfin sur la puce elle-même.

Cela élimine beaucoup de bruit (volatilité électrique). Le processeur voit une source de tension très stable et non volatile qu'il peut utiliser pour traiter la logique.

La source principale suivante de valeurs intermédiaires (tensions comprises entre 0 et 1) vient lorsque les valeurs sont en transition. Soit 1 passant à 0 (temps de descente) ou 0 à 1 (temps de montée). Vous ne pouvez vraiment rien y faire, sauf attendre la fin de la transition avant d'accepter la sortie du circuit. Avant la fin de la transition, la sortie du circuit est considérée comme un déchet.

En ingénierie, la solution à ce problème consiste simplement à écrire combien de temps vous devez attendre pour que les résultats soient corrects sur papier. C'est l'origine de la fréquence d'horloge du processeur. La fréquence d'utilisation du processeur dépend du temps nécessaire à la stabilisation des modifications d'état dans le processeur.

Il existe en réalité une troisième source de volatilité: les entrées dans le circuit. La solution à ce problème est similaire au problème général ci-dessus: assurez-vous que le signal (tension ou courant) entrant dans le système est stable et assurez-vous que le signal a suffisamment de temps pour se stabiliser.

La deuxième partie du problème est la raison pour laquelle nous échantillonnons les entrées dans les verrous ou les registres avant le traitement. Le signal peut être des ordures. Mais ils seront 0 ou 1 déchets à l'intérieur des registres quand ils sont traités. La première partie du problème concerne les garanties.


2

Mais je ne lis jamais ce qui maintient les tensions électriques "saines" d'une manière telle qu'un 0 ne puisse jamais devenir accidentellement un 1 en raison de la volatilité électrique 1 à l'intérieur de l'ordinateur. Peut-être est-il possible que la tension soit très proche de 0,9, alors que fait-on pour l’éviter de dépasser le seuil?

Le retour est ce qui l’empêche d’approcher de la tension de seuil et l’oblige à bien se comporter.

Cela se présente généralement sous la forme d’un circuit de verrouillage, souvent d’un circuit de verrouillage cadencé.

Comme exemple simple, considérons la bascule . Il est conçu pour que la sortie soit renvoyée dans le circuit logique en tant qu'entrée supplémentaire. La logique dans l'élément, par conséquent, sait ce qu'elle produit et restera en sortie jusqu'à ce que les autres entrées le forcent dans l'état opposé.

Étant donné que le circuit est conçu pour que les transistors soient complètement allumés ou éteints, il restera toujours proche des limites d'alimentation et de masse - il ne s'approchera pas du niveau 0.9v et, une fois la transition terminée, il se déplacera rapidement et complètement. à l'autre état. Les circuits sont conçus spécifiquement pour éviter de fonctionner dans la région analogique entre les deux états.


0

Dans des conditions de fonctionnement normales, les 0 et les 1 rencontrent rarement des problèmes, mais dans de mauvaises conditions de fonctionnement (batterie faible ou peu de temps après la mise hors tension du secteur et la chute de tension dans le condensateur), il se passe des choses étranges et des erreurs aux niveaux 0 et 1 tout le temps.

Pour cette raison, si vous écrivez un code défensif (logiciel ou HDL) que vous ne souhaitez pas verrouiller, vous devez toujours prendre en compte le cas où un nombre pourrait glisser. Par exemple,

while(1)
{
  i++;
  do something here
  if (i == 10) break;
}

il est préférable de changer le ==en >= juste au cas où la valeur des isauts de 9 à 11 ou tout nombre supérieur à 10, ce qui vous ferait ne jamais quitter la boucle avant de irevenir à 0 (après 4 milliards d’itérations).

while(1)
{
  i++;
  do something here
  if (i >= 10) break;
}

Ça arrive, croyez-moi ...


Et si isaute à un grand nombre négatif?
Jasen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.