32 bit vs 64 bit Processors

hso

n00b
Joined
Mar 20, 2010
Messages
8
Please excuse the basic question but I'm a little confused:

Today's consumer chips are capable of maybe a ~36-bit address bus bandwidth which means that it is capable of addressing 64GB of memory however, from what I read, 32 bit processors limit the user to 4GB of RAM.
What exactly is 32 bit vs 64 bit architecture?
I realize that it's more bandwidth but from what to what?

I tried searching but the function isn't working for me right now.
 
32bit x86 processors have not been made in years from Intel or AMD. All Athlon64 and above (Phenom ..) chips are 64 bit. All Opteron chips are 64 bit. All core2 and above chips are 64 bit. Some P4 were.

Now 32 bit Operating Systems are still sold today even for 64 bit processors. When running a 64 bit processor under a 32 bit windows operating system you are limited (unless you applied a hack that enables awe) to 4GB address space. Actually you are more limited to that because hardware maps into this address space. So if you have a system with a 1GB graphics card and you are running 32 bit windows you will likely have about 2.5 or less memory maximum.

Also for a single 32 bit application you are generally limited to 3GB (if it supports largeaddressaware) and you have enabled the /3GB switch or 2GB if it does not. 36 bit is for AWE but this is not used in many applications. As a programmer I did not bother to support it myself.
 
Last edited:
The main difference between 32-bit and 64-bit processors is that 64-bit processor has 16 MMX registers, which are 64-bit integers, memory addresses, or other data units 64 bits wide, meanwhile 32-bit architecture includes 8 MMX registers.
32-bit processors support 2^32/1024/1024 = 4096 MB of Ram, minus the addressing space required by other devices, like video card.
64-bit processors support 2^64/1024^4 = 16PB of Ram, but only in theory. In reality, 64-bit processor's address line is limited to 36-bit, which results in 64GB memory support. 64-bit server chip like XEON has its address line limited to 40-bit, which results in 1TB of Ram.
32-bit processors can also support PAE (physical address extension), which imitates CPU as if it was 36-bit and thus supports up to 64GB of Ram. OS "sees" 64GB by using its memory addressing tables, meahwhile software must be provided with mechanism, called Address Windowing Extensions.
 
Last edited:
32bit x86 processors have not been made in years from Intel or AMD. All Athlon64 and above (Phenom ..) chips are 64 bit. All Opteron chips are 64 bit. All core2 and above chips are 64 bit. Some P4 were.

Now 32 bit Operating Systems are still sold today even for 64 bit processors. When running a 64 bit processor under a 32 bit windows operating system you are limited (unless you applied a hack that enables awe) to 4GB address space. Actually you are more limited to that because hardware maps into this address space. So if you have a system with a 1GB graphics card and you are running 32 bit windows you will likely have about 2.5 or less memory maximum.

Also for a single 32 bit application you are generally limited to 3GB (if it supports largeaddressaware) and you have enabled the /3GB switch or 2GB if it does not. 36 bit is for AWE but this is not used in many applications. As a programmer I did not bother to support it myself.

RAGE
14701959589a61f6e2e2.jpg

<MORBO> HARDWARE ADDRESSING DOES NOT WORK THAT WAY</MORBO>

VRAM aka framebuffer is NOT addressed directly by the CPU
the GPUs own memory bus and memory controller deal with that
all data to and from the GPU is done with paging JUST LIKE THE SWAP FILE ON YOUR HDD
this paging is handled with a hardware mapped memory range that can be UP TO well any thing but is ~256 to 512MB at most and then a small 16 to 32MB is used for signaling and data streaming but large bulk data like say texture data is moved via pages
try it some time load up XP 32bit and look at the device manager and add up the memory ranges for a card with >512MB of ram on it

smaller cards it may look like all is being addressed its just that its low enough to fit the full buffer in page size but data is still paged and CPU is blind to the ram on the card it self

:mad:

oh and its PAE not AWE GET IT RIGHT RAGE
http://en.wikipedia.org/wiki/Physical_Address_Extension
 
Last edited:
Man, I bet it felt good to let out all that rage, :D

hso, a 64-bit processor is called 64-bit due to the size of it's General Purpose Registers (GPRs) which are 64-bit and a 32-bit processor has 32-bit GPRs. The biggest mistake people make with CPUs is confusing physical addressing with linear (virtual) addressing. Physical addressing is tied to the number of CPU address lines whereas linear addressing is tied to the GPR size.

Since 15 years ago 32-bit CPUs have supported 36-bit physical addressing, this means being able to address upto 64GB of RAM minus other hardware that is also using some of that physical address space.

The flat linear address space is 4GB due to the GPRs being 32-bit (2^32) which means each process has its own 4GB of linear address space of which normally the top 2GB are used for the kernel (OS) and the bottom 2GB for the users application. This means that each process is limited to mapping in 2GB of RAM max at a time for the application. It is possible to use more than 2GB of RAM for a single process by utilising AWE. For example AWE may reserve 12GB of RAM for use by a single process and map chunks of it in and out of part of that lower 2GB linear address range as required.

Quite some time ago (XP SP1) there were some poorly written drivers that caused problems when more than 4GB of physical address space were used so MS limited the client 32-bit OSes to just 4GB of physical address space and ignored anything that was mapped above there, it's been like that ever since. As this results in ending up with less than 4GB of RAM on a 32-bit client OS then there appears little or no gain for providing AWE support for it.

With 64-bit GPRs the linear address space becomes much, much, bigger however IIRC this is limited to 16TB by windows x64 for practical reasons. For each process that means 8TB for the kernel and 8TB for the application. Now as has already been pointed out, the physical address space is still 36-bit for a lot of Intel x64 processors so they would still be limited to 64GB of RAM minus hardware. The big advantage however is all of that RAM can fit in the linear address of one 64-bit process without having to resort to AWE. Even the bigger endowed AMD x64 CPU's 1TB of physical address space could fit comfortably in there.

x64 CPUs bring more registers for use with an x64 OS and may help to produce better more efficient software but ultimately that will be down to the software programmer and what the program is expected to do.
 
Well we'll let the big shots battle out with the pissing.

All that really matters is that it would be very hard to buy a 32 bit processor (new) today. Intel Core (not Core 2, just the regular Core that was short lived) and AMD's original Athlon were the last desktop processors to be 32 bit (I can't comment on VIA or other low quantity CPU's, and there was also some recent notebook low powered ones like the original Intel Atom).

The biggest thing you will notice as a consumer is that 4GB will read as right about 3.5GB. We are reaching a point where an average consumer can exceed that during normal usage ( I can just playing WoW and having several programs open). So that was biggest reason for switching as far as consumers can see.
 
VRAM aka framebuffer is NOT addressed directly by the CPU

I never said it was but it still eats into the amount of addressable memory. However see all the discussions/complaints about users complaining that their 32 bit Windows7 box with 4GB of ram says that they have only 2.1GB usable ram..

oh and its PAE not AWE GET IT RIGHT RAGE

AWE is the api that is used in windows to access PAE.

http://msdn.microsoft.com/en-us/library/aa366527(VS.85).aspx


I do admit this was not my best answer. Never answer questions when you are fighting to keep your eyes open..
I was actually going to fix my answer a bit but saw the question about registers versus L1 cache and gave up. Looked like homework to me.
 
Last edited:
Well we'll let the big shots battle out with the pissing
It's a question about x86 architecture (what are the architectural differences between a 32-bit CPU and a 64-bit CPU) and judging by one of the OP's other posts probably a homework question. There shouldn't be any reason to turn it into a pissing contest.
 
32bit x86 processors have not been made in years from Intel or AMD. All Athlon64 and above (Phenom ..) chips are 64 bit. All Opteron chips are 64 bit. All core2 and above chips are 64 bit. Some P4 were.

Now 32 bit Operating Systems are still sold today even for 64 bit processors. When running a 64 bit processor under a 32 bit windows operating system you are limited (unless you applied a hack that enables awe) to 4GB address space. Actually you are more limited to that because hardware maps into this address space. So if you have a system with a 1GB graphics card and you are running 32 bit windows you will likely have about 2.5 or less memory maximum.

Also for a single 32 bit application you are generally limited to 3GB (if it supports largeaddressaware) and you have enabled the /3GB switch or 2GB if it does not. 36 bit is for AWE but this is not used in many applications. As a programmer I did not bother to support it myself.

my old socket 754 Athlon is 64 bit...amd chips have had 64 bit support for quite some time...

however, as has been posted, your chips are all 64 bit, that support 32 bit software/OS
 
If your looking at a compact solution such as a netbook don't be surprised to find an x86 32-bit CPU in there. For instance, correct me if I'm wrong, but doesn't the Sony VAIO X released less than 6 months ago have a 32-bit x86 Atom Z550 CPU, the CPU itself only being launched by Intel in the second quarter of 2009?.

Regardless of this, the topic is about "differences in 32-bit and 64-bit architecture". If you want to discuss merits of 32-bit or 64-bit CPU's it would be better to start a new thread.
 
...This one goes up to 11...

Really though, as others have said the principal reason for using 64 bit is that it lets you use more ram. The benefits with 4gb tend to be pretty negligible since 64 bit executables are a bit fatter and use nearly all of the 500-700mb you gain. Obviously with 6gb+ memory configs its a no-brainer.

I helped my neighbors score that $298 emachines laptop from Wal-Mart a couple of weeks back and was shocked to find the default Windows 7 install was 64 bit even though only 3gb of ram was installed. We seem to have truly passed the inflection point where 32bit becomes the rarity.
 
If the CPU and OS support PAE (which intel has since the Pentium Pro, then 32 GB was the limit for 32 bit systems from my old server days. Windows XP (before SP1) would address above 4 GB as well, but drivers were so shitty they gave MS a bad rap not mapping around hardware address regions, so from SP1 and up, all MS 32 bit consumer OS's were limited to 4 GB with mapping of hardware addresses taking between 3-4 GB memory address regions. Server OS's were not treated this way, as drivers were controlled by MS's new WHQL program...so they let PAE do it's job...and as such even a P-Pro could address 32 GB mem.

the 64 bit CPU and OS just gave us a shortcut around the issues...only benefit for most is that consumer OS's can access more than 4 GB memory again, although servers can have terrabytes of mem (but most do not support over 192 GB mem due to limitations in how many memory sockets they can fit on the sys board).
 
Last edited:
Back
Top