答え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:はい、ページテーブルはカーネルによって管理され、カーネルメモリに保存されます。