Memory limits (was: anyone have a cheap source for pc3200 memory?)

Ben Scott dragonhawk at gmail.com
Sun Apr 20 18:18:08 EDT 2008


On Sun, Apr 20, 2008 at 4:13 PM, Bruce Labitt <bruce.labitt at verizon.net> wrote:
>>   Be warned that a lot of older hardware is limited to a 32-bit (4
>> GiB) hardware address bus (even if the CPU has a 36-bit bus).  If so,
>> the system will not be able to "see" the full 4 GiB of RAM.  (The RAM
>> gets bumped out of addressable space by other hardware.)  You should
>> get at least 3 GiB of usable RAM, maybe 3.5 GiB or so.  YMMV.
>
>  Scientific linux - above limits do not apply

  There you're wrong.

  Linux, running on the proper x86 hardware, can indeed access
hardware located above the 4 GiB mark.  To do so, it uses something
called PAE (Physical Address Extension).  PAE is a feature of most x86
processors made in the past several years.  It expands the size of the
physical address bus -- the actual address pins coming out of the
processor -- from 32 to 36 lines.  PAE also changes the organization
of the page tables inside the processor (to support 36-bit physical
addresses), and modified the processor's MMU (Memory Management Unit)
to handle all that.

  However, just because the OS and processor can address more than 4
GiB of hardware, it does not follow that the rest of the system does.
The memory controller (located in the "northbridge" chip on the
motherboard) has to support it.  The motherboard manufacturer has to
actually run traces for those extra four lines.  The motherboard
firmware ("BIOS") has to actually support setting up physical address
space above 4 GiB.  Your PCI bus controller and cards have to
implement DAC (Dual Address Cycle), which is needed to support 64-bit
PCI addressing in a 32-bit PCI slot.

  If you don't have *all* of those things, then your computer will not
be able to access hardware (RAM or otherwise) above the 4 GiB physical
address mark.  If so, the regions needed for I/O, ROMs, etc., will be
mapped below 4 GiB.  Otherwise, that hardware would not be usable.
Those I/O regions will "shadow" the RAM at those physical addresses.
The RAM is there, but unreachable.

  Exactly how much RAM gets eaten up depends on the size of the
regions requested by the peripheral hardware.  From what I've read, I
guess it's typically the size of your video card's onboard RAM, plus
the size of the AGP aperture, plus a few tens of MB for other stuff
(disk controller, network controller, ROMs, etc.).

  All this only applies if your hardware limits you in this fashion --
but apparently, quite a lot of hardware does.  The IBM-PC platform
isn't exactly know for its forward-thinking design.

  It's even worse in the Microsoft Windows world, where most versions
of Windows don't support PAE.  (You have to buy the "Enterprise
Server" versions to get it for 32-bit, or one of the 64-bit versions
of Windows that nobody supports.)  I've read stories of people buying
twin 512 MB video cards, only to discover to their horror that they
lose over 1.5 GiB of RAM to memory mapped I/O.

-- Ben


More information about the gnhlug-discuss mailing list