Win 7 64 bit, just put in 4 more gigs for 8 total only shows 3.5 now?

killem2

Coastermaker
I bought another couple sticks of ram to give me 8 gigs total (maximum) my computer says 8 gigs (3.5 usable)

Why?
 

2Tired2Tango

Tech Monkey
Win 7 64 bit, just put in 4 more gigs for 8 total only shows 3.5 now?

I bought another couple sticks of ram to give me 8 gigs total (maximum) my computer says 8 gigs (3.5 usable)

Why?

Don't forget that 8g of 32 bit ram is 4g of 64 bit ram...

First question... Did it ever show 8gb available? I ask because it's possible not all of the memory is being acknowledged, as can happen sometimes when you "mix and match" different brands, speeds or sizes...

Second Question... are you sure you have the 64bit version of Win7? The whole 3.5 gb thing sounds very 32 bit to me... 32 bit xp does that, you put in 4gb and it only recognizes 3.5.

What you need to do is use the Win7 memory test tool to verify your memory is ok. The tool is located in the Boot folder on the DVD...
 

killem2

Coastermaker
I got it fixed last night I had to go run msconfig, go to advanced and chance max ram to 8gigs. worked perfect. they are 4 sticks of ddr2 800 corsiar xms.
 

Kougar

Techgage Staff
Staff member
Glad you found the problem. :) It's odd, as I wonder what caused that issue, because the OS should automatically detect and take advantage of more RAM... was the system in question using a version of Windows 7 that was done from an in-place upgrade? You're the second person that's had this problem, and it has been a problem on WIndows since even XP...
 

Glider

Coastermaker
Don't forget that 8g of 32 bit ram is 4g of 64 bit ram...

Is that so? I don't think so... 64bit refers to the instructions, not to sizes... It is like saying that 4GB dual channel RAM is 8GB single channel RAM, because the bus is double as wide...
 

2Tired2Tango

Tech Monkey
Is that so? I don't think so... 64bit refers to the instructions, not to sizes... It is like saying that 4GB dual channel RAM is 8GB single channel RAM, because the bus is double as wide...

It is so. "64 but" refers to the size of the CPU's registers... Specifically the general purpose ones used to do integer math. To store a 64bit value takes, no surprises, 64 bits... twice as much as it takes to store a 32bit value. Thus twice the memory is used to store any given register value.

It has nothing to do with single or multiple channel... It's about how much space it takes to store a given numerical value from a CPU register.
 

2Tired2Tango

Tech Monkey
Glad you found the problem. :) It's odd, as I wonder what caused that issue, because the OS should automatically detect and take advantage of more RAM... was the system in question using a version of Windows 7 that was done from an in-place upgrade? You're the second person that's had this problem, and it has been a problem on WIndows since even XP...

XP's limit is an artifact of it being a 32 bit OS... 2^32 == 4gigs. With a 32 bit address buss, 4 gigs is called "hitting the wall".

That this would carry over in to 64bit OSs is indeed a bit odd. Generally the OS takes it's memory size from the P.O.S.T. in the Bios... so I would wonder what might be awry to prevent it from self-detecting the new memory.
 

Glider

Coastermaker
It is so. "64 but" refers to the size of the CPU's registers... Specifically the general purpose ones used to do integer math. To store a 64bit value takes, no surprises, 64 bits... twice as much as it takes to store a 32bit value. Thus twice the memory is used to store any given register value.

It has nothing to do with single or multiple channel... It's about how much space it takes to store a given numerical value from a CPU register.

So you are saying that if you fill a 1L milk box with 2 times 0.5L or 1 time 1L it will be different in size? It still is a 1L box...

And single and multiple channel is identical, because you have a wider bus width...

4 or 8GB refers to how big the box is, not how many "items" you can put in...
 

killem2

Coastermaker
Yeah I don't know how it happened, this is just a student version I got, fresh install, full version. I was very surprised when it didn't find all my ram right away.
 

2Tired2Tango

Tech Monkey
So you are saying that if you fill a 1L milk box with 2 times 0.5L or 1 time 1L it will be different in size? It still is a 1L box...

And single and multiple channel is identical, because you have a wider bus width...

4 or 8GB refers to how big the box is, not how many "items" you can put in...

Ok, but what you seem to be missing is that you can put in twice as many 32bit "items" as you can 64bit items... Your box has a specific volume... the item count is entirely dependent on the size of each item...

32bit register == 4 Bytes.
64bit register == 8 Bytes.

Is it not obvious the second will fill 8 Giga BYTES of memory twice as fast?
 
Last edited:

Glider

Coastermaker
But it remains to be 8GB... The OP was complaining about only 4-ish showing up, not that it was filled up faster.

I fully agree that 64bit OS will fill the memory faster, but however you look at it, the total size won't differ...
 

Brett Thomas

Senior Editor
It is so. "64 but" refers to the size of the CPU's registers... Specifically the general purpose ones used to do integer math. To store a 64bit value takes, no surprises, 64 bits... twice as much as it takes to store a 32bit value. Thus twice the memory is used to store any given register value.

It has nothing to do with single or multiple channel... It's about how much space it takes to store a given numerical value from a CPU register.

Oh, my head.... no no no no NO. I think I see what you're trying to say, 2Tired, but...no.

For clarification, 64-bit (in the terms of OS) refers to WORD sizes. A word is the largest (actually, optimal) chunk of data that a CPU can process at once. We use words for all sorts of things - instructions, registers, math, pointers...funny enough, a 64b OS doesn't even truly use much 64b code.

A 64b processor is capable of processing words of 64b length, manipulating them, and sending them to up to 64b of different memory addresses. THIS is the ONLY thing that impacts memory usage - the "page file" of memory addresses is larger and POINTERS are therefore larger - so lines of code that are jumps and routines take up a bit more space. Most of our processors aren't even TRUE 64b - they are 64b data width but still must be able to use 32b instructions to comply with the x86 instruction set. The Itanium is the only intel processor that's properly 64b all the way through, and it does not use x86 assembly at all.

This is part of why 64b OS doesn't use a lot of 64b code - why take up more space when you can instead send two 32b instructions through simultaneously? So code is reorganized a bit to be more efficient, but since the processors still support 32b instructions, there's no sense in padding an "add" or "mov" to take up double the space. That's just silly. Again, that's not universal - there ARE a few 64b instructions, but they really aren't implemented nearly as much as being able to process two 32b instructions instead.

Please note that this doesn't actually change how the numbers are stored, or how much use all of the code that ISN'T a specific pointer takes up. There are a few instructions that can be processed in one go instead of two, and a few others that ONLY 64b processors understand, but otherwise, as far as memory usage, there's NO difference. A 32b processor still can work with larger DATA (not instruction) words, it just breaks them up into chunks.

Also, since someone mentioned it, to further clarify, BUS WIDTH (32, 64, 128) refers to how much data can pass through from point A (RAM, NB, CPU, etc) to point B in one clock cycle. A 64b chip receiving a 64b word over a 32b bus actually has to wait every other cycle until it has the full instruction. This is why the "channels" of RAM, along with the motherboard chipset's throughput, matter. There's a lot of muddier topics here but this is the really simplistic explanation. Bus width != pipeline width != "channels" != storage size. All of these are different concepts that interact, but are different.

So, long story short = 8GB of RAM to a 64b OS is NOT the same as 4GB of RAM to a 32b OS. Just because pointers now take up 64b doesn't mean anything else does - that would violate the x86 instruction set and no longer be "proper" for consumer applications. A 64b OS DOES take up a bit more ram, but not THAT much...only as much as the pagefile and pointers divided by two. :)

Hope that helps clarify some things for anyone who reads this thread later...
 
Last edited:

2Tired2Tango

Tech Monkey
Ok... I'll be quiet now.

As a long timer C programmer who's dabbled in Assembly my perspective on this is probably different than most...
 

Brett Thomas

Senior Editor
And mine, being an avid hobbyist reverse-engineer (ergo, working entirely in assembly) and having written a treatise on 64b programming that included input directly from Intel :)
 

2Tired2Tango

Tech Monkey
Y'know what...

I was simply pointing out that 64 bit machines need basically twice as much space to store their register values as 32 bit machines did. It as quite simply a comment.

How the fuck did we end up here?
 

Brett Thomas

Senior Editor
hehehe :) Because you made it sound like ALL data on a 64b machine takes double the storage space, which isn't true at all and could greatly mislead someone who is diagnosing a performance problem.

Sorry to jump on you like that, 2tired...64b computing is just something I'm really passionate about and there's a LOT of misinformation. Remember all those people going around saying that the only reason to use 64b was "for the RAM" (as in being able to go above 4GB)? You have no idea how many times I just wanted to throttle someone. :)
 
Top