2009-07-08 4 views
1

IA-32は、CPUがTLB全体を無効にするさまざまなケースを定義しています。 AMDがOpteron Rev-Fプロセッサー(Barcelona?)でリリースしたASID拡張機能からは、特定のASIDのTLBエントリーのみが無効になる場合があります。AMDのページテーブル拡張のASIDは、もはや有効ではありません。

質問は、ASID自体が有効ではなくなりますか?ハイパーバイザーは、使用する前にASIDが有効であることを確認する必要がありますか?

答えて

1

私は答えが「直接的ではない」と思い- VM制御ブロックにAMDのシステムプログラミングspecification、ASIDフィールドを見ていることは、単にハイパーバイザは固有の値に設定します(まで)32ビットIDでありますVMの各インスタンスに適用され、TLBルックアップの追加タグとして使用されます。

x86上のTLBの内容を直接制御できないため、TLBに入るエントリを制御することはできません。プロセッサがエントリをTLBに追加することを決定した場合、エントリには現在のタグが付けられますASIDは、定義によって追加されたときに有効になります。

これは、前述したシステムのプログラミング仕様のセクション15.15.1に多少迂回方法に記載されて選択的に指定単一のすべての翻訳をフラッシュする方法を提供していない実装で

ASIDでは、ソフトウェアは、ゲストに新しいASIDを割り当て、TLB全体が少なくとも1回はフラッシュされるまで古いASIDを再利用しないことで、ゲストのTLBエントリを効果的にフラッシュする可能性があります。

これは、プロセッサに有効なASIDまたは無効なASIDの概念がないことを意味します。現在の値がTLBエントリのASIDと一致する必要があります。したがって、ハイパーバイザーが再利用する前にASIDを正しくフラッシュしないと、古いTLBヒットが発生します。

関連する問題