Le problème d’Apple, c’est Intel (et Windows)

J’ai déjà parlé d’un éventuel passage d’Apple sur une architecture ARM pour les Mac, et jusqu’il y a peu, ça me semblait irréaliste. Mais plus on avance, plus il semble évident que ça va arriver. Peut-être pas demain, peut-être pas après demain, mais à terme. A cause d’Intel.
2000px-intel_inside_logo-svg

Historiquement, Apple est passé des 68000 (Motorola) aux PowerPC (Motorola et IBM) parce que l’architecture n’évoluait pas et que Motorola voulait repartir de bases saines (et performantes). Le passage du PowerPC au x86, c’était un peu différent : le PowerPC posait des soucis de consommation (pour les performances, c’est un autre débat) et évoluait peu. Un problème lié à un point précis : le marché des PowerPC était (très) petit à l’époque et Apple vendait assez peu de Mac. Motorola (Freescale) visait plus l’embarqué et IBM allait déjà vers les consoles, qui ont des besoins très différents d’un ordinateur de bureau. le x86, à l’époque, évoluait bien : Intel, devant la concurrence d’AMD et une architecture ratée (la grande famille des Pentium 4) développait les Core 2 Duo, des puces qui consommaient peu en offrant de bonnes performances. Et pour Apple, ça impliquait que le marché n’allait pas stagner : Intel proposait des nouveautés régulièrement. De plus, gros avantage pour les clients, ça ouvrait la port à Windows dans les Mac (en natif ou en machine virtuelle). En ~2005 (je suppose que le choix date d’un peu avant), c’était donc plutôt une bonne idée.

Le Power Mac G5

Le Power Mac G5

La situation de 2016 est franchement différente. La concurrence dans le monde du x86 n’existe plus réellement – on espère vraiment un retour d’AMD avec Zen – et Intel se repose sur ses lauriers avec des puces qui n’apportent pas grand chose. Un Kaby Lake (l’architecture de fin 2016) n’est pas tellement plus performant qu’un Haswell par exemple (ou même, en allant un peu plus loin, qu’un Sandy Bridge). Les gains viennent essentiellement de la fréquence et de la gravure, mais l’avantage historique sur ce point diminue régulièrement et le ratage complet de Broadwell montre qu’il y a bien un souci. Kaby Lake, qui sort en ce moment, n’apporte d’ailleurs pratiquement aucune amélioration sur l’architecture de Skylake en dehors d’un GPU plus performant et d’un gain en consommation.

En face d’Intel, il y a l’architecture ARM. Et là, ça bouge. Pour se donner une idée, le premier iPhone utilisait un core ARM11, une puce 32 bits comparable du point de vue technique à un 486 (années ’90). En 2007, au moment de la sortie de l’iPhone, c’était le top du ARM (le Cortes A8 date de 2005 mais a été utilisé en masse fin 2007 et dans les iPhone en 2009) et il datait de 2002. En 2016, les puces ARM évoluent beaucoup plus rapidement et (surtout) les performances suivent. Apple sort chaque années depuis 5 ans une nouvelle architecture significativement plus performante que la précédente et un A10 (Hurricane) offre des performances proches d’un Skylake, tout en consommant nettement moins. C’est un peu faussé dans certains cas (notamment les benchs), mais sur des plateformes qui doivent consommer peu (un iPad Pro, un MacBook), ça reste comparable. Je ne suis pas certain que le résultat soit le même avec d’autres contraintes, par exemple avec un A10 doté de plus de deux cores et avec des fréquences élevées, mais ça demeure assez impressionnant. Les autres développeurs de puces ARM proposent aussi des CPU nettement plus performants qu’il y a quelques années, même si le résultat est moins bon : les cores de Qualcomm, d’ARM ou Samsung gagnent régulièrement en puissance au fil du temps.

En dehors du fait que les puces Intel évoluent assez peu, un problème se pose pour Apple : elles sont trop rigides. Apple a du attendre qu’Intel sorte un chipset USB 3.0 pour intégrer la norme dans les Mac (et dans le Mac Pro, la société a dû utiliser une puce tierce, moins performante). Attendre qu’Intel corrige les bugs du Thunderbolt 3. Les derniers MacBook Pro ont des limites sur le Thunderbolt 3 parce que les CPU ne fournissent pas assez de lignes PCI-Express. Les MacBook Pro 15 pouces ont tous des GPU dédiés parce qu’Intel n’arrive pas à produire le GPU GT4e (la version rapide de sa puce). Les nouveaux MacBook Pro n’ont « que » 16 Go de RAM parce qu’Intel ne gère que cette capacité en LPDDR3 et que les puces actuelles ne prennent pas en charge la LPDDR4, etc.

Je pense que si Apple décidait de proposer ses propres puces ARM (et ses propres GPU, cet article montre assez bien que même si Apple utilise encore du PowerVR, il ne s’agit que d’une partie du GPU), une partie des choses reprochées aux MacBook Pro n’existeraient pas. Les problèmes de mémoire, de lignes PCI-Express ou de GPU « performants » se poseraient beaucoup moins avec une architecture maison, adaptée aux besoins des machines. On le voit bien avec les iPhone : les smartphones gagnent chaque années en performances, ce qui ne serait pas réellement possible avec des processeurs conçus par ARM (c’est bien visible sur les modèles Android).

La transition elle-même ne devrait pas être un problème à mon avis. L’Apple de 2016 n’est pas celui de 2005 : la majorité des logiciels disponible sur la plateforme utilise Objective-C ou Swift et une simple compilation devrait permettre de passer de x86 à ARMv8. C’était déjà le cas en 2005/2006 pour les logiciels développés avec Xcode et ça ne devrait pas changer 10 ans plus tard, la différence étant que l’environnement de développement d’Apple est (beaucoup) plus présent. De même, l’émulation du code x86 peut s’effectuer de la même façon qu’avec Rosetta : tous les appels aux API de macOS – ils sont nombreux – directement en code ARM et le reste en émulation pure. Rosetta offrait de bonnes performances, et j’imagine qu’un émulateur moderne proposerait le même genre de résultats (j’avoue, j’extrapole). Pour un utilisateur lambda qui utilise le Mac App Store (OK, je trolle, ça n’existe pas), une telle transition serait transparente : Apple pousserait un binaire ARM à la place du binaire x86, et hop, terminé. Accessoirement, macOS reste parfaitement adapté pour ça : beaucoup de programmes contiennent encore deux variantes du même logiciel (x86 32 et 64 bits) et ajouter une version ARM 64 bits ne change rien.

Boot Camp, cheval de Troie d'Apple

Boot Camp, cheval de Troie d’Apple

Le véritable problème, selon moi, vient de Windows. En 2006, au moment de la dernière transition, la possibilité d’installer Windows avec Boot Camp ou en machine virtuelle a été un formidable argument de vente. D’un coup, la possibilité de passer à Mac OS X tout en gardant les logiciels fonctionnant sous Windows devenait possible. Une personne bloquée par la dépendance à un logiciel précis pouvait enfin imaginer passer sur Mac. Même actuellement, la possibilité de lancer Windows en machine virtuelle reste un excellent argument : le logiciel acheté extrêmement cher, celui imposé par l’école ou le boulot ou les jeux peuvent continuer à fonctionner. Passer sur ARM, ça implique la disparition totale de Windows sur les Mac. Plus de Boot Camp. Plus de machines virtuelles. Et donc moins de jeux (bon, vu les GPU dans les Mac, c’est un peu un argument caduc). Psychologiquement pour certains utilisateurs, je suis certain que le fait de ne plus pouvoir installer Windows va complètement freiner l’achat d’un Mac à base d’ARM. Et les cris d’orfraies quand Apple supprime la  qui s’allume sur la coque ou le bong de démarrage ont tendance à me conforter dans mon idée. Dans un sens c’est dommage.