Well it is beyond my grasp (at the moment) but I see, for example, that my PCI express only has a 256MB MMIO mapping though the graphics card is 512MB. It looks to me that aPCI express bus is limited to 256MB. I expect this is similar to the AGP graphics aperture. It is very complicated now as the mainboard chipsets now include graphics management controllers and abstractions.
So my original assessment of Max chipset address range - graphics memory should be
max chipset range - video aperture - (other MMIO mapped memory like PCI bus).
- Gene
If the address mapping for display adapter's local cache is 1:1 mapping, then my address pool should be reduced at least 1.5 billion worth of addresses. In your case, it should be reduced at least 512 million addresses. But what do we have? My address space was used around 400 million addresses per card, and yours is used only around 260 millions addresses. So, I'm still waiting for this indicator which indicates 512 millions address reservation for your card, and 1.5 billions address reservation on mine...
zzz2496
Did you not read my reply that you just quoted?
I'm sorry, I didn't completely understand your post earlier (my mother language is
NOT english if it's not obvious enough). I'd say that the RAM on my graphic card is not mapped (neither directly nor indirectly) to the available global system address space. That's it.
As for my chipset's max limit, if you read my earlier post - ASUS's P5N32-SLI uses the exact same chipset as mine, yet it says only 8GB support. I know this is vendor to vendor difference, but honestly - the address space written on my motherboard's info doesn't really give us a clear info of how many RAM banks the chipset supports (unless we go directly to the chipset manufacturer, in my case: NVIDIA).
My conclusion: In recent systems, the RAM support depends on how many memory banks the memory controller can support. As for OS support, this depends on the processor support for 32bit or 64bit instructions. Back in the day, a pure 64bit processor won't run 32bit software at all, but now since backward compatibility is very important to x86 ISA, 64bit processor can run 32bit software in compatibility mode.
If you have 32bit processor, use 32bit OS. This will reduce the max memory size to around 3GB (depending on how many devices installed), some can yield as much as 3.25GB, some 2.95GB. Why is this happening? Because the 32bit address space is being used by devices installed on the system. Look at my screenshot at post 36. My address space is 16hex number long (because I'm running 64bit OS, 16^16 = 18.446.744.073.709.551.616, the 64bit address space) compared to 32bit system at only 8hex number long (16^8 = 4.294.967.296, the 32bit address space). This 8hex numbers are what our processor understands.
To be able to use every device in the system you need to put a number on devices. These devices are including but not limited to: RAM, devices on PCI(e) bus, network controller, display adapters, and many others. These devices needs a unique number so that the CPU can access it directly. For backward compatibility sake with 16bit instructions, the processor will put numbers on the first 40k RAM at the start of the address pool (or was it 640k? I forgot). Then the CPU needs to know what devices attached to the system over many buses, so PCI bus will have unique numbers, storage controllers will have numbers, and many other devices. These numbers usually resides at the lower address range. Then the CPU need to access every byte on your RAM, so the each byte will be numbered by the processor after it numbers all other devices.
This is where the 3GB limit resides, the unique numbers the processor have is around 4 billion numbers, around 1 billion of those numbers are reserved for system devices, the last device that are numbered is the RAM, thus if you have more RAM than the numbers, the numbers ran out before it can number all bytes of your RAM. You have many bytes of RAM that cannot be numbered, thus the system can't see it. If the devices uses around 1 billion, then the rest 3 billion numbers are used to number the RAM, thus the around 3GB limit (around 3 billion left over numbers, each number represents 1 byte).
All these talk about memory map for an add in graphic card's RAM is going nowhere because GFX card doesn't expose it's internals to the system. The system interfaces with the firmware on the graphic card.
If you have 64bit processor, use 64bit OS unless you have a VERY IMPORTANT application that needs 32bit OS and is having problems with 64bit OS. If in doubt, check the motherboard manual for official memory size support and don't go beyond that number (unless you're adventurous/have to much money) .
Exception: In old Intel XEON systems that has PAE, a 32bit processor can support more than 4GB RAM on 32bit OS, but there are some compatibility issues.
As for the OP, if you intent to use 32bit OS, keep the 3GB RAM. Your total RAM is not 3GB RAM + 512 GFX card's RAM, it's 3GB RAM ONLY. The CPU cannot use the 512MB GFX card's RAM. If in the future you want to upgrade to 64bit OS, buy more RAM - it's cheap...
zzz2496
Edit: Maybe there's a tag on the PCIe device info that defines how many addresses it needs. The address range consumption is not the same from one GFX card to another GFX card... I don't know, but one thing is sure: It's not mapped at all.