[rescue] FS: Matched pair of 1G MacBook 667MHz SODIMMS

nate at portents.com nate at portents.com
Fri Jun 29 11:42:09 CDT 2007


> My understanding (please correct me if I am wrong) goes something like
> this:
>
> A 32-bit box supports 4G of RAM because that is how much 32 bits can
> address. PCI express needs a bunch of memory addresses to use to map its
> stuff, so it takes the top half gig of *addresses* (not actual memory)
> for its own purposes, thus making the actual memory in that range
> inaccessible. In our case, another quarter gig was used by PCI express
> to map the video card memory, so we were down to 3.25 gigs available.

In 32-bit x86 there is 4GB of virtual address space (i.e. the most each
task can access is 4GB of memory). Linux and Windows split this virtual
address space up between a process and the kernel in different ways
(depending on kernel boot-time parameters) for performance reasons
regarding the TLB while OS X does not and gives each 32-bit process a full
4GB of address space, with a performance hit. This split is not related to
what hardware is in your system.

PCI devices are memory-mapped right below the top of the 32-bit memory
addressing space, just below 4GB.  Because of design limitations in PCI,
this physical address range is fixed and can't be moved.

With proper chipset/BIOS/EFI support, if you have 4GB or more of RAM the
address of physical RAM can be moved above where the PCI devices are
mapped so that you can still use it, regardless of whether you are in
32-bit or 64-bit virtual addressing mode.

All non-server versions (and some of the lowest-end server versions) of
32-bit Windows won't address physical address above 4GB in order to
maintain driver compatability with drivers that make poor assumptions
about physical memory address ranges (basically badly written drivers,
which there are a lot of in Windows).  Therefore in 32-bit Windows you
won't see all 4GB, even if the chipset/BIOS/EFI support remapping physical
memory.

With the proper chipset/BIOS/EFI, you can use all 4GB of memory in 64-bit
Windows, some server editions of 32-bit Windows, Linux, and OS X.

Without the proper chipset/BIOS/EFI (for instance all pre-Santa Rosa
mobile Intel chipsets), you will lose some physical memory no matter what
OS you run.



More information about the rescue mailing list