Quelle quantité de RAM peut-on réellement exploiter ?

32 bits : goulets d’étranglement

Les versions 32 bits (x86) de Windows XP, Vista et 7 ne peuvent pas gérer plus de 4 Go de RAM (voir notre article). Certes on peut contourner cette limitation avec les modes PAE, modifications de registre et différentes options au démarrage mais le résultat n’est pas satisfaisant. A vrai dire, c’est même prendre le risque de générer une instabilité voir un crash système.

On sait par ailleurs qu’un programme 32 bits ne peut pas adresser plus de 2 Go de RAM, de même que les OS 32 bits ne, gèrent que 3,25 Go voir moins dès lors que la quantité de RAM installée excède les 4 Go. Si Vista et 7 afficheront bien les 4 Go dans les informations système, c’est un effet marketing : la mémoire « manquante » est réservée par l’OS aux programmes qui pourraient être incompatibles avec un OS 64 bits. Par ailleurs, une fraction de la mémoire système est nécessaire à la carte graphique et contrairement à l’idée répandue, cette fraction n’est pas égale à la quantité de GDDR embarquée sur la carte graphique.

Toutes les cartes graphiques PCIe ont un gestionnaire de mémoire, le GMP (Graphics Memory Page table), dont l’équivalent  pour les modèles AGP est le GART (Graphics Address Remapping Table). Ceux-ci permettent de mapper certaines pages mémoire du système vers l’espace adressable de la carte graphique, permettant ainsi au GPU d’accéder à des sous-ensembles de cette même mémoire système accessibles au GPU dès que nécessaire. De même, le système doit pouvoir adresser la mémoire embarquée sur la carte graphique.

La fraction de RAM allouée à ce mappage dépend non seulement de la quantité totale de GDDR sur la carte graphique (elle s’en rapproche mais ne l’égale pas), mais aussi de ce que le système peut dégager de son propre tampon mémoire pour devenir un tampon mémoire externe dédié aux graphismes.

On lit bien souvent sur les forums que la totalité de la GDDR est reflétée dans la mémoire système, ce qui est ni plus ni moins qu’une légende urbaine.

Le fichier d’échange : quand la RAM ne suffit plus

Rappelons que le fichier d’échange (swap file) permet à un système d’exploitation de pallier à un manque de RAM en utilisant tout ou partie un périphérique de stockage comme espace adressable de manière à éviter les erreurs et dépassement des capacités de traitement. L’OS gère par ailleurs la mémoire par priorités, puisque les données nécessaires aux processus en cours sont stockées dans la RAM.

Dans les situations où les ressources mémoires deviennent critiques, l’OS ajuste la taille de sa mémoire système adressable grâce au fichier d’échange pour aller au-delà de la quantité de RAM installée et ainsi traiter les requêtes qui excèderaient la RAM seule. La mémoire virtuelle désigne quant à elle le couple RAM + fichier d’échange.

Windows a le mérite de stocker les données relatives aux programmes minimisés ou en veille dans le fichier d’échange, ce qui libère un maximum d’espace RAM pour les programmes actifs mais pose un problème évident : le débit d’un disque dur est sans commune mesure avec celui des barrettes mémoire. Les SSD ont partiellement comblé l’écart, mais le problème général demeure d’autant plus que les accès répétés au fichier d’échange sont une hantise pour les SSD qui peuvent voir leurs performances baisser dans ce cas.

Le fichier d’échange nous intéresse énormément puisque grâce à lui, la mémoire virtuelle peut gérer 8 Go de RAM voir plus, et ce même avec les versions 32 bits de Windows. Toutefois, on perd donc en performances vu les débits des disques durs.

Le meilleur des deux mondes

Comment dépasser la barrière des 4 Go sans faire de sacrifices du côté des performances ? C’est tout à fait possible en créant un RAM-disque que l’OS reconnaitra comme périphérique de stockage, lequel sera consacré exclusivement au fichier d’échange. Bien que ce périphérique de stockage particulier s’appuie des barrettes de mémoire, il sera moins véloce que de la RAM directement accessible dans un environnement 64 bits puisque les données devront être copiées du fichier d’échange vers la mémoire avant de pouvoir être utilisées. Par ailleurs, il faut aussi avoir des logiciels qui permettent de gérer le RAM-disque, que nous allons détailler maintenant.