Selectionnez un article :

Selectionnez une page :

Architecture du Pentium 4
Le cache L2

Le rôle du cache L2 du Pentium 4 est particulièrement critique. A la différence des autres processeurs, le L2 du Pentium 4 n'est pas une simple extension du L1, mais les deux caches jouent un rôle complémentaire, car comme nous l'avons vu, le cache L1 s'appuie énormément sur le L2.
Le cache L2 est également la seule différence (d'un point de vue architecture) entre les deux modèles de Pentium 4, le Willamette et le Northwood. Voyons les caractéristiques du cache L2 sur ces deux modèles, comparées à celles du L2 du Pentium !!!-S.

Pentium !!!
Coppermine
Pentium !!!-S
Tualatin
Pentium 4
Willamette
Pentium 4
Northwood
Taille 256Ko 512Ko 256Ko 512Ko
Associativité 8-way 8-way 8-way 8-way
Taille d'une ligne 32 octets 32 octets 128 octets (2x64) 128 octets (2x64)
Taille du bus d'échange avec le L1 256 bits 256 bits 256 bits 256 bits
Latence 4 cycles 5 cycles 7 cycles 7 cycles


Le cache L2 du Pentium 4 utilise la technologie ATC (Advanced Transfer Cache), utilisée sur les Pentium !!! Coppermine et Tualatin. Cela signifie qu'il est intégré au noyau et fonctionne à la vitesse du processeur, et que le bus d'échange est large de 256 bits. Le L2 est accessible tous les 2 cycles, et le constructeur annonce une latence de 7 cycles, à comparer avec les 4 cycles du Pentium !!! et les 5 cycles du Pentium !!!-S.

Le cache L2 du Pentium 4 est de type inclusif, tout comme il l'était sur le Pentium !!!. Dans ce mode de fonctionnement, en cas d'échec en lecture sur le cache L1, une ligne de cache du L2 est dupliquée vers le cache L1 (si bien sûr la donnée recherchée est présente dans le L2). Il en résulte que certaines lignes du L2 sont redondantes avec les lignes du L1. Ainsi, la taille du cache L2 « efficace » (c'est-à-dire susceptible de répondre à un échec du L1) est tronquée du nombre de lignes dupliquées dans le L1, soit dans le pire des cas la taille totale du L1. Il en découle que plus le L1 est grand, moins le L2 est efficace. Et cela tombe bien, le L1 du Pentium 4 n'est que de 8Ko.

L'alternative à cette méthode est la gestion exclusive, utilisée par AMD sur sa gamme à cache intégré (Athlon et Duron). Dans ce mode, en cas d'échec en lecture sur le cache L1, une nouvelle ligne de cache est chargée, et la ligne ainsi remplacée est copiée dans le L2. Le L2 ne contient alors que des données évincées du L1. Ainsi, aucune donnée n'est redondante, et la taille de cache effective est alors égale à la somme des L1 et L2.
L'inconvénient majeur du mode exclusif est que le cache L1 ne trouve une donnée dans le L2 que si celle-ci fait partie des données évincées récemment. Il en résulte que le L2 perd beaucoup de son efficacité.

Le L2 du Pentium 4 utilise des lignes de cache de 128 octets, soit quatre fois plus longues que sur Pentium !!!. Ces lignes de cache sont « sectorisées », c'est-à-dire qu'elles sont composées de deux secteurs de 64 octets chacun. Cela permet en fait de moduler le comportement du cache. En effet, en cas de mise en cache depuis la mémoire centrale, ce sont des blocs de 128 octets qui sont remontés, et ce afin de limiter les accès au bus mémoire. Cependant, comme on l'a vu dans le paragraphe précédent, le cache L1 utilise des lignes de 64 octets, et donc les échanges entre les deux caches ne peuvent s'effectuer que par paquets de 64 octets.

Les conséquences de lignes de cache plus longues sont les mêmes que celles expliquées dans le paragraphe précédent sur le cache L1, à savoir des accès moins fréquents à la mémoire, mais également un cache davantage pollué par des données inutiles, et surtout un taux d'échecs plus élevé. Ces effets indésirables sont d'autant plus marqués que le cache L2 et de taille faible, et à ce titre le Pentium 4 Willamette fait figure de lanterne rouge.

Mais Intel pense à tout :) et afin de réduire le taux d'échec, le Pentium 4 possède un mécanisme repris plus tard sur la gamme Tualatin : le prefetching hardware.


- Le prefetching

Le prefetching consiste à anticiper les données et les instructions dont le processeur aura besoin, et ainsi les précharger depuis la hiérarchie mémoire (le L2 ou la mémoire centrale).

Le Pentium 4 possède trois mécanismes de prefetching :

  • Un mécanisme hardware de préchargement d'instructions. Il se base sur les résultats de la prédiction de branchement pour précharger les instructions depuis le cache L2. Ce système permet d'optimiser le débit d'instructions à fournir au pipeline.

  • Un mécanisme hardware de préchargement de données. Il se base sur des modèles prédéfinis pour charger des données depuis la mémoire centrale vers le L2. C'est un mécanisme « prudent », dans la mesure où un certain nombre de conditions sont nécessaires à son déclenchement. En effet, la montée des données depuis la mémoire centrale occupe une partie de la bande passante du bus, et si celle-ci est à saturation, le prefetch le ralentira.

  • Un mécanisme software de préchargement de données. Il permet au programmeur de précharger manuellement des données dans le cache L2, en utilisant les instructions de prefetch du SSE. Seul le cache L2 est concerné, contrairement au Pentium !!! qui permet le chargement direct à son L1.