解決策 1:
明らかに、memtest86+ は現在 memtest86+ 実行可能コードを含むメモリ領域をテストできません (ただし、その領域にメモリ エラーがある場合、テスト自体がクラッシュする可能性が非常に高くなります)。ただし、memtest86+ は実行時に独自のコードを別のアドレスに再配置することができ、このトリックを使用することで、ファームウェア (BIOS) によって使用が許可されているすべてのメモリをテストできます — 一度にすべてではありません.
このコードの再配置は、memtest86+ ソース コード アーカイブ内の README.background で説明されています (ファイルは少し古くなっています。たとえば、memtest86+ コードに使用されるアドレスは 0x2000 と 0x200000 であると記載されていますが、ソースで定義されている下位アドレスは実際には 0x10000 であり、上位アドレスはマシンのメモリ量に応じて 0x2000000 または 0x300000 のいずれかになります)。
しかし、この再配置のトリックを使用しても、memtest86+ は次の理由ですべてのメモリをテストすることはできません:
-
通常、ファームウェア (BIOS) は、独自に使用するためにいくつかの RAM 領域を予約します (ACPI テーブルなど)。これらの RAM 領域は CPU からアクセスできますが、それらに何かを書き込むと、予期しない動作が発生する可能性があります。
-
RAM の一部はシステム管理モードに使用され、特権 SMM コードの外部の CPU からはアクセスできません。
-
640K から 1M の RAM アドレス範囲は、従来の PC メモリ レイアウトの癖によりアクセスできません (この RAM の一部は、BIOS ROM および SMM のシャドウとして使用される場合があり、他の部分は完全にアクセスできない場合があります)。
解決策 2:
いいえ、memtest は自身のメモリをテストできません。ただし、非常に小さい (数 KB のみ) ため、ほとんど問題になりません。 編集: 選択した回答に記載されているように、memtest は all をテストするために動的に再配置できるため、このステートメントは間違っています。 ユーザーがアドレス可能なメモリ。
--
理論的には、最新のプロセッサは起動時にキャッシュの一部をプログラマブル メモリとして構成でき、非常に小さなプログラム内から (memtest として) なしで実行できます。 DRAM にまったく触れていません。
ただし、これはモデル固有の機能 (BIOS サポートが必要) であり、memtest では使用されていないと思います。