228 votes

Systèmes 32 bits et 64 bits

Quelles sont les différences entre les systèmes 32 bits et 64 bits ?

Si vous avez utilisé les deux, quelles différences nettes avez-vous constatées ?

Serait-ce un problème d'utiliser des programmes 32 bits sur des systèmes 64 bits dans certains cas ?

0 votes

Il y a beaucoup de confusions ici, et ailleurs sur le web, entre l'adressage physique (accès à la RAM), PEA affecte cela, la carte mère affecte cela, et l'adressage logique (mémoire virtuelle par processus). Sur un système d'exploitation 32 bits, la mémoire virtuelle est limitée à 4 Go, moins ce que le noyau réserve. Elle est indépendante de la RAM : vous pourriez avoir 0,1 Mo ou 8 Go de RAM et vous auriez exactement 4 Go de mémoire virtuelle (mais une partie réservée par le noyau). PEA peut être utilisé pour avoir plus de RAM, mais n'est pas une réponse parfaite car le noyau NE PEUT PAS accéder à toute la mémoire.

268voto

kmilo Points 282

Remarque : ces réponses s'appliquent aux processeurs PC standard à base de x86 (Intel et AMD) et à Windows (tel qu'il est généralement configuré pour les utilisateurs finaux). D'autres puces 32 ou 64 bits, d'autres systèmes d'exploitation et d'autres configurations peuvent présenter des compromis différents.

D'un point de vue technique, un système d'exploitation 64 bits vous donne :

  • Permet aux processus individuels d'adresser plus de 4 Go de RAM chacun (en pratique, la plupart des systèmes d'exploitation 32 bits, mais pas tous, limitent également la RAM totale utilisable du système à moins de 4 Go, et pas seulement le maximum par application).

  • Tous les pointeurs prennent 8 octets au lieu de 4 octets. L'effet sur l'utilisation de la RAM est minime (car il est peu probable que vous ayez une application remplie de gigaoctets de pointeurs), mais dans le pire des cas théoriques, cela peut faire en sorte que le cache du CPU soit capable de contenir la moitié du nombre de pointeurs (ce qui le rend effectivement deux fois plus petit). Pour la plupart des applications, ce n'est pas un problème majeur.

  • Il y a beaucoup plus de registres généraux du CPU en mode 64 bits. Les registres sont la mémoire la plus rapide de tout votre système. Il n'y en a que 8 en mode 32 bits et 16 registres à usage général en mode 64 bits. Dans les applications de calcul scientifique que j'ai écrites, j'ai constaté une augmentation des performances allant jusqu'à 30 % en recompilant en mode 64 bits (mon application pouvait vraiment utiliser les registres supplémentaires).

  • La plupart des systèmes d'exploitation 32 bits ne permettent aux applications individuelles d'utiliser que 2 Go de RAM, même si vous avez installé 4 Go. En effet, les 2 Go restants de l'espace d'adressage sont réservés au partage des données entre les applications, avec le système d'exploitation et pour la communication avec les pilotes. Windows et Linux vous permettent d'ajuster ce compromis pour obtenir 3 Go pour les applications et 1 Go pour le partage, mais cela peut poser des problèmes pour certaines applications qui ne s'attendent pas à ce changement. Je suppose également que cela pourrait paralyser une carte graphique qui a 1 Go de RAM (mais je n'en suis pas sûr). Un système d'exploitation 64 bits peut permettre aux applications 32 bits individuelles de disposer d'environ 4 Go de RAM.

Du point de vue de l'utilisateur :

  • La vitesse des applications est généralement plus rapide pour une application 64 bits dans un système d'exploitation 64 bits par rapport à la version 32 bits de l'application sur un système d'exploitation 32 bits, mais la plupart des utilisateurs ne verront pas cette accélération. La plupart des applications pour les utilisateurs normaux ne profitent pas vraiment des registres supplémentaires ou les avantages sont compensés par des pointeurs plus grands qui remplissent le cache.

  • Si vous avez des applications gourmandes en mémoire (comme les éditeurs de photos, le traitement vidéo, le calcul scientifique, etc.), si vous avez (ou pouvez acheter) plus de 3 Go de RAM et si vous pouvez obtenir une version 64 bits de l'application, le choix est facile : utilisez le système d'exploitation 64 bits.

  • Certains matériels ne disposent pas de pilotes 64 bits. Vérifiez votre carte mère, toutes les cartes enfichables et tous les périphériques USB avant d'effectuer le changement. Notez qu'aux premiers jours de Windows Vista, il y avait beaucoup de problèmes avec les pilotes. Aujourd'hui, la situation s'est généralement améliorée.

  • Si vous exécutez tellement d'applications à la fois que vous commencez à manquer de RAM (vous pouvez généralement vous en rendre compte parce que votre ordinateur commence à devenir très lent et que vous entendez le disque dur craquer), vous aurez besoin d'un système d'exploitation 64 bits (et de suffisamment de RAM).

  • Vous pouvez exécuter des applications 32 bits (mais pas les pilotes) dans un Windows 64 bits sans aucun problème. Le pire ralentissement que j'ai mesuré pour une application 32 bits sous Windows 64 bits est d'environ 5 % (ce qui signifie que s'il fallait 60 secondes pour faire quelque chose sous Windows 32 bits, il fallait au maximum 60*1,05 = 65 secondes avec la même application 32 bits sous Windows 64 bits).

Ce que fait le 32 bits par rapport au 64 bits no Implicite :

Sur les systèmes x86, 32 bits contre 64 bits directement fait référence à la taille des pointeurs. C'est tout.

  • Il ne fait pas référence à la taille du C int type. Cela est décidé par l'implémentation particulière du compilateur, et la plupart des compilateurs populaires choisissent le type 32 bits. int sur les systèmes 64 bits.

  • Il ne directement font référence à la taille des registres normaux sans pointeur. Cependant, l'utilisation de registres arithmétiques de 64 bits nécessite que l'application et le système d'exploitation fonctionnent également en mode pointeur 64 bits.

  • Il ne directement font référence à la taille du bus d'adresses physiques. Par exemple, un système doté de lignes de cache d'une largeur de 64 bits et d'un maximum de 512 Gigaoctets de mémoire n'a besoin que de 33 bits dans son bus d'adresses (c.-à-d. log2(512*1024**3) - log2(64) = 33 ).

  • Il ne s'agit pas de la taille du bus de données physique : celle-ci est davantage liée aux coûts de fabrication (nombre de broches dans le socle du processeur) et à la taille des lignes de cache.

9 votes

Très bonne réponse. D'autant plus que vous avez noté qu'il n'y a pas réellement une limite de 4gb de RAM, mais une limite d'utilisation de la mémoire des processus. Pour votre information, je pense que vous devriez jeter un coup d'oeil à ce lien : unawave.de/Windows-7-tipps/32-bit-ram-barrier.html?lang=FR

9 votes

Ce sont des applications qui ne fonctionnent pas sur un Windows 64 bits : Les applications 16 bits / celles qui utilisent des pilotes 32 bits ou non signés en mode noyau. C'est beaucoup pour un accro aux logiciels comme moi...

1 votes

@flextendu, étant donné les exigences de performance de ces anciens programmes, vous pourriez presque certainement les exécuter dans une machine virtuelle. Avec VMware player, Virtual PC et Virtual Box, il n'y a aucune raison de ne pas essayer l'un d'entre eux, si vous avez une licence Windows 32 bits. Si vous ne voulez pas vous embêter avec ça, ils fonctionneront probablement aussi en "mode Windows XP".

110voto

Brian R. Bondy Points 2590

En fait, vous pouvez tout faire à plus grande échelle :

  1. RAM par OS : Limite de 4 Go de RAM sur x86 pour le système d'exploitation (la plupart du temps).
  2. RAM par processus : Limite de 4 Go de RAM sur x86 pour les processus (toujours). Si vous pensez que ce n'est pas important, essayez d'exécuter une énorme application intensive de base de données MSSQL. Elle utilisera elle-même plus de 4 Go si vous en disposez et fonctionnera beaucoup mieux.
  3. Adresses : Les adresses sont de 64 bits au lieu de 32 bits, ce qui permet d'avoir des programmes plus "gros" qui utilisent plus de mémoire.
  4. Poignées disponibles pour les programmes : Vous pouvez créer plus de gestionnaires de fichiers, de processus, ... Par exemple, sous Windows x64, vous pouvez créer plus de 2000 threads par processus, mais sous x86, il s'agit plutôt de quelques centaines.
  5. Des programmes plus larges sont disponibles : À partir d'un x64, vous pouvez exécuter des programmes x86 et x64. (Exemple Windows : wow64, windows32 sur émulation windows64)
  6. Options d'émulation : À partir d'un x64, vous pouvez exécuter des VM x86 et x64.
  7. Plus vite : Certains calculs sont plus rapides sur un processeur 64 bits
  8. La division de plusieurs ressources du système : Une grande quantité de mémoire RAM est très importante lorsque vous souhaitez exécuter au moins une VM qui répartit les ressources de votre système.
  9. Programmes exclusifs disponibles : Plusieurs nouveaux programmes ne supportent que x64. Exemple : Exchange 2007.
  10. Futur x86 obsolète.. : Au fil du temps, le 64 bits sera de plus en plus utilisé et le x86 sera de moins en moins utilisé. Les fournisseurs prendront donc de plus en plus en charge uniquement le 64 bits.

Les deux grands types d'architectures 64 bits sont les architectures x64 et IA64. Mais la x64 est de loin la plus populaire.

x64 peut exécuter des commandes x86 ainsi que des commandes x64. IA64 exécute également les commandes x86, mais ne gère pas les extensions SSE. Il y a du matériel dédié sur Itanium pour exécuter les instructions x86 ; c'est un émulateur, mais en matériel.

Comme @Phil l'a mentionné, vous pouvez obtenir un aperçu plus approfondi des éléments suivants comment cela fonctionne ici .

1 votes

Hum. IA64 exécute les commandes x86. Il ne fait pas les extensions SSE, cependant. Il y a du matériel dédié sur Itanium pour exécuter les instructions x86 ; c'est un émulateur, mais en matériel.

3 votes

Il y a quelques années, Raymond Chen a publié un article sur la "limite" de 2000 fils, qui est plus ou moins une légende urbaine : blogs.msdn.com/oldnewthing/archive/2005/07/29/444912.aspx

0 votes

Upvote pour Arstechnica pour leur explication.

48voto

L'impact le plus important que les gens remarqueront pour le moment est qu'un PC 32 bits ne peut adresser qu'un maximum de 4 Go de mémoire. Si vous enlevez la mémoire allouée à d'autres usages par le système d'exploitation, votre PC n'affichera probablement qu'environ 3,25 Go de mémoire utilisable. Passez à 64 bits et cette limite disparaît.

Si vous faites du développement sérieux, cela peut être très important. Essayez de faire tourner plusieurs machines virtuelles et vous serez vite à court de mémoire. Les serveurs sont plus susceptibles d'avoir besoin de mémoire supplémentaire et vous constaterez donc que l'utilisation du 64 bits est beaucoup plus importante sur les serveurs que sur les ordinateurs de bureau. La loi de Moore garantit que nous aurons toujours plus de mémoire sur les machines et qu'à un moment donné, les ordinateurs de bureau passeront également au 64 bits comme norme.

Pour une description beaucoup plus détaillée des différences entre les processeurs, consultez cet excellent article du site de la Commission européenne. ArsTechnica .

7 votes

La plate-forme 32 bits et la limitation à 4 Go sont en quelque sorte une erreur d'appellation et sont (étaient) principalement un choix architectural du système d'exploitation/une limite de conception. En réalité, les 4 Go de 32 bits sont une limite dans un espace VA de processus. L'adresse physique supporte 36 bits sur les CPU 32 bits d'Intel.

1 votes

Vous soulevez un bon point qui est certainement vrai. Mais l'impact dans le monde réel des utilisateurs de PC est que leur machine ne va pas utiliser la totalité des 4 Go qu'ils ont payés. Mon père a été confronté à ce problème et ne comprend toujours pas pourquoi les 4 Go qu'il a payés ne peuvent pas être entièrement utilisés.

2 votes

Je comprends votre point de vue, mais j'essaie juste de faire comprendre que la solution ne réside pas dans le processeur ou dans le passage à 64 bits, mais simplement dans une conception légèrement améliorée du système d'exploitation. Ce problème est abordé, par exemple, dans les versions d'entreprise de Windows, même dans les versions 32 bits. Elles permettent d'utiliser 64 Go de RAM.

32voto

James Points 471

Rien n'est gratuit : bien que les applications 64 bits peut accéder à davantage de mémoire que les applications 32 bits, l'inconvénient étant qu'elles besoin de plus de mémoire. Tous ces pointeurs qui avaient besoin de 4 octets, en ont maintenant besoin de 8. Par exemple, l'exigence par défaut dans Emacs est de 60% de mémoire supplémentaire lorsqu'il est construit pour une architecture 64 bits. Cet encombrement supplémentaire nuit aux performances à tous les niveaux de la hiérarchie de la mémoire : les exécutables plus volumineux sont plus longs à charger depuis le disque, les ensembles de travail plus volumineux entraînent une pagination plus importante et les objets plus volumineux ont moins de place dans les caches du processeur. Dans le cas d'un processeur doté d'un cache L1 de 16 Ko, une application 32 bits peut travailler avec 4096 pointeurs avant d'échouer et de passer au cache L2, mais une application 64 bits doit atteindre le cache L2 après seulement 2048 pointeurs.

Sur x64, cela est atténué par les autres améliorations architecturales, comme l'augmentation du nombre de registres, mais sur PowerPC, si votre application ne peut pas utiliser >4G, il est probable qu'elle s'exécutera plus rapidement sur "ppc" que sur "ppc64". Même sur Intel, il existe des charges de travail qui s'exécutent plus rapidement sur x86, et peu d'entre elles s'exécutent plus de 5% plus rapidement sur x64 que sur x86.

2 votes

Cette réponse suggère que PowerPC64 n'est pas aussi bon que x86-64. La vérité est que powerpc64 n'a pas amélioré powerpc, car powerpc n'était pas cassé.

3 votes

Linux a maintenant une ABI x32, avec tous les avantages de vitesse de x86-64 (plus de registres, ABI redessinée), mais avec des pointeurs 32 bits. +1 pour avoir souligné que les avantages du mode 64bit ne proviennent pas de l'augmentation réelle de la largeur, mais de la possibilité d'abandonner une grande partie du bagage qui freinait l'architecture. Les registres 64 bits ont de la valeur pour certaines applications, mais l'espace de pointeur 64 bits est moins souvent nécessaire.

20voto

Krish Points 111

Un système d'exploitation 64 bits peut utiliser davantage de RAM. C'est à peu près tout, en pratique. Vista/7 64 bits utilise des fonctions de sécurité plus sophistiquées pour placer les composants vitaux dans la RAM, mais ce n'est pas vraiment "perceptible" en tant que tel.

De ChrisInEdmonton :

Un système d'exploitation 32 bits sur un ix86 avec PAE peut adresser jusqu'à 64 Go de RAM. Un système d'exploitation 64 bits sur un système x86-64 peut accéder à un maximum de 256 To de d'espace d'adressage virtuel, bien que cela puisse être augmenté dans les processeurs suivants, jusqu'à jusqu'à 16 EB. Notez que certains systèmes d'exploitation systèmes d'exploitation limitent l'espace d'adressage d'adresse, et la plupart des cartes mères ont des restrictions supplémentaires.

4 votes

Pour un système d'exploitation, la différence entre 32 et 64 bits concerne UNIQUEMENT la taille des pointeurs (ce que votre premier paragraphe aborde correctement). -1 : Certains systèmes d'exploitation choisissent de verrouiller la taille par défaut des entiers à la taille des pointeurs, mais ni Windows ni Linux ne le font. La précision mathématique des nombres entiers reste inchangée. AUCUN système d'exploitation largement répandu ne modifie la précision de la virgule flottante (ce que prétend le deuxième paragraphe). "float" ou "single" est de 32 bits, "double" est de 64 bits, indépendamment du fait que le système d'exploitation utilise des pointeurs 32 bits ou 64 bits.

0 votes

Ah, je me suis clairement trompé, merci d'avoir éclairci ce point :)

0 votes

Pas de problème. -1 --> +1

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X