10

So I'm a programmer and I'm not a complete idiot so I know exactly why you can't access memory where you can't have pointers. But I've never tried this and I don't think I ever will because it seems like a big waste of money/time.

I'm just wondering if there are any tools that let me access my himem (You'd think we'd have gotten around this issue by now).

bwDraco
  • 46,683
Peter Turner
  • 1,242

5 Answers5

20

If you have a a processor with the Physical Address Extension (which you probably do) and the correct OS (e.g. not a consumer version of Windows, it uses PAE but is capped at 4GB) then the memory can be mapped and used normally. Otherwise the memory will simply not be addressed, the OS will tell that you that you have however many chips of however big they are but they just won't be added to the amount of memory you can access.

Mike McQuaid
  • 4,187
1

Things would work nicely as 4GB is the limit for a 32bit processor. Here's as article that goes more in depth and actually shows that you can install and use much more than 4GB on a 32bit OS.

mandroid
  • 597
1

I suppose technically if the operating-system were well-designed, you could use more than 4GB. There's no reason I can think of that an OS with virtual memory capabilities could not use 32-bit virtual addresses with 64-bit real addresses.

Jason S
  • 7,944
1

Depends what 32bit OS you mean!

Of course on modern operating systems, you can pretty much plug in as much as your motherboard can take without issue (though you may not be able to use it all), but that wasn't always the case, at least with Windows:

A bug in Windows 95, 98, SE, and ME crops up if you have more than 512MB of memory installed.

http://answers.google.com/answers/threadview/id/333688.html

Factor Mystic
  • 13,015
0

The first thing to understand is that modern computer systems use virtual memory. You can have 32-bit virtual addresses for applications while having larger than 32-bit physical addresses.

The second thing to understand is that physical address space is used for various things, most significantly main ram and memory mapped perhipherals. Graphics cards in particular often have large memory mapped regions. The result is if you only have 4GB of usable physical address space you can end up with significantly less than 4GB of usable ram. Approximately 3.5 GB usable is typical but I have seen systems where it was as low as 2.5 GB.

On a PC to support more than 4GB of physical address space a mechanism called PAE is used. For this to work several things are needed.

  1. The CPU must support it.
  2. The chipset must support it.
  3. The BIOS must support it.
  4. The OS must support it.

CPUs have supported PAE for ages, that is not an issue.

Many older chipsets were limited to 4GB of physical address space. IIRC Intel Laptop chipsets got support for more than 4GB of address space with the "Santa Rosa" generation in 2007. I'm not sure about desktop chipsets but I expect it was around the same time. Workstation/server chipsets obviously got support much earlier.

Afaict BIOSes mostly support it if the chip set does. Wouldn't surprise me if there are some exceptions though.

OS is a thorny one. Linux and windows have both supported PAE for ages. Unfortunately since windows XP service pack 2 MS has artificially limited the physical address space to 4GB. They claim they did this because of buggy drivers, cynics would suspect they did it to force people to buy server editions.

In windows XP this is baked in to the kernel and basically can't be undone. However on later versions it can be bypassed with some minor hacks to the kernel. See https://wj32.org/wp/ for details.

plugwash
  • 6,719