La gestion du 64 bits sous Mac OS X

Apple et le 64 bits, c’est assez intéressant à analyser. J’avais déjà parlé du problème avec un des rares logiciels 64 bits pour PowerPC (le jeu d’échec), mais quand on regarde le (lent) passage au 64 bits, c’est plutôt étonnant.
application64bits

L’arrivée du 64 bits sous iOS montre une transition rapide : le premier modèle a deux ans (l’iPhone 5S) et toute la gamme est maintenant compatible, sauf la Watch. De plus, iOS est totalement 64 bits depuis le lancement du premier appareil compatible, et les développeurs doivent maintenant proposer du 64 bits obligatoirement sur leurs applications et certaines catégories (les bloqueurs de pubs) ne peuvent proposer que du 64 bits.

Côté Mac OS X, c’est tout à fait différent. Le premier Mac 64 bits date de juin 2003 (le Power Mac G5) et il a fallu attendre août 2007 pour que la gamme complète utilise des processeurs 64 bits, avec certains appareils (comme les iMac) qui sont passés en 64 bits avant de revenir en 32 bits pour repasser rapidement en 64 bits. Au niveau de l’OS, c’est encore pire : le premier OS vraiment 64 bits est Snow Leopard (2009) et il a fallu attendre juillet 2012 pour que la technologie se généralise vraiment, avec Mountain Lion.

Mac mini : le dernier à passer au 64 bits

Mac mini : le dernier à passer au 64 bits

Le premier OS avec un semblant de support 64 bits est Mac OS X Jaguar (10.2). Vendu avec les premiers Power Mac G5, il permettait de gérer proprement plus de 4 Go de mémoire, 16 Go plus exactement (la limite des premiers G5). Panther (10.3) a amené quelques modifications. Premièrement, le système utilisait quelques instructions des Power Mac G5 pour améliorer les performances (comme ses unités 64 bits ou certaines fonctions de la FPU) : une application qui employait les fonctions d’Objective-C pour calculer une racine carrée passait par un calcul logiciel sur G3 et G4 et sur l’unité dédiée avec les G5. Comme le noyau restait 32 bits, les applications (32 bits aussi) ne pouvaient utiliser en théorie que 4 Go de RAM au maximum avec une limite pratique à 2,25 Go. Mais les OS utilisaient une fonction des processeurs d’IBM qui permettaient de gérer plus que les 4 Go de mémoire d’un processeur 32 bits : un noyau 32 bits pouvait en effet utiliser l’espace mémoire du processeur (64 bits virtuels, 42 bits physiques sur le Power Mac G5), même si bien entendu chaque application ne pouvait accéder qu’à un espace mémoire de 32 bits.

Panther (ou pas)

Panther (ou pas)

10.4 Tiger apporte la possibilité d’utiliser des applications 64 bits, mais sans interface graphique. Plus concrètement, les API de Mac OS X restent 32 bits, mais il est possible de proposer un moteur de calcul 64 bits avec un espace mémoire sur 64 bits, mais avec une interface séparée, en 32 bits. Leopard, en 2007, supporte toujours les applications 64 bits et ajoute le support au niveau de Cocoa (et donc, de facto, de l’interface). Il est donc possible de proposer des versions 64 bits des logiciels phares, mais même Apple ne le fait pas réellement : à part quelques utilitaires, dont le jeu d’échec, tout reste en 32 bits.

Forcer le 32 bits

Forcer le 32 bits

Avec Snow Leopard, une partie des applications passe en 64 bits et un noyau 64 bits alternatif (utilisé par défaut sur quelques modèles, comme les Mac Pro) fait son apparition. A noter que depuis Tiger, le noyau 32 bits Intel permet de gérer plus de 4 Go de RAM via le PAE (Physical Address Extension), une technique d’Intel pour supporter 64 Go de RAM. En gros, les applications disposent de leur propre espace de mémoire en 32 bits et le processeur s’arrange pour les placer dans la mémoire physique réelle. L’avantage de disposer d’un noyau 64 bits vient du gain en performances, le PAE ayant un petit impact, et de la possibilité d’utiliser des pilotes 64 bits. Lion (10.7) est le dernier OS avec un support du 32 bits pour le noyau, et toutes les applications majeures de l’OS proposent des versions 64 bits. Certaines sont même uniquement 64 bits, ce qui nécessite donc un processeur 64 bits dans tous les cas, les Core Duo et Core Solo ne sont plus supportés. Le noyau 32 bits n’est là que pour quelques machines, à cause d’une limitation de l’EFI et de l’absence de pilotes 64 bits pour certains GPU (comme les GMA 950 et X3100).

OS X Lion

OS X Lion

Mountain Lion et ses successeurs passent entièrement au 64 bits, près de 5 ans après la généralisation de ce type d’instructions dans la gamme Apple. Le noyau et les applications sont donc compatibles 64 bits, même si le support des applications 32 bits reste présent, même dans El Capitan.

Un appareil ARM64...

Un appareil ARM64…

Pour ceux que ça intéresse, le passage du 32 bits au 64 bits est beaucoup moins transparent sous Windows : il est impossible de lancer une application 64 bits sur un noyau 32 bits et les applications 32 bits tournent dans une couche de compatibilité sous un OS 64 bits. De plus, la transition a été moins rapide – Windows 10 existe encore en version 32 bits – à cause de certains processeurs « récents » (les Atom par exemple, sortis en 2008) qui ne supportent pas le 64 bits. Enfin, le support des applications 16 bits n’existe pas en 64 bits, ce qui peut poser des soucis.