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

25

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?

aléatoire
la source
Si vous parlez de Windows (et la balise Win32 semble l'indiquer), alors oui, absolument - Vista et Win7 64 bits prennent en charge presque toutes les applications 32 bits via une couche de compatibilité - je n'ai encore rien trouvé qui ne fonctionne pas ne fonctionne pas très bien sur Vista 64 bits (sauf pour les pilotes au niveau du système)
marc_s
5
La question semble plus de savoir si vous pouvez installer disons Win Vista x86 sur un boîtier doté d'un processeur 64 bits, plutôt que si les applications x86 s'exécutent sur disons Win Vista x64.
KTC

Réponses:

34

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

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

Mehrdad Afshari
la source
16

Un processeur 64 bits peut exécuter les systèmes d'exploitation 32 et 64 (au moins une boîte x64). Un processeur 32 bits ne peut fonctionner que 32 nativement.

La différence concerne principalement 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 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, il est évident que le monde passe au 64 bits: le 32 bits ne peut plus facilement traiter toute la RAM.

Sur x64 (AMD / Intel), vous avez des avantages supplémentaires de 64 bits. Le CPU a plus de registres et permet ainsi un code plus efficace.

Sur d'autres architectures, les différences entre 64 et 32 ​​bits sont moins évidentes. Par exemple, la Nintendo 64 (vous vous en souvenez?) Était une machine 64 bits mais la plupart de son code était 32 bits. Donc, dans ce cas, le 64 bits a plutôt servi d'astuce marketing.

terdon
la source
3

La réponse actuellement acceptée est généralement correcte mais pas spécifiquement. Il n'y a vraiment pas une seule chose appelée "CPU 32 bits" ou "" CPU 64 bits "- c'est une description qui ne fait référence qu'à une petite partie de l'architecture du CPU. En particulier, elle fait référence au nombre de lignes de sélection d'adresse entre la CPU et la mémoire, c'est-à-dire l' espace dit d' adresse disponible pour les opérations de mémoire.

Au temps jadis, lorsque le CPU, lorsque les gens s'asseyaient et tissaient (enroulaient) les fils entre un processeur et la mémoire, vous auriez dû utiliser 32 ou (théoriquement, car il n'existait pas à l'époque) 64 fils entre le CPU et le contrôleur de mémoire qui seraient utilisés pour spécifier à quelle adresse mémoire vous souhaitez accéder. Par exemple, disons que nous avons une architecture de mémoire à 2 bits: l'envoi de 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 câbles supplémentaires entre le processeur et le contrôleur de mémoire afin que vous puissiez magiquement prendre en charge plus de mémoire, vous disposez maintenant d'un "processeur 64 bits" qui peut fonctionner en 32 bits. code ou code 64 bits. Qu'est-ce que cela signifie et comment cela se produit-il? Eh bien, prenons notre processeur 2 bits de la partie précédente de cette réponse et ajoutons un autre fil, le transformant en un processeur 3 bits, nous prenant de 4 octets à 2 ^ 3 ou 8 octets de RAM.

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

Maintenant, un programmeur veut écrire du code "natif" de 3 octets et écrit son logiciel pour profiter de l'espace d'adressage supplémentaire. Elle dit au CPU qu'elle sait ce qu'elle fait et qu'elle prendra le contrôle manuel des nouveaux fils supplémentaires. Son logiciel connaît les fils supplémentaires et envoie correctement 000-111, lui donnant un accès complet à la plage de mémoire prise en charge par cette nouvelle architecture de processeur.

Mais ce n'est pas ainsi que cela doit se produire. En fait, ce n'est normalement pas comme ça que les choses se passent. Lorsque les processeurs 64 bits ont été introduits pour la première fois (et ils étaient nombreux), ils ont tous adopté des architectures / conceptions entièrement nouvelles. Ils ne se sont pas contentés de clouer sur 32 fils supplémentaires et ont dit: «Voilà, c'est un processeur 64 bits que vous pouvez utiliser en mode 32 bits ou 64 bits», mais ils ont plutôt dit «Voici notre nouveau processeur et il ne prend que la programmation dans ce tout nouveau langage machine, se comporte de cette manière entièrement nouvelle, résout un bazillion de problèmes bien plus élégamment que les anciens processeurs x86 / i386 32 bits, et c'est une architecture native 64 bits. . "

Ce fut l'histoire de l'Intel Itanium, désormais connu sous le nom de "Itanic" en raison de sa masse massive. Il était censé annoncer la nouvelle ère 64 bits, et c'était quelque chose à voir. Instructions de longueur variable, énormes caches, espace d'adressage 64 bits, tonnes de registres, super excitant, super cool et super difficile à convaincre tout le monde de recompiler ou de réécrire 20 ans de code hérité. C'était à l'époque où AMD et Intel étaient en concurrence, et AMD a eu la brillante idée de dire "oublions tout cela" résout tous les problèmes du monde "et ajoute simplement 32 fils de plus à l'i386 et en fait un 64 bits compatible 64- bit CPU "et l'architecture du processeur x86_64 est née.

En fait, si vous regardez les noms et les sources du noyau pour les principaux systèmes d'exploitation (Linux, Windows, BSD, etc.), vous les trouverez jonchés de références aux CPU AMD64 et à l'architecture AMD64. AMD a proposé une stratégie gagnante pour que tout le monde passe au 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 fonctionner sur du matériel 64 bits ou même des applications 32 bits pourrait fonctionner sur un système d'exploitation 64 bits sur du matériel 64 bits. Intel a suivi la suite plus tôt que tard avec leur architecture "Intel EM64T" (qui était fondamentalement identique à AMD64) et x86_64 a gagné, tandis que l'Itanic et d'autres comme MIPS64 et ALPHA64 n'étaient plus vus sur le marché des ordinateurs de bureau / serveurs.

tl; dr amd64 alias les processeurs x86_64 sont conçus pour être compatibles avec le noyau et le code 32 et 64 bits, mais la plupart des processeurs 64 bits ne sont décidément pas rétrocompatibles de la même manière. Un processeur 32 bits peut accéder à au plus 4 Go de mémoire, tandis qu'un processeur 64 bits peut accéder à 16 superbes EiB (16 × 1024 ^ 6 octets, soit 4 milliards de fois plus de mémoire que la 4GiB).

Mahmoud Al-Qudsi
la source
1
Vous avez quelques erreurs factuelles: 1) l'itanium n'a pas introduit d'instructions de longueur variable (chaque x86 en a); il a ajouté des instructions de mots très longues, capables de fonctionner simultanément sur plusieurs quantités 64 bits. 2) x86_64 n'a pas simplement giflé sur plus de lignes d'adresse; il a également ajouté un tas de registres supplémentaires et élargi tous les registres (et les ALU qui les opèrent) de 32 à 64 bits. Comparez cela au 8086/8088, qui a ajouté 4 lignes d'adresse et registres de sélection de segment supplémentaires, mais les a tous conservés à 16 bits, comme le 8080 avant lui.
psusi
-1

Un système d'exploitation 32 et 64 bits peut fonctionner sur un processeur 64 bits, mais le système d'exploitation 64 bits peut utiliser la pleine puissance du processeur 64 bits (registres plus grands, plus d'instructions) - en bref, il peut faire plus de travail en même temps. Un processeur 32 bits ne prend en charge que le système d'exploitation Windows 32 bits.

CsTamas
la source
3
Ceci est incorrect en général, bien que correct pour x64 en particulier.
ChrisInEdmonton
1
Un processeur 32 bits exécutera tout système d'exploitation conçu pour fonctionner sur une telle architecture de processeur.
Waxhead
un système d'exploitation x86 32 bits ne peut évidemment pas fonctionner sur ARM64, donc ce 32 and 64 bit OS can run on a 64 bit processorn'est généralement pas correct
phuclv
@ Phúc Il peut y avoir des processeurs 64 bits, qui ne prennent pas en charge leur jumeau 32 bits. Cependant, vous utilisez une fausse logique dans votre argument. SunOS 4.4.1 sur MicroSparc 32 bits ne fonctionnera pas non plus sur ARM32. En utilisant vos moyens logiques, il n'est généralement pas correct qu'un OS 32 bits puisse fonctionner sur un processeur 32 bits. Si j'ignore le bon sens comme vous, je peux affirmer que le système d'exploitation ARM 32 bits fonctionne sur Intel i386 / x64, car les développeurs Android exécutent des images ARM Android sur leurs machines Wintel. Bien sûr, le système d'exploitation est pour la bonne famille de processeurs et bien sûr, le système d'exploitation fonctionne sur du matériel physique et non sur une émulation (assez dit, sorti)
Tino