最近、Linuxはその物理アドレスの対応するデータが置き換えられたときにTLBキャッシュをフラッシュし、TLBの利用率が低いというニュースを聞きました。すべてのオペレーティングシステムがこれを行うかどうかわかりません。
これが真であれば、RAMを増やしてコンテキスト切り替えを避けると、キャッシュはTLBに保持されますか?
答え1
Linuxカーネルは、TLBとTLBキャッシュを同じように扱うようです。アーキテクチャ独立レベルでは、部分的または完全なTLBキャッシュAFAIKをフラッシュするようなものはありません。たとえば、仮想マシンがページングされ、必要に応じてハードウェア固有のコードをトリガーするこのタスクにいくつかのフックがあります。 CPUによっては、カーネルはページ出力ごとに複数のページフラッシュを実行することができ、CPUはページフラッシュ範囲をサポートしたり、両方をサポートせず、カーネルは最も高価なフラッシュを使用してキャッシュ全体をフラッシュします。
このトピックに関する2つの興味深い記事があります。
- ページテーブルの管理(画面に奇妙な文字が表示された場合は、ページエンコードにISO-8859-1を強制してみてください)
- カーネルドキュメント - LinuxでのキャッシュとTLBフラッシュ
答え2
データ交換は、TLB行を削除するよりもはるかに高価です(以降は役に立たない)。そして、TLB全体をフラッシュするのはおそらくはるかに安いでしょう。
Linuxの専門家は絶対にパフォーマンスモンスターです。彼らがあなたが言うようにすれば、これは影響を受けたアーキテクチャがより良いことを許さないからです(または単に重要ではないからです)。