4GB RAM. 1GB Used For Hardware

H

Haydon

If you have 4GB of RAM, it will only show as having 3GB of RAM in Vista,
because 1GB is used for hardware.

Does Vista allocating 1GB of RAM to hardware improve system performance?
 
J

Justin

Haydon said:
If you have 4GB of RAM, it will only show as having 3GB of RAM in Vista,

This is normal for the 32bit version of Vista.
because 1GB is used for hardware.

Who told you that? Stop listening to them. That is not true.
 
K

Ken Blake, MVP

If you have 4GB of RAM, it will only show as having 3GB of RAM in Vista,
because 1GB is used for hardware.



Not exactly. Note four things:

1.It's not all versions of Vista, it's only 32-bit Vista. This is not
an issue in 64-bit Vista.

2. It's not just Vista. It's *all* 32-bit versions of Windows.

3. It's not 3GB, it's *around* 3GB--usually a little more than 3GB

4. It's not that the RAM is used for hardware, it's that that portion
of the *address space* is used for hardware. The leftover GB or so of
RAM just gets no address space to map it to.

Does Vista allocating 1GB of RAM to hardware improve system performance?


See number 4 above. No, because it doesn't allocate any of that system
RAM to hardware.
 
H

Haydon

OK, so getting the hair splitting out of the way. Based on 32bit Vista, and
it is not necessarily 3GB of RAM used by the OS, it could be give or take.

So, basically PC manufactures are ripping people off by selling them 4GB of
RAM, when 3GB would have the same performance?
 
S

Stephan Rose

Haydon said:
OK, so getting the hair splitting out of the way. Based on 32bit Vista,
and it is not necessarily 3GB of RAM used by the OS, it could be give or
take.

So, basically PC manufactures are ripping people off by selling them 4GB
of RAM, when 3GB would have the same performance?

Ok this is how it works, I am going to attempt to explain it as best as I
can...

This applies to pretty much any operating system, be it Linux, Windows, Mac,
WinCE and other embedded systems with processors that have a MMU.

A 32-bit processor can address 32-bits of address space, so in other words,
4 gigabytes. In any multi tasking operating system, address space is split
into two parts. One is called User space and it generally starts at address
0. The other part is called Kernel space and starts at whatever arbitrary
address the kernel chooses for it. In case of WinXP for example, this is
the 2 gigabyte, or if enabled via a special boot switch, the 3 gigabyte
mark.

Now user-space is reserved for applications. Each single application gets
its own copy of user space. So if there are 10 running processes, there are
10 user space mappings all starting at address 0. As the task manager
switches between the processes, it sets up the correct mapping starting
from address 0 for the process it is going to run next. Rinse and repeat
for every process in the list and then start over.

So this is what enables every application to have it's own memory and
without stepping on the memory of another application. The task manager has
a list of memory pages, usually 4kb in size each and it has a list for each
process which of these pages are assigned to it. So basically, if you have
2 gigs of memory then there are about 524288 4kb pages that can be assigned
to the various applications. Once you run out of those pages, the system
runs out of memory. These pages are assigned to each process in a
contiguous manner starting from address 0 to however much memory an
application needs to the end of user addressable space.

So on WinXP, since it has a 2 gig user space, it is impossible for any one
application to use more than 2 gigs of space even if a system had 4 gigs as
it can only address 2 gigs.

Now the second part, Kernel space cannot be used by an application. The
various hardware in your system also needs room in the 4 gigs worth of
address space. For example, the video memory of your video card is mapped
into kernel space. So taking XP as an example, if you have 512 megs of
memory, then XP assigns 512 megs of address space, of it's 2 gig kernel
addressable space, to the video card. This then leaves 1.5 gigs available
for other hardware, the kernel's own memory, etc.

Now all this is done by a Memory Management Unit on the CPU that uses a
pagetable directory to figure out what page goes where. It's a really neat
thing that can map any 4kb page from *anywhere* in memory *to* anywhere in
memory. This is the most basic thing that even allows multi tasking. It
however can only map up to 4 gigs of space since the CPU only has 32-bit
registers.

Now since hardware also has to be mapped into the same address space as
memory, any address space used up by your various installed hardware for
addressing, such as video memory, can no longer be used for anything else
in the pagetable.

So that means that if you have 4 gigs of ram, any amount of addressable
space mapped to hardware and the kernel cannot be mapped to anything else
anymore. That is why you see less than 4 gigs available.

64-bit CPUs don't have this problem because instead of 4 gigs of addressable
space, they have 17,179,869,184 gigs of addressable space.

I don't think even MS can manage to fill up that many gigs of space anytime
soon.

--
Stephan
2003 Yamaha R6

å›ã®ã“ã¨æ€ã„出ã™æ—¥ãªã‚“ã¦ãªã„ã®ã¯
å›ã®ã“ã¨å¿˜ã‚ŒãŸã¨ããŒãªã„ã‹ã‚‰
 
A

Alun Harford

Haydon said:
OK, so getting the hair splitting out of the way. Based on 32bit Vista,
and it is not necessarily 3GB of RAM used by the OS, it could be give or
take.

So, basically PC manufactures are ripping people off by selling them 4GB
of RAM, when 3GB would have the same performance?

Basically, correct.

Let me try to explain this.

All a computer program can do (the instructions avaliable to it) is to
read and write to memory, and to perform arithmetic. But programs
display items on your screen, read and write files on your hard disk,
talk to the network card, etc.
In order to (for example) write some data to the hard disk, what it does
is to write to an area of memory that doesn't need to physically exist.
Then the hard disk controller intercepts that and writes to the disk.

When you add 4GB of memory to a computer, all of the address space
actually has physical memory backing it up. So where do you write to if
you want to talk to the hard disk, for example?
The answer is that you have to 'waste' physical memory.

Alun Harford
 
K

Ken Blake, MVP

OK, so getting the hair splitting out of the way. Based on 32bit Vista, and
it is not necessarily 3GB of RAM used by the OS, it could be give or take.



You can call it hair-splitting if you want, but I don't think it's
that at all.

So, basically PC manufactures are ripping people off by selling them 4GB of
RAM, when 3GB would have the same performance?


That's true, *if* the RAM is sold with a 32-bit operating system.
 
A

Adam Albright

This is normal for the 32bit version of Vista.


Who told you that? Stop listening to them. That is not true.

Yea right, listen to the newsgroup crybaby and clown instead (Justin)
that admits he gets a kick out of trying to upset people and doesn't
consider some posters human who's only purpose here is to see how many
fights he can start.

Want Justin to get po-ed? Simply disagree with anything he says ever
so slightly and he'll promptly label you a liar and troll.
 
S

Stephan Rose

Adam said:
Yea right, listen to the newsgroup crybaby and clown instead (Justin)
that admits he gets a kick out of trying to upset people and doesn't
consider some posters human who's only purpose here is to see how many
fights he can start.

Want Justin to get po-ed? Simply disagree with anything he says ever
so slightly and he'll promptly label you a liar and troll.

Honestly that's not true. I disagree with Justin on plenty of things but he
doesn't label me a liar or troll.

But then again I also have a habit of bringing along realistic arguments and
reasons....that *might* have something to do with it.

--
Stephan
2003 Yamaha R6

å›ã®ã“ã¨æ€ã„出ã™æ—¥ãªã‚“ã¦ãªã„ã®ã¯
å›ã®ã“ã¨å¿˜ã‚ŒãŸã¨ããŒãªã„ã‹ã‚‰
 
J

Justin

Adam Albright said:
Yea right, listen to the newsgroup crybaby and clown instead (Justin)
that admits he gets a kick out of trying to upset people and doesn't
consider some posters human who's only purpose here is to see how many
fights he can start.

Want Justin to get po-ed? Simply disagree with anything he says ever
so slightly and he'll promptly label you a liar and troll.

It's ok. We all know all you do is look for fights. Like your post right
here. It's just you trolling for a fight. Have fun with it.
 
J

Justin

Stephan Rose said:
Honestly that's not true. I disagree with Justin on plenty of things but
he
doesn't label me a liar or troll.

But then again I also have a habit of bringing along realistic arguments
and
reasons....that *might* have something to do with it.

That's the important part. This is something these trolls can't figure out.
When "real" things are being said back and forth there is usually no
problem. People disagree and people agree. Wait...isn’t that the POINT of
a discussion group? :)

It’s not until people start to give their opinion as fact that things go
down hill or are ignored or are labeled as trouble makers. Like when
someone makes a negative comment about ALL beta testers because Vista
sucks???? hint hint hint.... :)
 
A

Adam Albright

It's ok. We all know all you do is look for fights. Like your post right
here. It's just you trolling for a fight. Have fun with it.

You're so lame you even have to copy insults. What a loser.
 
J

Jane C

Ok this is how it works, I am going to attempt to explain it as best as I
can...

This applies to pretty much any operating system, be it Linux, Windows,
Mac,
WinCE and other embedded systems with processors that have a MMU.

A 32-bit processor can address 32-bits of address space, so in other
words,
4 gigabytes. In any multi tasking operating system, address space is split
into two parts. One is called User space and it generally starts at
address
0. The other part is called Kernel space and starts at whatever arbitrary
address the kernel chooses for it. In case of WinXP for example, this is
the 2 gigabyte, or if enabled via a special boot switch, the 3 gigabyte
mark.

Now user-space is reserved for applications. Each single application gets
its own copy of user space. So if there are 10 running processes, there
are
10 user space mappings all starting at address 0. As the task manager
switches between the processes, it sets up the correct mapping starting
from address 0 for the process it is going to run next. Rinse and repeat
for every process in the list and then start over.

So this is what enables every application to have it's own memory and
without stepping on the memory of another application. The task manager
has
a list of memory pages, usually 4kb in size each and it has a list for
each
process which of these pages are assigned to it. So basically, if you have
2 gigs of memory then there are about 524288 4kb pages that can be
assigned
to the various applications. Once you run out of those pages, the system
runs out of memory. These pages are assigned to each process in a
contiguous manner starting from address 0 to however much memory an
application needs to the end of user addressable space.

So on WinXP, since it has a 2 gig user space, it is impossible for any one
application to use more than 2 gigs of space even if a system had 4 gigs
as
it can only address 2 gigs.

Now the second part, Kernel space cannot be used by an application. The
various hardware in your system also needs room in the 4 gigs worth of
address space. For example, the video memory of your video card is mapped
into kernel space. So taking XP as an example, if you have 512 megs of
memory, then XP assigns 512 megs of address space, of it's 2 gig kernel
addressable space, to the video card. This then leaves 1.5 gigs available
for other hardware, the kernel's own memory, etc.

Now all this is done by a Memory Management Unit on the CPU that uses a
pagetable directory to figure out what page goes where. It's a really neat
thing that can map any 4kb page from *anywhere* in memory *to* anywhere in
memory. This is the most basic thing that even allows multi tasking. It
however can only map up to 4 gigs of space since the CPU only has 32-bit
registers.

Now since hardware also has to be mapped into the same address space as
memory, any address space used up by your various installed hardware for
addressing, such as video memory, can no longer be used for anything else
in the pagetable.

So that means that if you have 4 gigs of ram, any amount of addressable
space mapped to hardware and the kernel cannot be mapped to anything else
anymore. That is why you see less than 4 gigs available.

64-bit CPUs don't have this problem because instead of 4 gigs of
addressable
space, they have 17,179,869,184 gigs of addressable space.

I don't think even MS can manage to fill up that many gigs of space
anytime
soon.

--
Stephan
2003 Yamaha R6

å›ã®ã“ã¨æ€ã„出ã™æ—¥ãªã‚“ã¦ãªã„ã®ã¯
å›ã®ã“ã¨å¿˜ã‚ŒãŸã¨ããŒãªã„ã‹ã‚‰

Nice explanation :)
 
A

ALGI

Dnia Sat, 02 Jun 2007 21:59:05 +0200, Stephan Rose napisa³(a):

[cut]

Nice explanation. Thanks!
64-bit CPUs don't have this problem because instead of 4 gigs of addressable
space, they have 17,179,869,184 gigs of addressable space.
I don't think even MS can manage to fill up that many gigs of space anytime
soon.


Oh man, it's good that you added _soon_ becasue there was a guy who said
some (not a long) time ago that "640KB ought to be enough to anybody" ...

Now we live in word of GIGAbytes of memory ... MEGAbytes times went away...
My first computer Atari 65XE had 64KB(?) of memory (1988), Amiga 600 had
1MB (1992), then 486DX4 had 8MB RAM (around 1995), recent laptop 1GB and
I'm going to upgrade to 2GB (and we have 2007).

2GB / 64KB = 32768 times memory has grown up in ~20 years...

So .... homework for anyone.... let's estimate when we fill up above amount
of memory ;) ... or rather our grand...grand..grand...children ;)
 
N

Neil

ALGI said:
2GB / 64KB = 32768 times memory has grown up in ~20 years...

So .... homework for anyone.... let's estimate when we fill up above
amount
of memory ;) ... or rather our grand...grand..grand...children ;)


I think you're underestimating the power of exponential growth. I make it a
matter of a mere 42 years before memory capacity will have increased from
4GB to 17TB per machine. Hardly the realms of great-grand-children; in fact
I'd almost be prepared to put a bet on owning one myself.

Lets hope we have 128bit address spaces by then.

Neil

[That's assuming that conventional computers have not entirely been
superseded by quantum machines which somehow get away with needing far less
storage in the meantime; in which case, I'll have one of those instead].
 
N

Neil

Neil said:
ALGI said:
2GB / 64KB = 32768 times memory has grown up in ~20 years...

So .... homework for anyone.... let's estimate when we fill up above
amount
of memory ;) ... or rather our grand...grand..grand...children ;)


I think you're underestimating the power of exponential growth. I make it
a matter of a mere 42 years before memory capacity will have increased
from 4GB to 17TB per machine. Hardly the realms of great-grand-children;
in fact I'd almost be prepared to put a bet on owning one myself.

Lets hope we have 128bit address spaces by then.

Neil

[That's assuming that conventional computers have not entirely been
superseded by quantum machines which somehow get away with needing far
less storage in the meantime; in which case, I'll have one of those
instead].



OK. The large numbers confused me. 17e9GB isn't 17TB at all. It's much
vaster than that. It is 18.4e18B. You could call that 18.4EB (exabytes)
or, if you want to do things in collections of 1024 instead of 1000, you
have 16EiB.

The 42 years bit is still correct though.

Even more frightening.

Neil
 
D

DevilsPGD

In message <[email protected]> "Ken Blake, MVP"
That's true, *if* the RAM is sold with a 32-bit operating system.

Yes with a but -- If you put in 3GB of RAM, you may well lose out on
dual channel memory addressing. Some motherboards may be able to handle
two sticks each of 1GB and 512MB, but those are in the minority in my
experience.
 
S

Stephan Rose

Neil said:
Neil said:
ALGI said:
2GB / 64KB = 32768 times memory has grown up in ~20 years...

So .... homework for anyone.... let's estimate when we fill up above
amount
of memory ;) ... or rather our grand...grand..grand...children ;)


I think you're underestimating the power of exponential growth. I make
it a matter of a mere 42 years before memory capacity will have increased
from 4GB to 17TB per machine. Hardly the realms of great-grand-children;
in fact I'd almost be prepared to put a bet on owning one myself.

Lets hope we have 128bit address spaces by then.

Neil

[That's assuming that conventional computers have not entirely been
superseded by quantum machines which somehow get away with needing far
less storage in the meantime; in which case, I'll have one of those
instead].



OK. The large numbers confused me. 17e9GB isn't 17TB at all. It's much
vaster than that. It is 18.4e18B. You could call that 18.4EB (exabytes)
or, if you want to do things in collections of 1024 instead of 1000, you
have 16EiB.

The 42 years bit is still correct though.

Even more frightening.

True but then again, there is a point of diminishing returns somewhere.

I mean look at audio. 16-bit is generally already more than good enough
24-bit is already more resolution than we as humans can hear. It would not
really make sense to go to 48-bit audio....

Now what eats up memory in todays machines? A big major chunk of that is
eaten by graphics.

My 20.1inch lcd right now runs at 1600x1200x24bpp so that means roughly 5.5
megs of data for a full screen buffer that size.

So lets say I quadruple the resolution in each axis. That gives me 6400x4800
resolution and 16 times the surface area. But since my monitor won't
physically get any larger, the pixels need to get 16 times smaller in order
to be present. 1 single pixel is already very small, a pixel 1/16th the
size would not even be visible to the human eye on its own.

So that would mean roughly 88 megs for a full screen.

Let's say color depth doubles as well giving a range of 0-65k per channel
not 0-255 per channel. So the above resoltuion at 48 bits per pixel means
176 megs for a complete screen buffer.

So in the end I need 32 times the memory to display an image at such a
resolution and color depth that raising it any further wouldn't even be
detectable by the human eye.

So instead of 2 gigs in my system I then need 64 gigs in my system.

I don't wanna make a "640kb" bill gates mistake here but honestly, I don't
see anyone running into the limits of a 64-bit CPU anytime within our
lifetimes.

To put the numerical range of 64-bit into perspective.

1 AU is 149,598,000 kilometers.
Our Solar system is about 79 AU in size.

A 64-bit CPU can map a range of 123,308 AU at a resolution of 1 millimeter.

So basically our entire solar system will fit 1,506 times into the
addressable range of a 64-bit CPU at a resolution of 1 millimeter.

The only way I can envision to fill that much RAM is by creating a particle
cloud that attempts to model a world on the atomic level. =)

--
Stephan
2003 Yamaha R6

å›ã®ã“ã¨æ€ã„出ã™æ—¥ãªã‚“ã¦ãªã„ã®ã¯
å›ã®ã“ã¨å¿˜ã‚ŒãŸã¨ããŒãªã„ã‹ã‚‰
 
N

Neil

Stephan Rose said:
...
So in the end I need 32 times the memory to display an image at such a
resolution and color depth that raising it any further wouldn't even be
detectable by the human eye.

So instead of 2 gigs in my system I then need 64 gigs in my system.

I don't wanna make a "640kb" bill gates mistake here but honestly, I don't
see anyone running into the limits of a 64-bit CPU anytime within our
lifetimes.

--
Stephan
2003 Yamaha R6

å›ã®ã“ã¨æ€ã„出ã™æ—¥ãªã‚“ã¦ãªã„ã®ã¯
å›ã®ã“ã¨å¿˜ã‚ŒãŸã¨ããŒãªã„ã‹ã‚‰


Perhaps I will withdraw from my offer to bet on owning an 18EB computer
before I die. But, I think the thing which will prevent there being 18EB of
memory in desktop computers will not be that there will be no need for it.
I'd be confident that someone will always be able to think of an application
which uses it. Rather it will be struggling to shrink the physical size of
the devices required to provide such large amounts of storage in a
reasonable package. If each bit of information in an 18EB memory device was
stored on just one atom of Si say, there would need to be 1.5e20 atoms for
storage. That in itself isn't a particularly large amount of material (only
0.7mg or 0.3mm³) but it doesn't include anything for the manipulation or
interrogation of the storage.

I'm not sure how much Si I have devoted to memory in my computer just now.
Let's suppose this DRAM die
(http://www.semiconductor.com/resources/reports_database/view_report.asp?pid=4230)
is typical at 11Mb/mm², and guess that mechanical considerations mean you
might want to maintain a die thickness of 0.25mm. 4GB = 32Gb would use
(under these assumptions) 744mm³ of material.

To realise 18EB in the same amount of material means on average achieving
each bit of storage (including all the manipulation and interrogation
functions) with only 2500 atoms (if they were arranged in a cube, that would
be about 13 atoms, or roughly 4.6nm on each side). That's a fiercely small
amount of stuff even for just the storage.

Neil
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top