Before SP2, XP could make use of more than 4 GB address space with PAE, so you could get 4 GB usable system ram. But only up to 4 GB usable, so they don't want non-server editions to go beyond 4.
That is not given. Commited memory just means that it is available to the application. It doesn't necessarily mean that physical memory has been assigned. If I commit 10 GB, but only use 512 MB then only 512 MB physical ram is used.
It doesn't do that now. Applications cannot reserve memory in the page file. If an application checks if there is a page file, it might be out of fear of running out of memory.
The system ram is not being used, it cannot be used, because the cpu has no way of addressing it. It can only be addressed after remapping - that is why remapping was invented.
I am not sure we're on the same page. I never said such a thing. I keep saying the address space is being used (mmio)...
Look at it again. It has two areas with mmio. One below 4 GB and one below 64 GB. The traditional mmio is not moved. It is still located below 4G. Look at how the ram is remapped (reclaim base).
No, and btw, if you look at the map you'll se "OS Invisible" in the overlapping area with mmio...
No, the address space is used. The RAM is not. I said in a previous post not to confuse mmio with dma.
You see all of it in x64 Windows, because you have a much larger address space. If the ram was actually reserved for use with dma and such then it would also be gone in x64.
About making it easier for programmers... they don't really care about it. It is all handled by the OS.
You are right in one thing: If your amount of ram equals the size of your total address space then you have a problem, because you need empty space for remapping.
Okay, let us review what Intel says:
"The (G)MCH provides the capability to re-claim the physical memory overlapped by the Memory Mapped IO logical address space. The (G)MCH re-maps physical memory from the Top of Low Memory (TOLUD) boundary up to the 4 GB boundary to an equivalent sized...
In your first reponse you said that the memory was actually being "used". That is still wrong. I have never said that mmio has no address space. I said that the missing ram has no address space (therefore it is not used).
Look up memory remapping in any hardware reference manual at amd.com or...
The ram that is hidden behind mmio has no cpu address space, hence you cannot use it. It is as simple as that. Memory remapping fixes that - in conjunction with an OS that goes beyond 4G.
If you write to a mmio address that points to vram then you write "directly" to the vram, your system ram...
So you agree that this statement is faulty? In order to "use" the ram, you need to assign address space to it - which you cannot do when Windows doesn't allow access to address space above 4G.
If my point is not clear: The issue with hardware not being able to do 64bit-addressing is the same whether you install a 32 or 64bit OS. Double buffering will be needed in both cases - which is handled by the OS.
If the developer wants it to, it can trap just as fine as the 64bit OS can.
The problem doesn't change just because you install a 64bit OS.
The same goes for a 64bit OS.
Yes, the driver tells Windows that the card cannot do 64bit-addressing. That same goes for at driver in 32bit Windows. If addressing above 4G is needed then the OS does its magic...
Did you even try to understand? It seems you don't understand the difference between the term "RAM" used in that wiki article and what DRAM is. It is really not the same thing.
All your talk about MMU, page tables and virtual memory in this debate makes you look like a noob. Sorry.
Try and understand that the CPU and MMU as such has nothing to do with the memory controller. The memory controller is the link between your DRAM and the rest of the computer.
As said, picture an older cpu - that will make it easier for you. The memory controller in the northbridge is what...
You should ask yourself that.
Or try and think on an older cpu where the memory controller is not embedded inside it. What name will you give the address lines coming out from it?
You are a funny guy. If the address space (in this context) was defined as the space between the memory controller and your ram - then how can an address point to something not in ram?
Address space is just an empty space initially. A bunch of address lines going out from the CPU. The address space is populated with RAM and MMIO.
His problem was a shortage of address space (the maximum memory setting in Windows). He only had 4GB address space. That is not enough for both...