Se connecter avec
S'enregistrer | Connectez-vous

64 bits : pourquoi les OS sont-ils toujours 32 bits ?

Par - Source: Tom's Hardware FR | B 45 commentaires

Une question est souvent entendue actuellement, pourquoi les OS (surtout Windows) ne sont-ils pas encore majoritairement 64 bits ? Corollaire de cette interrogation, pourquoi Windows 7 va-t-il sortir en version 32 bits (tout comme Snow Leopard, Mac OS X 10.6) ? Plusieurs raisons expliquent la relative lenteur de l'adoption de ces versions. Faisons le point.

Un peu d'historique

Premièrement, rappelons qu'un passage de ce type a déjà eu lieu sur nos PC : celui du 16 au 32 bits. En 1985, Intel annonce le 80386, premier processeur x86 32 bits, qui faisait suite aux 80286 et au 8086 (le 186 a été très peu utilisé dans les PC), deux CPU 16 bits. Les premiers Windows étaient 16 bits et même si Windows 3.11 pouvait utiliser du code 32 bits avec certaines extensions (comme pour l'éditeur de niveau de Warcraft II), il restait codé en 16 bits. Windows 95 fut le premier Windows à nécessiter un processeur 32 bits mais il contenait encore beaucoup de codes 16 bits. En pratique, le premier Windows grand public qui ne contenait pas de code 16 bits fut Windows XP (ni NT 4.0 ni Windows 2000 ne sont considérés comme des OS grand public). Il a donc fallu attendre 14 ans pour abandonner le 16 bits dans l'OS. En pratique, Windows XP exécute d'ailleurs toujours les programmes 16 bits, seules les versions 64 bits de Windows ne le permettent plus. Comme on le voit, la tâche est longue.

L'apparition du 64 bits

Le 64 bits dans les processeurs x86 reste une technologie relativement jeune : le premier processeur compatible date d'avril 2003 et était destiné au marché professionnel (l'Opteron) et l'arrivée massive des processeurs 64 bits dans le grand public ne date que de la mi-2006 (n'en déplaise aux amateurs d'AMD, c'est le Core 2 Duo d'Intel qui a réellement lancé le 64 bits). Pour les OS 64 bits, l'arrivée de Windows en version 64 bits date d'avril 2005, avec un Windows XP destiné avant tout aux professionnels (basé sur le code de la version 2003 serveur). Il a fallu attendre Windows Vista (début 2007) pour un véritable Windows 64 bits grand public, soit quatre ans après le premier processeur compatible, ce qui est déjà rapide.

Pourquoi le 64 bits ne s'impose pas en 2009

Windows 7 et Mac OS X 10.6 sont prévus en version 32 bits. Pourquoi les versions 64 bits ne sont-elles pas les seules du marché ? La première raison est simple : il y a encore énormément de processeurs 32 bits sur le marché. Même si les Pentium 4 et les Core 2 sont 64 bits depuis environ 3 ans (tout comme les K8 et K10 chez AMD), il reste beaucoup de processeurs 32 bits : les K7, certains Sempron, certains Pentium 4, certains Celeron, tous les Pentium-M et tous les Core Duo. De plus, un des processeurs populaires de 2008, l'Atom N270, est uniquement 32 bits. La deuxième raison vient de l'intérêt du 64 bits : peu de programmes existent en 64 bits et les performances ne sont pas significativement meilleures. De plus, jusqu'il y a peu, 4 Go étaient un luxe. Enfin, sans OS 64 bits, personne ne développe en 64 bits, ce qui fait que personne n'achète d'OS 64 bits. La troisième raison vient des pilotes : un Windows 64 bits nécessite des pilotes spécifiques. Pour le matériel récent (disons moins de trois ans), on trouve généralement un pilote 64 bits pour Vista et parfois un pilote 64 bits pour XP. Pour les périphériques plus anciens, le pilote n'existe pas toujours. Le fait que Windows 7 utilise les mêmes pilotes que Windows Vista est un avantage : on ne devra pas attendre une réécriture complète. Enfin, la dernière raison est liée à l'industrie, parfois lente : Windows 64 bits ne prend plus en charge le code 16 bits, ce qui peut poser des problèmes avec d'anciennes applications.

Dans les faits, et même si Windows 7 va accélérer le passage au 64 bits, le code 32 bits risque de rester encore pendant très longtemps la norme pour les programmes et il n'est même pas totalement certain que le successeur de Windows 7 sera disponible uniquement en 64 bits.

Notons que cette analyse se limite à Windows, qui est un système bien plus dépendant du marché que Mac OS X et Linux. Pour Mac OS X, Snow Leopard sera le premier OS 64 bits de la firme (avec une version 32 bits pour les Core Duo) mais son successeur sera a priori totalement 64 bits, alors que Linux a été le premier OS x86 compatible 64 bits et que les distributions majeures existent toutes en 64 bits depuis un moment (ce qui pose dans la pratique moins de problèmes que sous Windows).

Commentaires
Interroger un expert

Votre question aux experts de la catégorie Les news : vos réactions du forum

Exemple : Android, ordinateur portable, usb, disque dur

Cette page n'accepte plus de commentaires
  • -4 Masquer
    MEI , 6 février 2009 11:45
    Mais lol... l'atom est EMT64 einh... :o 
  • Serious Gilles , 6 février 2009 11:48
    Très bonne analyse. D'autant plus que des applis 64 bits utilisent plus de mémoire que les applis 32 bits (à cause de tout les pointeurs). Donc au final ça va être intéressant de passer sur du 64 bits le jour ou le PC de monsieur tout le monde aura de base 4 Go à 6 Go de ram d'installée.
  • dandu , 6 février 2009 11:51
    MEIMais lol... l'atom est EMT64 einh...


    Non.
    Seule l'Atom 230 et le 330 le sont, pas les N270 ni les Z.
  • Afficher les 45 commentaires.
  • -9 Masquer
    Anonyme , 6 février 2009 11:53
    Je suis vraiment surpris car ayant un iMac, j'ai toujours cru que leopard tournait en 64 bit !!! je vais vérifier mes sources.

    Mais bon quelle différence entre 32 bit et 64 bit à part une plage d'adresse plus importante oui les pc(s) exploiteront les 4go de mémoire qu'il y a présent et on pourra aller plus loins.

  • anagrys , 6 février 2009 11:58
    Est-il utile de parler des anciens processeurs qui ne sont pas compatibles 64 bits ? Le fait est qu'un OS qui sort aujourd'hui est plutôt ciblé vers les processeurs actuels qui, hors Atom, sont compatibles 64 bits.
    Les arguments sur les applications et sur les entreprises sont plutôt pertinents, par contre.
  • dandu , 6 février 2009 12:02
    Citation :
    Je suis vraiment surpris car ayant un iMac, j'ai toujours cru que leopard tournait en 64 bit !!! je vais vérifier mes sources.

    Mais bon quelle différence entre 32 bit et 64 bit à part une plage d'adresse plus importante oui les pc(s) exploiteront les 4go de mémoire qu'il y a présent et on pourra aller plus loins.


    Non non, Leopard peut utiliser des applis 64 bits mais reste 32 bits à la base.

    Le 64 bits offre plus de registre (donc ça va parfois plus vite) et le code x87 est généralement remplacé par du SSE2, nettement plus efficace.
  • -3 Masquer
    Sn4kY , 6 février 2009 12:09
    MEIMais lol... l'atom est EMT64 einh...

    c'est EM64T, mais tout le monde avait compris ce dont tu voulais parler ;) 
  • LVM , 6 février 2009 12:35
    Citation :
    Notons que cette analyse se limite à Windows, qui est un système bien plus dépendant du marché que Mac OS X et Linux. Pour Mac OS X, Snow Leopard sera le premier OS 64 bits de la firme (avec une version 32 bits pour les Core Duo) mais son successeur sera a priori totalement 64 bits, alors que Linux a été le premier OS x86 compatible 64 bits et que les distributions majeures existent toutes en 64 bits depuis un moment (ce qui pose dans la pratique moins de problèmes que sous Windows).


    Premier OS d'Apple à noyau 64 bits, mais le Leopard actuel fait déjà tourner des applis 64 bits (et peut utiliser plus de 4 Go de ram) car Cocoa et la couche Unix sont en 64 bits:
    http://images.appleinsider.com/leopard-081028.gif

    Bref, la transition a déjà commencée en douceur, depuis un petit bout de temps.

    Mais pour la petite histoire NextStep qui a été repris en partie dans OS X était 64 bits depuis des lustres. Malheureusement l'architecture i386 de l'époque suivait pas...
  • LVM , 6 février 2009 12:43
    DanduNon non, Leopard peut utiliser des applis 64 bits mais reste 32 bits à la base.Le 64 bits offre plus de registre (donc ça va parfois plus vite) et le code x87 est généralement remplacé par du SSE2, nettement plus efficace.


    Comme je te disais, et c'est sur le graphique du dessus, l'actuel Leopard est un hybride 32/64.

    Concernant les registres, la plupart des applis sont en C (et dérivés, C++, Objective C, ...), langage qui se prête bien au stockage de variables dans des registres. Et plus il y en a mieux c'est car ça évite de nombreux accès mémoires.
    Pour les pointeurs je veux bien qu'ils occupent 8 octets au lieu de 4, m'enfin ça fait pas grand chose en conso mémoire. C'est contrebalancé par la légèreté d'un code où l'on fait beaucoup appel aux registres.
  • pascal16 , 6 février 2009 13:19
    houla, ça c'est de l'analyse de coin de bar.

    Un programme mal optimisé, mal compilé par un un compilateur mal fait peut en effet donner un code moins rapide en 64 bits qu'en 32.

    lors du passage 16-32, les programmes anticipaient le passage. L'OS restait 16 bits, un extender permettait de fair tourner du 32 bits. Freecell par exemple et les jeux dos touraient en 32 bits.
    Pour le 64 bits, c'est le contraire, l'OS serait 64 bits avant les programme et on parle alors d'émulateur pour le 32 bits.
  • -1 Masquer
    Serious Gilles , 6 février 2009 13:36
    LVM.Pour les pointeurs je veux bien qu'ils occupent 8 octets au lieu de 4, m'enfin ça fait pas grand chose en conso mémoire. C'est contrebalancé par la légèreté d'un code où l'on fait beaucoup appel aux registres.

    Complètement faux LVM. En moyenne jusqu'à 30% de plus pour la taille du binaire généré. Sans compter qu'il y a aussi du padding de tes types pour des raisons de performances. (voir ici http://www.ibm.com/developerworks/library/l-port64.html)
    Le nombre de cache miss est donc plus important et donc tire les perfs vers le bas. Ce phénomène est plus ou moins compensé par les performances de gagnées grace aux registres supplémentaires.

    Le code n'est pas plus "léger" en tout cas, si l'on parle de taille du binaire équivalent.
  • hellhand , 6 février 2009 13:39
    DanduLe 64 bits offre plus de registre

    Que neni les registres sont plus longs il n'y en a pas plus
  • zorro3364 , 6 février 2009 13:41
    c'est clair que la différence en 32 et 64 bits ne se limite pas à la capacité d'accès à la mémoire, ça c'est bon pour l'utilisateur lambda, comme croire que la différence entre xp/vista/seven se limite à l'apparence du bureau. codez directement en assembleur, et vous verrez tout de suite la différence entre 32 et 64 bits, bien plus importante que lors du passage de 16 au 32 bits!
    pour info, les processeurs x86 sont depuis longtemps capables de manipuler des données en 64 bits, via le x87 ou les extensions SSE/3DNOW!. maintenant que c'est le x86 lui-même qui est capable de manipuler directement des données 64 bits, les extensions sont passées, elles, au 128 bits.
    non, ce qui a clairement retarder l'arrivée des applis 64 bits, c'est que cela nécessite une ré-écriture quasi complète du code, même avec un langage de haut niveau comme le c/c++. pour vous en convaincre, compilez en 64 bits un vieux bout de code et vous verrez le nombre d'erreurs et de warnings générés! bien sur toutes les nouvelles appli sont écrites de manière a pouvoir être directement compilées en 64 bits, et donc aussi en 32 bits. petit à petit, les appli 32 bits vont totalement disparaitre, c'est clair.
  • flo1028 , 6 février 2009 13:42
    pascal16Pour le 64 bits, c'est le contraire, l'OS serait 64 bits avant les programme et on parle alors d'émulateur pour le 32 bits.


    En parlant d'émulation... Bien que ça n'ai rien à voir, je croies, cela me fait penser à la virtualisation... Si celle-ci se "grandpublic-ise" (oui, oui, parfois j'invente des mots.:) ), entre autre par le biais d'outils de sécurité (bac à sable?), dans les navigateurs web, etc, 4Go vont certainement très bientôt être le minimum, d'autant que le prix des modules mémoire laissent à penser que l'écart de pris entre 2Go et 4Go ou entre 4Go et 8Go n'est plus "dissuasif" et des contrôleurs mémoire sur 3 (voir 4) lignes (nehalem) seront "gadgets" si c'est pour accueillir des barrettes de 512Mo...
    Donc, en dehors de l'aspect purement technique, du code, n'est-on pas aussi (surtout?) à untournant commercial... Comment vendre "plus" (de puissance, de possibilité) sans passer au 64bits ?
    la course à la fréquence des processeurs est finie, et comment envisager de passer à 8, puis 16 coeurs, hypertradés, et resté à 3.3 Go de mémoire ???
    je pense donc que, commercialement, le passage au 64 bits se fera maintenant rapidement, ou sinon, quelle raison aura-t-on de changer de machine ??? ;) 
  • Anonyme , 6 février 2009 13:47
    Heu, a ma connaissance ce ne sont pas les core2 duo qui on lancé le 64bits mais plutot l'AMD64 qui est sorti très peu de temps après les Opterons en 2003, le Core2 duo lui est venu bien après.
  • Serious Gilles , 6 février 2009 13:52
    hellhandQue neni les registres sont plus longs il n'y en a pas plus

    Complètement Faux.
    On passe de 8 à 16 pour les GPR (general purpose registers). Pareil pour les registres SIMD.
    (source : http://www.hardware.fr/articles/478-3/amd-athlon-64-athlon-64-fx.html)

    Et aussi contrairement à ce que dit zorro, le x87 ne permet pas de traiter du 64 bits pour des entiers mais uniquement des floattant en simple et double précision.
  • vcs2600 , 6 février 2009 13:59
    Question de profane : On ne pourrait pas imaginer que les fabricants d'OS diffusent massivement et par défaut une version 64 bits de leur OS, et qu'ils permettent par virtualisation de leurs anciens systèmes (ou émulation, je ne sais pas trop la différence) de faire tourner les applications 16 et 32 bits ?
  • -1 Masquer
    daam , 6 février 2009 14:06
    Je voudrais ajouter à tout ça que l'intérêt est plus que limité pour l'utilisateur lambda tout simplement parce que les applications n'en ont pas besoin. Je veux dire par là que word, msn et ie n'ont pas besoin de 64 bits.

    Autant le passage de 16 à 32 était nécessaire : 65536 (2^16) ça fait pas beaucoup et ça limite. (64Ko de mémoire c'est en effet pas beaucoup). Mais 32 bits ça fait 4 Go, et avec les systèmes actuels passer au 64 bits ne profitable que pour augmenter sa mémoire vive. Et il me semble que 3 Go de mémoire c'est actuellement largement suffisant pour une utilisation normale.
    De plus passer à un OS 64 bits( par rapport à un OS 32 bits, sur un c2d par exemple) diminue plutôt les perfs (comme il a été dit plus haut) puisque forcement au niveau matériel c'est plus compliqué eta ctuellement moins optimisé.

    Le seul problème que je vois actuellement avec le 32 bits, c'est quand 2038 (c'est pas pour tout de suite encore) il y aura un pb avec les dates (overflow, c'est à dire que la valeur représentant le temps va dépasser la capacité des registres 32 bits, elle passera de +2 millaird à -2 millaird en gros)
  • xvince1 , 6 février 2009 14:09
    Il me semblait que les unités x87 tournaient en 80 bit, 64+16 bit de parités ?
  • batchy , 6 février 2009 14:29
    Citation :
    non, ce qui a clairement retarder l'arrivée des applis 64 bits, c'est que cela nécessite une ré-écriture quasi complète du code, même avec un langage de haut niveau comme le c/c++. pour vous en convaincre, compilez en 64 bits un vieux bout de code et vous verrez le nombre d'erreurs et de warnings générés!
    Compiler en 64bit ne pose aucun problème lorsque tes librairies sont en 64bit. Si t'a des erreurs c'est que le code de départ était déjà mal fichu.
Afficher plus de commentaires