Pourquoi l’informatique n’est pas une science exacte

Voici un article qui va en surprendre plus d’un, et en rassurer autant : l’informatique n’est pas une science exacte, et non seulement elle ne l’a jamais été, mais la conception même des composants a rendu cette inexactitude encore plus concrète !

Fait n°1 : les nombres à virgules

Le problème

Tout le monde connait les nombres à virgules, que l’on utilise notamment dans les comptes bancaires (ex : 1,95). Sachez que les nombres a virgules sont, pour la majorité d’entre eux, des approximations mathématiques pour un ordinateur ? Explication.

Pour comprendre, il faut se mettre en tête que les nombres, pour un ordinateur, ne sont pas stockés sous forme décimale, mais binaire, soit une suite de 0 et de 1. Ensuite, il faut comprendre comment on passe d’une valeur en système 10 (celui qu’on utilise tous les jours) en système 2, ou binaire.

Si l’on souhaite convertir 81 en binaire, on doit le résoudre en la somme de puissances de 2 : 81 = 26+24+20. Soit 01010001 sur un octet de 8 bits.

Pour les décimales, la logique est du même ordre, avec des puissances négatives. Pour rappel, une puissance négative est  l’inverse d’une puissance positive : 2-2 = 1/22. Les valeurs sont donc 1/2, 1/4, 1/8, 1/16… avec lesquelles on doit trouver toutes les valeurs de notre quotidien… ce qui est mathématiquement impossible !

Ainsi 1.99 en binaire s’écrirait 00000001,11111111 mais son rendu en binaire ne donnerait pas précisément 1.99, mais quelque chose de très proche.

Prenez conscience maintenant que l’intégralité du monde financier est régi par l’informatique. Cela fait froid dans le dos !!!

Pour information, la norme régissant ce système numéraire à virgule flottante date de 1985 !

La solution

Il existe une solution simple : changer radicalement de système de gestion des nombres à virgules. A l’heure actuelle, les nombres sont stockés sous forme d’écriture scientifique (exemple  en décimal : 129.85 = 1.2985e2 ou 1.2985×102).

Je propose de les stocker de manière différente : 129.85 = 12985×10-2.

Ainsi, les opérations ne se feraient que sur des entiers, et la conversion en décimale n’est plus un système d’écriture mais un système d’affichage.

Fait n°2 : les lois de la physique

Le problème

En 1960, Gordon Moore, alors ingénieur chez IBM, établit un constat : entre 1951 et 1960, la densité des transistors, et donc la puissance des processeurs, double en moyenne tous les 18 mois. Il n’en fallait pas plus pour que ce constat devienne la règle primordiale du développement de l’informatique en général.

Ainsi, pour graver nos amis les transistors, on utilise un matériau, le silicium, dans lequel on creuse des circuits et des portes. Nos amis les électrons, qui parcourent ces circuits, doivent être suffisamment canalisés pour aller là où on le désire. Ainsi, et selon les propriétés du silicium, l’épaisseur des murs contenant les électrons ne doit pas être inférieure à 600 atomes, soit 32 nm d’épaisseur (on mesure la finesse de gravure en nanomètres).

Or, et c’est le hic, depuis 2005, les constructeurs sont passés sous cette barrière, ma moyenne des composants actuels étant autour des 22 nm.

De ce fait, les électrons ont un peu tendance à passer d’un circuit à un autre, et peuvent fausser les calculs. On estime le taux d’erreur autour de 8%. Mais nos amis ingénieurs ont eu une idée de génie : au lieu de revenir à quelque chose de fiable, on exécute 5 fois les calculs, et si 4 sur les 5 donnent le même résultat, on admet que le calcul est juste !

Aberrant ? Totalement ! D’autant que, dans des usages domestiques, la différence de puissance de traitement entre un processeur de 2005 et un d’aujourd’hui ne se sent pas.

Qui plus est, cette finesse de gravure rend les composants particulièrement sensibles :

  • au stress, et à l’électricité statique en général (à noter : les ordinateurs portables n’ont pas de prise de terre)
  • aux particules cosmiques, qui ont tendance à inverser la valeur des transistors (imaginez dans un avion…)
  • aux interférences électromagnétiques (GSM, wifi, BlueTooth, et même au champ électromagnétique généré par les cables électriques dans vos murs dû à une mauvaise circulation des électrons)

La solution

AMD, le grand concurrent d’Intel dans le marché des processeurs, sort des modèles à 32 nm de gravure pour ses processeurs de jeu, et certains sont encore en 45 nm.

De plus, depuis février 2016, la loi de Moore est officiellement abolie dans le processus de développement des composants. Mais il se peut que les prochains processeurs soient également autour de 22 nm… Wait & see !