0

On a laptop with 4 GB of RAM, I thought memory addresses should start at byte 0 and end before 0x1_0000_0000 (_ is an added separator for clarity), but MemTest86 says it ends at 0x1_6060_0000, but isn't this 1542 MB more?

Similarly, on a desktop computer with 16 GB of RAM, I think it should end at 0x4_0000_0000, but MemTest86 says 0x4_2F60_0000, which is 758 MB larger.

Why does MemTest86 show address spaces larger than the actual amount of physical memory?

Victor
  • 255

1 Answers1

2

This is a very common situation on modern systems. And for good reason.

Since decades ago computers have had memory mapped hardware devices. This is special hardware that can be accessed by the CPU just as if it were memory. This is used for fast communication with hardware devices such as the video system. Without this computers would suffer a severe performance penalty.

For compatibility with 32 bit operating systems this memory mapped hardware must appear in the bottom 4 GB address range. In modern systems this means several hundred MB at the least which is quite significant. Since memory mapped hardware and RAM cannot exist at the same addresses a considerable portion of RAM would be inaccessible. This is why 32 bit versions of Windows cannot see all 4 GB RAM.

This is not a good situation. But there is a solution, at least for those operating systems that can handle it. The solution is to remap those portions of RAM that would otherwise be inaccessible to addresses above 4 GB. This is what you are seeing. For the benefit of 32 bit operating systems as much RAM as possible will be left at addresses below 4 GB.

This memory remapping is done by the computer hardware and BIOS so will available to any operating system. Modern 64 bit operating systems and memory test programs are designed for this. For technical reasons 32 bit client versions of Windows will ignore all memory above 4 GB. With modern operating systems applications never see physical RAM addresses so memory mapping is of no concern to them.

LMiller7
  • 2,674
  • 1
  • 12
  • 12