Ceci est une partie du script de la release Ex0073 du programme CPU, Parler du libre en famille, diffusé le Jeudi 25/1 à 11h. Plus d'infos sur le site de l'émission.
Si vous suivez le programme en podcast, préférez le flux du site de l'émission logo de l'émission CPU

Bonjour à toi, Enfant du Futur Immédiat, toi qui te demande avec quoi tu vas remplacer le podcast CPU ; Alors, je te rassure : On parle de remplacer le CPU de ta carte-mère, ton émission favorite n'est pas en danger...

Quand on compose un programme, c'est le microprocesseur qui va en interpréter la partition. Bon, le plus souvent, car parfois c'est le gestionnaire de mémoire, le contrôleur disque ou le processeur graphique, mais là, on te parle du CPU, le vrai, celui dont notre programme en usurpe le nom. Une puce tellement intégrée qu'elle est l'intelligence supposée de l'appareil.
Oui, ce petit carré gris anthracite, sa centaine de racines qui fraient leur chemin dans la carte-mère, ce gros bloc de refroidissement qu'on appelle ironiquement radiateur… Le CPU est le centre névralgique d'un ordinateur, et il est issue d'une longue évolution, comme l'avait parfaitement décrit Darwin. (Le naturaliste, pas l'OS d'Apple)...

Au début des temps, l'Homme Divin inventa le composant discret : la résistance, le condensateur, la bobine, puis la diode et le transistor. Il vit que cela était bien et en groupa par verbes comme AND, OR, XOR, NOT, NAND, NOR et XNOR, des verbes qu'il appela portes logiques et dont il réduit encore leur taille. Puis il intégra le tout dans un circuit imprimé qu'il sertit dans un boîtier. Il vit que cela était bon, alluma le tout et se mit au code...

Au sein des premiers CPU, le CPU habilis, tout était simple : un accès à la mémoire, d'où on tire les données ou les instructions, des registres dans lesquels on manipule des valeurs et on met des indicateurs, et un jeu d'instruction qui sont les outils pour manipuler l'ensemble.

Mais voilà, il y eu une prophétie, et elle fut auto-réalisatrice : Gordon Moore, celui qui créa le micro-processeur moderne, que son nom est sanctifié, le CPU sapiens, et qui fut le premier président d'Intel, avait théorisé dans les années 1960s que le nombre de transistors intégrables dans une puce à un prix raisonnable, ce nombre donc allait doubler tous les 2 ans.
Donc les microprocesseurs sont devenus de plus en plus complexes : leur jeu d'instruction, le vocabulaire qu'ils parlent, est devenu de plus en plus riche, et la longueur des registres, la taille des nombres qu'ils manipulent, augmentait exponentiellement. Ce que l'on appelait improprement le "cerveau" de l'ordinateur grandissait son nombre de neurones. Et comme le veut l'évolution Darwiniste, on a des fausses pistes et des erreurs, elles font partie de l'Évolution, même si elles sont indésirables. Les problèmes hardware n'ont donc rien de neuf.

Je me souviens encore du choc quand Intel dû reconnaitre qu'effectivement son processeur Pentium, qui introduit en 1993 une nouvelle génération de puces avec des innovations impressionnantes, comportait une erreur de précision dans la division en virgule flottante. L'erreur pouvait sembler riquiqui, mais elle pouvait devenir catastrophique dans l'industrie. Et elle était extrêmement gênante car le Pentium promettait de ne plus avoir besoin de greffer sur la carte-mère un FPU à côté d'un CPU pour faire rapidement des calculs flottants. Ce qui veut dire qu'on pouvait pas remplacer l'unité fautive aussi facilement qu'avant.
Pourtant, tous les autres microprocesseurs de ses concurrents faisaient aussi des erreurs d'arrondi lors du calcul de la division d'un nombre à virgule flottante... sauf que cette erreur était largement moindre et elle était même standardisée !
Tu ne me crois pas, Enfant du Futur Immédiat ? Eh ben pourtant, tu devrais jeter un œil à la norme IEEE 754-1985. Une norme industrielle qu'Intel connaissait parfaitement et se faisait un point d'honneur à respecter... mais un ingénieur a voulu introduire une optimisation sans vraiment saisir les astuces mathématiques derrière.

Durant la décennie 1980s, une génération précédente de processeurs Intel, le 80386 avait aussi connu un problème de précision arithmétique. Mais pas toute la série produite. Intel se résolut donc à commercialiser à part les processeurs buggés, marqués comme tels et aux prix démarqués.

Et ce fut une longue série de bugs dans les procs, la plupart étaient triviaux, d'autres ne se rencontraient que quand la lune et rousse et la carte-mère produite sous une longitude impaire.
Sauf que ... On a tout récemment découvert comment fonctionnait Intel Management Engine, une boite noire logicielle qui équipe pratiquement tous les processeurs de serveurs, de bureau et d'ordinateur portables, et dont la conception se révèle anormalement erronée.

Et la suprise de ce début d'année 2018 : un bug tellement sévère que non seulement elle touche l'empereur incontesté des ordis de bureaux et des serveurs, mais aussi son confrère des smartphones ARM et leurs concurrents AMD et tutti quanti. Et ce bug là est extrêmement sévère car nous exécutons tout le temps, sans forcément s'en rendre compte, du code que nous récupérons de sites web, en se disant que le navigateur, l'OS et le CPU nous protègent.

Enfant du Futur Immédiat, avant de faire chauffer le hashtag #BalanceTonProc , médite sur la morale de cette histoire : on oublie que les processeurs centraux de nos ordinateurs sont conçus par des hommes. Et malgré les logiciels d'assistances, les bonnes pratiques et les batteries de tests, nous ne sommes pas à l'abri d'erreurs.
Du coup, nous devons apprendre à nous méfier autant du processeur central que de tout logiciel qu'on y fera tourner dessus.