私は64ビットコンピューティングに関するこの記事を読んでいて、次のように述べています。
たとえば、2011年のAMD64アーキテクチャでは、物理メモリに52ビット、仮想メモリに48ビットが許可されていました
物理メモリよりも多くの仮想メモリを許可するほうが理にかなっていると思うので、なぜ実際にはそれが逆になっているのですか?
おまけの質問:64ビットアーキテクチャで52ビットまたは48ビットを「許可」するとはどういう意味ですか?他に使用されるビットは何ですか?
私は64ビットコンピューティングに関するこの記事を読んでいて、次のように述べています。
たとえば、2011年のAMD64アーキテクチャでは、物理メモリに52ビット、仮想メモリに48ビットが許可されていました
物理メモリよりも多くの仮想メモリを許可するほうが理にかなっていると思うので、なぜ実際にはそれが逆になっているのですか?
おまけの質問:64ビットアーキテクチャで52ビットまたは48ビットを「許可」するとはどういう意味ですか?他に使用されるビットは何ですか?
回答:
これは、AMD64ページテーブルの画像です(AMDアーキテクチャプログラマガイド、第2巻、Rev 3.23、2013、132ページから)。
AMD64アーキテクチャのページの「自然な」サイズは2 12 = 4096バイトです。(2 21 = 2Mバイトのページを持つことができるモードがありますが、ここではそれらを無視します。)
各ページテーブルエントリ(PTE)(または、PDE、PDPEまたはPML4Eと呼ばれるレベルに応じて)は、64ビット= 2 3バイトです。したがって、ページごとに2 9のエントリがあります。したがって、4レベルのページテーブルを使用すると、プロセスごとに4x9 + 12 = 48ビットの仮想アドレスを取得できます。ページテーブルを歩くのはコストがかかるので、消費者の要求がない限り、5〜6レベルに拡張されません。
彼らが52ビットの物理アドレス制限を決定した理由がわかりません。これは、将来63ビットまで拡張できます。2013年10月の価格(4ギガビットチップでは約1 US $ /ギガビット)では、2 52バイトのメモリを構築するのに32,000,000.00 USドル以上かかるため、物理アドレスの制限を増やすという大きな需要が出るまでにはしばらくかかります。物理アドレスをできるだけ小さくしたいのにはさまざまな理由があります。たとえば、TLBとキャッシュタグは物理アドレスを保持する必要があります。
仮想よりも多くの物理メモリがあることは、必ずしも逆ではありません。物理メモリがすべてのプロセスで共有されている間、仮想メモリはプロセスごとです。したがって、48ビットの仮想アドレスと2 52バイトのメモリを備えたサーバーは、16の同時プロセスをサポートしながら、スワップの必要がないことを保証できます。
考慮すべきいくつかの点として、物理RAMは高価です。確かに16 GBの方が安いのは4 GBがほんの数年前のことですが、2 ^ 64(16エクサバイト)は途方もなく大きいです。
したがって、AMDのx64向けx86拡張機能は、レジスタを制限することで最大2 ^ 52まで「許可」されます。これにより、プロセッサのコストが削減され、パフォーマンスが向上します。使用されていないレジスタが多いということは、操作中に考慮に入れなければならない多くの空きスペースがあることを意味します。
そして、あなたが数学の男でない場合には... 3つのサイズの違いは巨大です!私は数学の第一人者ではありませんが、10進数で52ビットは64ビットの.02%です。48ビットは52の6%です(誰かが私の数学をチェックしますか?)
AMDが仮想よりも多くの物理RAMを許可した理由については、AMDがサーバーを考えていたためであると記事は述べています。サーバーには大量の物理RAMが必要です。仮想RAMは、数百または数千人の従業員の平均的なサーバーアプリケーションをサポートするには遅すぎます。
私自身の考え:RAMが非常に小さく、ハードドライブがRAMをサポートしなければならなかった時代はもう終わりました。RAMの価格は、平均的なペルソナが十分なRAMを搭載できる程度まで下がっています。1〜2 GBのRAMを必要とするOfficeなどの一般的なアプリケーションを取り上げます。7年前の私のコンピュータはそれを処理できました。ディスクへの読み取りおよび書き込み速度はありますが、仮想メモリから7 GBのファイルを取得する必要がないことを願っています(古いPM * 2.5の考え方を使用しています)。
AMDは、統合されたGPU上のRAMのような、物理RAMレジスターを使用するレジスターのための余地を残したかっただけだとも思います。