Architecture du Pentium 4 Le Cache L1 L'architecture du Pentium 4
est capable de gérer trois niveaux de mémoire cache : les L1 et L2 que
l'on trouve sur les modèles actuels, ainsi qu'un cache de troisième niveau,
d'une taille comprise entre 512Ko et 4Mo. Le futur Xeon MP (Gallatin),
prévu pour 2003, exploitera ainsi un cache L3 de 512Ko ou de 1Mo, cadencé
à la même vitesse que le processeur mais situé en dehors du core, un peu
à la façon du Pentium Pro. -= Le cache L1 =- Le cache L1 du Pentium 4 regroupe l'Instruction Trace Cache (dont nous
avons parlé plus haut) et le cache de données d'une taille de 8Ko. Ce
cache est de type 4-way associatif, et les lignes de cache ont une longueur
de 64 octets.
La première constatation concerne la taille du L1 du Pentium 4. En effet, depuis que les processeurs embarquent du cache, la tendance est plutôt à l'augmentation de sa taille. Pour la première fois, le Pentium 4 a un cache de taille inférieure à celui de son prédécesseur. Pourquoi cette régression ? Deux raisons majeures ont poussé Intel à intégrer un cache d'une taille aussi faible : Tout d'abord, le Pentium 4
est le premier processeur à n'exister qu'avec un cache L2 intégré au noyau.
En effet, le Pentium !!! est issu d'une architecture à cache externe (sur
cartouche), pour laquelle l'inflation de cache L1 permet de pallier les
faiblesses du cache L2 externe, bien que l'évolution du Pentium !!! ait
permis l'intégration du L2 sur le noyau. Il en est de même pour l'Athlon,
dont les premières versions utilisaient un cache L2 externe. D'autre part, nous avons vu que l'architecture NetBurst est conçue pour fournir un débit maximum à tous les niveaux, en évitant les goulets d'étranglement. A ce titre le cache L1 a un rôle essentiel à jouer, et pour éviter de créer des états d'attente dans le pipeline, il doit offrir un débit élevé un temps de réponse faible. Or, les temps d'accès du cache sont d'autant plus bas que sa taille est faible. - Débit et latenceLe cache L1 supporte une lecture et une écriture à chaque cycle. Le pipeline peut donc accéder au L1 à chaque cycle d'horloge, évitant ainsi les états d'attente. Un autre facteur déterminant est la latence, c'est-à-dire le délai séparant la demande de lecture de la disponibilité effective de la donnée. En effet, le cache est une
mémoire, et comme toute mémoire il ne répond pas instantanément à une
requête. Le temps de réponse (la latence) dépend de la taille, de sa technologie
de fabrication (un cache gravé en 0,13µ aura des temps d'accès inférieurs
à un cache gravé en 0,35µ), et également de l'algorithme de gestion du
cache (l'augmentation du niveau d'associativité augmente le temps de recherche). Le cache L1 du Pentium !!! Coppermine a une latence de 3 cycles, ce qui correspond à un temps d'accès de 3ns à la fréquence de 1GHz. Supposons pour simplifier que le L1 du Pentium 4 dispose du même temps d'accès de 3ns, celui-ci étant prévu pour fonctionner à 2GHz en 0,18µ, ce temps de réponse correspond ainsi à 6 cycles de latence à cette fréquence, et c'est environ le temps de réponse du cache L1 depuis la FPU. En résumé, les fréquences élevées
du Pentium 4 imposent une latence de cache assez élevée, ce qui peut nuire
très fortement aux performances du pipeline, lui imposant de nombreux
temps d'attente. Ceci est d'autant plus critique pour les ALUs double
vitesse, dont l'utilisation nécessite des temps d'accès très rapide. Intel
a donc imaginé un mécanisme pour réduire la latence du cache L1 depuis
les unités de l'ALU et la ramener à seulement deux cycles. Comment ont-ils
fait ? Par spéculation. En fait, l'accès au cache repose sur un mécanisme
complexe de prédiction, c'est-à-dire que le L1 est interrogé avant de
savoir quelle donnée est requise. La seconde nouveauté du cache L1 du Pentium 4 réside dans la longueur des lignes de cache : 64 octets, en comparaison à 32 octets sur Pentium !!!. Quelles sont les conséquences de lignes plus longues ?
Le dernier changement du cache L1 du Pentium 4 par rapport à celui du Pentium !!! concerne son mode d'écriture de type « Write Through » (WT), en comparaison au mode « Write Back » (WB) utilisé depuis le 486. Avant de commenter ce choix, commençons par expliquer en quoi consistent ces modes d'écriture. Lorsque le processeur doit
effectuer une écriture en mémoire, il effectue celle-ci dans le cache
L1. Afin d'obtenir une cohérence entre les données présentes dans les
différents niveaux de cache, la donnée nouvellement modifiée également
être mise à jour dans le cache de second niveau (et dans tous les niveaux
de cache suivant le cas échéant, et ce jusqu'à la mémoire centrale), ce
qui peut prendre beaucoup de temps et ralentit le fonctionnement du processeur.
Afin d'éviter cela, une technique consiste à n'écrire la donnée que dans
le cache L1, sans répercuter tout de suite le changement dans le cache
L2. L'écriture dans le L2 ne se fait alors que si la ligne de cache L1
contenant la donnée modifiée est remplacée. Dans ce cas, le cache L1 fonctionne
en mode Write Back. Ce mode est le plus efficace, d'autant plus que l'accès
au cache L2 est lent. Pourquoi le cache L1 du Pentium
4 utilise-t-il le mode WT plutôt que le WB, à priori plus rapide ? Tout
d'abord, il faut souligner que le mode WB est d'autant plus efficace que
l'accès au cache L2 est lent, et donc l'effet est moins notable dans le
cas d'un L2 intégré, qui est un postulat sur le Pentium 4 comme nous l'avons
dit précédemment. En résumé, à la différence des autres processeurs, le cache L1 du Pentium 4 n'est pas fait pour fonctionner seul, mais épaulé par un cache L2 rapide. Et comme tout le reste de l'architecture NetBurst, il a été conçu pour fournir un débit maximum en lecture.
|