Was ist ein TLB-Shootdown in SMPs?
Ich kann nicht viele Informationen zu diesem Konzept finden. Jedes gute Beispiel wäre sehr dankbar.
caching
operating-system
tlb
smp
mousey
quelle
quelle
Antworten:
Ein kurzes Beispiel:
Sie haben Speicher, der von allen Prozessoren in Ihrem System gemeinsam genutzt wird.
Einer Ihrer Prozessoren beschränkt den Zugriff auf eine Seite dieses gemeinsam genutzten Speichers.
Jetzt müssen alle Prozessoren ihre TLBs leeren, damit diejenigen, die auf diese Seite zugreifen durften, dies nicht mehr können.
Die Aktionen eines Prozessors, die bewirken, dass die TLBs auf anderen Prozessoren geleert werden, werden als TLB-Shootdown bezeichnet.
quelle
Ein TLB (Translation Lookaside Buffer) ist ein Cache der Übersetzungen von virtuellen Speicheradressen zu physischen Speicheradressen. Wenn ein Prozessor die Zuordnung einer Adresse von virtuell zu physisch ändert, muss er die anderen Prozessoren anweisen, diese Zuordnung in ihren Caches ungültig zu machen.
Dieser Vorgang wird als "TLB-Abschuss" bezeichnet.
quelle
Ich denke, die Frage erfordert eine detailliertere Antwort.
Seitentabelle : Eine Datenstruktur, in der die Zuordnung zwischen virtuellem Speicher (Software) und physischem Speicher (Hardware) gespeichert ist.
Die Seitentabelle kann jedoch sehr groß sein und das Durchlaufen der Seitentabelle (um die entsprechende physische Adresse der virtuellen Adresse zu finden) kann ein zeitaufwändiger Prozess sein. Um diesen Prozess zu beschleunigen, wird ein Cache namens TLB (Translation Lookaside Buffer) verwendet, in dem die Adressen des virtuellen Speichers gespeichert sind, auf die kürzlich zugegriffen wurde.
Wie deutlich zu sehen ist, müssen die TLB-Einträge jederzeit mit den jeweiligen Seitentabelleneinträgen synchron sein . Jetzt sind die TLBs ein Pro-Core-Cache, dh. Jeder Kern hat seinen eigenen TLB.
Immer wenn ein Seitentabelleneintrag von einem der Kerne geändert wird, wird dieser bestimmte TLB-Eintrag in allen Kernen ungültig. Dieser Vorgang wird als TLB-Abschuss bezeichnet.
Das TLB-Leeren kann durch verschiedene virtuelle Speicheroperationen ausgelöst werden, die die Seitentabelleneinträge wie Seitenmigration, Freigeben von Seiten usw. ändern.
quelle
invlpg
Anweisungen ausgeführt werden müssen. Das erneute Zuordnen oder Aufheben der Zuordnung muss ungültig gemacht werden, um zu verhindern, dass Kerne den nicht mehr gültigen TLB-Eintrag verwenden.