Les processeurs font-ils des erreurs de calculs? - Carte mère - Hardware
Marsh Posté le 16-11-2004 à 23:59:28
Navré d'une réponse aussi peu constructive mais la RAM existe en ecc donc je suppute de possibles erreurs au niveau de la ram donc pourquoi pas au niveau du cpu .. rien de technique ma foi mais ce topic m'interesse donc ^^ as tu une url en ce qui concerne l'impact du rayonnement cosmique sur les cellules de ram ? Merci
Marsh Posté le 17-11-2004 à 00:05:19
Oui je connais la RAM ECC, d'ailleurs j'en ai 1.75Go à vendre => ici
Justement la RAM ECC a été inventé notamment pour palier à ce genre de problème.
Cela dit ici je m'intéresse uniquement aux processeurs. Google sur "cosmic rays" et "ecc ram" tu devrais trouver nombre d'articles.
Lors de la rédaction de mon post j'ai cherché à retrouver une page que j'avais lu il y a longtemps (lors de l'achat de mon serveur en vente, en fait) concernant la RAM ECC. Ils indiquait la probabilité d'avoir une défaillance dans la RAM en fonction de la quantité de RAM disponible.
Mais je présume que les processeurs vérifient les calculs qu'ils effectuent d'une manière ou d'une autre non?
L'année dernière en Traitement Numérique de l'Information à la fac on a cablé des ALU et les détections d'erreur de base (par exemple l'addition de 2 entiers positifs ne peut pas donner un entier négatif etc... On utilise le bit de Carry etc...) mais je suppose que les CPUs actuels ont des moyens très avancer de vérifier leurs opérations arithmétiques et logiques et de les corriger en cas d'erreur.
Mais la question reste la même: de telles erreurs peuvent-elles survenir de manière "normales" dans un processeurs en condition de fonctionnement normale?
Marsh Posté le 17-11-2004 à 00:10:37
Merci pour les infos .. vu que je vois que tu sais ce dont tu parles (cablage d'alus et carry bit ) je ne comprends pas pourquoi tu demandes ce que tu sais ^^ oui les cpus peuvent avoir des erreurs de calcul interne sinon il ne servirait a rien de creer ces memes routines de check (l'overcloking n'etant pas "tolere" je ne vois pas l'interet de payer des inges pour developper des fonctions non necessaires a des conditions d'utilisation normales)
Marsh Posté le 17-11-2004 à 00:20:32
Non je ne demande pas ce que je sais.
Les ALU dont je parle sont ultra rudimentaires, et les calculs effectués sont fait sur des entiers entrés à la main en binaire sur la carte cablée. Les bits d'erreurs qu'on utilisait servaient surtout à illustrer le débordement d'une valeur sur 4 bits par exemple.
Moi je voulais savoir quels sont exactements les causes des erreurs de calculs des processeurs actuels (si il y en a) et quels sont les méchanismes mis en place pour les corriger.
D'ailleurs cette question est bien d'actualité avec les derniers AMD64 qui sont capable apparament d'éviter certains buffers overflow.
Marsh Posté le 17-11-2004 à 17:33:18
jamais entendu parler de l'existance d'éventuelles erreurs de calcul au niveau d'un processeur, que ce soit dans mes (longues) études d'informatique ou dans ma vie pro.
A ne pas confondre avec d'éventuels "bug" du microcode embarqué (célèbre sur une série de pentium), qui relève d'une erreur logicielle et non pas d'une erreur hardware.
Je pense que la réponse à ta question se situe au niveau de données statistiques sur le taux d'erreur estimé acceptable concernant les "composant" interne du microprocesseur. Je ne connais pas la réponse mais à mon avis sans être à 0, ce taux d'erreur doit être largement inférieur à 10^-9 (ca c'est le taux d'erreur de la fibre optique multimode, qui me parait vraiment moins fiable qu'un CPU !)
Ptet qu'un electronicien pourrait nous éclairer au moins sur le taux d'erreur d'une résistance ou d'un transisteur, ca pourrait nous donner une idée...
Marsh Posté le 17-11-2004 à 17:38:33
Un CPU peut faire des erreurs. Tous les CPUs en font.
Les flottants sont représentés et calculés avec une approximation contante qui est parfois étonnante.
Par exemple, j'ai vu une petite opération sur excel qui mettait en évidence la chose et qui était assez dingue. Je ne me souviens plus des chiffres exacts, mais, voici à quoi elle ressemblait pour que vous voyiez ce que je veux dire avec des nombres fictifs :
4.2 - 1.2 = 3.00000000000121etc
C'était assez flagrant sur le coup.... faudrait que je retrouve l'opération exacte. Cela vient de la manière dont est représentée la mantisse, sur 48 bits... j'ai perdu les détails depuis mon cours la dessus y a deux ans
Marsh Posté le 17-11-2004 à 18:33:07
ah je croyais que l'erreur évoquée sur ce topic ne concernait pas les erreurs "prévisibles" (cad lié à la méthode d'approximation, et qui donc se reproduisent invariablement à l'identique) mais les erreur "imprévisibles", cad une erreur non attendue et donc non conforme à la spécification...
i.e: l'infini, c'est codé comment en binaire ?
Marsh Posté le 17-11-2004 à 21:34:14
matpclsm a écrit : ah je croyais que l'erreur évoquée sur ce topic ne concernait pas les erreurs "prévisibles" (cad lié à la méthode d'approximation, et qui donc se reproduisent invariablement à l'identique) mais les erreur "imprévisibles", cad une erreur non attendue et donc non conforme à la spécification... |
c'est exactement ça que je cherche à savoir.
Pourquoi et comment les CPUs font-ils des erreurs
Comment les détectent-ils et les corrigent-ils.
C'est difficile de trouver de la doc et des articles à ce sujet, déjà je ne sais pas trop quel mots clés chercher ensuite je ne trouve de vraiment passionant à ce sujet.
Simple curiosité toutefois
Marsh Posté le 18-11-2004 à 01:54:43
au niveau des erreurs "répètables": normalement, un CPU ne fait jamais d'erreur, car tous les cas sont sensés être pris en compte (les overflow...) et pour ce qui est des approximations, il y a la norme IEEE_je_sais_plus_combien qui spécifie tout ça. Il y a évidement des bugs dans les CPU, vu qu'il y a peu de chance d'avoir pu éliminer toutes les sources de problèmes avec la complexité atteinte actuellement. Mais ces bugs ne sont _normalement_ ( )pas critiques et sont contournés par software (par le BIOS ou l'OS).
Pour ce qui est de l'aléatoire, il n'y a plusieurs raisons pour lesquels il peut y avoir des problèmes. Des phénomènes extérieurs, comme des rayons cosmiques, mais aussi des problèmes internes. Par exemple, il peut y avoir des interférences entre deux lignes d'interconnexions. Mais normalement, ce genre de problème n'est pas sensé arriver, c'est calculé/testé pour... En pratique, il peut toujours arriver un petit quelque chose, mais franchement, dans les conditions normales, c'est pas sensé arriver.
C'est pourquoi je pense franchement qu'il n'y a pas de vérification des résultats de calcul. Ca n'arrive jamais qu'un CPU x86 revienne en arrière car le résultat est faux, ça j'en suis certain. S'il y a eu foirage (très rare comme je l'ai dit), ça continue avec l'erreur, ça se propage et ça va vraisemblablement planter. C'est ce qui arrive quand on overclocke. Pour ce qui est des zones de mémorisations (cache, mémoire) et de transport d'info sur les bus, alors là oui, on a des protections par ECC.
Il faut bien se rendre compte que l'architecture PC n'est pas faites à la base pour des applications hypercritique et/ou du temps réel, ce n'est pas concu pour ça, et on a donc pas besoin de ce genre de précautions.
Mais il existe des CPU ayant des niveaux de protection extrèmement élevé, comme les CPU des mainframe IBM. Ce sont des CPU (CISC pour info) faits pour la fiabilité avant tout. Dans ceux-ci, toutes les opérations sont faites en double et comparées par après. Si une différence apparait, le CPU revient en arrière grâce à un historique et recommence l'opération. Si il y a toujours une différence, alors le CPU est déclaré comme défectueux et est déconnecté du reste de la machine, en attendant d'être remplacé. Le tout sans interrompre l'OS ni le moindre programmme bien entendu. Chapeau bas ! Mais bon, c'est le genre de machine utilisé pour gérer les réseaux banquaires, boursiers... faut pas que ça foire
Marsh Posté le 18-11-2004 à 08:10:52
Citation : Moi je voulais savoir quels sont exactements les causes des erreurs de calculs des processeurs actuels (si il y en a) et quels sont les méchanismes mis en place pour les corriger. |
Tous les endoits où est stockée de l'information sont protégé par des mécanismes de correction d'errur ECC: registres, cache de niveau 1, 2 (voire 3).
Au sein des ALU elles-mêmes, aucune détection d'erreur n'existe dans un processeur classique. Le design est censé avoir été vérifié sous toutes les coutures (et une liste de bugs connus publiée) et les processeurs sont testé loes de leur fabrication. Donc si une ALU met par erreur le bit 23 à 1 au lieu de 0, il n'existe aucun mécanisme pour détecter le problème. C'est pourquoi l'overclocking n'est pas une très bonne idée (la machine peut très bien être occupée à corrompre toutes les données qui passe sans planter tant que les données système ne sont pas affectées).
Pour pallier à ce problème, on peut soit mettre plusieurs CPU en lockstep: chaque groupe de CPU est synchro et effectue les mêmes opérations sur les mêmes données et on compare régulièrement les résultats. Si c'est différent, rollback jusqu'au dernier point de comparaison OK. Les derniers CPU de mainframe intègre directement ce mécanisme dans le core, qui est totalement dupliqué sur le chip lui-même avec de la logique supplémentaire pour vérifier constamment les résultats de chaque moitié.
Marsh Posté le 18-11-2004 à 08:23:58
Errare humanum est. C'est à cause de ces putaings d'erreurs cpu que je préfère les armes à dispersion conique dans les FPS de la mort qui déchirent. C'est plus sûr
Devenait trop sérieuse votre discussion, ça va pas ça
Marsh Posté le 18-11-2004 à 08:41:12
Arf...
Merci pour toutes ces contributions.
Donc les processeurs peuvent bel et bien faire des erreurs de calculs (inversement de bit...?). Ormis donc les phénomènes extérieurs (rayonnement cosmique entre autre) les problèmes internes seraient donc principalement dus à des interferances electromagnétiques?
Si il y'en a d'autre idées/infos/contributions je les veux bien, volontier.
Marsh Posté le 18-11-2004 à 14:18:22
deltaden a écrit : |
heuu tous nos PC sont équipés de CPU CISC
A l'inverse, certains CPU sont à base d'architecture RISC (comme les CPU des stations SUN par exemple ou encore les RS6000 de IBM...)
A priori, un processeur RISC devrait être plus fiable car les intructions sont câblées, contrairement aux CISC où elles sont microcodées (logiciel donc
Marsh Posté le 18-11-2004 à 15:49:16
matpclsm a écrit : heuu tous nos PC sont équipés de CPU CISC |
je sais que nos CPU sont des CISC
C'est juste pour dire que ça n'a rien à voir avec les CPU de la série POWER par exemple, aussi produits par IBM.
Pour ce qui est du microcode:
- je vois pas pourquoi ce serait intrinsèquement moins fiable que du cablé. Il n'y a pas nécessairement plus de chance de faire une erreur dans du soft que dans du hard.
- pour ce qui est du microcodage des instructions dans un CISC, c'est plus vraiment comme ça, loin de là. Dans le K8 par exemple, toutes les opérations pas trop complexes (celles qui génèrent au maximum 2 macroOp RISC) sont décodées de manière hardware. Celles décodées par microcode sont les instructions plus complexes et habituellement moins souvent utilisées.
Pour plus d'infos, tu peux aller voir cet article, extrèmement bien fait (§1.2-1.7 et 1.17): chip-architect
Et le guide d'optimisation du K8 permettant de savoir quels instructions sont gérées par µcode, ça fait bien moins de la moitié (appendice C): AMD
Marsh Posté le 16-11-2004 à 23:36:27
Bonsoir
Une question existentielle me préoccupe l'esprit. Les processeurs font-ils des erreurs de calculs? Je veux dire, les processeurs non overclockés bien sûr, qui fonctionnent normalement dans des conditions électriques et thermiques tout à fait normales.
Est-ce qu'ils doivent recommencer certains calculs pour X raison? Peuvent-ils même se tromper et recommencer du coup le calcul?
Quels peuvent êtres les raisons de telles erreurs ou pertes de temps?
Ou bien est-ce "une science sûr" et les processeurs ne se trompe -en théorie du moins- jamais.
J'aimerai avoir une réponse sérieuse et le plus technique possible.
Je veux parler uniquement des erreurs de calculs imputables au processeur et non pas causées par des phénomènes extérieurs. Par exemple, le rayonnement cosmique peut causer des inversions de bit si un tel rayon venait à entrer en interaction avec un électron stocké dans une cellule de RAM. Je suppose que ce rayonnement peut donc aussi inverser des bits lors des calculs. Bref ce genre de source d'erreur externe ne rentre pas dans le cadre de ma question.
Merci d'avance pour vos lumières
---------------
Member of the Yak Shaving Staff | Feedback | www.tsunanet.net