Vista ne gère-t-il que 3 Go de RAM ? Dossier « 4 Go »

Windows et la gestion du PAE

Comme nous l'avons vu, le PAE est une technologie assez courante. Disponible sur une grande partie des processeurs, elle devrait permettre de gérer plus de 4 Go de RAM sur les OS 32 bits, mais dans la pratique il n'en est rien. Intéressons-nous aux différents Windows.

Premier cas, pas de gestion

Prenons un cas simple, Windows 95 et ses successeurs (comme Windows Me). Avec ces systèmes, le PAE n'est pas pris en charge et il est donc impossible de dépasser 4 Go de RAM. En pratique, on se limite même à un peu moins : l'espace requis par la MMIO est toujours d'actualité.

Second cas : le PAE est pris en charge et utilisé

Le second cas est celui de Windows 2000 et de Windows XP avant le Service Pack 2 : le PAE est pris en charge et peut être utilisé. Avec ces deux systèmes, la mémoire officiellement prise en charge est de 4 Go (sur les versions à usage personnel) et les 4 Go de RAM sont entièrement disponibles. Microsoft utilise le PAE pour déplacer l'espace requis par la MMIO dans une zone supérieure (à la limite haute du processeur, 16 ou 64 Go). Attention tout de même à un point : le PAE doit être activé manuellement dans le boot.ini (en plaçant un /PAE derrière le nom du système à démarrer) et un processeur compatible doit être utilisé. Avec ces deux systèmes, on a donc 4 Go de RAM physique et un espace d'adressage plus grand que ces 4 Go.

Troisième cas : le PAE est pris en charge et n'est pas utilisé

Sous Windows XP Service Pack 2 (et 3) et Vista, Microsoft active d'office le PAE mais ne l'utilise pas. Pourquoi activer le PAE ? Parce que le NX bit, une technologie introduite avec le SP2, nécessite l'activation du PAE pour fonctionner (le NX bit utilise le bit 63 de la table de page, qui n'existe qu'en mode PAE et pas en 32 bits classique). Pourquoi ne pas l'utiliser ? Parce que Microsoft s'est rendu compte que certains pilotes ne vérifiaient pas si le PAE était activé et considéraient qu'il ne l'était pas. Dans ce cas précis, le pilote allait écrire dans une zone où il pensait trouver l'espace d'adressage d'un périphérique, mais où se trouvaient en fait des données, ce qui provoque évidemment des problèmes. Les pilotes de cartes graphiques sont les plus touchés par ce problème, en partie parce qu'ils utilisent énormément les zones gérées en MMIO. En pratique, sous Windows XP SP2, SP3 et Windows Vista, on dispose donc de 4 Go d'espace d'adressage et donc une mémoire vive limitée.

Le cas Vista

Sous Windows XP, la mémoire vive disponible dépend des périphériques : si vous en avez peu et une carte graphique simple, la mémoire disponible sera plus élevée que si vous avez six cartes d'extensions et deux cartes graphiques. Sous Windows Vista, avant le SP1, le comportement est différent : Microsoft réserve automatiquement la mémoire et limite la mémoire vive disponible à 3,12 Go. Sous Windows Vista SP1, Microsoft a encore modifié le comportement : le fonctionnement reste le même, mais le système affiche bien 4 Go de RAM (au lieu de 3,12 Go auparavant). Un bon moyen d'éviter les récriminations des clients qui n'ont pas leurs 4 Go de RAM...

En 64 bits

Le denier cas est le plus simple : le 64 bits. En 64 bits, la limitation à 4 Go n'est plus de la partie, même s'il en existe d'autres. La première vient du CPU : le bus d'adresse varie de 36 à 40 bits sur les CPU 64 bits (avec un maximum théorique de 52 bits), soit entre 64 Go et 1 To. Pour les systèmes, Windows se limite en théorie à 128 Go mais en pratique, la quantité maximale de mémoire dépend de la version du système : un Vista Ultimate ou Business et un XP 64 bits se limite bien à 128 Go alors qu'un Vista Home Premium ne peut pas dépasser 16 Go et un Vista Home Basic s'arrête à 8 Go. En pratique, Microsoft place la limite maximale à la limite réellement utilisable sur une machine : Windows peut en théorie utiliser 1 To mais aucune machine ne dispose que de cette quantité de mémoire et la firme n'a pu tester que sur des machines avec 128 Go.