web-dev-qa-db-fra.com

Quelle quantité de mémoire est accessible à une machine 32 bits?

Qu'entend-on par machine 32 bits ou 64 bits?

C’est l’architecture du processeur… une machine 32 bits peut lire et écrire des données 32 bits en même temps avec une machine 64 bits….

quelle est la mémoire maximale à laquelle une machine 32 bits peut accéder?

Il est 2^32=4Gb (4Gigabit = 0.5 GigaByte)

Cela signifie 4 Go de RAM?

Si je considère la même chose pour une machine 64 bits, alors je peux avoir un bélier de 16ExbiBytes ..est-ce possible?

Mes concepts sont-ils corrects?

56
haris

Oui, une architecture 32 bits est limitée à un maximum de 4 Go de mémoire. Selon le système d'exploitation, ce nombre peut encore être réduit grâce à l'espace d'adressage réservé.

Cette limitation peut être supprimée sur certaines architectures 32 bits via l'utilisation de PAE (Physical Address Extension) , mais elle doit être prise en charge par le processeur. PAE autorise le processeur à accéder à plus de 4 Go de mémoire, mais il ne modifie pas la quantité d'espace d'adressage virtuel disponible pour un processus unique. Chaque processus serait toujours limité à un maximum de 4 Go d'espace d'adressage.

Et oui, théoriquement, une architecture 64 bits peut gérer 16,8 millions de téraoctets de mémoire, soit 2 ^ 64 octets. Mais je ne crois pas que les implémentations populaires actuelles supportent pleinement cela; Par exemple, l'architecture AMD64 ne peut gérer qu'un maximum de 1 téraoctet de mémoire. De plus, votre système d'exploitation limitera également la quantité de mémoire adressable prise en charge. De nombreuses versions de Windows (en particulier les versions conçues pour la maison ou pour un usage autre que serveur) sont arbitrairement limitées.

45
Cody Gray

Un ordinateur 32 bits ou 64 bits signifie généralement la taille des registres entiers généraux ("architecturés") visibles de l'extérieur ("architecturés").

Cela a cependant très peu à voir avec la construction du matériel. Par exemple, considérons le Intel Pentium Pro (obsolète depuis longtemps). Il est généralement considéré comme un processeur "32 bits", même s'il prend en charge des adresses physiques allant jusqu'à 36 bits, dispose d'un bus de données de 64 bits et que les calculs internes de tous les types d'opérandes pris en charge sont effectués dans un seul ensemble de registres ( qui ont donc une largeur de 80 bits, afin de prendre en charge le type le plus grand en virgule flottante).

Du moins dans le cas des processeurs Intel, même si un adressage physique plus grand est disponible depuis longtemps, la plus grande quantité de mémoire directement visible dans l'espace adresse de tout processus sur un processeur 32 bits est également limité à 4 gigaoctets (adressage 32 bits). L'adressage physique 36 bits permet d'adresser jusqu'à 64 Go de RAM, mais seuls 4 Go de celle-ci peuvent être directement visibles à un moment donné.

Le passage aux machines 64 bits impliquait principalement de changer ce qui était rendu visible par l'utilisateur (ou de coder au niveau du langage Assembly). Encore une fois, ce que vous voyez est rarement identique à ce qui est réel. Par exemple, la plupart des codes 64 bits considèrent les pointeurs/adresses comme étant de 64 bits, mais les processeurs actuels ne prennent pas en charge ce nombre d'adresses. Les processeurs actuels prennent en charge les adresses virtuelles 48 bits et (au moins autant que je l’ai remarqué) un maximum de 40 bits d’adressage physique. D'un autre côté, ils sont conçus de manière à pouvoir, à l'avenir, élargir l'adressage physique à 48 bits, lorsqu'une plus grande quantité de mémoire devient pratique, sans toucher au logiciel. Même s'ils augmentent l'adressage virtuel 48 bits, cela n'affectera généralement qu'une petite partie du noyau du système d'exploitation (le code normal n'est pas affecté, car les adresses déjà supposées sont 64 bits).

Donc, non: une machine 64 bits ne pas supporte réellement jusqu'à 64 bits d'adressage physique, mais le logiciel 64 bits le plus typique doit rester compatible avec un futur processeur qui ne supporte directement adressant que beaucoup de RAM.

21
Jerry Coffin

Pour revenir à une idée de base, nous avons 32 bits pour nos adresses de mémoire. Cela correspond à 2 ^ 32 combinaisons uniques d'adresses. Par convention, chaque adresse pointe vers 1 octet de données. Par conséquent, nous pouvons accéder à un total de 2 ^ 32 octets de données.

Dans un système d'exploitation 32 bits, chaque registre stocke 32 bits ou 4 octets. 32 bits (1 mot) d'information sont traités par cycle d'horloge. Si vous voulez accéder à un 1 octet particulier, nous pouvons "extraire" les octets individuels (par exemple, octet 0, octet 1, octet 2, octet 3, etc.) en effectuant des opérations logiques au niveau du bit.

Par exemple. pour obtenir "ddddddddd", prenez "aaaaaaaabbbbbbbbccccccddddddddd" et le AND logique avec "00000000000000000000000011111111".

9
Kevin Lee

en gros, l'architecture 32 bits peut traiter 4 Go comme vous le souhaitiez. Certaines techniques permettent au processeur de traiter plus de données, par exemple AWE ou PAE .

5
rkosegi

Oui, sur une machine 32 bits, la quantité maximale de mémoire utilisable est d'environ 4 Go. En fait, selon le système d'exploitation utilisé, une partie de l'espace d'adressage peut être moindre: sous Windows, vous ne pouvez utiliser que 3,5 Go par exemple.

Sur 64 bits, vous pouvez en effet traiter 2 ^ 64 octets de mémoire. Non pas que vous les ayez jamais - mais encore une fois, il y a longtemps que l'on disait la même chose à propos du besoin de plus de 640 Ko de mémoire ...

4
ThiefMaster

Non, vos concepts ne sont pas corrects. Et pour que tout soit correct, vous avez besoin de la réponse à la question à laquelle vous avez mal répondu:

Qu'entend-on par machine 32 bits ou 64 bits?

La réponse à la question est "quelque chose d'important dans la CPU est 32 bits ou 64 bits". La question est donc de savoir ce qui est important. Beaucoup de gens disent la largeur du bus de données qui détermine si la machine est 32 bits ou 64 bits. Mais aucun des derniers processeurs 32 bits n’a de bus de données de 32 ou 64 bits. la plupart des systèmes 32 bits auront au moins 36 bits pour prendre en charge davantage de RAM. La plupart des processeurs 64 bits ne disposent pas d'un bus de données de plus de 48 bits, ce qui représente déjà beaucoup de mémoire.

Donc, selon moi, une machine 32 bits ou 64 bits est déterminée par la taille de ses registres à usage général utilisés dans le calcul ou "la taille naturelle du mot" utilisée par l'ordinateur.

Notez qu'un système d'exploitation 32 bits est une chose différente. Vous pouvez avoir un système d'exploitation 32 bits s'exécutant sur un ordinateur 64 bits. De plus, vous pouvez avoir une application 32 bits s'exécutant sur un système d'exploitation 64 bits. Si vous ne comprenez pas la différence, posez une autre question.

Ainsi, le montant maximal de RAM qu'un processeur peut adresser est de 2 ^ (largeur du bus de données en bits)), étant donné que le mode d'adressage correct est activé dans le processeur.

Notez en outre que rien n'empêche quelqu'un d'introduire un multiplex entre un bus de données et des banques de mémoire, qui sélectionnera une banque puis adressera le RAM (en deux étapes). Vous pourrez ainsi adresser même plus de RAM, mais c’est peu pratique et très inefficace.

2
Saurabh