仮想アドレスが64ビットではなく48ビットであるのはなぜですか? [閉鎖]

仮想アドレスが64ビットではなく48ビットであるのはなぜですか? [閉鎖]

私は仮想メモリについて話している本を読んでいます。

Intel Core i7は、48ビット(256TB)の仮想アドレス空間と52ビット(4PB)の物理アドレス空間をサポートします。 ここに画像の説明を入力してください。

以下は私の質問です

Q1 - 私たちは主に64ビットシステムを使用していますが、仮想アドレスが48ビットであるのはなぜですか? 64ビットの仮想メモリにする必要はありませんか?

Q2 - 物理メモリ(52ビット)のアドレス空間が仮想メモリ(48ビット)のアドレス空間より大きいのはなぜですか?

Q3 - 私が理解したことは、すべてのページテーブルがカーネルメモリに保存され、ユーザーには表示されないということです。

ベストアンサー1

私が知る限り、64ビットアドレスを完全にサポートする64ビットプロセッサはありません。レジスタの幅は64ビットで、ポインタを格納するために8バイトが使用されますが、ポインタ値は通常、最も重要なビットがすべて0またはすべて1になるように強制され、重要な48ビットに制限されます。

その理由は、64ビットのアドレス空間全体が(まだ)必要ではなく、不要なものをサポートするのはシリコンの無駄だからです。 64ビットアドレス空間全体をサポートすることで、何の利点もなく仮想物理物理マッピングが複雑になります。

メモリアドレス空間の指数関数的増加は、ビット数を2倍にするのではなく、所与の時間に一定数のアドレスビットを追加することを意味する。したがって、1つの進化ステップが16ビットアドレスから32ビットに進む場合、32ビットの次のステップは64ビットではなく32 + 16 = 48ビットになります。 48ビットは処理が少し難しく、必要に応じて「実際の」64ビットアドレスを準備できるアーキテクチャを提供するため、アドレスレジスタを64ビットに拡張するのは合理的です。

質問2:なぜできないのですか?より大きな物理アドレス空間を使用すると、複数のプロセスを持つことができ、各プロセスは最大2^48制限の仮想アドレス空間を持ちます。過去10年(20年?)の間、ほとんどの32ビットx86プロセッサは、もともと80386命令セットアーキテクチャで定義された4GBの仮想アドレス空間制限にもかかわらず、64GBの物理メモリをサポートする物理アドレス拡張(PAE)をサポートしていました。

Q3:はい、ページテーブルはカーネルによって管理され、カーネルメモリに保存されます。

おすすめ記事