ASID が異なることを除いて、同じ仮想アドレスと物理アドレスを持つ 2 つのエントリをマップすることは可能ですか?
1 に答える
http://pages.cs.wisc.edu/~remzi/OSTEP/vm-tlbs.pdf
実際の TLB エントリ
最後に、実際の TLB を簡単に見てみましょう。この例は、ソフトウェア管理の TLB を使用する最新のシステムである MIPS R4000 [H93] のものです。少し簡略化した MIPS TLB エントリを図 19.4 に示します。
MIPS R4000 は、4KB ページの 32 ビット アドレス空間をサポートします。したがって、一般的な仮想アドレスでは 20 ビットの VPN と 12 ビットのオフセットが予想されます。ただし、TLB でわかるように、VPN には 19 ビットしかありません。結局のところ、ユーザー アドレスはアドレス空間の半分 (残りはカーネル用に予約されています) からのみ取得されるため、必要な VPN は 19 ビットのみです。VPN は最大 24 ビットの物理フレーム番号 (PFN) に変換されるため、最大 64 GB の (物理) メイン メモリ (2^24 の 4 KB ページ) を持つシステムをサポートできます。
MIPS TLB には他にも興味深いビットがいくつかあります。プロセス間でグローバルに共有されるページに使用されるグローバル ビット (G) が表示されます。したがって、グローバル ビットが設定されている場合、ASID は無視されます。また、OS がアドレス空間を区別するために使用できる 8 ビット ASID も確認できます (前述のとおり)。1 つ質問があります。一度に 256 (2^8) を超えるプロセスが実行されている場合、OS はどうすればよいでしょうか? 最後に、ハードウェアがページをキャッシュする方法を決定する 3 つのコヒーレンス (C) ビットがあります (これらのメモの範囲を少し超えています)。ページが書き込まれたときにマークされるダーティ ビット (これの使用法については後で説明します)。有効な変換がエントリに存在するかどうかをハードウェアに伝える有効なビット。また、複数のページ サイズをサポートするページ マスク フィールド (表示されていません) もあります。ページを大きくすると便利な理由については後で説明します。最後に、64 ビットの一部が未使用です (図のグレーの陰影部分)。
はい、オペレーティング システムの教科書 (Operating Systems: Three Easy Pieces) によると、一部の MIPS システム (e MIPS R4000 など) には、このスキームがあります。たとえば、2 つのプロセス間で共有される OS のグローバル ページは、説明を満たしています。