Let's see if I can explain this in a few short paragraphs.
The processor works with data, it brings in data, processes it and
returns data. Every bit of data comes in to the processor from a memory
address and every bit leaving the processor goes to a memory address. A
32-bit processor has 4,294,967,296 memory addresses. This is the
processor's addressable memory range or the Address Space, with these
memory addresses the processor can directly access four gigabytes of
memory.
So what's the problem? The processor has enough addresses for 4GB of
RAM, why isn't it using all of it? The problem is that if the processor
gave all the addresses to the RAM it would have none left for other
things, anything and everything that needs to talk to the processor
would have to do it through the RAM or the processor would have to dump
RAM addresses to talk to other devices!
Your computer is not only made up of RAM, the processor has to work with
other hardware devices, it has to send and get data to and from some
of those other devices. Remember, the processor gets and returns data
to memory addresses, the 32-bit processor has a 4GB address range.
For example, the BIOS and system board will reserve and use a bit less
than 1 megabyte of address space directly at the processor, when the
processor needs to talk with the BIOS or motherboard it will do so
directly by using their reserved addresses, the addresses reserved by
and given to the system board cannot be used by the RAM. This
(oversimplified) example shows why a 32-bit processor cannot use all of
the RAM when 4GB is installed.
So now you may be thinking that 1 megabyte of memory addresses being
lost to the system board is a far cry from what your Windows
installation is seeing and reporting. Well, you see, most PCI devices
can communicate directly with the processor. These devices also reserve
exclusive memory addresses directly at the processor, if the processor
needs to talk to the video card it will do so at the addresses reserved
by the video card, the addresses where the video card is listening.
Your other PCI devices like sound cards, controller cards and so on also
reserve addresses directly at the processor, the processor can send and
receive data directly to and from these devices.
These devices can reserve a lot of address space, a high end sound card
can reserve 100 megabyte or more of Address Space. A video card with
512MB of on board memory has to have a way of sending the data in that
memory to the processor when needed, if all the memory addresses were
used by RAM the processor would have none left to satisfy the needs of
other devices. That is why addresses are reserved for exclusive use by
the PCI devices, the addresses that are reserved for these devices are
in turn not available for RAM addressing. The amount of memory address
space used by these devices can be as little as a few hundred megabytes
and all the way up to 1GB and more.
It is important to note that the other devices do not use RAM, they
reserve or use addresses at the processor and in turn these addresses
are not available for the RAM, the RAM is in fact deprived of the
addresses and the RAM without address space goes unused. To overcome
this address shortage problem (newer) Intel 32-bit processors make use
of Physical Address Extensions (PAE) which widens the address width to
36-bits and greatly increases the available memory address space. The
use of PAE and 36-bit addressing allows the processor to access 64GB of
RAM, the RAM that was previously unaddressed can now be addressed.
The catch is that the PCI devices keep their addresses in the lower 4GB
address range and the previously unavailable address space for the RAM
is shifted *above* the 4GB arena. The problem is that to access the RAM
above the 4GB arena the operating system has to fully support this PAE
feature, if it doesn't it cannot access the RAM in the space above the
4GB boundary. Raymond Chen has explained this very well here:
http://blogs.msdn.com/oldnewthing/archive/2006/08/14/699521.aspx
Windows 2000 Professional, Windows 2000 Server, Windows XP 32-bits and
Vista 32-bits do not make full use of this /PAE feature, they are unable
to use RAM addressed above the 4GB boundary. You need Windows 2000
Advanced Server or better to be able to fully use this /PAE feature.
To see how much memory addresses are reserved and used by hardware
devices look in the Device Manager and view "Resources by Connection".
Expand the Memory tree and you will see the memory map. On 32-bit
servers or on number crunching workstations where RAM usage is very
demanding hardware selection is important. The server should only have
necessary hardware installed in it, superfluous unused devices should be
removed from the server and the video adapter should not have oodles of
memory, most servers only display text and basic stuff, there is usually
no need to stick a 512MB video adapter in a server, nor is there usually
any need for sound cards.
John