8

Why does Ubuntu 10.10 amd64 (Maverick Meerkat) not address more of 3 GB RAM?

My machine is a Toshiba P205-S6287 Intel Centrino Duo 64 bits processor and 4 GB RAM at 667 MHz.

According to the detailed specifications, the notebook runs a 64-bit Core 2 Duo T5300 processor and has a 945GM Express chipset.

4 Answers4

16

This is due to the Mobile Intel 945GM Express in your laptop.

I own a Thinkpad T60, which uses the same chipset. It was one of the first northbridges from intel for the Core2Duo 64-bit CPUs. They failed in designing it.

The chipset can only theoretically address 4GB of RAM, yet also has to address other hardware (I/O memory). It reserves the upper 1GB memory range for that. The 64bit logical memory address support in the Linux kernel doesn't help, because the mainboard and northbridge only provide for a 32bit physical address bus to the CPU. And there is no workaround.
http://forums.lenovo.com/t5/T61-and-prior-T-series-ThinkPad/Thinkpad-s-and-N100-s-w-945PM-chipset-can-t-address-gt-3G-Ram/m-p/2730

There is a theoretical option in devising memory bank switching. Yet the kernel does not support it, nor would it make sense on the x86 architecture. The i810 memory controller of the 945GM is probably too lazy for that to make sense.

mario
  • 3,460
1

There are several possible reasons.

One is that you are, in fact, not running the amd64 build. Another is that your motherboard and/or BIOS are broken and not reporting the correct amount of RAM.

Another is that you have video memory and other hardware resources taking up space in the 3-4 GB area of memory, and your motherboard/BIOS is incapable of hoisting the shadowed RAM to higher addresses so that it can be accessed.

Figuring out which requires looking at your dmesg output.

psusi
  • 37,551
1

My short answer is: likely because the BIOS designer was sloppy.

The long anwser is:

Although you have 4GB RAM installed, you can not expect to have 4GB of usable RAM available with the Intel 945GM chipset. This is a chipset limitation. You can tell this from the chipset's specification:

http://www.intel.com/content/www/us/en/intelligent-systems/navy-pier/mobile-945-express-chipset-datasheet.html

Quote from section 9.2: "The Memory Controller Hubs provides a maximum DRAM address decode space of 4 GB. The MCH does not remap APIC or PCI Express memory space. This means that as the amount of physical memory populated in the system reaches 4 GB, there will be physical memory that exists yet is non-addressable and therefore unusable by the system."

The BIOS must reserve address ranges for several resources, i.e. the BIOS itself, PCI and PCI Express memory mapped space, internal graphics, APIC memory space and other memory windows for I/O access. All these address ranges have to lie within the 4GB address space and as such occupy address ranges that are not available to system memory any longer. You could say these resources "steal" physical RAM memory space.

That being said, if you have 4GB installed you can expect to have more than 3GB system memory available.

The amount of physical memory that is available to the system depends on how much effort the BIOS designer puts into arranging theses address ranges. For example, the BIOS could allocate the least amount needed for each resource. Or it could allow for disabling or limiting address allocation for PCI Express depending on your system's usage of PCI Express devices.

The BIOS designer of your system likely set the upper limit of usable RAM to a static maximum of 3GB even though you installed 4GB. This approach provides a static address window of 1GB to the BIOS designer and as such simplifies the BIOS designers task to allocate address ranges for the resources so they do not conflict with any other address range.

Daniel K.
  • 406
0

psusi is right.

I have the same situation here:

Although they call it "64-bit CPU" you can often not address 4 GB+ memory.

Most old motherboard do only have 32 bit for the addresses and from this pool the graphics card needs to get their addresses too.

= 4 GB - graphics card memory (1 GB) = 3 GB.

I fear there is no possibility to fix this by patching or upgrading firmware of anything.

If you are interested in detail I recommend: Physical Address Extension

aatdark
  • 1,876
  • Also: If at all possible, the normal 32 bit installer will automatically enable the Physical Address Extension kernel if needed, allowing you to use all your memory. – Stefano Palazzo Jan 08 '11 at 17:15
  • As it is been notified by @StefanoPalazzo and others installing PAE kernel solves the issue Just search for PAE kernel in synaptic package manager and install: http://hailubuntu.blogspot.com/2010/09/ubuntu-detecting-less-ram.html – wisemonkey Jan 23 '12 at 20:17
  • 1
    @wisemonkey: no an PAE kernel does not gave me the full 4GB. Because i already use an 64bit kernel and even the bios reports: 4GB total -> 3.2GB useable. – aatdark Aug 09 '12 at 20:56
  • @aatdark: Does your BIOS setup have field "Shared video memory" ? If yes can you disable it (only recommended if you have discrete graphics card) but then again as you said if its old computer then complete memory is not addressable. – wisemonkey Aug 11 '12 at 02:28
  • 1
    "The Intel Intel® 945 bases Chipsets provide a maximum address space of 4GB and does not support memory remapping. As parts of that address need to be reserved for other devices, you will not be able to use more than 3.2 GB of system memory with your current system configuration. No BIOS Update or 64 Bit operating system will ever change that. This is a chipset rather than a board or BIOS limitation." – aatdark Aug 11 '12 at 20:58