Memory Limitations?

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

From what I understand, Windows XP Professional (32-Bit) is limited to 4 Gigs
of Ram, does this have any effect if I install a Video Card with 1gig??
Isn't the video card/resources managed differently?

Thanks,
 
Riddings said:
From what I understand, Windows XP Professional (32-Bit) is limited
to 4 Gigs of Ram, does this have any effect if I install a Video
Card with 1gig?? Isn't the video card/resources managed differently?

No relationship.
 
Riddings said:
From what I understand, Windows XP Professional (32-Bit) is limited to 4 Gigs
of Ram, does this have any effect if I install a Video Card with 1gig??
Isn't the video card/resources managed differently?


Windows XP 32bit is limited to 4GB of RAM because it uses 32bit pointers which means that the largest memory address that can be
used is 4GB (actually it's less but, theoretically speaking.) Windows will not use the same pointer for the RAM on a video card as
it does for system RAM. It doesn't really make any sense to do so since they are separate things just as memory and the hard drive
are; it wouldn't use the same pointer for those either.
 
Riddings said:
From what I understand, Windows XP Professional (32-Bit) is limited
to 4 Gigs of Ram,


Yes, in Professional or Home.

does this have any effect if I install a Video Card
with 1gig??

No.


Isn't the video card/resources managed differently?


Yes. One has nothing to do with the other.
 
artificially limited, yes, by license, nothing to do with it being 32-bit
OS.

As to your question about video card with 1 GB - of course it will have an
effect of how much RAM you see under 4GB limited (I'd like to enforce:
limitation is artificial, licence says: up to 4GB of RAM) OS, you'd have to
map these addresses somewhere below 4GB barrier for CPU to access. On the
other hand, if you would run Server 32-bit, such addresses can be re-mapped
to above 4GB.

You'll see somewhat below 3GB of RAM on such system, my guess 2.4 - 2.8 GB,
but that depends on many things, motherboard, BIOS version, BIOS settings,
other (PCI) devices that have to reserve addresses, Service Pack version,
drivers.
 
Mak said:
artificially limited, yes, by license, nothing to do with it being
32-bit OS.


No, there are no licensing issues here at all. Windows XP is limited to 4GB
of *System* memory, and that's a technical issue, not a licensing one. The
amount of memory on the video card is unrelated and not counted in that
limitation.
 
Mak said:
artificially limited, yes, by license, nothing to do with it being 32-bit OS.

I'm not sure what you are talking about. Can you explain? A 32bit OS is indeed limited to 4GB because that is the largest number
that can be represented by a 32bit number. Memory is accessed through pointers, and when 32bits are the largest size that are
supported natively, then the largest memory address accessible is 4,294,967,296, which equals 4GB. The artificial parts are that
there is a small chunk of memory (less than 640KB) which is unavailable due to system use, and that 3GB is the normal maximum
because of the way Windows partitions RAM into kernel and user mode sections (but that's about virtual memory, not physical.)
As to your question about video card with 1 GB - of course it will have an
effect of how much RAM you see under 4GB limited (I'd like to enforce:
limitation is artificial, licence says: up to 4GB of RAM) OS, you'd have to
map these addresses somewhere below 4GB barrier for CPU to access. On the
other hand, if you would run Server 32-bit, such addresses can be re-mapped
to above 4GB.

You'll see somewhat below 3GB of RAM on such system, my guess 2.4 - 2.8 GB,
but that depends on many things, motherboard, BIOS version, BIOS settings,
other (PCI) devices that have to reserve addresses, Service Pack version,
drivers.

Again, you'll have to explain your logic here. Accessing system RAM has nothing to do with accessing video RAM (other than that
they both use the word "RAM"). There is no occasion where the same pointer would be used to access both (it makes no sense to do
so.) They are separate entities just as a pointer to a block on a hard drive is different from a pointer to RAM.
 
D. Spencer Hines said:
That's why one should say, and write, RAM and VRAM.

True, but "VRAM" was used to refer to the specific type of RAM used in video cards a long time ago. Later, they used other types
(WRAM, SGRAM, SDRAM, etc.) More importantly, RAM is perfectly fine for a video card since it is random access memory. The terms
"system RAM" and "video RAM" should be used when needed to differentiate.
 
Mak said:
I'll let the man speak: http://forums.2cpu.com/showthread.php?threadid=63004

jeh = Jamie Hanrahan of Kernel Mode Systems, he wrote few things for
Windows Internal series by M. Rusinovich and D. Solomon.

I still don't see how system RAM and video RAM access are related. The thread you referenced says no such thing.

Think of it in terms of code:

function Foo() {
//pointer is a pointer type which is 32bits wide
//so the largest number that it can hold is

//back_buffer is a chunk of system RAM where the graphics are drawn
//video_display is the video card's memory which will display on screen
pointer back_buffer=AllocatedMemory(1000000);
pointer video_display=GetVideoRAM();

//read some graphics data from memory and process it
Read(back_buffer);
Process(back_buffer);

//display it on screen by copying it to the video card's RAM
Copy(video_display, back_buffer);
}

Accessing system RAM is done through a pointer, accessing video RAM is done through a different pointer.

What may be confusing you is memory mapped devices such as writing to a port by writing to a special memory address. For example,
when in VGA, text mode, or CGA mode, you can write to the video card by writing to the system RAM at 0xA8000, 0xB0000, and 0xB8000.

What you're missing is that if a video card has 1GB of RAM, 1GB does not get mapped into system RAM, thus reducing the amount of
system memory by 1GB. Memory mapping only occurs in specific (usually older) situations, so when the card's full memory is accessed
it is done so through DMA (direct memory access), which uses a separate pointer for it. It's like with system RAM back in the DOS
days. You could access system RAM using the easy method, but to use the full thing (EMS, XMS) you had to use another technique in a
different mode.

BTW, you are forgeting about PAE and mixing RAM and vitrtual memory.

I was summarizing, so I did not bother going into too much detail, and I did mentioned virtual.
 
Alec S. said:
I still don't see how system RAM and video RAM access are related. The
thread you referenced says no such thing.

Nowhere I claimed you had to do substruction such as 4GB RAM - 1GB of VRAM =
??
PCI devices do not reserve RAM, they reserve addresses in between 3 and 4 GB
region. XP (SP2 specifically) won't allow those addresses to be relocated
above 4GB (even if your mobo allows that). How much space is taken depends
on things I mentioned before, in particular number of PCI devices.
One of the cards on the market now with 1GB is GF 7950 X2, effectivelly 2
cards in one package (2 devices). On few systems I've seen using this card,
4 GB of RAM and XP the ammount of RAM reported was in between the numbers I
mentioned, hence my guess.

Think of it in terms of code:

function Foo() {
//pointer is a pointer type which is 32bits wide
//so the largest number that it can hold is

//back_buffer is a chunk of system RAM where the graphics are drawn
//video_display is the video card's memory which will display on
screen
pointer back_buffer=AllocatedMemory(1000000);
pointer video_display=GetVideoRAM();

//read some graphics data from memory and process it
Read(back_buffer);
Process(back_buffer);

//display it on screen by copying it to the video card's RAM
Copy(video_display, back_buffer);
}

Accessing system RAM is done through a pointer, accessing video RAM is
done through a different pointer.

What may be confusing you is memory mapped devices such as writing to a
port by writing to a special memory address. For example,
when in VGA, text mode, or CGA mode, you can write to the video card by
writing to the system RAM at 0xA8000, 0xB0000, and 0xB8000.

What you're missing is that if a video card has 1GB of RAM, 1GB does not
get mapped into system RAM, thus reducing the amount of
system memory by 1GB. Memory mapping only occurs in specific (usually
older) situations, so when the card's full memory is accessed
it is done so through DMA (direct memory access), which uses a separate
pointer for it. It's like with system RAM back in the DOS
days. You could access system RAM using the easy method, but to use the
full thing (EMS, XMS) you had to use another technique in a
different mode.



I was summarizing, so I did not bother going into too much detail, and I
did mentioned virtual.

You are right, you did say virtual, it's just in such context (we are
talking about RAM) all that talk about virtual was a bit surprising..
 
Back
Top