tags:

views:

1121

answers:

8

Obviously, a 64-bit processor has a 64-bit address space, so you have more than 4 GB of RAM at your disposal. Does compiling the same program as 64-bit and running on a 64-bit CPU have any other advantages that might actually benefit programs that aren't enormous memory hogs?

I'm asking about CPUs in general, and Intel-compatible CPUs in particular.

+3  A: 

This article may be helpful:

http://www.softwaretipsandtricks.com/windowsxp/articles/581/1/The-difference-between-64-and-32-bit-processors

This one is a bit off-topic, but might help if you plan to use Ubuntu:

http://ubuntuforums.org/showthread.php?t=368607

And this pdf below contains a detailed technical specification:

http://www.plmworld.org/access/tech_showcase/pdf/Advantage%20of%2064bit%20WS%20for%20NX.pdf

dincer80
A: 

You can install a 64-bit OS.

tsilb
That's sort of a recursive answer, since it immediately leads back to the question. What's the advantage of a 64-bit OS?
Mason Wheeler
@Mason - you're a faster gun than I :(
Jon B
In order to understand recursion, one must first understand recursion.
tsilb
+23  A: 

There's a great article on Wikipedia about the differences and benefits of 64bit Intel/AMD cpus over their 32 bit versions. It should have all the information you need.

Some on the key differences are:

  • 16 general purpose registers instead of 8
  • Additional SSE registers
  • A no execute (NX) bit to prevent buffer overrun attacks
Sean
The no execute bit exists on 32-bit architectures too.
flodin
Yes, but it only works at the segment level. Most OSs use a flat model, so they can't turn it on or they'd no-execute the entire address space! The 64 bit chips allow you to set it on a page level. Take a look at http://en.wikipedia.org/wiki/NX_bit for more info.
Sean
Sweet - I never knew that before
Joshua McKinnon
@Sean, no it **used** to be at a segment level, But current 32-bit procs with PAE enabled have regular page level NX support.
Evan Teran
To quote: x86 processors, since the 80286, included a similar capability implemented at the segment level. However, current operating systems implementing the flat memory model, do not use this capability. (note that it says "included" not "includes").
Evan Teran
Further more, from the same Wikipedia article: "After AMD's decision to include this functionality in its AMD64 instruction set, Intel implemented a similar feature in x86 processors beginning with the Pentium 4 processors based on later iterations of the Prescott core."
Evan Teran
On a general non-Intel point, some 32 bit processors had 16 General Purpose Registers and a bunch of Floating Point registers back in the 1970's. Intel and co are catching up!
Simon Knights
* Can move RIP to a register. Important for PIC* new baseline for minimal support. x86 extensions like SSE2 and cmov are now guaranteed there.
Marco van de Voort
+1  A: 

About 1-3% of speed increase due to instruction level parallelism for 32-bit calculations.

vartec
+5  A: 

With a 64bit Operating System, you can address over 4GB of RAM. This is useful for some applications.

For example, you can load a large data cube in memory and cut and slice it more effectively (seismic data or medical data for example).

David Segonds
This is the biggest draw for me
Michael Haren
Granted. This is the only reason that compels me to upgrade computers to 64bit. In major oil companies, 24Gb of RAM on the desktop is now common (Linux or Windows).
David Segonds
+1  A: 

Slight correction. On 32-bit Windows, the limit is about 3GB of RAM. I believe the remaining 1GB of address space is reserved for hardware. You can still install 4GB, but only 3 will be accessable.

Personally I think anyone who hasn't happily lived with 16K on an 8-bit OS in a former life should be careful about casting aspersions against some of today's software starting to become porcine. The truth is that as our resources become more plentiful, so do our expectations. The day is not long off when 3GB will start to seem ridiculously small. Until that day, stick with your 32-bit OS and be happy.

T.E.D.
+4  A: 

The main advantage of a 64-bit CPU is the ability to have 64-bit pointer types that allow virtual address ranges greater than 4GB in size. On a 32-bit CPU, the pointer size is (typically) 32 bits wide, allowing a pointer to refer to one of 2^32 (4,294,967,296) discrete addresses. This allows a program to make a data structure in memory up to 4GB in size and resolve any data item in it by simply de-referencing a pointer. Reality is slightly more complex than this, but for the purposes of this discussion it's a good enough view.

A 64-bit CPU has 64-bit pointer types that can refer to any address with a space with 2^64 (18,446,744,073,709,551,616) discrete addresses, or 16 Exabytes. A process on a CPU like this can (theoretically) construct and logically address any part of a data structure up to 16 Exabytes in size by simply de-referencing a pointer (looking up data at an address held in the pointer).

This allows a process on a 64-bit CPU to work with a larger set of data (constrained by physical memory) than a process on a 32 bit CPU could. From the point of view of most users of 64-bit systems, the principal advantage is the ability for applications to work with larger data sets in memory.

Aside from that, you may get a native 64-bit integer type. A 64 bit integer makes arithmetic or logical operations using 64 bit types such as C's long long faster than one implemented as two 32-bit operations. Floating point arithmetic is unlikely to be significantly affected, as FPU's on most modern 32-bit CPU's natively support 64-bit double floating point types.

Any other performance advantages or enhanced feature sets are a function of specific chip implementations, rather than something inherent to a system having a 64 bit ALU.

ConcernedOfTunbridgeWells
+1  A: 

Just wanted to add a little bit of information on the pros and cons of 64-bit CPUs. http://blogs.msdn.com/joshwil/archive/2006/07/18/670090.aspx

Wei Hu