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

Quelle mémoire pour les softs ?

Un autre point à vérifier est la mémoire physique réellement disponible pour une application. Contrairement à ce que l'on pourrait croire au premier abord, un PC doté de 4 Go de RAM ne permet pas nécessairement à une application de disposer de 4 Go de mémoire pour son usage.

Le cas Windows

Windows (par défaut) divise la mémoire utilisable par un programme en deux zones : une de 2 Go pour le programme et une autre de 2 Go pour le noyau de Windows. Il est possible, depuis Windows NT 4.0, de changer l'attribution et de passer à 3 Go pour les applications et 1 Go pour le système.  Attention, avec cette option (le /3GB dans le boot.ini), la mémoire vive est limitée à 16 Go, même en mode PAE (c'est essentiellement un problème sur les gros serveurs encore sous un Windows 32 bits). Notons que seules certaines applications sont compatibles (elles sont dites « LargeAddresseAware ») car elles nécessitent d'avoir été programmée de façon spécifique, avec une gestion des pointeurs sur 32 bits et que le programmeur doit avoir explicitement compilé son application avec le support de la technologie. Point à prendre le compte, la gestion sous Windows en 64 bits est différente : la mémoire reste divisée en deux parties, mais nettement plus grandes : 8 To pour le système et 8 To pour les applications. Petite différence entre les versions 32 et 64 bits, les applications LAA disposent de 4 Go sous Windows 64 bits, ce dernier ne se réservant pas une partie de l'adressage 32 bits (étant donné qu'il travaille en 64 bits).

On se retrouve donc avec plusieurs cas : sous Windows 32 bits, une application peut disposer de 2 Go (cas classique) ou de 3 Go (avec l'option /3GB). Sous Windows 64 bits, les applications ont 2 Go (32 bits), 4 Go (applications 32 bits LAA) ou 8 To (applications 64 bits).

Les applications LargeAddressAware

Un exemple classique d'applications où l'option intéressante est Suprême Commander : ce jeu est compilé (dans ses dernières versions) pour utiliser le LargeAddressAware et un joueur sous Windows 64 bits dispose donc de plus de mémoire pour le jeu qu'un joueur resté sous Windows 32 bits. Dans la pratique, il est donc possible de tirer parti de cette différence : dans une partie très longue, le jeu à une certaine tendance à planter s'il n'a plus de mémoire disponible et un joueur sous Windows 64 bits a plus de mémoire, donc va planter plus tard qu'un joueur sous Windows 32 bits et donc gagner. D'autres jeux, comme Flight Simulator X, sont aussi tout à fait à même de profiter du gain en mémoire disponible.

Transformer un programme

Point intéressant, il est possible de transformer un programme classique en une version capable de prendre en charge la mémoire supplémentaire. En fait, pour peu qu'un programme ait été programmé avec des addresses sur 32 bits (ce qui n'est pas nécessairement le cas), un simple flag normalement ajouté à la compilation permet d'utiliser la mémoire supplémentaire. Pour les programmes qui n'ont pas été compilé avec cette option, il existe LaaTido. Ce programme permet de modifier l'exécutable d'un programme pour activer le LargeAddressAware. Attention, certains programmes n'acceptent pas la modification et ce logiciel est donc à utiliser à vos risques et périls.