Systèmes 32 bits vs. 64 bits

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

Si vous avez utilisé les deux, quel genre de différences nettes avez-vous rencontrées?

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

Remarque: ces réponses s'appliquent aux CPU PC basées sur x86 standard (Intel et AMD) et Windows (généralement configurées pour les utilisateurs finaux). D'autres puces 32 bits ou 64 bits, d'autres systèmes d'exploitation et d'autres configurations OS peuvent avoir des compromis différents.

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

  • Permet aux processus individuels d'aborder 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 du système utilisable à moins de 4 Go, 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 probable que vous ne disposez pas d'une application remplie de gigaoctets de pointeurs), mais dans le pire cas théorique, cela peut permettre au cache de la CPU de contenir 1/2 pointeurs Il est effectivement 1/2 de la taille). Pour la plupart des applications, ce n'est pas un gros problème.

  • Il existe beaucoup plus de registres CPU à usage général en mode 64 bits. Les registres sont la mémoire la plus rapide dans votre système entier. Il n'y a que 8 en mode 32 bits et 16 registres à usage général en mode 64 bits. Dans les applications informatiques scientifiques que j'ai écrit, j'ai vu jusqu'à une augmentation de performance de 30% en recompilant en mode 64 bits (mon application pourrait vraiment utiliser les registres supplémentaires).

  • La plupart des systèmes d'exploitation 32 bits ne permettent vraiment aux applications individuelles d'utiliser 2 Go de RAM, même si vous disposez de 4 Go. C'est parce que les autres 2 Go d'espace d'adresse sont réservés pour partager des données entre les applications, avec le système d'exploitation et pour communiquer avec les pilotes. Windows et Linux vous permettront d'ajuster ce compromis pour être de 3 Go pour les applications et 1 Go partagé, mais cela peut causer des problèmes pour certaines applications qui ne s'attendent pas à la modification. Je suppose aussi que cela pourrait paralyser une carte graphique dotée de 1 Go de RAM (mais je ne suis pas sûr). Un OS 64 bits peut donner aux applications individuelles 32 bits plus près des 4 Go complets à jouer.

Du point de vue de l'utilisateur:

  • La vitesse d'application est généralement plus rapide pour une application 64 bits dans un OS 64 bits par rapport à la version 32 bits de l'application sur un OS 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 de plus gros pointeurs remplissant le cache.

  • Si vous avez des applications de mémoire (comme les éditeurs de photos, le traitement vidéo, l'informatique scientifique, etc.), si vous avez (ou pouvez acheter) plus de 3 Go de RAM et que vous pouvez obtenir une version 64 bits de l'application, Le choix est simple: 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 de commuter. Notez que dans les premiers jours de Windows Vista, il y avait beaucoup de problèmes avec les pilotes. Aujourd'hui, les choses sont généralement meilleures.

  • Si vous exécutez tant d'applications à la fois que vous manquez de RAM (généralement, vous pouvez le dire parce que votre ordinateur commence à devenir très lent et que vous entendez le crunch du disque dur), vous voudrez un OS 64 bits (Et RAM suffisante).

  • Vous pouvez exécuter des applications 32 bits (mais pas des pilotes) dans Windows 64 bits sans problème. Le pire ralentissement que j'ai mesuré pour une application 32 bits dans Windows 64 bits est d'environ 5% (ce qui signifie que si cela nécessitait 60 secondes pour faire quelque chose dans Windows 32 bits, il fallait au moins 60 * 1.05 = 65 secondes avec La même application 32 bits dans Windows 64 bits).

Ce que 32 bits vs 64 bits n'implique pas :

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

  • Il ne se réfère pas à la taille du type C int . Cela est décidé par la mise en œuvre du compilateur particulier, et la plupart des compilateurs populaires choisissent 32 bits sur les systèmes 64 bits.

  • Il ne se réfère pas directement à la taille des registres normaux sans pointeur. Cependant, l'utilisation de registres arithmétiques 64 bits nécessite que l'application et le système d'exploitation s'exécutent en mode pointeur 64 bits.

  • Il ne se réfère pas directement à la taille du bus d'adresse physique. Par exemple, un système avec des lignes de mémoire cache de 64 bits et un maximum de 512GiB de mémoire n'a besoin que de 33 bits dans son bus d'adresses (c'est-à-dire log2(512*1024**3) - log2(64) = 33 ).

  • Il ne se réfère pas à la taille du bus de données physiques: cela est plus lié aux coûts de fabrication (nombre de broches dans le socket du processeur) et à la taille des lignes de cache.

Fondamentalement, vous pouvez tout faire à plus grande échelle:

  1. RAM par OS: limite RAM de 4 Go sur x86 pour le système d'exploitation (la plupart du temps)
  2. RAM par processus: limite de RAM de 4 Go sur x86 pour les processus (toujours). Si vous pensez que ce n'est pas important, essayez d'exécuter une énorme application de base de données MSSQL. Il utilisera> 4 Go lui-même si vous l'avez disponible et fonctionne beaucoup mieux.
  3. Adresses: les adresses sont 64bits au lieu de 32bits vous permettant d'avoir des programmes "plus grands" qui utilisent plus de mémoire.
  4. Les commandes disponibles pour les programmes: vous pouvez créer plus de poignées de fichiers, processus, … Exemple sur Windows x64 vous pouvez créer> 2000 threads par processus, mais sur x86 plus proche de quelques centaines.
  5. Des programmes plus larges disponibles: à partir d'un x64, vous pouvez exécuter les programmes x86 et x64. (Exemple de fenêtres: wow64, windows32 sur l'émulation Windows 64)
  6. Options d'émulation: à partir d'un x64, vous pouvez exécuter les machines virtuelles x86 et x64.
  7. Plus rapide: certains calculs sont plus rapides sur un processeur 64 bits
  8. Diviser plusieurs ressources système: une grande quantité de mémoire RAM est très importante lorsque vous souhaitez exécuter au moins une VM qui divise les ressources de votre système.
  9. Programmes exclusifs disponibles: plusieurs nouveaux programmes ne prennent en charge que x64. Exemple d'échange 2007.
  10. Futur obsolète x86?: Au fil du temps, de plus en plus de 64 bits seront utilisés et de plus en plus x86 ne sera pas utilisé. Donc, les fournisseurs ne supportent que 64 bits de plus en plus.

Les 2 grands types d'architectures 64 bits sont des architectures x64 et IA64. Mais x64 est le plus populaire de loin.

X64 peut exécuter des commandes x86 ainsi que des commandes x64. IA64 exécute des commandes x86, mais il ne fait pas d'extensions SSE. Il existe un matériel dédié à Itanium pour l'exécution des instructions x86; C'est un émulateur, mais en matériel.

Comme l'a mentionné @Phil, vous pouvez avoir un aperçu plus profond de la façon dont cela fonctionne ici .

Le plus grand impact que les gens remarqueront pour le moment est qu'un PC de 32 bits ne peut traiter qu'un maximum de 4 Go de mémoire. Lorsque vous retirez la mémoire allouée à d'autres utilisations par le système d'exploitation, votre PC ne montrera probablement qu'environ 3,25 Go de mémoire utilisable. Passez à 64 bits et cette limite disparaît.

Si vous développez sérieusement, cela pourrait être très important. Essayez d'exécuter plusieurs machines virtuelles et vous manquez bientôt de mémoire. Les serveurs sont plus susceptibles d'avoir besoin de mémoire supplémentaire et vous constaterez que l'utilisation de 64 bits est beaucoup plus grande 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, à certains égards, les ordinateurs de bureau passeront également à 64bit comme standard.

Pour une description beaucoup plus détaillée des différences de processeur, consultez cet excellent article d' ArsTechnica .

Rien n'est gratuit: bien que les applications 64 bits puissent accéder à plus de mémoire que les applications 32 bits, la baisse est qu'ils ont besoin de plus de mémoire. Tous ces pointeurs qui avaient besoin de 4 octets, ils ont besoin de 8. Par exemple, l'exigence par défaut dans Emacs est 60% de mémoire supplémentaire lorsqu'elle est construite pour une architecture 64 bits. Cette empreinte supplémentaire nuit aux performances à tous les niveaux de la hiérarchie de la mémoire: les plus gros exécutables prennent plus de temps à charger à partir du disque, de plus grands ensembles de travail provoquent plus de pagination et des objets plus gros, ce qui signifie moins d'ajustement dans les caches du processeur. Si vous pensez à une CPU avec un cache L1 16K, une application 32 bits peut fonctionner avec 4096 pointeurs avant qu'il ne manque et passe 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 d'autres registres, mais sur PowerPC si votre application ne peut pas utiliser> 4G, elle risque d'être plus rapide sur "ppc" que "ppc64". Même sur Intel, il existe des charges de travail qui fonctionnent plus rapidement sur x86, et quelques-uns courent plus que 5% plus rapidement sur x64 que x86.

Un système d'exploitation 64 bits peut utiliser plus de RAM. C'est à ce sujet, en pratique. Vista / 7 de 64 bits utilise des fonctionnalités de sécurité plus amusantes pour lesquelles ils placent des 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 système ix86 avec PAE peut traiter jusqu'à 64 Go de RAM. Un système d'exploitation 64 bits sur x86-64 peut accéder à 256 kb d'espace d'adressage virtuel, même si cela peut être augmenté dans les processeurs ultérieurs, jusqu'à 16 EB. Notez que certains systèmes d'exploitation limitent davantage l'espace d'adressage, et la plupart des cartes mères auront des restrictions supplémentaires.

Je ne suis pas sûr de pouvoir répondre à toutes vos questions sans écrire un essai complet (toujours Google …), mais vous n'avez pas besoin de concevoir vos applications différemment pour 64 bits. Je suppose que ce qui est mentionné est que vous devez être conscient que les choses comme les pointeurs ne sont plus la même taille que les ints. Et vous avez un tas de problèmes potentiels avec des hypothèses intégrées sur certains types de données de quatre octets de long qui peuvent ne plus être vrais.

Il est probable que vous déclenchez toutes sortes de choses dans votre application – tout ce qui vous permet de sauvegarder / charger à partir d'un fichier, d'itérer à travers les données, l'alignement des données, tout le chemin des opérations par bit sur les données. Si vous disposez d'une base de code existante, vous essayez de vous connecter, ou de travailler sur les deux, il est probable que vous aurez beaucoup de petits problèmes à accomplir.

Je pense qu'il s'agit d'un problème de mise en œuvre plutôt que d'un projet. C'est-à-dire, je pense que le "design" de say, un package d'édition de photos sera le même quel que soit le texte. Nous écrivons un code qui compile à la fois des versions 32 bits et 64 bits, et la conception ne diffère certainement pas entre les deux – c'est la même base de code.

Le "gros problème" fondamental sur 64 bits est que vous obtenez l'accès à un espace d'adressage de mémoire beaucoup plus grand que 32 bits. Cela signifie que vous pouvez vraiment utiliser plus de 4Gb de mémoire dans votre ordinateur et faire en sorte que cela change.

Je suis sûr que d'autres réponses entreront dans les détails et bénéficieront plus que moi.

En ce qui concerne la détection de la différence, vous pouvez simplement vérifier la taille d'un pointeur (par exemple, sizeof (void *)). La réponse de 4 signifie ses 32 bits, et 8 signifie que vous utilisez un environnement de 64 bits.

Un processus de 32 bits a un espace d'adresses virtuelles de 4 Go; Cela pourrait être trop peu pour certaines applications. Une application de 64 bits a un espace d'adressage pratiquement illimité (bien sûr, il est limité, mais vous ne pourrez probablement pas atteindre cette limite).

Sur OSX, il existe d'autres avantages. Voir l' article suivant , pourquoi avoir le noyau exécuté dans l'espace d'adresse de 64 bits (peu importe si votre application fonctionne 64 ou 32) ou que votre application s'exécute dans un espace d'adressage de 64 bits (alors que le noyau est encore 32 bits) conduit à des performances beaucoup meilleures. Pour résumer: Si l'un ou l'autre est de 64 bits (kernel ou application, ou bien sûr), le TLB ("buffer de lookaside de traduction") ne doit pas être rincé chaque fois que vous passez du noyau pour utiliser l'espace et le retour (ce qui va ralentir Accès RAM supérieur).

De plus, vous avez des gains de performance lorsque vous utilisez des variables «long long int» (variables de 64 bits comme uint64_t). Un processeur 32 bits peut ajouter / diviser / soustraire / multiplier deux valeurs de 64 bits, mais pas une seule opération matérielle. Au lieu de cela, il faut diviser cette opération en deux (ou plus) opérations 32 bits. Ainsi, une application qui fonctionne beaucoup avec des nombres de 64 bits aura un gain de vitesse pour pouvoir effectuer des calculs 64 bits directement dans le matériel.

Enfin, l'architecture x86-64 offre plus de registres que les architectures classiques x86. Le travail avec les registres est beaucoup plus rapide que le fait de travailler avec la RAM et plus il y a d'enregistrements de la CPU, moins il est nécessaire d'échanger des valeurs de registre sur la RAM et de revenir aux registres.

Pour savoir si votre CPU peut fonctionner en mode 64 bits, vous pouvez regarder différentes variables sysctl. Par exemple, ouvrez un terminal et tapez

 sysctl machdep.cpu.extfeatures 

Si elle répertorie EM64T, votre CPU supporte l'espace d'adressage 64 bits selon la norme x86-64. Vous pouvez également rechercher

 sysctl hw.optional.x86_64 

Si elle indique 1 (vrai / activé), votre CPU prend en charge le mode bit x86-64, si elle indique 0 (faux / désactivé), ce n'est pas le cas. Si le paramètre n'est pas trouvé, considérez qu'il est faux.

Remarque: Vous pouvez également extraire les variables sysctl à partir d'une application native C, pas besoin d'utiliser l'outil de ligne de commande. Voir

 man 3 sysctl 

Notez que l'espace d'adressage peut être utilisé pour plus que la mémoire (réelle). On peut également mémoriser des fichiers volumineux, ce qui peut améliorer les performances dans des modèles d'accès plus étranges, car la mise en cache du niveau VM au niveau du bloc plus puissant et efficace débute. Il est également plus sûr d'allouer de gros blocs de mémoire sur 64 bits puisque le Heapmanager est moins élevé Susceptible de rencontrer une fragmentation d'espace d'adresse qui ne lui permettra pas d'attribuer un gros bloc.

Certaines des choses racontées dans ce thread (comme le doublement des # registres) s'appliquent uniquement à x86-> x86_64, et non à 64 bits en général. Tout comme le fait que sous x86_64 on a garanti SSE2, 686 opcodes et un moyen peu coûteux de faire PIC. Ces fonctionnalités ne sont strictement pas d'environ 64 bits, mais ont trait à la réduction de l'héritage et à la correction des limitations connues de x86

En outre, assez souvent, les gens indiquent que le doublement des registres est la cause de l'accélération, alors qu'il est plus probable que l'utilisation par défaut de SSE2 fasse le tour (accélération de memppy et fonctions similaires). Si vous activez le même ensemble pour x86, la différence est beaucoup plus petite. (*) (***)

Gardez également à l'esprit qu'il y a souvent une pénalité initiale impliquée, car la structure de données moyenne augmentera simplement parce que la taille d'un pointeur est plus grande. Cela a également des effets de cache, mais il est plus significatif que le memppy moyen (ou quel que soit l'équivalent pour la copie de mémoire dans votre langue) prendra plus de temps. Ce n'est que dans la grandeur de quelques pour cent environ, mais les speedups mentionnés ci-dessus sont également dans cette grandeur.

Habituellement, les frais généraux d'alignement sont également plus importants sur les architectures 64 bits (les enregistrements précédemment 32 bits ne deviennent souvent qu'un mélange de valeurs de 32 bits et de 64 bits), en gonflant encore davantage les structures.

Dans l'ensemble, mes tests simples indiquent qu'ils s'annuleront grossièrement, si les pilotes et les bibliothèques d'exécution ont été entièrement adaptées, sans aucune différence de vitesse significative pour l'application moyenne. Cependant, certaines applications peuvent soudainement être plus rapides (par exemple, en fonction de AES) ou plus lentement (la structure de données cruciale est constamment déplacée / balayée / marquée et contient beaucoup de pointeurs). Cependant, les tests étaient sur Windows, de sorte que l'optimisation PIC n'était pas comparée.

Notez que la plupart des langages JIT-VM (Java, .NET) utilisent beaucoup plus de pointeurs en moyenne (en interne) que par exemple C ++. Probablement, leur utilisation de la mémoire augmente plus que pour le programme moyen, mais je n'ose pas assimiler cela directement aux effets de ralentissement (car il s'agit d'une bête vraiment complexe et funky et souvent difficile à prévoir sans mesurer)

(*) Un fait peu connu est que le nombre de registres SSE double également en mode 64 bits

(**) Le Dr Dobbs a eu un bel article à ce sujet il y a quelques années.

Outre les problèmes de mémorisation évidents que la plupart des gens mentionnent ici, je pense qu'il vaut la peine d'examiner la notion de «calcul de mots-clés» dont Knuth (entre autres) a parlé récemment. Il y a beaucoup d'efficacité à gagner grâce à la manipulation des bits, et les opérations par bit sur un mot de 64 bits vont beaucoup plus loin que sur un mot 32 bits. Bref, vous pouvez faire plus d'opérations dans les registres sans avoir à frapper la mémoire, et du point de vue de la performance, c'est une énorme victoire.

Jetez un coup d'oeil au Volume 4, pré-Fascicule 1A pour quelques exemples des astuces fraîches dont je parle.

Mis à part la capacité de traiter plus de mémoire x86_64, vous avez également plus de registres permettant au compilateur de générer un code plus efficace. L'amélioration de la performance sera généralement assez faible.

L'architecture x86_64 est compatible avec x86. Il est possible d'exécuter des systèmes d'exploitation 32 bits non modifiés. Il est également possible d'exécuter des logiciels 32 bits non modifiés à partir d'un système d'exploitation 64 bits. Cela nécessitera toutes les bibliothèques habituelles de 32 bits. Ils devront peut-être être installés séparément.

Ce fil est déjà trop long, mais …

La plupart des réponses se concentrent sur le fait que vous disposez d'un plus grand espace d'adressage de 64 bits, de sorte que vous pouvez traiter plus de mémoire. Pour environ 99% de toutes les applications, cela est totalement sans pertinence. Grand grincement.

La vraie raison 64 bits est bonne, ce n'est pas que les registres sont plus gros, mais il en existe deux fois plus! Cela signifie que le compilateur peut garder plus de vos valeurs dans le registre au lieu de les renverser dans la mémoire et de les recharger dans quelques instructions plus tard. Si et quand un compilateur d'optimisation déroule vos boucles pour vous, il peut les dérouler environ deux fois plus, ce qui peut vraiment aider à la performance.

En outre, les conventions d'appelant / collecteur de sous-programme pour 64 bits ont été définies pour conserver la plupart des paramètres passés dans les registres au lieu de l'appelant les poussant sur la pile et l'appelant les émet.

Ainsi, une application C / C ++ "typique" obtiendra environ une amélioration de performance de 10% ou 15% juste en recompilant pour 64 bits. (En supposant qu'une partie de l'application a été calculée, elle n'est pas garantie, tous les ordinateurs attendent la même vitesse. Votre kilométrage peut varier.)

Avec une machine 32 bits, vous n'avez plus que 4,294,967,295 octets de mémoire à adresser. Avec une machine 64 bits, vous avez 1.84467441 × 10 ^ 19 octets de mémoire.

Wikipedia dit ceci

Les processeurs 64 bits calculent des tâches particulières (telles que des factorisateurs de grandes figures) deux fois plus vite que celles travaillant dans des environnements 32 bits (un exemple donné est dérivé de la comparaison entre les calculateurs Windows de 32 bits et 64 bits; remarquable pour le facteur factoriel de 100 000 ). Cela donne un sentiment général de possibilités théoriques d'applications optimisées 64 bits.

Bien que les architectures 64 bits incontestément permettent de travailler avec de grands ensembles de données dans des applications telles que la vidéo numérique, l'informatique scientifique et les bases de données importantes, il y a eu un débat considérable quant à savoir si elles ou leurs modes de compatibilité 32 bits seront plus rapides que les prix comparables Systèmes 32 bits pour d'autres tâches. Dans l'architecture x86-64 (AMD64), la majorité des systèmes d'exploitation et des applications 32 bits peuvent fonctionner en douceur sur le matériel 64 bits.

Les machines virtuelles Java de 64 bits de Sun sont plus lentes que leurs machines virtuelles 32 bits, car Sun n'a implémenté que le compilateur JIT "serveur" (C2) pour les plates-formes 64 bits. [9] Le compilateur JIT "client" (C1), qui produit un code moins efficace mais compile beaucoup plus rapidement, n'est pas disponible sur les plates-formes 64 bits.

Il convient de noter que la vitesse n'est pas le seul facteur à considérer dans une comparaison des processeurs 32 bits et 64 bits. Les applications telles que le multitâche, les tests de stress et le clustering (pour le calcul haute performance), HPC, peuvent être plus adaptées à une architecture 64 bits compte tenu du déploiement correct. Les clusters 64 bits ont été largement déployés dans de grandes organisations telles que IBM, HP et Microsoft, pour cette raison.

Outre les avantages déjà mentionnés, voici quelques-uns de plus en matière de sécurité:

  • X86_64 cpus ont le bit sans exécution dans leurs tables de page. C'est-à-dire que cela peut empêcher les exploits de sécurité causés par des dépassements de tampon. 32 bits x86 cpus ne supporte que cette fonctionnalité en mode PAE.
  • L'espace d'adresse plus grand permet une meilleure randomisation de la disposition de l'espace d'adressage (ASLR) qui rend plus difficile l'exploitation des dépassements de tampon.
  • X86_64 code cpus caractéristique indépendamment du code, c'est-à-dire l'accès aux données par rapport au registre de pointeur d'instruction (RIP).

Un autre avantage qui vient à l'esprit est que la quantité de mémoire contiguë virtuelle allouée avec vmalloc() dans le noyau Linux peut être plus grande en mode 64 bits.

Citation de Microsoft.com:

Dans le tableau suivant, les ressources maximales accrues des ordinateurs basées sur les versions 64 bits de Windows et le processeur Intel 64 bits sont comparées aux ressources maximales existantes de 32 bits.

MS-Table

Kristof et Poshi ont déclaré les principales différences techniques entre OS 32 et 64 bits, l'expérience utilisateur est généralement très différente de la théorie. Les versions de Windows de 64 bits de Windows à ce jour (XP et Vista) ont de gros trous dans leur support de pilote. J'ai eu de nombreuses imprimantes, scanners et autres périphériques externes à plat, ne fonctionnent pas avec les versions 64 bits qui fonctionnent bien avec des versions 32 bits. Ce sont des périphériques dotés de 64 bits et ils ne fonctionnent toujours pas. À ce stade, je vous recommande de rester loin de n'importe quel consommateur basé à 64 bits de Microsoft jusqu'à ce que vous entendiez comment Windows 7 le gère, des utilisateurs finaux réels, et pas seulement les uber-geeks qui en ont actuellement accès. Donner 6 mois au moins et voir ce que les gens éprouvent. Personnellement, je vais installer la saveur de 32 bits de Windows 7 car mes versions de 64 bits de Vista sont un poids de papier coûteux que j'ai cessé d'utiliser il y a longtemps et je suis passé à XP 32 bits.

Le terme 32 bits et 64 bits se réfère à la façon dont un processeur informatique (également appelé CPU) gère les informations. Les versions 64 bits de Windows gèrent beaucoup plus de mémoire vive (RAM) que les systèmes 32 bits.

La vitesse peut être différente à mon avis

Un autre point pour cela en ce qui concerne Microsoft Windows est que depuis de nombreuses années, l'API Win32 est destinée à des systèmes d'exploitation 32 bits et n'est pas optimisée pour la compilation de 64 bits. Lorsque j'écris des DLL pour mes applications, je compile généralement dans Win32 qui n'est pas la version de 64 bits. Avant Vista, il n'y a pas eu beaucoup de versions réussies de 64 bits de Windows, je crois que, lorsque je travaille, ma nouvelle machine dispose de 4 Go de RAM mais j'utilise toujours Windows XP Pro de 32 bits car il s'agit d'un O stable / S par rapport à XP64 ou Vista.

I think you may want to also look back on when there was the shift from 16-bit to 32-bit for some more details on why the shift may be a big deal for some folks. The mission-critical applications that a company may run on a desktop, eg small accounting packages, may not run on a 64-bit operating system and thus there is the need to keep a legacy machine around, virtual or real.

Changing the size of an address can have some big ramifications and repercussions.

Some game-playing programs use a bit-board representation. Chess, checkers and othello for example have an 8×8 board, ie 64 squares, so having at least 64 bits in a machine word significantly helps performance.

I remember reading about a chess program whose 64-bit build was almost twice as fast as the 32-bit version.

For most practical purposes you probably won't notice a difference.

You must have a 64-bit CPU (most CPUs in the last few years) to install a 64-bit operating system.

There are a few advantages to a 64-bit operating system:

  • It will allow you to run more than 4GB of RAM (the maximum number you can address in a 32-bit OS is 2^32 = 4GB)
  • It is helpful for working with large data sets (eg in Excel) and certain computationally intensive tasks (eg Photoshop and big files)
  • You can only run a 64-bit program on a 64-bit OS, but you can run a 32-bit program on both (keep in mind a lot of programs come as both, so there aren't too many 64-bit only programs).

Under most scenarios, 64-bit programs use a bit more memory, but for a personal computer, this is typically not noticed.