web-dev-qa-db-fra.com

Un système d'exploitation 32 bits peut-il fonctionner dans un processeur 64 bits?

Quelle est la différence entre un système d'exploitation 32 bits et un système d'exploitation 64 bits? Un système d'exploitation 32 bits peut-il fonctionner dans un processeur 64 bits?

23
Prabhu

Votre question est spécifique à l'architecture. x64 est essentiellement une extension de l'architecture x86. Il supporte un espace d'adressage 64 bits. Il fournit de nouvelles instructions et de nouveaux registres.

Vous pouvez exécuter Windows x86 32 bits sur un ordinateur x64. Notez que vous ne pouvez pas le faire sur les systèmes Itanium 64 bits.

32
Mehrdad Afshari

Un processeur 64 bits peut exécuter à la fois les systèmes d’exploitation 32 et 64 (au moins un boîtier x64). Un processeur 32 bits ne peut fonctionner que 32 en mode natif.

La différence est principalement par rapport à la taille d'un pointeur/référence. Sur les machines 64 bits, vous pouvez référencer une adresse dans une plage d'adresses de 64 bits (vous donnant ainsi 2 ^ 64 octets de mémoire). Sur 32 bits, vous ne pouvez adresser que 2 ^ 32 octets (= 4 Go). Maintenant, si vous regardez les ordinateurs actuels, vous comprendrez pourquoi le monde évolue vers le 64 bits: le 32 bits ne peut plus traiter facilement tous les RAM.

Sur x64 (AMD/Intel), vous bénéficiez d'avantages supplémentaires de 64 bits. La CPU a plus de registres et permet donc un code plus efficace.

Sur d'autres architectures, les différences entre 64 et 32 ​​bits sont moins évidentes. Par exemple, la Nintendo 64 (rappelez-vous?) Était une machine 64 bits, mais la plus grande partie de son code était 32 bits. Donc, dans ce cas, le 64 bits a été utilisé comme une astuce marketing.

14
Lemmy

La réponse actuellement acceptée est généralement correcte mais pas spécifiquement. Il n’existe pas vraiment de "processeur 32 bits" ou de "processeur 64 bits" - c’est une description qui ne fait référence qu’à une petite partie de l’architecture de la CPU. de lignes de sélection d’adresse entre la CPU et la mémoire, c’est-à-dire le dit espace d’adresse disponible pour les opérations en mémoire.

À l'époque jadis, lorsque le processeur, lorsque les gens s'asseyaient et tissaient les fils entre un processeur et la mémoire, vous auriez dû utiliser 32 ou (en théorie, parce que cela n'existait pas à l'époque) 64 fils entre la CPU et le contrôleur de mémoire qui seraient utilisés pour spécifier l'adresse de mémoire à laquelle vous souhaitez accéder. Par exemple, supposons que nous ayons une architecture mémoire à 2 bits: l'envoi 00 sélectionnerait l'adresse 0, 01 sélectionnerait l'adresse 1, 10 sélectionnerait l'adresse 2 et 11 sélectionnerait l'adresse 3. Ce 2 bits nous donne 2 ^ 2 octets. de RAM (4 octets).

Si vous prenez un processeur 32 bits et que vous ajoutez 32 fils supplémentaires entre le processeur et le contrôleur de mémoire afin de pouvoir, comme par magie, prendre en charge davantage de mémoire, vous disposez désormais d'un "processeur 64 bits" pouvant fonctionner en 32 bits. code ou code 64 bits. Qu'est-ce que cela signifie et comment cela se produit-il? Bien, prenons notre processeur 2 bits de la partie précédente de cette réponse et ajoutons un autre fil, en le transformant en un processeur 3 bits, nous faisant passer de 4 octets à 2 ^ 3 ou 8 octets de RAM.

Le code "2 octets" existant fonctionnera, définissant les valeurs des 2 derniers fils comme indiqué ci-dessus (00-11). Nous câblons la connexion supplémentaire à zéro par défaut. Ainsi, lorsque le code à 2 octets s'exécute, lorsqu'il sélectionne 00, il sélectionne réellement 000 et lorsqu'il sélectionne 11, il sélectionne en fait 011. Facile.

Maintenant, un programmeur veut écrire du code "natif" à 3 octets et écrit son logiciel pour tirer parti de l'espace d'adressage supplémentaire. Elle dit au processeur qu'elle sait ce qu'elle fait et qu'elle contrôlera manuellement les nouveaux fils supplémentaires. Son logiciel est au courant des câbles supplémentaires et envoie correctement le numéro 000-111, ce qui lui donne un accès complet à la plage de mémoire prise en charge par cette nouvelle architecture de processeur.

Mais ce n'est pas comme ça que ça doit arriver. En fait, c'est normalement et non comment les choses se passent. Lorsque les processeurs 64 bits ont été introduits (et ils étaient nombreux), ils utilisaient tous de nouvelles architectures/conceptions. Ils ne se sont pas contentés de clouer 32 fils supplémentaires en disant: "Voilà, c'est un processeur 64 bits que vous pouvez utiliser en mode 32 bits ou 64 bits", mais ils ont plutôt dit "Ceci est notre nouveau processeur et cela prend seulement de la programmation dans ce tout nouveau langage machine, se comporte de cette manière tout à fait nouvelle, résout un nombre incroyable de problèmes bien plus élégants que les anciens processeurs x86/i386 32 bits de tous les temps, et il s’agit d’une architecture 64 bits native. . "

Telle était l'histoire d'Intel Itanium, maintenant connu sous le nom de "Itanic" en raison de la gravité de son affaissement. C'était supposé annoncer la nouvelle ère 64 bits, et c'était quelque chose à voir. Instructions de longueur variable, caches énormes, espace d'adressage 64 bits, tonnes de registres, super excitant, super cool et très difficile à convaincre tout le monde de recompiler ou de réécrire 20 ans de code hérité pour. C'était à l'époque où AMD et Intel étaient réellement en concurrence, et AMD a eu la brillante idée de dire "oublions tout cela" résolvez le problème du monde "et ajoutez simplement 32 fils supplémentaires à l'i386 et créez une compatibilité 32 bits 64 bits. bit CPU "et l'architecture du processeur x86_64 était née.

En fait, si vous examinez les noms de noyau et les sources des principaux systèmes d’exploitation (Linux, Windows, BSD, etc.), vous les trouverez encombrés de références aux processeurs AMD64 et à l’architecture AMD64. AMD a mis au point une stratégie gagnante pour amener tout le monde à basculer dans le monde 64 bits tout en préservant la compatibilité avec les applications 32 bits, de manière à ce qu'un système d'exploitation 32 bits puisse s'exécuter sur du matériel 64 bits ou même des applications 32 bits. pourrait fonctionner sur un système d'exploitation 64 bits sur un matériel 64 bits. Intel a suivi la suite le plus tôt possible avec son architecture "Intel EM64T" (qui était fondamentalement identique à AMD64) et x86_64 l'emportant tandis que l'Itanan et d'autres, comme MIPS64 et ALPHA64, n'étaient plus vus du marché des ordinateurs de bureau/serveurs.

tl; dr AMD64, x86_64, les processeurs sont conçus pour être compatibles avec le code et le noyau 32 bits et 64 bits, mais la plupart des processeurs 64 bits sont décidément et non compatibles façon. Un processeur 32 bits peut accéder à un maximum de 4 Go de mémoire, tandis qu'un processeur 64 bits peut accéder à 16 superbes EiB (16 × 1024 ^ 6 octets ou 4 milliards beaucoup de mémoire que 4GiB).

3
Mahmoud Al-Qudsi