Faire plus avec plus
La loi de Moore est largement citée dans les milieux technologiques, et est aussi très communément mal comprise. Sa formulation la plus souvent utilisée est que "les ordinateurs doublent de vitesse tous les ans, ou presque", mais ce n'est pas du tout ce que Gordon Moore a écrit. Son article de 1965 dans la revue "Electronics" abordait de nombreux sujets sur l'industrie des semi-conducteurs, mais s'il fallait le résumer par une seule "loi", ce serait que, grosso-modo, le nombre de transistors qu'on peut loger dans un pouce carré de silicium double tous les 12 mois.
Plus tard, Moore a modifié cela à deux ans, mais la durée n'est pas le point où les gens se trompent. Le problème, c'est la confusion entre le doublement de la densité des transistors, et le doublement de la "vitesse de l'ordinateur". (Il est encore plus problématique de définir une "loi" sur la base d'un seul article de 1965, mais, bon, mettons ça de côté pour l'instant . Pour une discussion plus complète de la loi de Moore, lisez s'il vous plaît l'article classique de Jon Stokes).
Pendant des décennies, chaque augmentation de la densité des transistors fut en fait accompagnée d'une augmentation comparable de la vitesse de calcul, grâce à des vitesses d'horloge toujours plus élevées, et à l'apparition de l'exécution superscalaire. Cela a bien marché -le code s'exécutait plus rapidement sur chaque nouveau CPU- jusqu'à ce que la dure réalite de le densité de puissance mette fin à la fête.
La loi de Moore continue , du moins pour l'instant, mais notre capacité à permettre au code de tourner plus vite à chaque nouvel accroissement de la densité des transistors s'est considérablement ralentie. Le repas gratuit, c'est terminé. Les vitesses d'horloge des CPU qui ont stagné depuis des années sont en fait en train de diminuer le plus souvent. (Le dernier Mac Pro 2009 de haut de gamme contient un CPU à 2,93 GHz, alors que le modèle de 2008 pouvait être équipé d'un CPU à 3,2 GHz). L'ajout d'unités d'exécution à un CPU a aussi atteint un point d'inflexion depuis longtemps, étant données les limites du parallélisme des instructions dans le code des applications courantes.
Et nous avons encore toutes ces transitions qui pleuvent sur nous, de plus en plus chaque année. Le défi est de trouver de nouvelles façons de les utiliser efficacement pour rendre les ordinateurs plus rapides.
Au point où nous en sommes, la réponse de l'industrie des semi-conducteurs a été de nous donner plus que ce que nous avons déjà. Alors qu'autrefois, un CPU contenait une seule unité logique de calcul, maintenant, les CPUs, même dans les ordinateurs de bas de gamme, contiennent deux cœurs, et les modèles de haut de gamme affichent deux processeurs avec 8 cœurs logiques chacun. Je l'accorde, les cœurs eux-mêmes deviennent plus rapides en général en en faisant plus que leurs prédécesseurs pour une même vitesse d'horloge, mais cela n'intervient pas jusqu'à approcher le taux auquel les cœurs se multiplient.
Malheureusement, d'une façon générale, un CPU à deux cœurs ne va pas faire tourner votre application deux fois plus vite qu'un simple CPU. En fait, votre application n'ira sans doute pas plus vite du tout, à moins qu'elle n'ait été écrite pour tirer avantage de plus d'un seul cœur. Confrontés à une surabondance de transistors, les fabricants de processeurs se sont retournés, et fournissent plus de ressources de calcul que les programmeurs ne sont capables d'en utiliser, transférant ainsi l'essentiel de la responsabilité d'ordinateurs plus rapides aux gens chargés du logiciel.
C'est dans cet environnement que Léopard des neiges est né. S'il y a une responsabilité (la sécurité mise à part) que les vendeurs d'un système d'exploitation devraient ressentir, en cette année 2009, c'est de trouver un moyen pour les applications (et l'OS lui-même) d'utiliser la richesse toujours plus grande des ressources de calcul à leur disposition. Si j'avais à choisir un seul "thème" technologique pour Léopard des neiges, ce serait : aider les développeurs à utiliser tout ce silicium disponible; les aider à faire plus, avec plus.
A cette fin, Léopard des neiges inclut deux nouvelles APIs significatives, secondées par plusieurs améliorations de l'infrastructure, plus petites, mais aussi importantes. Nous allons commencer en bas, et croyez-le ou non, par le compilateur.