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.
la source
Réponses:
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 :
Chaque colonne représente un standard logique et l'axe vertical correspond à la tension. Voici ce que chaque couleur représente:
la source
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.
la source
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 ...
la source
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.
la source
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.
la source
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é!
la source
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é.
la source
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.).
la source
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:
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».
la source
Les deux aspects fondamentaux des ordinateurs électroniques pratiques sont les suivants:
Une alimentation très stable
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.
la source
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.
la source
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,
il est préférable de changer le
==
en>=
juste au cas où la valeur desi
sauts de 9 à 11 ou tout nombre supérieur à 10, ce qui vous ferait ne jamais quitter la boucle avant dei
revenir à 0 (après 4 milliards d’itérations).Ça arrive, croyez-moi ...
la source
i
saute à un grand nombre négatif?