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

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

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

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

    Un processeur de 64 bits peut exécuter 32 et 64 OS (au moins une capacité de x64). Un processeur 32 bits ne peut fonctionner que 32 en mode natif.

    La différence concerne principalement la taille d'un pointeur / référence. Sur les machines 64 bits, vous pouvez faire référence à une adresse dans une plage d'adresses de 64 bits (ce qui vous donne 2 ^ 64 octets de mémoire). Sur 32 bits, vous ne pouvez traiter que 2 ^ 32 octets (= 4 Go). Maintenant, si vous regardez les ordinateurs actuels, il est évident pourquoi le monde passe à 64 bits: 32 bits ne peuvent plus facilement répondre à toutes les RAM.

    Sur X64 (AMD / Intel), vous bénéficiez de 64 bits supplémentaires. La CPU dispose de plus de registres et permet ainsi un code plus efficace.

    Sur les autres architectures, les différences entre 64 et 32 ​​bits sont moins évidentes. Par exemple, la Nintendo 64 (rappelez-vous que?) Était une machine à 64 bits, mais la plupart de son code était de 32 bits. Donc, dans ce cas, 64 bits ont servi plus comme une affaire de marketing.

    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 se réfère à une petite partie de l'architecture de la CPU. En particulier, elle fait référence au nombre Des lignes de sélection d'adresse entre la CPU et la mémoire, c'est-à-dire l' espace d'adresse dit disponible pour les opérations de mémoire.

    Au fil des années, lorsque la CPU était utilisée pour s'asseoir et tisser (envelopper) les fils entre un processeur et la mémoire, vous deviez utiliser soit 32 soit (théoriquement, car il 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, disons que nous avons une architecture de mémoire 2 bits: l'envoi de 00 choisirait l'adresse 0, 01 sélectionnerait l'adresse 1, 10 sélectionnera 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 sur 32 fils supplémentaires entre la CPU et le contrôleur de mémoire afin que vous puissiez magiquement supporter plus de mémoire, vous disposez désormais d'une "CPU 64 bits" pouvant fonctionner à 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 à partir de la première partie de cette réponse et ajoute un autre fil, le transformant en un processeur 3 bits, nous amenant de 4 octets à 2 ^ 3 ou 8 octets de RAM.

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

    Maintenant, un programmeur veut écrire un 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 prend le contrôle manuel des nouveaux fils supplémentaires. Son logiciel connaît le ou les fils supplémentaires et envoie correctement 000-111, ce qui lui permet d'accéder pleinement à la gamme de mémoire prise en charge par cette nouvelle architecture CPU.

    Mais ce n'est pas la façon dont cela doit se produire. En fait, ce n'est normalement pas la façon dont les choses se passent. Lorsque les processeurs 64 bits ont été introduits pour la première fois (et il y en a eu beaucoup), ils sont tous intégrés à des architectures / designs entièrement nouveaux. Ils n'ont pas seulement abordé 32 fils supplémentaires et disent "ici, vous êtes en train de passer, c'est un processeur 64 bits que vous pouvez utiliser en mode 32 bits ou 64 bits", mais plutôt qu'ils ont déclaré "C'est notre nouvelle CPU et Il ne faut que la programmation dans ce langage machine entièrement nouveau, se comporte de cette manière entièrement nouvelle, résout un bazillion de problèmes différents beaucoup plus élégamment que les anciennes CPU processeurs x86 / i386 de 32 bits, et c'est une architecture native de 64 bits. Amusez-vous . "

    C'était l'histoire de l'Intel Itanium, maintenant connue sous le nom de "Itanic" en raison de la façon dont il a coulé massivement. Il était censé annoncer dans la nouvelle ère de 64 bits, et c'était quelque chose à voir. Instructions de longueur variable, caches énormes, espace d'adresse 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 en arrière lorsque AMD et Intel étaient effectivement en compétition, et AMD avait l'idée brillante de dire "oublions tout cela" résoudre tous les problèmes du monde des affaires et juste ajouter 32 fils supplémentaires à l'i386 et faire un 32 bits compatibles 64- Bit CPU "et l'architecture CPU x86_64 est né.

    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 jumelés avec des références aux processeurs AMD64 et à l'architecture AMD64. AMD a mis au point une stratégie gagnante pour que tout le monde passe au monde de 64 bits tout en préservant la compatibilité avec les applications 32 bits, de sorte qu'un OS 32 bits puisse fonctionner sur un matériel 64 bits ou même des applications 32 bits Pourrait fonctionner sur un OS 64 bits sur un matériel 64 bits. Intel a suivi la suite plus tôt que plus tard avec leur architecture "Intel EM64T" (qui était essentiellement identique à AMD64) et x86_64 a gagné alors que l'Itanic et d'autres comme MIPS64 et ALPHA64 ne se voyaient plus sur le marché du bureau / serveur.

    Td; dr amd64 aka Les CPU de x86_64 sont conçues 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 compatibles en arrière de la même manière. Une CPU de 32 bits peut accéder au maximum à 4GiB de mémoire, tandis qu'une CPU à 64 bits peut accéder à une superbe 16 EiBs (16 × 1024 ^ 6 octets, ou 4 milliards de fois plus de mémoire que 4GiB).

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