Téléchargez l'application
Tom's Hardware sur l'App Store
Toute l'actu informatique de référence sur votre iPhone
Oui Non

TLB

par

Depuis de nombreuses années maintenant les processeurs ne travaillent plus avec les adresses mémoire physiques mais avec des adresses virtuelles. Cette technique permet notamment d’allouer à un programme plus de mémoire qu’un ordinateur n’en dispose en réalité en ne stockant en mémoire physique que les données nécessaires à un instant donné, le reste résidant sur le disque. Lors d’un accès mémoire il faut donc effectuer une traduction entre adresse virtuelle et adresse physique, pour y parvenir on utilise une énorme table qui se charge de faire les correspondances. Le problème est que cette table est tellement importante qu’elle ne peut être stockée sur la puce, elle est donc placée en mémoire principale et peut même être paginée (une partie de la table peut ne pas être présente en mémoire).

Cette étape de traduction si elle devait être opérée à chaque accès mémoire les rendrait beaucoup trop lents, par conséquent les ingénieurs se sont reposés à nouveau sur le principe de localité en ajoutant une petite mémoire cache directement sur le processeur qui stocke les correspondances de quelques adresses accédées récemment. Cette mémoire cache est appelée tampon de traduction anticipée ou Translation Look-aside Buffer (TLB) en anglais. Intel a revu entièrement le fonctionnement de son TLB dans sa nouvelle architecture. Jusqu’à présent le Core 2 reposait sur un premier niveau de TLB de données extrêmement petit (16 entrées) mais aussi très rapide et uniquement dédié aux chargements, et sur un second niveau plus important (256 entrées) qui se chargeait des chargements si ceux-ci avaient échoués dans le TLB de premier niveau et des rangements.

Le Nehalem offre désormais deux véritables niveaux de TLB : le premier niveau de TLB est partagé entre données et instructions. Le TLB de données de niveau 1 stocke désormais 64 entrées dans le cas de petites pages (4K) ou 32 dans le cas de grandes pages (2M/4M) alors que le TLB d’instructions de niveau 1 stocke pour sa part 128 entrées pour les petites pages (inchangé depuis le Core 2) et 7 pour les grandes pages. Le second niveau est quand à lui unifié et peut stocker jusqu’à 512 entrées et ne fonctionne qu’avec des petites pages. L’objectif de cette amélioration est d’augmenter les performances des applications utilisant de grands jeux de données, tout comme avec l’introduction du prédicteur de branchement à deux niveaux on retrouve donc l’orientation serveur de cette architecture.

Revenons un instant sur le SMT vu qu’il impacte aussi les TLB. Ainsi le TLB de données de niveau 1 et le TLB de niveau 2 sont partagés dynamiquement entre les deux threads. A l’inverse le TLB d’instructions de niveau 1 est partagé statiquement pour les petites pages alors que celui dédié aux grandes pages est entièrement répliqué ce qui s’explique vu sa petite taille (on retrouve donc 7 entrées par thread).

Partager:
9
Commentaires
X
Valider

Commentaires
Lire les commentaires sur le forum
Aimame 25/09/2008 10:59
Masquer
-0+

Et la tu prend un dolipran.

Article très complet qui rejoins bien l'article d'Hardware.fr
Je suis pressé de le voir en fonctionnement ;)

Merci!

Pinkuik 25/09/2008 12:16
Masquer
-2+

Après plus de dix ans à vouloir faire mieux que les autres avec une architecture "innovante", Intel revient aux conclusions des ingénieurs de Digital Equipment Corporation : plutôt amusant...

solistice 25/09/2008 13:12
Masquer
-0+

Aimame :
Et la tu prend un dolipran. Article très complet qui rejoins bien l'article d'Hardware.frJe suis pressé de le voir en fonctionnement Merci!


C'est rare mais personnellement, je suis pressé d'acheter :)

Caabale 25/09/2008 13:15
Masquer
-0+

Citation :on retrouve donc l’instruction POCNT apparue avec le Barcelona qui permet de compter le nombre de bits différent de 0 présents dans un registre.


Grosso merdo, c'est le meme nombre que les bits egaux a 1, quoi :o

Basilic et Pistou 25/09/2008 13:23
Masquer
-0+

En binaire, oui !! :lol:

Foudge 25/09/2008 14:01
Masquer
-1+

"tout d’abord le buffer est désormais plus important puisqu’il peut stocker 28 instructions"

Ce ne sont pas des instructions mais des µops. De plus, est-ce vraiment sûr qu'un buffer de 28 *ops soit plus gros qu'un buffer de 18 instructions ?
Je me doute que ça doit dépendre des instructions, mais en moyenne ça donnerait quoi ?

Zeross 25/09/2008 14:44
Masquer
-0+

Caabale :
Grosso merdo, c'est le meme nombre que les bits egaux a 1, quoi :o



Oui dans le cas du binaire, mais disons que POPCNT est une version un peu spécifique du poids de Hamming qui recherche dans une chaîne, le nombre de symboles différents du 0 de l'alphabet utilisé. Donc j'ai gardé la définition générique ;)

Foudge :
"tout d’abord le buffer est désormais plus important puisqu’il peut stocker 28 instructions"Ce ne sont pas des instructions mais des µops. De plus, est-ce vraiment sûr qu'un buffer de 28 *ops soit plus gros qu'un buffer de 18 instructions ?Je me doute que ça doit dépendre des instructions, mais en moyenne ça donnerait quoi ?



Tout à fait c'est une bonne remarque, je le précise un peu plus loin ("Le Loop Stream Detector du Nehalem ne stocke donc plus des instructions x86, mais des µop.") et je voulais souligner qu'effectivement le gain pratique était plus faible que ce qu'il semblait au premier abord mais c'était difficile à évaluer.

La grosse majorité des instructions x86 ne génèrent qu'une seule µop c'est la raison pour laquelle il y a 3 décodeurs simples qui ne peuvent traiter que ces instructions contre un seul pour les instructions générant de 2 à 4µop. Comme tu le notes le rapport instruction x86 / µop dépend fortement de l'application, la moyenne qui circule est de 1.36 µop générées par instruction x86. Dans ce cas le buffer est en fait à peine plus grand que celui du Core 2 duo (~20.6 instructions). Cependant ces chiffres sont assez anciens et datent du Pentium III, depuis il y a eu pas mal de progrès en la matière que ça soit au niveau des instructions SSE qui génèrent moins de µops, ou de la fusion (micro et macro) donc le rapport a du baisser. Je pense qu'on peut considérer que ce buffer est l'équivalent d'un buffer x86 de 22 instructions à la louche mais c'est qu'une grossière estimation.

Foudge 25/09/2008 15:14
Masquer
-0+

Et vue qu'en plus on évite l'étape de décodage, c'est effectivement tout benef :)

Wiiip 25/09/2008 18:25
Masquer
-0+

Moi, ça me rappelle le P4 cette histoire ...
Plus de puissance, plus de puissance, plus de puissance ... Au détriment de la vitesse.
Désolé

Les offres du moment

Newsletters


OK