MemTest86 はメモリアドレス空間が物理量より大きいことを示している

MemTest86 はメモリアドレス空間が物理量より大きいことを示している

04 GB の RAM を搭載したラップトップでは、メモリ アドレスは バイトで始まり、 の前で終わるはずだと思っていました0x1_0000_0000(_ はわかりやすくするために追加された区切り文字です)。しかし、MemTest86 では で終わると表示されています0x1_6060_0000。しかし、これは 1542 MB 多いのではないですか?

同様に、16 GB の RAM を搭載したデスクトップ コンピューターでは で終了するはずだと思います0x4_0000_0000が、MemTest86 では と表示され0x4_2F60_0000、758 MB 大きくなります。

MemTest86 が実際の物理メモリの量よりも大きいアドレス空間を表示するのはなぜですか?

答え1

これは現代のシステムでは非常に一般的な状況です。そしてそれには十分な理由があります。

数十年前から、コンピューターにはメモリ マップ ハードウェア デバイスが搭載されています。これは、CPU がメモリのようにアクセスできる特別なハードウェアです。これは、ビデオ システムなどのハードウェア デバイスとの高速通信に使用されます。これがないと、コンピューターのパフォーマンスは大幅に低下します。

32 ビット オペレーティング システムとの互換性を保つには、このメモリ マップ ハードウェアは下位 4 GB アドレス範囲に表示されなければなりません。最新のシステムでは、これは少なくとも数百 MB を意味し、これはかなり大きな意味を持ちます。メモリ マップ ハードウェアと RAM は同じアドレスに存在できないため、RAM のかなりの部分がアクセス不能になります。これが、32 ビット バージョンの Windows が 4 GB RAM すべてを認識できない理由です。

これは良い状況ではありません。しかし、少なくともこれを処理できるオペレーティング システムには解決策があります。解決策は、そうでなければアクセスできない RAM の部分を 4 GB を超えるアドレスに再マップすることです。これが表示されているものです。32 ビット オペレーティング システムの利点として、可能な限り多くの RAM が 4 GB 未満のアドレスに残されます。

このメモリの再マッピングは、コンピュータのハードウェアと BIOS によって行われるため、どのオペレーティング システムでも利用できます。最新の 64 ビット オペレーティング システムとメモリ テスト プログラムは、このために設計されています。技術的な理由により、Windows の 32 ビット クライアント バージョンは、4 GB を超えるすべてのメモリを無視します。最新のオペレーティング システムでは、アプリケーションは物理 RAM アドレスを認識しないため、メモリ マッピングは問題になりません。

関連情報