4GB memory

Lennart Sorensen lsorense-1wCw9BSqJbv44Nm34jS7GywD8/FfD2ys at public.gmane.org
Wed Apr 2 20:02:39 UTC 2008


On Wed, Apr 02, 2008 at 01:24:39PM -0400, Giles Orr wrote:
> This is completely counterintuitive to me - it seems you're saying "a
> machine with 4GB of RAM should show/have 4.8GB RAM."  Can you help me
> with that?

It should show:

640KB at address 0
3.2GB at address 1MB
800MB at address 4GB.

The 3.2GB to 4GB area is used by PCI so you can't access any ram in that
region.

The part at 640k to 1MB is reserved for BIOS, VGA, and other legacy PC
stuff.  The 3.2GB to 4GB range is reserved for PCI in the same way as
the legacy stuff was.  PCI is normally 32bit and hence needs to live in
the first 32bit of address space, so hence must be below 4GB.

The bit at 4GB is remapped by the hardware from 3.2GB, but the BIOS has
to enable the remapping and the chipset has to support remapping in
the first place.

The ram that is mapped above 4GB is only accessable by PAE or 64bit
enabled operating systems, and also can't be used for DMA busmastering
by PCI (since it only does 32bit addresses) unless the system has an
iommu for mapping the >4GB addresses to reserved addresses in the PCI
range for the DMA transfer.  Most AMD 64bit CPUs have an IOMMU, and a
lot of newer intel chipsets have it too (it's part of the memory
controller hence why AMD depends on the CPU and intel depends on the
chipset).  Earlier AMD systems could sometimes use the AGPGART as an
IOMMU if it wasn't needed for anything else.  If the system doesn't have
an IOMMU the linux kernel fakes one in software using bounce buffers
(causing an extra copy from ram to ram to take place of course).

-- 
Len Sorensen
--
The Toronto Linux Users Group.      Meetings: http://gtalug.org/
TLUG requests: Linux topics, No HTML, wrap text below 80 columns
How to UNSUBSCRIBE: http://gtalug.org/wiki/Mailing_lists





More information about the Legacy mailing list