Qu'est-ce qu'une fusillade TLB dans les SMP?
Je ne trouve pas beaucoup d'informations sur ce concept. Tout bon exemple serait très apprécié.
Un exemple rapide:
Vous avez de la mémoire partagée par tous les processeurs de votre système.
L'un de vos processeurs restreint l'accès à une page de cette mémoire partagée.
Maintenant, tous les processeurs doivent vider leurs TLB, afin que ceux qui ont été autorisés à accéder à cette page ne puissent plus le faire.
Les actions d'un processeur provoquant le vidage des TLB sur les processeurs other sont ce qu'on appelle un shootdown TLB.
Un TLB (Translation Lookaside Buffer) est un cache des traductions des adresses de mémoire virtuelle en adresses de mémoire physique. Lorsqu'un processeur modifie le mappage virtuel-physique d'une adresse, il doit demander aux autres processeurs d'invalider ce mappage dans leurs caches.
Ce processus est appelé "abattage TLB".
Je pense que la question demande une réponse plus détaillée.
tableau de pages: une structure de données qui stocke le mappage entre la mémoire virtuelle (logiciel) et la mémoire physique (matériel)
cependant, la table de pages peut être assez grande et parcourir la table de pages (pour trouver l'adresse physique correspondante de l'adresse virtuelle) peut être un processus long. Pour accélérer ce processus, un cache appelé TLB (Translation Lookaside Buffer) est utilisé, qui stocke les adresses de mémoire virtuelle récemment consultées.
Comme on peut le voir clairement, les les entrées TLB doivent être synchronisées avec leurs entrées de table de pages respectives à tout moment. Maintenant, les les TLB sont un cache par cœur ie. chaque cœur a son propre TLB.
Chaque fois qu'une entrée de table de pages est modifiée par l'un des cœurs, cette entrée TLB particulière est invalidée dans tous les cœurs. Ce processus est appelé abattage TLB.
Le vidage TLB peut être déclenché par diverses opérations de mémoire virtuelle qui modifient les entrées de table de page comme la migration de page, la libération de pages, etc.