web-dev-qa-db-fra.com

Pourquoi Windows affiche-t-il seulement environ 3,5 Go de mes 4 Go de RAM?

J'ai récemment mis à niveau la RAM de mon ordinateur à 4 Go. Mon installation Windows 32 bits n’affiche que 3574 Mo de mémoire. Comment faire en sorte que Windows utilise la totalité de la RAM?

90
ala

Vous ne pouvez pas:

Voir Mec, où sont mes 4 gigaoctets de RAM?

si vous souhaitez adapter la mémoire et les périphériques à une plage d'adresses de 32 bits: tous les 4 Go d'espace d'adressage disponibles ne peuvent pas être cédés à la mémoire.
Que se passe-t-il si vous achetez 4 Go de mémoire pour votre PC?
Il y a un trou dans votre carte de mémoire pour l'IO. (À présent, il ne s'agit que de 25% de l'espace d'adressage total, mais le trou est encore important.) Les 3 Go de mémoire restants seront disponibles, mais il reste un problème avec ce dernier.

La seule solution pratique consiste à installer un système d'exploitation 64 bits. Dans Windows Vista et les versions ultérieures, les clés de licence 32 bits et 64 bits sont interchangeables. Si vous pouvez obtenir le support d'installation Windows pour la version 64 bits de votre système d'exploitation, vous pouvez le réinstaller à l'aide de votre clé de licence d'origine.

70
VonC

Premièrement, Windows XP (32 bits) ne prend en charge que 4 Go. Cela ne s'applique pas uniquement à Windows XP. Au lieu de cela, il s'applique aux ordinateurs de bureau 32 bits Windows - les systèmes Linux 32 bits avec PAE et de nombreuses éditions Windows Server 32 bits prennent en charge plus de 4 Go par article lié. Vous ne verrez jamais plus de 4 Go si vous utilisez Windows XP 32 bits. Cependant, j'ai trouvé une raison plus détaillée pour laquelle votre système affiche moins de RAM disponible que ce qui est réellement installé.

De Le problème de RAM 3GB-not-4GB (blog Microsoft MSDN):

En raison d'une décision architecturale prise il y a longtemps, si vous disposez de 4 Go de RAM physique, Windows ne peut signaler qu'une partie des 4 Go physiques de RAM (la plage allant d'environ 2,75 Go à 3,5 Go selon sur les périphériques installés, chipset et BIOS de la carte mère).

Ce comportement est dû aux "réservations mappées en mémoire IO". Ces réservations recouvrent l'espace d'adressage physique et masquent ces adresses physiques afin qu'elles ne puissent pas être utilisées pour la mémoire de travail. Ceci est indépendant du système d'exploitation exécuté sur la machine.

Les morceaux importants d'espace d'adressage inférieur à 4 Go (l'adresse la plus élevée accessible via 32 bits) sont réservés pour une utilisation par le matériel système:

  • BIOS - incluant la prise en charge d'ACPI et de vidéos existantes
  • Bus PCI avec ponts, etc.
  • Le support PCI Express réservera au moins 256 Mo, jusqu'à 768 Mo en fonction de la mémoire installée sur la carte graphique.

Cela signifie qu'un système typique peut voir entre environ 256 Mo et 1 Go d'espace d'adressage inférieur à 4 Go réservé à une utilisation matérielle à laquelle le système d'exploitation ne peut pas accéder. Les spécifications des jeux de puces Intel expliquent assez bien les plages d’adresses réservées par défaut. Dans certains cas, il est indiqué que 1,5 Go est toujours réservé et donc inaccessible à Windows.

Il y a plus d'informations si vous consultez la source. Cependant, vous pourrez peut-être tirer parti des 8 Go installés si vous suivez ces instructions .

Parlant d'expérience personnelle, ce n'est pas un nouveau problème. J'ai rencontré ce même problème il y a quelques années lorsque j'ai construit un système Windows Vista 32 bits 4 Go lors de la sortie de Vista. Il y avait d'innombrables messages de forum en ligne liés à ce même sujet.

Lisez également Microsoft KB 929605 - La mémoire système indiquée dans la boîte de dialogue Informations système de Windows Vista est inférieure à celle attendue si 4 Go de RAM sont installés .

8
SgtOJ

L'ancienne carte mère ne supportait que 4 Go de RAM physique, les plus modernes en supportent beaucoup plus. Le processeur Intel P4 peut toujours traiter plus de 4 Go (en utilisant quelque chose appelé Extension d'adresse physique ou PAE)

Microstoft a pris la 'décision marketing' de ne pas prendre en charge plus de 4 Go d'espace physique dans les versions 'clientes' de toutes les versions 32 bits de ses systèmes d'exploitation, ce qui inclut toutes les versions de Windows 8 à W2K à Windows 8 bits (si vous visitez MS KB). vous remarquerez que les versions 32 bits du serveur peuvent en supporter beaucoup plus - jusqu’à 128 Go avec la "Enterprise Edition" 32 bits, c’est pourquoi un "bon" système d’exploitation 32 bits (Linux, etc.) sur le même matériel peut toujours accéder à TOUT la RAM physique.

(note latérale - Les utilisateurs de Win7 32 bits en ont tellement marre de cette limite "stupide" qu’ils ont "piraté" le Kernal pour permettre l’accès à la totalité de la physique RAM .. inutile de dire que cela casse votre licence. effectivement illégal aux États-Unis (DCMA)

Windows XP 32 bits "réserve" une partie de l'espace d'adressage local 4 Go pour l'utilisation du pilote. Il n'y a aucune raison pour que vous ne puissiez pas "adresser" physique RAM au-delà de 4 Go (à l'aide de PAE), bien que de nombreux pilotes plus âgés au moment de Windows XP Pro ne l'aient pas fait et vous obtiendrait une erreur "BSOD" (les conducteurs modernes utilisent correctement PAE et IN THEORY, rien n’explique pourquoi ils ont besoin de plus de 32 Mo de pages d’espace "lo" (en tant que "fenêtre") au total, même pour prendre en charge une carte graphique 2 Go ( les 2 Go seront dans l'espace 'hi', c'est-à-dire au-dessus de 4 Go)

Dans XP SP2, MS a presque triplé la quantité d’espace d’adresse "réservé" aux pilotes dans le but d’éliminer les BSOD et c’est depuis (MS ne veut pas "déboguer" les pilotes == ils veux vous vendre le système d'exploitation 64 bits à la place). Le matériel réel n'a pratiquement aucun effet sur cet espace "réservé".

Ainsi, si vous disposez de 4 Go ou plus de RAM physique, le plus XP Pro sp2 + visible est d'environ 3,25 Go .. le reste PEUT être accessible à l'aide de différents RAM pilotes de disque (non disponibles). le MS un bien sûr) = aller chercher quelque chose qui utilise le 'espace d'adresse invisible' ou 'un espace haut de 4 Go' sur XP Pro) .. en utilisant le 'manquant' .75Gb dans le cadre de votre 'virtuel "mémoire" peut accélérer votre système ...

Notez que le commutateur/3G peut permettre aux applications 32 bits d’accéder jusqu’à 3 Gb sur un système d’exploitation 32 bits (si l’indicateur LargeAddressAware est défini dans leur en-tête .exe. Dans ce cas, elles peuvent accéder jusqu’à 4 Gb sur un système d’exploitation 64 bits). sur XP, vous devez également spécifier/USERVA pour éviter que le système d’exploitation ne soit "vidé" de RAM :-)

3
steve b

Si vous utilisez Windows XP 32 bits, ce n'est pas possible. Comme il n'y a pas assez d'espace d'adressage disponible pour utiliser la RAM supplémentaire

La meilleure solution serait de passer à une version 64 bits de Windows car elle prend en charge plus de 4 Go de RAM.

3
Shaharyar

Comme les autres l'ont dit, ce n'est pas possible.

Explication:

Chaque morceau de mémoire a une adresse. Le système d'exploitation spécifie la longueur de l'adresse. Pour les systèmes d'exploitation plus anciens, la longueur de l'adresse est de 32 bits, ce qui permet uniquement 2 ^ 32 (4 294 967 296) adresses. Maintenant, en regardant ce nombre, il peut sembler que votre système d'exploitation devrait prendre en charge 4 Go, mais tous les autres matériels (notamment le RAM vidéo de votre carte vidéo) dotés de mémoire interne sont également mappés dans cet espace d'adressage.

C'est comme si vous essayiez de distribuer 1 200 000 numéros de téléphone à six chiffres.

3
drby

Si vous souhaitez utiliser l'intégralité de 4 Go, la seule option consiste à effectuer une mise à niveau vers un système d'exploitation 64 bits:

  • Windox XP 64
  • Windows Vista 64
  • Linux
  • Max OS/X (ok, vous aurez peut-être aussi besoin d'un nouveau PC)

Le système Windows XP normal n’est que de 32 bits, ce qui limite la mémoire à 3,5 Go maximum. Consultez le lien publié par VonC pour plus de détails sur ce sujet.

0
FrankS

C'est une question plutôt compliquée car il faut plusieurs composants pour résoudre le problème. Ces composants sont:

  • Unité centrale de traitement
  • Unité de contrôle de mémoire
  • BIOS/(U) EFI
  • Système opérateur
  • Application

Le dernier élément ne concerne pas directement le problème, mais je l’ai ajouté par souci d’exhaustivité.

En résumé, tous les composants ci-dessus doivent prendre en charge plus de 4 Go de mémoire pour réussir.

Unité centrale de traitement

Commençons par un processeur. Mais d’abord, il est important de noter qu’un processeur n’a aucune capacité magique à tiliser aucune mémoire du tout. Au lieu de cela, il pourrait simplement utiliser accès n'importe quel adresse dans son espace adressable. Maintenant, voici la chose-bitness. La CPU 32 bits est capable de accès _ {adresses dans une plage de 0 à 4 Gio. Cette plage doit cependant contenir non seulement la RAM, la ROM, SMRAM , , tableau de remappage d'adresses graphiques mais aussi toutes les entrées mappées en mémoire requises et bien d’autres, qui pourraient nécessiter une partie importante de cette plage d’adresses . En conséquence, il est tout à fait possible que certaines adresses mémoire soient masquées par ces utilisations et ne soient donc pas disponibles pour les opérations sur RAM. Pour récupérer de la mémoire cachée, il est nécessaire d’étendre la CPU espace d’adresse accessible. En cas de CPU 32 bits , une extension d'adresse physique peut vous aider. Ce qui permet adressage jusqu'à 64 Gio. Le processeur 64 bits fonctionnant en mode natif 64 bits est par défaut capable de accéder} jusqu'à 16 EiB, ce qui est assez énorme et ne nécessite pas de telles astuces. Par contre, il est peu pratique pour un processeur 64 bits d’utiliser un adressage 64 bits. En réalité, leur bus d’adresses reste limité à une plage inférieure à 16 EiB.

Unité de contrôle de mémoire

Initialement, il était situé dans Northbridge , mais a été transféré sur la puce de processeur par AMD en commençant par leurs processeurs AMD64 et par Intel avec leurs processeurs Nehalem. Même si une CPU avec PAE est capable de accéder 64 GiB par elle-même, il lui faut toujours un MCU pour accéder à la RAM. Pour résumer, une CPU accédant une adresse particulière reçoit sa réponse du périphérique PCI, du flash ROM du BIOS ou du MCU, si l'adresse demandée réside dans la RAM, etc. Cependant, il n’est pas rare qu’un MCU (que ce soit dans Northbridge ou dans un processeur) supporte beaucoup moins espace adressable que 64 GiB pour des raisons marketing, par exemple.

BIOS/(U) EFI

Le BIOS/(U) EFI est également important car il est de leur devoir de configurer le matériel avant que quoi que ce soit puisse fonctionner. Ils sont notamment chargés de mapper tout le processeur espace adressable avec des plages de mémoire de périphériques matériels, de bus, RAM, etc. Fait intéressant, il se peut que l’ensemble RAM soit scindé en plusieurs morceaux et cartographié à plusieurs endroits non contigus disponibles. Le problème avec le BIOS est que les développeurs ne peuvent pas s'attendre à plus de 3 GiB d'utilisation de RAM au sein de leur système. De ce fait, le BIOS ne mappera pas correctement toute la mémoire à utiliser. Très probablement, cela n'arrivera pas à (U) EFI.

Système opérateur

Le système d'exploitation devrait également prendre en charge l'adressage de plus de 4 GiB de mémoire. Pour être plus spécifique, il convient de configurer un processeur pour utiliser PAE. Certains systèmes d'exploitation 32 bits sont parfaitement capables d'utiliser PAE et d'accéder à plus de 4 Go, d'autres ont une limite logicielle en termes de mémoire, même s'ils permettent à PAE de renforcer la sécurité (Windows XP, par exemple). Encore une fois, les systèmes d’exploitation 64 bits n’ont naturellement pas de telles difficultés et supportent normalement plus de 4 GiB de mémoire.

Application

Le dernier point provient d'un monde différent, puisque les applications fonctionnent généralement dans un espace d'adressage virtuel , je l'ai ajouté par souci de complétude. Néanmoins, la compilation nécessite quelques étapes supplémentaires pour que l’application puisse utiliser plus de mémoire. Par défaut, les applications 32 bits ne peuvent utiliser que 2 GiB de mémoire. La même application 32 bits peut utiliser adresse jusqu'à 4 GiB de mémoire, à condition que le système d'exploitation le prenne en charge et qu'il active le PAE du processeur. Plus spécifiquement, il pourrait tiliser jusqu’à 3 GiB de mémoire, l’autre 1 GiB serait adressable en tant que bibliothèques communes et noyau OS, mais ne serait pas accessible en écriture (cela dépend finalement du système d’exploitation). l’architecture plutôt que l’application elle-même). Là encore, les applications 64 bits prennent en charge en mode natif l’adressage de plus de 4 GiB de mémoire et ne rencontrent pas de tels problèmes au départ.

Pour mettre tout cela en perspective, considérons plusieurs exemples.

Prenez en compte contrôleur de mémoire Intel® 82945G . Le site Web d'Intel indique qu'il ne prend pas en charge PAE et est limité à 4 Go de RAM. Permet de consulter le paragraphe 9 System Address Map de la fiche technique. Il a beaucoup d'informations. Le plus intéressant est Figure 9-3. Main Memory Address Range: Figure 9-3. Main Memory Address Range et le paragraphe 9.2 Main Memory Address Range (1 MB to TOLUD), qui se lit comme suit:

Cette plage d'adresses va de 1 Mo au sommet de la mémoire physique que le (G) MCH est autorisé à accéder (comme programmé dans le registre TOLUD). Tous les accès aux adresses comprises dans cette plage sont transférés par le (G) MCH vers la mémoire principale, à moins qu’ils ne tombent dans la mémoire optionnelle TSEG, le trou optionnel ISA ou la mémoire VGA volée éventuellement IGD. Le (G) MCH fournit un espace de décodage d'adresse de mémoire principale maximal de 4 Go (2 Go pour le 82945GC/82945GZ/82945PL). Le (G) MCH ne remappe pas l'espace mémoire APIC ou PCI Express. Cela signifie que lorsque la quantité de mémoire physique occupée dans le système atteint 4 Go (2 Go pour le 82945GC/82945GZ/82945PL), il y aura une mémoire physique existante, non adressable et donc inutilisable par le système.

Comme il est dit, comme il ne supporte pas PAE, il est finalement incapable de remapper PCI et tous les autres MMIO ci-dessus 4 Go, donc une partie de la mémoire sera occultée et inutilisée. Ce qui signifie que même si elle est utilisée avec une CPU prenant en charge l'adressage 36 bits, la mémoire supérieure à 4 GiB sera toujours indisponible et une partie de la mémoire proche de 4 GiB sera aussi être inutilisé.

Inversement, considérons le contrôleur de mémoire Intel® 82955X , qui est lié au précédent, mais il est spécifié pour prendre en charge 8 Go contrairement au précédent! Le paragraphe 2.1 Host Interface Signals de la feuille de données suggère qu’il utilise un bus d’adresse 36 bits vers la CPU, ce qui est un bon signe. Le paragraphe 7 System Address Map contient d'autres informations. Comparez Figure 7-1. System Address Ranges à celui que nous avons vu auparavant: Figure 7-1. System Address Ranges Ceci suggère clairement qu'il est capable d'utiliser plus de 4 GiB de RAM, à condition qu'il soit utilisé avec le CPU également capable d'un adressage sur 36 bits. Il convient également de noter que le paragraphe 7 System Address Map indique que MCH supports 64 GB of addressable memory space. Toutefois, il est précisé que le maximum tilisable RAM est limité à 8 Go. Cela déclare encore une fois la différence entre adressable _ et tilisable comme je voulais le transmettre dans la section CPU.

Pour conclure, je voudrais noter que deux chipsets liés ont en fait une énorme différence dans la gestion de la mémoire.

Permet d'inspecter les processeurs Intel® Pentium® Extreme Edition 840 . Il prend en charge le jeu d'instructions 64 bits, mais ne prend pas en charge PAE. Ce qui signifie que s'il est exécuté en mode 32 bits, il ne pourra pas utiliser plus de 4 GiB de RAM (corrigez-moi si je me trompe avec cette hypothèse). Permet de vérifier la fiche technique et la table Table 4-3. Signal Description. Même si cette CPU est compatible 64 bits, elle est toujours limitée par son bus d'adresses de 36 bits, ce qui la limite à la plage d'adresses accessible allant de 0 à 64 Gio.

Examinons maintenant un processeur plus récent. Prenons le processeur Intel® Core ™ i7-7700 par exemple. Il est annoncé pour prendre en charge jusqu'à 64 Go de RAM. Maintenant, vérifions la fiche technique de celui-ci. Le paragraphe 2.3 System Address Map nous convainc que la plage adressable de cette CPU va de 0 à 512 GiB en raison du bus d'adresse 39 bits. Notez qu’il est encore loin de la plage théorique de 16 EiB pour un CPU 64 bits. De manière surprenante, cela indique en outre que cette unité centrale prend en charge jusqu'à 32 GiB sur tilisable _ RAM maximum (contrairement à 64 Go sur le site Web). Il y a aussi une image d'intérêt ici Figure 2-2. System Address Range Example: Figure 2-2. System Address Range Example Cela illustre bien le problème de l'observation de la mémoire par les périphériques PCI, etc. Il suggère également un moyen de résoudre ce problème en mappage une plage allant de real RAM vers la plage d'adresses supérieure dans la plage CPU -adressable. Récupérant ainsi cette mémoire cachée pour une utilisation. Notez que ce remappage est effectué par BIOS/(U) EFI lors de l’initialisation matérielle et c’est précisément pour cette raison que j’ai inclus BIOS/(U) EFI dans la liste ci-dessus.

J'ai pris des produits Intel comme exemples, mais il en va de même pour AMD.

Voyons maintenant comment les systèmes d’exploitation sont impliqués. Le noyau Linux inclut la prise en charge complète du mode PAE à partir de la version 2.3.23 et il est parfaitement possible d’avoir plus de 4 GiB de mémoire tilisable avec le noyau Linux sur un système 32 bits. Cependant, soyez conscient d'un problème indéterminé avec le noyau Linux 32 bits sur un système comportant plus de 4 GiB de RAM sur du matériel (dans mon expérience, cela a quelque chose à voir avec les fusillades TLB). Quoi qu'il en soit, Wikipedia a une bonne information sur le support PAE . Il est intéressant de noter que Windows XP est limité à 4 Go, alors que Windows Server 2003 Enterprise/Datacenter SP2 est capable de 64 Go maximum. Idem pour les autres paires Windows Desktop-Server.

Comme vous pouvez le constater, il existe de nombreuses combinaisons parmi les composants répertoriés et, dans certains cas, le remplacement d'un processeur ou d'un système d'exploitation peut s'avérer utile. Il est beaucoup plus difficile de traiter avec BIOS/(U) EFI ou MCU car le premier est propriétaire et intégré au système et est difficilement modifiable, le dernier est intégré au processeur ou soudé à bord.

0
PF4Public

Si vous utilisez des graphiques intégrés, vous pouvez le désactiver, ce qui signifie que le système pourra traiter davantage de mémoire vive de votre système.

Mais la meilleure solution est sans aucun doute d’obtenir un système d’exploitation x64.

Aucune raison pas trop de toute façon. La plupart des programmes fonctionnent en x64 avec XP/Vista/7 ayant une couche d'émulation x86. Ce sont juste les drivers qui pourraient être le problème.

0
Blam