inform.gif (70 octets) La légende des 64 Mo

On présente souvent la limite des 64Mo comme une barrière infranchissable derrière laquelle règnent le désordre et le chaos. Ceux qui oseraient la franchir en subiraient les conséquences avec une machine devenue subitement anémique... On va tâcher ici de faire la part des choses.

La mémoire du système : Cache et mémoire principale

Nous ne parlons ici que des plates-formes les plus répandues, celles basées sur les système Pentium de Intel®.

Ces systèmes ont deux types de mémoires, la mémoire cache et la mémoire principale.
La mémoire principale collecte les instructions et les données pour les application et les systèmes d'exploitation installés sur votre PC. La mémoire principale, comme son nom l'indique, est le circuit primaire pour effectuer ces opérations. La mémoire cache est similaire à la mémoire principale mais plus petite et beaucoup plus rapide. Pour accéder à l'information, la mémoire cache requiert moins de cycles d'horloge. On dénombre deux types de mémoire cache (parfois plus sur d'autres systèmes). Le cache de niveau 1 (L1) est inclus dans le processeur tandis que le cache de niveau 2 (L2) est plus généralement localisé sur la carte mère. Bien évidemment, rien n'est aussi simple et les plus récents processeurs peuvent également avoir un cache de niveau 2 intégré.
Pour reprendre un image de la documentation Intel, prenez un charpentier. Il dispose de plusieurs outils pour accomplir son boulot. Les outils les plus fréquemment utilisés sont à portée de main mais en petite quantité, disons sur sa ceinture. Les outils les moins fréquemment utilisés, mais plus nombreux, sont dans la boîte à outils et donc plus longs à atteindre. Ici, le charpentier c'est le processeur, la ceinture est la mémoire cache et la boîte à outils est la mémoire principale.

La mise en cache (i.e."Cacheability" en anglais)

C'est ici qu'intervient la fameuse barrière des 64 Mo qui fait dire tout et n'importe quoi.

Les systèmes d'exploitation et les applications utilisent la mémoire cache pour stocker les instructions et les données sur lesquelles le processeur travaille ou est supposé travailler dans un court laps de temps. De cette manière, le CPU fonctionne beaucoup plus efficacement et le système s'en ressent. Cependant, le CPU ne se limite pas à accomplir une seule et même tâche ce qui impose que les données mises en cache soient réactualisées. Les informations nécessaires sont anticipées en fonctions des données recueillie auprès de l'OS, des applications et des chipsets. Autrement dit, les outils présent autour de la ceinture et dans la boîte à outils sont interchangeables. La mémoire centrale adresse à la mémoire cache les outils qu'elle a en stocks et dont va avoir besoin le CPU. Elle les échange contre ceux déjà présent dans la mémoire cache mais qui ne s'avèrent plus nécessaires immédiatement.

Attention, suivez-moi bien : la partie des informations qui sont adressées de la mémoire principale vers la mémoire cache est appelée la "mémoire cachable" (je préfère le terme anglais, "memory cacheable", mais je n'ai pas la traduction en français). Qu'advient-il du surplus ? De la partie de la mémoire qui n'est pas adressée au cache ? Et bien l'information nécessaire au système sera directement envoyée au CPU, sans passer par la mémoire cache, ce qui paradoxalement est beaucoup plus lent.
La limite

Tous les systèmes ont une limite quant à la quantité maximale de mémoire pouvant être mise en cache. Habituellement cette limite est de l'ordre de 64 Mo. Théoriquement, et ça se confirme en pratique, avoir une mémoire principale supérieure à 64 Mo, disons 128 comme cela devient de plus en plus fréquent avec les Pentium II et Windows 98, implique une baisse globale des performances. Certains penseront qu'en ajoutant plus de mémoire cache, disons en passant de 512ko à 1Mo, ils pourront faire sauter le verrou. C'est faux.
Parce que la limite du cache ne dépend ni de la quantité de mémoire cache, ni de celle de la mémoire principale. Ca dépend des spécifications du Chipset et du Tag RAM. En gros, Tag Ram est une petite portion de la mémoire utilisée par le cache pour savoir à quoi dans la mémoire les entrées des informations se réfèrent. En somme, c'est pour reconnaître ses petits. La taille du Tag RAM peut contrôler quelle quantité de mémoire principale peut être mise en cache.

A ce stade, je ne vais pas m'éterniser, mais illustrons ces propos d'un exemple : vous avez 64 Mo de mémoire principale, 512 ko de mémoire cache composée de lignes de 32 octets (rappel : 1 octet=8bits consécutifs, un bit renfermant soit un 0 soit un 1). Je veux dire par là qu'à chaque fois qu'une information passe par le cache, c'est un transfert de 32 octets qui s'opère. Une ligne de cache contient des informations en provenance d'une ou de plusieurs adresses. Enfin bref, 64 Mo de Ram signifie 26 lignes d'adresses, soit les adresses A0 jusqu'à A25. Ca se décompose ainsi :
A0-A4 : pour spécifier l'octet dans la ligne de cache;
A5-A18 : spécifier la ligne de cache;
A19-A25 : soit 7bits pour dire au TagRAM quelle portion de la mémoire utilise actuellement la ligne de cache. En fait 8 bits pour ce que l'on appelle le "Dirty Bit" qui sert a contrôler l'adéquation des adresses en cache et celles dans la mémoire principale en cas de changement.
Ajouter plus de mémoire conduira à solliciter une nouvelle adresse (A26) aux dépends du TagRAM. Et augmenter la taille du TagRAM n'est pas une mince affaire sur les machines que nous possédons, sans compter que l'opération n'est pas nécessairement promise au succès pour d'autres raisons.

Bref, la véritable question qui nous préoccupe est de savoir dans quelle proportion Windows va accuser le coup si l'on dépasse cette barrière de 64Mo ? On dit généralement que c'est de l'ordre de 5 % et parfois plus. Cependant il ne faut pas perdre de vue qu'un OS tel que Windows 98, présenté comme multitâches, implique de nombreuses opérations simultanées. Vous avez souvent plusieurs applications ouvertes. Avec 32 Mo, plus vous en ouvrirez et plus vite vous "planterez" Windows. En passant à 128 Mo de RAM, vous limitez substantiellement les risques de plantages du à l'épuisement de ressources. Moins vous aurez de mémoire physique, et plus le système sollicitera la mémoire virtuelle, c'est-à-dire les accès aux disques. Or, les accès aux disques seront toujours des centaines de fois plus lents qu'un accès à la RAM même non cachée. Enfin, puisqu'il faut bien parler de limite, on avouera qu'effectivement Windows 98 (tout comme Windows 95 et Windows Millenium) est bridé en matière de RAM : la limite maxi est de 512 Mo (voir ici pour plus d'explications).


Mis en ligne le 30 octobre 1998 / Dernière modification : 22-11-2000