2016-05-02 3 views
2

Virtual memoryは、プロセス間でメモリを分離し、各プロセスに独自のアドレス空間を与える便利な方法です。これは、仮想アドレスを物理アドレスに変換することによって機能します。ダイレクトマップメモリ​​に比べて仮想メモリのパフォーマンスへの影響は?

私は既に仮想メモリがどのように動作し実装されているかに非常に精通しています。私が気づいていないのは、仮想メモリーがダイレクト・マップ・メモリーに比べてパフォーマンスに与える影響です。

オーバーヘッドがないと言ってください。ページテーブルを走査するにはいくつかのメモリアクセスが必要なので、これは明らかに誤りです。しかし、TLBミスがパフォーマンスの影響を無視できる程度に少なくなる可能性がありますが、その場合は、その証拠があるはずです。

私は現代のOSが提供する多くの機能に仮想メモリの重要性を認識しているので、この質問は仮想メモリが良いか悪い(ほとんどの使用例では明らかに良いことですか)純粋に仮想メモリのパフォーマンスの影響について質問しています。

私が探している答えは、理想的には次のようなものです:仮想メモリは、直接マッピングに比べてx%のオーバーヘッドを課しています。私はそのような結果を持つ論文を探すことを試みたが、何も見つけることができなかった。仮想メモリが仮想メモリをサポートするように設計されている最近のシステムの不可欠な部分であり、ほとんどのソフトウェアが書かれており、仮想メモリを備えたシステムを使用して最適化されているため

+0

あなたの質問の問題は、このようなオーバーヘッドは非線形で、使用状況によって異なることです。さらに、VM実装のタイプによって異なります。論理メモリの変換や仮想メモリの完全なオーバーヘッドについて話していますか? VMは1970年代に始まり、1980年代にはマルチユーザーシステムのために引き継がれました。したがって、オーバーヘッドは十分に低く、それについては誰もそれがありません。 – user3344003

+0

Mill CPUは、64ビットで十分に大きい単一のグローバルアドレス空間のみを使用します.http://millcomputing.com/topic/memory/プロセス間のメモリ保護は行いますが、仮想アドレスマッピングは必要ありません。 – Thilo

+0

@ user3344003ほとんどの費用が出てくるのは私にとっては現実的なアドレス変換を意味していました。 –

答えて

1

この質問は決定的に答えることは困難です。

しかし、2000年代初頭、Microsoft Researchは、とりわけプロセス分離のために仮想メモリに依存していなかったSignularityというリサーチOSを開発しました。このプロジェクトの一環として、プロセス分離のためのハードウェアサポートのオーバーヘッドを分析した論文を発表しました。論文はDeconstructing Process Isolation(非有料壁リンクhere)と題されています。論文で研究者は書き込み:

ほとんどのオペレーティングシステムは、2つのメカニズムを使用して、プロセスの分離を提供 にCPUのメモリ管理ハードウェアを使用しています。まず、プロセスは 物理メモリの特定のページへのアクセスのみが許可されています。次に、 特権レベルでは、信頼されていないコードがシステムを操作しないようにします。たとえば、メモリ管理 ユニット(MMU)または割り込みコントローラーなど、プロセスを実装するリソースが です。それらを比較するために何も広く使われている 別のアプローチが存在しないため、これらのメカニズム非自明な パフォーマンスコストは、大部分が隠されています。仮想から 物理アドレスへのマッピングは、ページテーブル[29]などによる例外 取り扱い、インラインTLB検索、TLBのリロード、およびカーネル データ構造の維持に百分の10から30までのオーバーヘッドが発生することができます。加えて、仮想メモリ と特権レベルは、プロセス間通信のコストを増大させます。

その後、彼らが書く論文で:(などSPURなどのソフトウェアのみのシステム を除いた[46])

仮想メモリシステム 避けるために、アドレス変換のハードウェアキャッシュに依存していますすべてのプロセッサキャッシュミスでページテーブルにアクセスする。 TLBエントリを管理することはヤコブとマッジは シミュレートMIPS状プロセッサで5~10%と推定コスト、[29]を有します。仮想メモリシステム も、そのデータを、また一部のシステムでは、プロセッサの キャッシュにコードを渡します。これにより、ユーザーコードとデータが消去されます。 JacobとMudgeは、小さいキャッシュでは、これらの誘導ミスが のオーバーヘッドを10-20%に増加させる可能性があると推定している と推定しています。さらに、仮想メモリ が割り込みを誘発すると、オーバーヘッドが10〜30%に増加する可能性があることがわかりました。実際のコストは ですが、システムの詳細とベンチマーク[3,6,10,26,36,40, 41]に非常に依存していますが、他の調査では が同様の、またはそれ以上のオーバーヘッドを検出しました。さらに、TLBアクセスは多くのプロセッサ デザイン[2、30]のクリティカルパス上にあり、プロセッサのクロック速度に影響する可能性があります。

全体的に、代替システムを推進しているので、私はこれらの結果を塩の塊で取ります。しかし、仮想メモリの実装に伴うオーバヘッドがあることは明らかです。このホワイトペーパーでは、これらのオーバーヘッドのいくつかを数値化しようとしています。私は詳細については、紙を読むことをお勧めします。

+1

ありがとう、このようなものは私が探していたものでした。私は特異点に慣れていましたが、その紙を見たことはありませんでした。ありがとう!また、あなたがそれを見ていないなら、ミドリ(Singularityの後継者)の開発者の一人は、ミドリのデザインについて話している素晴らしいブログ記事を持っています。それは本当に興味深いものです。リンクは次のとおりです:http://joeduffyblog.com/2015/11/03/blogging-about-midori/ –

関連する問題