i have a question about the memory allocation of my graphics card. my ati radeon 3870 has 512MB memory but the memory allocation in windows only shows 256MB. the PCI-to-PCI bridge shows 512MB (CFF00000 - EFEFFFFF), but only 256MB (D0000000 - DFFFFFF) is allocated to my grapics card.
That's because there is no relationship between the address space allocated to your graphics card and the amount of RAM it has. Yes, I know, there are 1000 people who say that the graphics card needs memory address space for graphics RAM. And if there were a million of them, it would still not be any more correct.
Your graphics card needs address space independent of the amount of RAM. It is not entirely correct to say there is no relationship between graphics RAM and address space allocated for the graphics card. There is no direct relationship.
The following is a mile-high overview of what happens...
The device manufacturer decides what resources the device should request from BIOS during PCI configuration. This is programmed through the device firmware and the ASIC or card itself, which must comply with relevant PCI, ACPI (old PNP) BIOS, and other specifications.
The device gets a chunk of address space, some of which is inclusive of the bridge it resides behind. At this point, the system has not addressed the card's RAM (except for a small legacy frame buffer). It has only reserved a chunk of address space for that device based on how much the device requested (and other system resource considerations). The graphics driver then loads, determines how its address space should be used, and declares it to the rest of the system.
Typically, a graphics card with 64MB or less RAM is going to use 1:1 mapping between RAM and its physical address space. A graphics card with 128MB may or may not. A graphics card with 256MB or more definitely will not. Instead, the graphics driver will bank switch to reach all its RAM through an MMIO window or some equivalent scheme.