92 votes

Pourquoi Windows ne montre-t-il qu'environ 3,5 Go de mes 4 Go de RAM ?

J'ai récemment augmenté la RAM de mon ordinateur à 4 Go. Mon installation Windows 32 bits ne montre que 3574 Mo de mémoire. Comment puis-je faire en sorte que Windows utilise la totalité de la RAM ?

1voto

PF4Public Points 336

C'est une question assez compliquée, car il faut plusieurs éléments pour la résoudre. Ces composants sont :

  • Unité centrale de traitement
  • Unité de contrôle de la mémoire
  • BIOS / (U)EFI
  • Système d'exploitation
  • Application

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

En bref, tous les composants ci-dessus doivent supporter plus de 4 Go de mémoire pour réussir.

Unité centrale de traitement

Commençons par une unité centrale. Mais d'abord, il est important de noter qu'un CPU n'a pas la capacité magique de utiliser tout mémoire du tout. Au lieu de cela, il pourrait simplement accès tout adresse au sein de son espace adressable . C'est maintenant qu'intervient la notion de bitness. Un processeur 32 bits est capable de accès à adresses dans une fourchette de 0 à 4 GiB. Cette fourchette doit toutefois tenir compte non seulement de la RAM, de la ROM et de l'espace disponible, SMRAM , Table de remappage des adresses graphiques mais aussi toutes les E/S en mémoire et bien d'autres encore, qui pourraient nécessiter une partie substantielle de cette plage d'adresses. Par conséquent, il est tout à fait possible que certaines adresses de la mémoire soient ombragé par ces utilisations et ne sont donc pas disponibles pour des opérations sur la RAM. Afin de récupérer la mémoire cachée, il est nécessaire d'étendre le CPU espace d'adressage accessible . Dans le cas d'une unité centrale 32 bits Extension de l'adresse physique pourrait aider. Ce qui permet s'adressant à jusqu'à 64 GiB. Les CPU 64 bits fonctionnant en mode 64 bits natif sont par défaut capables de accès à jusqu'à 16 EiB, ce qui est plutôt énorme et ne nécessite pas de telles astuces. Mais d'un autre côté, il n'est pas pratique pour un processeur 64 bits d'utiliser l'adressage 64 bits, donc en réalité ils sont toujours limités par leur bus d'adresse à une plage inférieure à 16 EiB.

Unité de contrôle de la mémoire

Initialement, il était situé à Northbridge Il a été déplacé sur la matrice du processeur par AMD avec ses processeurs AMD64 et par Intel avec ses processeurs Nehalem. Même si un processeur avec PAE est capable de accès à 64 GiB par lui-même, il a toujours besoin d'un MCU pour accéder à la RAM. Pour faire simple : une unité centrale accès à Une adresse particulière reçoit sa réponse soit du périphérique PCI, de la flash ROM du BIOS ou du MCU, si l'adresse demandée réside dans la RAM, et ainsi de suite. Il n'est pas rare cependant qu'un MCU (qu'il soit dans le Northbridge ou dans le CPU) supporte beaucoup moins d'adresses. espace adressable que 64 GiB pour des raisons de marketing par exemple.

BIOS / (U)EFI

Les BIOS / (U)EFI sont également importants car ils sont chargés de configurer le matériel avant que celui-ci ne puisse fonctionner. Ils sont, entre autres, responsables du mappage de l'ensemble du processeur. espace adressable avec les plages de mémoire des périphériques matériels, des bus, de la RAM, etc. Il est intéressant de noter qu'il peut arriver que toute la RAM soit divisée en morceaux et mappée à plusieurs endroits non contigus disponibles. Le problème du BIOS est que ses développeurs ne s'attendent pas à une utilisation de plus de 3 Go de RAM dans leur système et, par conséquent, le BIOS ne mappera pas correctement toute la mémoire à utiliser. Il est fort probable que cela ne se produise pas avec (U)EFI.

Système d'exploitation

Le système d'exploitation doit également prendre en charge l'adressage de plus de 4 Go de mémoire. Pour être plus précis, il devrait configurer un CPU pour utiliser le PAE. Certains systèmes d'exploitation 32 bits sont parfaitement capables d'utiliser le PAE et d'accéder à plus de 4 GiB, d'autres ont une limite logicielle sur la mémoire maximale, même s'ils activent le PAE pour une sécurité renforcée (Windows XP en est un exemple). Une fois de plus, les systèmes d'exploitation 64 bits n'ont naturellement pas de telles difficultés et supportent normalement plus de 4 Go de mémoire.

Application

Le dernier point est issu d'un monde différent, puisque les applications fonctionnent généralement dans une Espace d'adressage virtuel Je l'ai ajouté par souci d'exhaustivité. Néanmoins, il faut quelques étapes supplémentaires lors de la compilation pour que l'application puisse utiliser plus de mémoire. Par défaut, les applications 32-bit ne sont capables d'utiliser que 2 GiB de mémoire. La même application 32-bit pourrait adresse jusqu'à 4 Go de mémoire, à condition que le système d'exploitation le supporte et qu'il ait activé le CPU PAE. Plus précisément, il pourrait utiliser jusqu'à 3 Go de mémoire, les 1 Go restants étant adressables par les bibliothèques communes et le noyau du système d'exploitation, mais non accessibles en écriture (en fin de compte, cela dépend de l'architecture du système d'exploitation plutôt que de l'application elle-même). Encore une fois, les applications 64 bits supportent nativement l'adressage de plus de 4 Go de mémoire et n'ont pas de tels problèmes.

Pour mettre tout cela en perspective, prenons plusieurs exemples.

Pensez à Contrôleur de mémoire Intel® 82945G . Le site Web d'Intel indique qu'il ne prend pas en charge PAE et qu'il est limité à 4 Go de RAM. Consultons le paragraphe 9 System Address Map de la fiche technique. Elle contient de nombreuses 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 s'étend de 1 Mo à la partie supérieure de la mémoire physique à laquelle il est permis d'accéder par le MCH. accessible par le (G)MCH (tel que programmé dans le registre TOLUD). Tous les accès aux adresses à l'intérieur de cette plage sont transmis par le (G)MCH à la mémoire principale, à moins qu'ils ne tombent dans le TSEG optionnel, le trou ISA optionnel, ou le trou ISA optionnel. TSEG, le trou ISA optionnel, ou la mémoire VGA volée IGD optionnelle. Le (G)MCH fournit un espace maximum de décodage d'adresse de mémoire principale de 4 GB (2 GB pour le 82945GC/82945GZ /82945PL). La carte (G)MCH ne remappe pas l'espace mémoire APIC ou PCI Express. PCI Express. Cela signifie que lorsque la quantité de mémoire physique occupée dans le système atteint 4 GB (2 GB pour le 82945GC/82945GZ/82945PL), il y aura de la mémoire physique qui existe mais qui n'est pas encore adressable et donc inutilisable par le système.

Comme il est dit, puisqu'il ne supporte pas le PAE, il est finalement incapable de remap PCI et tous les autres MMIO au-dessus de 4 GiB, donc une partie de la mémoire sera ombragée et inutilisée. Cela signifie que même s'il est utilisé avec un CPU supportant l'adressage 36 bits, la mémoire au-dessus de 4 GiB sera toujours indisponible. et une partie de la mémoire proche de la limite de 4 GiB sera également inutilisée.

Inversement, considérons Contrôleur de mémoire Intel® 82955X qui est apparenté au précédent, mais il est spécifié pour supporter 8 GB contrairement au précédent ! Paragraphe de la fiche technique 2.1 Host Interface Signals suggère qu'il utilise un bus d'adresse de 36 bits vers le CPU, ce qui est un bon signe. Paragraphe 7 System Address Map a de plus amples informations. Comparez Figure 7-1. System Address Ranges à celui qu'on a vu avant : Figure 7-1. System Address Ranges Cela suggère clairement qu'il est capable d'utiliser plus de 4 Go de RAM, à condition qu'il soit utilisé avec un processeur également capable d'adresser sur 36 bits. Il est également intéressant de noter que le paragraphe 7 System Address Map déclare que MCH supports 64 GB of addressable memory space . Il est toutefois précisé que le maximum utilisable La mémoire vive est limitée à 8 Go. Cela met une fois de plus en évidence la différence entre adressable y utilisable comme j'essayais de le faire comprendre dans la section CPU.

Pour conclure, j'aimerais noter que deux chipsets apparentés présentent en fait d'énormes différences dans la gestion de la mémoire.

Inspectons Processeur Intel® Pentium® Extreme Edition 840 . Il supporte le jeu d'instructions 64 bits, mais pas le PAE. Ce qui signifie que s'il est exécuté en mode 32 bits, il ne pourra pas utiliser plus de 4 Go de RAM (corrigez-moi si je me trompe dans cette hypothèse). Vérifions la fiche technique et le tableau Table 4-3. Signal Description . Bien que cette unité centrale soit capable de traiter 64 bits, elle est toujours limitée par son bus d'adresse de 36 bits de large, ce qui la limite à accessible plage d'adresses allant de 0 à 64 GiB.

Examinons maintenant une unité centrale plus récente. Prenons Processeur Intel® Core™ i7-7700 par exemple. Il est annoncé comme pouvant supporter jusqu'à 64 Go de RAM. Maintenant, vérifions sa fiche technique. Paragraphe 2.3 System Address Map nous convainc que l'unité centrale adressable va de 0 à 512 GiB grâce à un bus d'adresse de 39 bits. Notez que c'est encore loin de la plage théorique de 16 EiB pour un CPU 64 bits. De manière surprenante, cela clarifie le fait que ce processeur supporte jusqu'à 32 GiB d'espace de stockage. utilisable RAM maximum (contrairement à 64 GB sur le site web). Il y a aussi une image intéressante ici Figure 2-2. System Address Range Example : Figure 2-2. System Address Range Example Il illustre bien le problème du shadowing de la mémoire par les périphériques PCI, etc. Il suggère également une façon de surmonter ce problème en cartographie une plage allant de la RAM réelle à la plage d'adresses supérieure de l'unité centrale. adressable gamme. La mémoire cachée est ainsi récupérée pour être utilisée. Notez que ce remappage est effectué par le BIOS/(U)EFI lors de l'initialisation du matériel et c'est exactement pour cette raison que j'ai inclus le BIOS/(U)EFI dans la liste ci-dessus.

J'ai pris les 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 un support complet du mode PAE à partir de la version 2.3.23 et il est parfaitement possible d'avoir plus de 4 GiB de mémoire. utilisable 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 avec plus de 4 Go de RAM sur certains matériels (d'après mon expérience, cela a quelque chose à voir avec les fusillades de la TLB). Quoi qu'il en soit, Wikipedia contient de bonnes informations sur Soutien au PAE . Il est intéressant de noter que Windows XP est limité à 4 Go, alors que Windows Server 2003 Enterprise/Datacenter SP2 est capable d'utiliser 64 Go. Il en va de même pour les autres paires Windows Desktop-Server.

Comme vous pouvez le constater, il existe de nombreuses combinaisons entre les composants répertoriés et, dans certains cas, le remplacement d'une unité centrale ou d'un système d'exploitation peut être utile. Il est beaucoup plus difficile de traiter avec le BIOS/(U)EFI ou le MCU car le premier est propriétaire et intégré au système et difficilement modifiable, le second est intégré au CPU ou soudé sur la carte.

0voto

FrankS Points 210

Si vous voulez tirer parti des 4 Go complets, la seule option est de passer à un système d'exploitation 64 bits :

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

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

0voto

IDBD Points 244

Si vous utilisez des graphiques intégrés, vous pouvez les réduire, et cela signifiera que le système pourra adresser plus de votre RAM système.

Mais, la meilleure solution est définitivement d'obtenir un OS x64.

Aucune raison de ne pas le faire 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 pilotes qui pourraient être le problème.

-4voto

user235193 Points 1

Il montre 3574 Mo de RAM car c'est la quantité de RAM LIBRE et disponible pour l'ordinateur à tout moment. Ce chiffre représente la RAM à laquelle votre ordinateur a un total accès car les programmes et les paramètres préinstallés sur le PC utilisent une quantité définie de RAM qui, dans votre cas, se trouve être de 426 Mo. Mon PC 6 Go 64 bits montre 5,8 Go de RAM disponible au lieu des 6 Go complets. Votre meilleure option serait d'envisager de mettre à niveau votre PC.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X