Dans cette rubrique, nous allons essayer de rendre compréhensible un sujet largement traité dans le ­magazine. Nous pourrons ensuite vous renvoyer vers celle-ci quand les concepts seront évoqués. Et cette fois, nous allons parler de mémoire cache.

Vous verrez souvent dans ce magazine des termes comme « mémoire cache de niveau 1, niveau 2, etc. » (parfois aussi L1, L2, L3, etc., le L signifiant level, niveau en anglais). Mais avez-vous une idée du fonctionnement de ces derniers ? Nous n'allons pas entrer dans les détails, mais vous proposer une métaphore qui permet d'expliquer les grands principes. Le comportement exact n'est pas tout à fait celui présenté, mais en une page (et pour comprendre), ça devrait être assez clair.

Nous allons considérer que le CPU est un client français dans un restaurant, qui va demander du pain. Sans mémoire cache, le serveur sort du bâtiment et court à la boulangerie du coin chercher une baguette, qu'il va découper. La boulangerie – la RAM – en a beaucoup, mais il faut du temps pour le déplacement. Ajoutons une mémoire cache de niveau 1, proche du CPU. Pour l’analogie, imaginez une desserte qui contient un panier de pain déjà découpé. Si le client en demande, il est accessible rapidement (tout est prêt) mais la desserte ne contient que quelques paniers. Le cache L1 est en effet petit – quelques dizaines de ko – mais rapide et accessible rapidement. Assez vite, les fabricants de CPU ont développé le cache L2, entre la RAM et le L1. Pour le serveur, c'est une armoire dans la cuisine qui stocke du pain déjà coupé. Si la desserte est vide, il doit donc se déplacer dans la cuisine (ce qui induit un peu de temps d'attente) pour la remplir et servir le client. S'il y a plusieurs clients (et plusieurs serveurs), chacun d’eux dispose de sa propre armoire. Face au L1, le L2 possède une latence un peu plus élevée et une capacité plus conséquente (de l'ordre de la centaine de ko), tout en restant souvent lié à un cœur précis (un client dans notre exemple).

LA RAM
Le cache L1
Le cache L2

Le cache L3 est partagé entre plusieurs cœurs, possède une latence plus élevée mais offre une plus grande capacité.

Maintenant, le L3. Si un serveur n'a plus de pain sur sa desserte et que son armoire en cuisine est vide, il doit aller dans la réserve. Elle contient beaucoup de pain, mais il faut découper les baguettes, les mettre dans les paniers et éventuellement remplir l'armoire (voir encadré) et la desserte. Même s'il y a plusieurs serveurs, il n'y a généralement qu'une réserve. Dans les architectures modernes, le cache L3 est partagé entre plusieurs cœurs (le choix dépend de l'architecture), possède une latence plus élevée mais offre une plus grande capacité (de l'ordre du Mo). Nous pourrions continuer la démonstration avec le L4, mais il est plutôt rare : la majorité des CPU se limite à trois niveaux. Nous espérons que la métaphore vous a permis de comprendre dans les grandes lignes le fonctionnement des caches.

Le cache L3

Inclusif, exclusif

Vous trouverez parfois les mots inclusif et exclusif dans nos textes. Le premier n'indique pas que le serveur est non-binaire (ce serait un comble pour un CPU) mais que les différents niveaux de cache contiennent les mêmes données. Dans notre exemple, si le serveur doit aller chercher du pain dans la réserve, il en ramène aussi pour l'armoire et la desserte, en perdant un peu de temps au passage. Dans un cache exclusif, il conduit directement le pain au client (donc plus rapidement) mais si un client demande du pain peu après, il devra retourner dans sa réserve.