XP} 4GB ram + 256mb video ram= 3GB?

Mike Armstrong

Limp Gawd
Joined
Jun 26, 2005
Messages
197
I'm running XP SP3 Home on an older machine. It has 4GB ram (4x1GB) and an older video card with 256mb ram. When I right click My Computer-> Properties it only shows 3GB ram.

Is that because 32bit XP Home will only recognize 3GB max? Or is there something in BIOS I need to change in order for it to recognize more. Thanks
 
I'm running XP SP3 Home on an older machine. It has 4GB ram (4x1GB) and an older video card with 256mb ram. When I right click My Computer-> Properties it only shows 3GB ram.

Is that because 32bit XP Home will only recognize 3GB max? Or is there something in BIOS I need to change in order for it to recognize more. Thanks
You answered your own question. All 32bit Windows operating systems only recognize approximately 3.2GB of RAM.
 
OK, thanks.

It's an older machine I built with the best components at the time, it's been bulletproof and just keps on going. When one of the two 1BG sticks of ram finally quit I took advantage of Black Friday and picked up 3gigs for cheap (the max that the old DFI mobo will take). My wife is the only one that uses that machine now for internet, MS Office work and video.

I was planning on doing the obligatory 6mo Windows re-install anyway and since there are 4gigs of memory in there now and I have a copy of XP x64 Pro laying around I wonder if it would make sense to make use of it, instal it and get the most out of the 4gigs?
 
Last edited:
total address space in a consumer Windows NT based 32bit OS is 4GB. This address space includes ram, rom and most importantly the PCI I/0 map that is typically 750MB to 1.5GB in size. So you take your total address space and subract the PCI I/O map and you are left with usable ram.. The size of yor PCI I/O map is related to what hardware you have installed and what address space it is requesting* **

*The above statement does not include the use of PAE as that is known to be unreliable unless you have hardware drivers that properly operate with it.

** In order for a 64bit OS to support MORE than 4GB your chipset has to support what is known as memory remap feature otherwise upgrading to a 64bit OS will do nothing to free up more of your available ram.
 
Thank you Yeu, very informative. So given that it's showing 3GB, it must be recognizing more than that. Switching over to XP x64 Pro using the same 4GB of ram shouldn't result in hardly any gain then. At least there's a full 3GB available now as opposed to just the 1GB I had left previously.
 
^ it depends upon your MB and CPU...are you running an Intel C2D (or newer) or AMD x64 processor based setup? If so, upgrading to a 64bit OS would be beneficial as those platorms and newer support memory remap......
 
^ it depends upon your MB and CPU...are you running an Intel C2D (or newer) or AMD x64 processor based setup? If so, upgrading to a 64bit OS would be beneficial as those platorms and newer support memory remap......

It's an old Athlon64 3700+ San Diego processor on a DFI Lanparty nf4 SLI-DR mb. I'll wont be putting any more than the 4gigs of memory in there. Are you saying with my cpu/mb combo that a x64 OS would allow the full 4GB to used? Plus the benefit of x64 processing I suppose.
 
You answered your own question. All 32bit Windows operating systems only recognize approximately 3.2GB of RAM.

This is not and never the answer

total address space in a consumer Windows NT based 32bit OS is 4GB. This address space includes ram, rom and most importantly the PCI I/0 map

This is the correct answer. However the address space is only RAM it does not include itself. Within the monolithic space are the segments allocated for the PCI hole (memory I/O), rom's, and I/O addresses.


What many get absolutely wrong is the fact that Windows "recognizes" and even "uses" all the memory. However, what is not understood, nor known by most, is that all the devices have segments of memory that are allocated for communication to the devices and movement of its data. If these areas were not determined and multiple devices decide to communicate within the same addresses you would simply crash because these segments need to be exclusive.


Thanks. I'll give XP x64 a go then.

XP x64 Pro is a bit of a bastards child, and does have limited support. Vista or Win 7 is supported, pretty much, completely or at least has very good support.
 
What many get absolutely wrong is the fact that Windows "recognizes" and even "uses" all the memory.

I don't think that makes it any more clear, because it doesn't use all the installed ram. It is ram vs address space.
 
32bit Windows server operating systems have supported over 4gb of memory for a very long time, and linux supports more than 4gb of ram with it's 32bit versions as well.

I think the 3.x gb limit in consumer 32bit Windows operating systems is just an artificial one.

There are kernel patches to enable > 4gb memory in 32bit versions of Windows 7 and Vista, but I don't believe any of them work with the latest service packs and patches. It does not change how much memory can be allocated to a single process though.
 
I don't think that makes it any more clearer, because it doesn't use all the installed ram. It is ram vs address space.

I think you mean MMIO address space vs installed RAM address space? I do understand what you are saying. However, to say that the memory is not being used is illogical. MMIO address spaces are overlapping the address space of the RAM installed. Therefore the BIOS and core logics disable access to those segments, but to say that it is not being used is nothing but contradictory.

This statement, I would think, you would have to disagree with too: "Is that because 32bit XP Home will only recognize 3GB max?" To say that is true, correct, et al is nothing but incorrect. It needs to be understood that devices take segments of the addressed space, in which makes those segments unusable for system memory, but are used for the devices of the system; and is also the segments which the driver points to for transactions to the devices for the OS. Windows XP "recognized" the 4GB of memory, but segments are being used by devices for MMIO. This is what should be given as the answer.

From Wiki :
Modern personal computers are built around a set of standards that depend on, among other things, the characteristics of the original PCI bus. The original PCI bus supported 32-bit physical addresses and 32-bit wide data transfers. PCI (and PCI Express, and AGP) devices present at least some, if not all, of their host control interfaces via a set of memory-mapped I/O locations (MMIO). The address space in which these MMIO locations appear is the same address space as that used by RAM, and while RAM can exist and be addressable above the 4 GB point, these MMIO locations decoded by I/O devices cannot be. They are limited by PCI bus specifications to addresses of 0xFFFFFFFF (232-1) and below. With 4 GB or more of RAM installed, and with RAM occupying a contiguous range of addresses starting at 0, some of the MMIO locations will overlap with RAM addresses.

The BIOS and chipset are responsible for detecting these address conflicts and disabling access to the RAM at those locations.[9] Due to the way bus address ranges are determined on the PCI bus, this disabling is often at a relatively large granularity, resulting in relatively large amounts of RAM being disabled.[10]

The only reason as to why I am linking this is due to the diagram of USED memory. http://www.codinghorror.com/blog/2007/03/dude-wheres-my-4-gigabytes-of-ram.html


I think the 3.x gb limit in consumer 32bit Windows operating systems is just an artificial one.

Not all core chipsets/core logics supported PAE. Therefore, a very good reason to the "artificial" limit that was later in place after SP2 for Windows XP
 
I think you mean MMIO address space vs installed RAM address space?
They are the same, they share the same physical address space. The part with MMIO cannot be used by ram, so it is therefore not used (wasted).
 
They are the same, they share the same physical address space. The part with MMIO cannot be used by ram, so it is therefore not used (wasted).

I know what they are, and my post should show this as so. However, you said this: It is ram vs address space. Therefore, my correction: " I think you mean MMIO address space vs installed RAM address space?".

And one more correction, I think you mean the MMIO cannot be used as available system memory, but this does not indicate that these segments are "wasted." Which I am assuming means that you are agreeing to the question I asked to you about the statement used and its incorrect logic.
 
Not all core chipsets/core logics supported PAE. Therefore, a very good reason to the "artificial" limit that was later in place after SP2 for Windows XP

I'm not sure what you mean. I understand that not all devices support PAE, but the majority do. It is not something that is required to be enabled though, so why completely disable it for everybody? PAE is supported in the server products, which can run on the exact same hardware that the consumer OS can run on; which may or may not support PAE.
 
is the fact that Windows "recognizes" and even "uses" all the memory.

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.
 
Whoa! You guys are way over my head now :) From what I can understand in this thread and on an internet search, the nForce 4 chipset on my Mb should allow for Memory Remapping and I should be able to enable Memory Hole Remapping under the DRAM settings in the BIOS. That setting, my x64 cpu and XP x64 OS should allow for usage of all 4GB (max my Mb will allow) with the added benefit of x64 computing (though, in such an outdated PC and for non demanding usage it probably wont be noticed much but I might as well squeeze the rest of the life out of it :)). I've never tried overclocking it but not doing so may be why it's lasted this long:) Thanks
 
I'm not sure what you mean. I understand that not all devices support PAE, but the majority do. It is not something that is required to be enabled though, so why completely disable it for everybody? PAE is supported in the server products, which can run on the exact same hardware that the consumer OS can run on; which may or may not support PAE.

The memory controller in the north bridge has to support the extended address space along with the processor's support. However, Microsoft notes that it is due to the driver ecosystem which has a relationship with virtual and physical translations. The virutal space was still limited at 4GB, IIRC. A whitepaper for the previous Intel chipsets will note that if it supports PAE or not.

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.

It has address space and is accessed to allow communication. Read my Wiki post, for clarification. Windows does access it, it does not use it as usable system memory; this is the caveat. How else are you going to move that texture from hard drive, to RAM, and then to a video card?


That setting, my x64 cpu and XP x64 OS should allow for usage of all 4GB (max my Mb will allow) with the added benefit of x64 computing

Again, my point is that it is being used, it just cannot be allocated as system memory usable by Windows itself to load Battlefield 3, for example. So, yes, in the manner that you asked the PCI hole can be via remapping and still is present of course. But since it does not occupy the lower segments of the 4GB range anymore, that area can be used a usable system memory for Windows. It may not allow exact usage of it all. Some memory is absolutely locked by hardware and cannot be moved. This can be, sometimes, a small amount. Other times it can be a nice chunk megabytes.
 
It has address space and is accessed to allow communication. Read my Wiki post, for clarification. Windows does access it, it does not use it as usable system memory; this is the caveat. How else are you going to move that texture from hard drive, to RAM, and then to a video card?

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 is not involved. Don't confuse mmio with dma.
 
So, yes, in the manner that you asked the PCI hole can be via remapping and still is present of course. But since it does not occupy the lower segments of the 4GB range anymore, that area can be used a usable system memory for Windows.
Remapping doesn't actully move the mmio area (it stays below 4G), it moves the overlapped system ram up above 4G.
 
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 is not involved. Don't confuse mmio with dma.

You completely have misunderstood me. Your rebuttal was "The ram that is hidden behind mmio has no cpu address space, hence you cannot use it." The RAM is not hidden it is excluded from being used as system memory by the OS, and it is an addressed segment.

I know what first party DMA is, but what you are not getting and what I was asking from my previous question is that the address space is the area in which communication happens. In your previous post you say MMIO has no address space. My question from the previous post is that if it has no address space then how is it going to be read from the hard drive, place in RAM if necessary, or written to the video RAM? So you have not comprehended my questions which are logical arguments to your posts for its incorrectness.


Remapping doesn't actully move the mmio area (it stays below 4G), it moves the overlapped system ram up above 4G.

No it moves it up. A simple search will show that you are incorrect, or how about this from Microsoft themselves: The BIOS must support the memory remapping feature. The memory remapping feature allows for the segment of system memory that was previously overwritten by the Peripheral Component Interconnect (PCI) configuration space to be remapped above the 4 GB address line. (http://support.microsoft.com/kb/929605) I think you may be getting memory reclamation (memory hoisting) and remapping completely confused.
 
Last edited by a moderator:
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 intel.com. Sure, amd calls it memory hoisting - which it the very same as intels memory remapping. Or try carefully reading your quote from microsoft again. Your quote also says "of system memory that was previously overwritten" - that means "hidden". Which means you cannot use it.
 
Last edited:
This is not and never the answer



This is the correct answer. However the address space is only RAM it does not include itself. Within the monolithic space are the segments allocated for the PCI hole (memory I/O), rom's, and I/O addresses.


What many get absolutely wrong is the fact that Windows "recognizes" and even "uses" all the memory. However, what is not understood, nor known by most, is that all the devices have segments of memory that are allocated for communication to the devices and movement of its data. If these areas were not determined and multiple devices decide to communicate within the same addresses you would simply crash because these segments need to be exclusive.




XP x64 Pro is a bit of a bastards child, and does have limited support. Vista or Win 7 is supported, pretty much, completely or at least has very good support.

rom is copied over to the ram but it is still effectively the rom routines (rom is shadowed into ram to speed up irt's execution) so that's why I worded it that way....
 
Remapping doesn't actully move the mmio area (it stays below 4G), it moves the overlapped system ram up above 4G.

actually it does and you will once again run into the same issues once we reach the limits of 64bit addressing (256TB- soon to be expanded to 4PB by AMD) as currenly implimented. The reason you put the MMIO at the top is so that your ram is one large chunk available for use (It makes it easier on programmers.
 
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 logical address range located just below the Intel ME's stolen memory."

Amd calls it memory hoisting. It does the exact same thing. They write:

"Memory hoisting is defined as reclaiming (relocating) the unusable DRAM space that would naturally reside in the MMIO hole just below the 4GB address level. This memory is repositioned above the 4GB level when the registers that control memory hoisting"

Furthermore, it is also what that kb from Microsoft says "The memory remapping feature allows for the segment of system memory that was previously overwritten by the Peripheral Component Interconnect (PCI) configuration space to be remapped above the 4 GB address line."

You can easily confirm that it works this way by looking at the map of your current adress space (if you are running with remapping on).
 
Last edited:
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.
 
Yay, installed XP x64 Pro, turned on Memory Hole (or something like that) in BIOS to see more than 4GB memory and walla! It now shows all 4gigs of memory being used, cool. Thanks for the help.

Question, would it be worth switching out the old PCI-e x16 7800 GTX for something newer just because video cards are so cheap right now? Given my old CPU, OS and memory specs whats the most video card my system could drive?
 
32bit Windows server operating systems have supported over 4gb of memory for a very long time, and linux supports more than 4gb of ram with it's 32bit versions as well.

I think the 3.x gb limit in consumer 32bit Windows operating systems is just an artificial one.

There are kernel patches to enable > 4gb memory in 32bit versions of Windows 7 and Vista, but I don't believe any of them work with the latest service packs and patches. It does not change how much memory can be allocated to a single process though.

PAE gives the OS more than 32 bits to work with.
 
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 intel.com. Sure, amd calls it memory hoisting - which it the very same as intels memory remapping. Or try carefully reading your quote from microsoft again. Your quote also says "of system memory that was previously overwritten" - that means "hidden". Which means you cannot use it.

The RAM is being used. Make no mistake about that. It is just not available for the user's programs. In simple terms it's used for direct memory access for hardware devices that require it. This is not "unused" by any stretch of the imagination. The amount of reserved memory varies greatly by your installed hardware. I've seen systems with as little as 2.5GB available and as much as 3.90GB. My dual Opteron 254 system on a Tyan K8WE (S2895) had 8GB of RAM installed in it and dual GeForce 7900GTX's, sound card, dual NICs, SCSI controller, etc. and in Windows XP Professional 32bit I only saw 2.5GB of RAM in the OS. With Windows XP Professional x64 Edition I saw all the installed memory.

PAE gives the OS more than 32 bits to work with.

Not quite. PAE is something that needs to be supported by the processor as well as the OS. All NT based OSes from Microsoft from Windows 2000 onward all do. So that's not a concern. All processors from the Pentium Pro onward excluding some variants of the Pentium M support PAE as well. In the Pentium Pro their memory address table was extended from 32 to 36bits. AMD extended it even further in the Athlon 64 to 52bits.
 
Not quite. PAE is something that needs to be supported by the processor as well as the OS. All NT based OSes from Microsoft from Windows 2000 onward all do. So that's not a concern. All processors from the Pentium Pro onward excluding some variants of the Pentium M support PAE as well. In the Pentium Pro their memory address table was extended from 32 to 36bits. AMD extended it even further in the Athlon 64 to 52bits.

I'm not sure how anything you said contradicts what I said. My claim was that PAE gives the OS more than 32 bits to work with. This is true whether it's 36 or 52. The point is that addressing memory beyond 4 gigabytes requires more than 32 bits, however implemented.
 
I'm not sure how anything you said contradicts what I said. My claim was that PAE gives the OS more than 32 bits to work with. This is true whether it's 36 or 52. The point is that addressing memory beyond 4 gigabytes requires more than 32 bits, however implemented.

Well I was clarifying it more than anything. Without the PAE support in the processor, it wouldn't matter if the OS supported it or not.
 
Well I was clarifying it more than anything. Without the PAE support in the processor, it wouldn't matter if the OS supported it or not.

Six of one, half a dozen of the other. This still holds true: "PAE gives the OS more than 32 bits to work with."

Obviously, on a system without PAE, the OS can't have PAE, and thus doesn't have more than 32 bits to work with.

The easy/obvious solution, of course, is to install amd64 Win7 ;)
 
Yay, installed XP x64 Pro, turned on Memory Hole (or something like that) in BIOS to see more than 4GB memory and walla! It now shows all 4gigs of memory being used, cool. Thanks for the help.

Question, would it be worth switching out the old PCI-e x16 7800 GTX for something newer just because video cards are so cheap right now? Given my old CPU, OS and memory specs whats the most video card my system could drive?

You would get better gaming performance out of a newer graphics card. I wouldn't go beyond a mid-range offering if I were you. Even then a faster machine with the same card will be faster. Generally speaking people tend to over estimate "CPU bottlenecking" and overuse the term. Bottlenecking does exist and will be a factor with anything you choose that's truly better than your 7800GTX. That being said, you can still get value and much improved performance by simply switching out the graphics card.
 
The RAM is being used. Make no mistake about that. It is just not available for the user's programs. In simple terms it's used for direct memory access for hardware devices that require it. This is not "unused" by any stretch of the imagination. The amount of reserved memory varies greatly by your installed hardware. I've seen systems with as little as 2.5GB available and as much as 3.90GB. My dual Opteron 254 system on a Tyan K8WE (S2895) had 8GB of RAM installed in it and dual GeForce 7900GTX's, sound card, dual NICs, SCSI controller, etc. and in Windows XP Professional 32bit I only saw 2.5GB of RAM in the OS. With Windows XP Professional x64 Edition I saw all the installed memory.

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.



http://www.intel.com/assets/pdf/datasheet/317607.pdf

Intel Chipset manual page 46 clearly shows PCI IO map moved to the top of the 64GB stack in the Intelte chipset for address space >4GB
 
Back
Top