La fin de la loi de Moore

Graphique de la loi de Moore, paru en 1965

La loi de Moore, plus une observation qu’une véritable loi, a été une constante dans le monde informatique ces 50 dernières années. Le fait que tous les 18 mois, la densité des transistors doublait a eu un impact impressionnant : l’unité centrale de mon Commodore 64 (MOS Technology 6510) comportait moins de 4000 transistors, celle de mon laptop actuel, un Intel Core i7 en comporte 731 millions.

Il y a toujours eu des gens pour affirmer que cette croissance ne pouvait continuer, je me souviens d’un professeur d’université qui nous expliquait qu’à cause de la fréquence de la lumière utilisée pour créer graver les puces, graver des objets plus petits que 130 µm était impossible, aujourd’hui les puces les plus modernes sont à 20 µm.

Les gens ont tendance à assumer que le nombre de transistors équivaut à la puissance de calcul, ce n’est malheureusement pas si simple. Pour ma génération, l’augmentation de la vitesse se traduisait surtout par une fréquence accrue du processeur et des registres plus larges. Ainsi mon Commodore 64 tournait à 1 Mhz avec des registres 8 bit, mon Mac SE/30 avait une fréquence de 16 Mhz et des registres 32 bits.

Comparer les fréquences n’était jamais un outil très précis, même à l’intérieur d’une famille de processeurs, d’autres différences comme le jeu d’instructions avaient un grand impact. Cela n’a pas empêché le Mhz de devenir un facteur de marketing en informatique. La fréquence a cessé d’augmenter il y a environ 15 ans, aux alentours de 3 Ghz, de même la largeur des registres généraux s’est stabilisée à 64 bits, même si des registres spécialisés plus larges sont apparus. Ce qui a changé ces dernier temps, c’est le nombre d’unités : mon laptop comporte quatre cœurs, la carte graphique intégrée 40 unités.

Le problème c’est qu’utiliser ces unités n’ait pas aisé : la programmation est un art, la programmation parallèle un art difficile. Si certaines tâches peut-être exécutées sur plusieurs unités en même temps, c’est impossible pour d’autres ; une équipe de dix femmes ne peut amener un bébé à terme en un mois.

Si la difficulté d’utilisation a augmenté, le nombre de transistors a continué à doubler, jusqu’à aujourd’hui. Le journal Nature a publié un article intéressant sur la fin de la loi de Moore. Le problème n’est pas physique – il est encore possible d’augmenter la densité, mais économique, les nouveaux processus de fabricants sont très onéreux, et les appareils mobiles sont une grosse part de marché où la consommation électrique est plus un problème que la puissance. L’industrie des processeurs a naturellement décidé de se concentrer plus sur l’efficacité énergétique.

Qu’est ce que cette fin implique ? Probablement que le cycle de vie des ordinateurs de bureau va s’allonger, j’utilise encore un Mac mini de 2006 pour regarder des films, sa puissance n’est pas tant le problème que le support – le système n’est plus mis à jour depuis un bon moment.

Le logiciel a autant d’importance sur les performances que le matériel, et il y a là matière à beaucoup d’améliorations ; l’optimisation de performances n’est en général pas une priorité. Il y a déjà une très forte demande pour des informaticiens, ceux qui n’optimisent pas leur code, et en général le public est habitué à l’idée que le logiciel est gratuit, cela va probablement causer une forte tension.

Lorsque j’étais à l’université, les professeurs avaient beaucoup de scrupules à nous enseigner le C++, une langue bâtarde, et il était clair à l’époque nous utiliserions des langages de haut niveau. Aujourd’hui je programme encore en C++, heureusement la variante de 2011 est bien plus agréable à utiliser qu’à l’époque.

La manière dont l’informatique est enseignée implique un modèle simpliste des ordinateurs :

  • Une ou plusieurs unités centrales identiques
  • Des opérations scalaires
  • Une mémoire régulière

En pratique un ordinateur moderne est une collection de processeurs, les unités centrales sont les plus puissantes pour les opérations scalaires, mais pas les plus efficaces en terme d’énergie pour certaines tâches. Les processeurs disposent d’unités super-scalaires et la carte graphique est unité très puissante, mais massivement parallèle. Toutes ces unités peuvent exécuter du code, et souffrir de failles de sécurité. La mémoire est séparée du processeur par un abîme de performance, comblé par de multiples niveaux de cache.

Toutes ces différences font que l’approche naïve ou théorique à un problème fonctionnent, mais ne sont souvent pas optimales. Une structure de donnée peut avoir de très bonne caractéristiques asymptotiques mais une localité en mémoire désastreuse. De même il est possible d’implémenter des tâches de maintenance sur le processeur principal, mais c’est souvent très couteux en courant électrique.

La bonne nouvelle, c’est qu’une grande partie de la main d’œuvre informatique a été gaspillée a ré-inventer la roue de manière régulière – ce n’est peut-être pas un hasard que la société informatique avec le plus de valeur au monde est aussi celle qui ne cesse d’améliorer un système d’exploitation développé en 1989. Un modèle de développement plus rationnel permettrait probablement une meilleure productivité réelle. Mais pour cela il faudra changer la structure sociale des entreprises.

5 thoughts on “La fin de la loi de Moore”

  1. Le gaspillage des ressources informatiques me fascine. Des sites web sont capables de faire ramer un ordinateur bas de gamme. J’utilise au boulot un outil de reporting qui n’a pas tant évolué que ça depuis dix ans mais réclamait déjà 4 cœurs et 16 Go il y a trois ans. Mon PC du boulot met 1/4 h à démarrer à cause de tous les outils imposés au démarrage, certains développés avec les pieds, en tout cas sans souci de la performance.

    Les langages de haut niveau et les OS récents ne sont pas économes
    (on en avait déjà causé il y a bien longtemps : https://www.coindeweb.net/blogsanssujetprecis/index.php?post/2008/04/13/500-des-kilo-octets-pour-un-bit-de-verite) mais on peut se dire qu’ils sont déjà pas mal optimisés. C’est derrière que ça ne suit pas, que ça ne cherche pas vraiment les perfs, ou qu’on se contente de peu.

    Comme tu dis, le multicore est délicat. J’ai été déçu en upgradant mon vieux Core Duo de 2006 par un i7 quadricore bourré de RAM : mon script de réencodage de mp3 n’était que moitié plus rapide, incapable de gérer plus d’un coeur. J’ai dû le réécrire.

    Et puis j’ai appris la différence entre performance pure et réactivité : ledit outil de reporting dont je parlais a effectivement été optimisé pour des gros besoins — mais pour mes petits clients c’est devenu un veau. Ça doit être pareil pour mon antivirus (choisi par mon employeur sur des critères n’incluant sans doute pas la performance perçue sur le poste).

  2. Je percute seulement maintenant : tu parles d’un système amélioré en continue depuis 1989, mais on peut en dire autant des produits concurrents. NT a été conçu par là, Next imaginé à peine avant, Linux est né peu après en se basant sur un énorme existant. Est-ce de l’inertie ?

  3. Si tu parles de noyau, alors ils datent tous plus ou moins de la même époque. Mais rares sont les programmes qui tournent directement sur le noyau. Si tu parles d’API, Win32 est un dinosaure qui traîne dans un coin, on ne parle pas de X11. Si tu codes pour un iPhone, de nombreuses classes ont encore des noms qui commencent en NS…

    • Un OS ça se rapproche plus au final d’une distribution (noyaux, APIs, utilitaires, certaines applications), et ils sont restés égaux à eux-mêmes de la même manière qu’un gamin reste le même en grandissant bien que chaque atome de son corps ait été changé et que l’ADN s’exprime différemment à différents âges.

      Ils traînent tous leur philosophie et leur historique. Linux se traîne X11 mais est multiforme, Windows se traîne plein de couches de compatibilité et ses préhistoriques C:, D:, E: ; j’allais dire que MacOS est cantonné au desktop mais est-ce lui ou un autre sur un iPhone ?
      Mais ils remontent tous plus ou moins à la même époque. Les systèmes qui auraient pu amener du neuf (pas si nombreux ? BeOS ? et encore, ça restait un Unix) ne se sont pas imposés. Niche écologique saturée par verrouillage du marché ou simplement parce que le besoin des OS bureau/serveur est fondamentalement “mission accomplished”?

      • Mac OS X est fondamentalement Next Step, iOS utilise une variante du même système, avec des librairies largement compatibles.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: