SMPのTLBシュートダウンとは何ですか?
この概念に関する多くの情報を見つけることができません。良い例は大歓迎です。
簡単な例:
システム内のすべてのプロセッサで共有されているメモリがあります。
プロセッサの1つが、その共有メモリのページへのアクセスを制限しています。
現在、すべてのプロセッサはTLBをフラッシュする必要があるため、そのページへのアクセスを許可されたプロセッサはTLBをこれ以上実行できません。
otherプロセッサでTLBがフラッシュされる1つのプロセッサのアクションは、TLBシュートダウンと呼ばれます。
TLB(Translation Lookaside Buffer)は、仮想メモリアドレスから物理メモリアドレスへの変換のキャッシュです。プロセッサがアドレスの仮想から物理へのマッピングを変更する場合、キャッシュ内のマッピングを無効にするように他のプロセッサに指示する必要があります。
このプロセスは「TLBシュートダウン」と呼ばれます。
この質問には、より詳細な答えが必要だと思います。
ページテーブル:仮想メモリ(ソフトウェア)と物理メモリ(ハードウェア)の間のマッピングを格納するデータ構造
ただし、ページテーブルは非常に大きくなる可能性があり、(仮想アドレスに対応する物理アドレスを見つけるために)ページテーブルを走査するのは時間がかかる可能性があります。このプロセスを高速化するために、TLB(Translation Lookaside Buffer)と呼ばれるキャッシュが使用され、最近アクセスされた仮想メモリアドレスが保存されます。
明らかなように、TLBエントリはそれぞれのページテーブルエントリと同期する必要があります常に。 TLBはコアごとのキャッシュですつまり。すべてのコアには独自のTLBがあります。
コアのいずれかによってページテーブルエントリが変更されると、その特定のTLBエントリはすべてのコアで無効になります。このプロセスはTLBシュートダウンと呼ばれます。
TLBフラッシュは、ページ移行、ページの解放などのページテーブルエントリを変更するさまざまな仮想メモリ操作によってトリガーできます。