James.Random()

James Senior at Microsoft: Like a kid in a candy store

When is 4GB not 4GB?

When is 4GB not 4GB?

  • Comments 3
  • Likes

When you're running 32bit operating systems - that's when!

Mike Tricker, the Program Manager for Windows Core Platform Architecture helps explain about this modern day phenomenon:

There are three questions to ask that will tell you the maximum amount of memory your copy of Vista will be able to use:

1. What SKU/Edition have you installed?

a. 32-bit Vista is limited to a maximum of 4GB, and cannot see any pages above 4GB*.

b. 64-bit Vista can use between at least 8GB and 128GB (for now – I believe that upper limit may grow) depending on SKU.

2. What address range can your processor actually access?

a. Typically that’ll be 40-bit addressing today for x64 (Intel EM64T/AMD64), but older processors may be limited to 36-bit (aka “PAE”) or even 32-bit

3. Can your chipset map memory above 4GB?

a. The vast majority of desktop/mobile chipsets on sale today cannot – but some newer ones can

b. Workstations (that typically use chipsets developed for single or dual proc servers) usually can

( * Starter Edition is special and doesn’t figure in this conversation – it’s also OEM-only so “normal” US-based users won’t ever encounter it )

Significant chunks of address space below 4GB (the highest address accessible via 32-bit addressing – see points 1 & 2 above) get reserved for use by system hardware:

· the BIOS – including ACPI and legacy video support

· the PCI bus including bridges etc.

· if you’ve got PCI Express support that’ll reserve at least 256MB

If you fancy that nice shiny new video card with 256MB or maybe even 512MB of video memory in Best Buy – hey, that’s another 256 or 512MB of address space below 4GB that Vista cannot now use.

What this means is that on a typical system you may see between ~512MB and 1.5GB of address space below 4GB reserved for hardware use that Windows cannot access (and nor can any other OS for that matter). Intel chipset specs are actually pretty good at explaining exactly what address ranges gets reserved by default and in some cases call out that 1.5GB is always reserved and thus inaccessible to Windows.

What can you do? :

Windows can remap memory from below 4GB to above 4GB and use it there HOWEVER that relies on all three of the above points:

1. Can your SKU of Vista actually access memory above 4GB?

a. Not if it’s 32-bit it can’t. So 64-bit Vista may help you here

2. Can your processor actually access memory above 4GB?

a. If it’s recent then there’s a good chance it can, and if it’s either AMD64 or EM64T it’s almost certain to

3. Does your chipset allow pages to be remapped above 4GB?

a. Actually, probably not – and that’s what’s catching out a lot of folks who install 64-bit Vista to work around point 1 then find they still cannot see above 4GB

“I’ve tried 64-bit Vista and I still can’t see all my memory – now what?”

Sadly the only answer may be to get a newer system that allows you to remap memory above 4GB – and since this is a relatively new problem you may find that you have to dig into the system vendor’s website to find some of this info – don’t count on many of the sales folk in Best Buy or CompUSA having the answers you need. In rare cases the system vendor may be able to tweak their BIOS to reserve less memory for platform use, but we’re not talking 100 of MB’s here – but you can check for updates in case they help.

As 64-bit Windows becomes more widely available with 3GB+ of memory as the norm we’ll see this addressed by more mass-market chipsets supporting larger address ranges, but for now unfortunately you’ll have to do some research before buying a new system.

 

Technorati tags: ,
Comments
  • The answer to 3b lost me, can someone explain that in simpler terms?

  • It's complex, but here's some useful links:

    http://blogs.technet.com/brad_rutkowski/archive/2006/10/03/Hey-where-did-_2F00_3GB-go-in-Longhorn-and-Vista_3F00_.aspx

    http://www.codinghorror.com/blog/archives/000688.html

    Essentially XP uses a 3/1 GB split and Vista uses a 2/2 split. Applications (User)/ System (Kernel/Exec/cache etc.). Why, because Vista is 'tuned' to preload regularly used apps more agressively, 'and' hold on to that memory (cached), hence it appears on the face of it that Vista is a memory hog, when in fact it is trying to help get a faster pre-load and faster response to users. Games that hog memory are therefore not Vista friendly causing Vista to downsize it's superfetch cache

    One could say that Vista is tuned for business, leaving some (not all) games at a slight disadvantage at initially when they load

    Rob Atkinson

  • Thanks Rob :-)

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment