Pourquoi passer au 64 bits? … ou pas !

Désavantages liés à l’OS

Pour le moment l’inconvénient majeur des version 64bits, c’est qu’il n’y a pas certains paquets, surtout proprio, genre Flash, les w32codecs… Certaines applis ne sont pas non plus compilées en 64its pour être dans les dépôts. Dès lors, il sera plus difficile pour un utilisateur lambda d’accéder à ces applications. Il est toujours possible de les recompiler pour son propre environnement, mais ça n’est pas spécialement évident pour tout le monde.

Il vaut donc mieux rester en 32bit pour la bureautique. Mais bon, rien ne vous empêchera d’installer un noyau 64bit et de booter dessus pour des applications spécifiques. On pourrais par exemple avoir deux noyaux installés sur une même machine et au démarrage on peut faire le choix d’utiliser l’un où l’autre. Il faudrait mesurer le gain. Mais on a déjà une perte au niveau de la facilité d’utilisation.

Si on veux exploiter à fond le 64bit, il faudrait utiliser une distribution source comme Gentoo qui recompile à chaque installation toutes les sources des programmes sur l’architecture choisie. Ca permet d’avoir une distributions « aux petit onions » mais une fois de plus, tout le monde n’a pas envie de perdre son temps à chipoter des heures durant pour que ça fonctionne.

Concernant les performances

Pour une station de travail classique, il n’y a pour ainsi dire pas d’avantages au 64-bit. Que ce soit pour des jeux, de la bureautique ou du multimédia, le 64-bit n’apporte quasi rien. Là où le 64-bit a vraiment un gros avantage, c’est pour des applications spécifiques. Il y a deux avantages majeurs à avoir une architecture 64-bit:

1/ Précision des nombres (naturels,entiers, réels):

Prennons les entiers: en 32-bit, un entier peut prendre des valeurs comprises entre -2147483647 et 2147483647 (si il est codé sur 32-bits et qu’il est signé, c’est pas toujours le cas mais je vais pas rentrer dans les détails). en 64-bit, un entier peut prendre des valeurs comprises entre -9223372036854775807 et 9223372036854775807

Pour les réels, on va donc gagner en nombre de décimales autorisées.

On gagne donc en précision sur les nombres, ce qui est intéressant principalement pour des calculs dans le cadre de recherches scientifiques.
Il est important de noter qu’on peut très bien coder un entier sur 64 bits dans un environnement 32-bit. Mais dans ce cas précis, les calculs seront deux fois plus rapides dans un environnement 64-bit.

2/ Précision de l’adressage:

Ca, c’est l’avantage majeur. Qui n’est jamais qu’une conséquence du point précédent nous avons vu les valeurs limites pour un entier signé. Les OS gèrent la mémoire avec des entiers. Si l’OS utilise un codage 32-bit pour son adressage et qu’il utilise des entiers non signés, il pourra adresser un espace mémoire de 4294967296 bytes =2³² bytes = 4GB.

Si on prends toutes les versions 32-bit d’un OS. A la base, il gère jusqu’à 2GB sans problèmes. Par contre, si vous installez un OS sur un PC avec 4GB de RAM, il ne pourra en exploiter que 3GB et encore, il faut le forcer à modifier sa manière de gérer la mémoire et ça peut devenir instable sur certains chipsets. Une fois de plus, ça ne concerne pas la majorité des gens. Par contre pour un serveur, ça deviens vite un gros problème. C’est pourquoi, les systèmes 64bits se vendent actuellement principalement sur des serveurs.

Un autre cas pratique est l’ancien format de disque Windows, le FAT32. Celui-ci faisait donc de l’adressage sur 32 bits et il était donc impossible de créer un fichier de plus de 4GB (ou même 2GB, je ne sais plus). Une fois de plus, ce genre de problème ne se rencontre que dans des applications spécifiques (grosses bases de données p.e.)

Voilà qui devrait éclaircir un peu les choses au niveau technique.

Performances comparées dans les benchmarks

Pour ce qui est des benchmarks de jeux, ça ne rime à rien. L’idée que le 64-bit augmente les performances est globalement fausse. Trois choses importantes sont à considérer dans ce domaine:

1/ Un jeux qui aurait été codé en 32-bit ne peut pas tourner dans un environnement 64-bit sans ajouter une couche supplémentaire (émulation) comme elle existe dans Win-64, par exemple, mais qui altère méchamment les performances. Si on transpose un code efficace en 32-bit dans une version 64-bit (c’est donc un autre exécutable compilé spécifiquement pour un environnement 64-bit). Les performances doivent être (+/-) identiques (sur un hardware équivalent évidement).

2/ Le seul cas où la version 64-bit serait plus performante est si le jeu a un réel besoin de manipuler une grosses quantité de nombres codés sur 64 bits. Ceci pourrait être le cas pour une grosse simulation 3D, mais en pratique ce n’est pas vraiment le cas pour les jeux. L’avènement des jeux 3D s’est fait en 32-bit et les développeurs ont appris à contourner les problèmes que ça suppose.

3/ Pour faire tourner un jeu efficacement sur une plateforme 64-bit, il faut avoir un hardware traitant efficacement les instructions 64-bit. Et ce du CPU au GPU, en passant par les bus, la mémoire, etc… Ce n’est pas encore le cas à l’heure actuelle.

Conclusion

Donc, pour conclure, la seule chose qui va nous obliger un jour à passer au 64-bit est le fait que les constructeurs hardware vont arrêter de fabriquer des composants 32-bit. Et pour la majorité des gens, ceci n’apportera que des ennuis comme ceux évoqués pour les systèmes d’exploitations. En fait, là où ça va être vraiment pénible, c’est pour les gens qui emploient un vieux logiciel qui n’est plus supporté et qui ne sera pas porté en 64-bit. Celui-ci va fonctionner moins bien dans un environnement 64-bit, si il fonctionne…

Pour plus d’infos, il y a un article sur Wikipédia en anglais : 64-bit