up vote 2 down vote favorite
share [g+] share [fb]

I'm reading through my computer architecture book and I see that in an x86, 32bit CPU, the program counter is 32 bit.

So, the number of bytes it can address is 2^32 bytes, or 4GB. So it makes sense to me that most 32 bit machines limit the amount of ram to 4gb (ignoring PAE).

Am I right in assuming that a 64bit machine could theoretically address 2^64 bytes, or 16 exabytes of ram?!

link|improve this question
Your question is about "computer hardware" rather than "computer programming", so it belongs on SuperUser. – Moayad Mardini Nov 3 '09 at 19:27
2  
@Moayad Mardini, I disagree in that computer-architecture is closely tied and related to low-level programming. Click the computer-architecture tag. Many of those questions are about how hardware works. – KingNestor Nov 3 '09 at 19:29
2  
Similarly, look at the computer-architecture tag on Superuser vs it on Stackoverflow. Superuser has a whopping 1 question, whereas Stackoverflow has pages. – KingNestor Nov 3 '09 at 19:31
feedback

migrated from stackoverflow.com Nov 3 '09 at 19:31

This question came from our site for professional and enthusiast programmers.

9 Answers

Theoretically: 16.8 million terabytes. In practice: your computer case is a little too small to fit all that RAM.

http://en.wikipedia.org/wiki/64-bit#Limitations

link|improve this answer
2  
Too small.... today!!!! – snicker Nov 3 '09 at 20:32
"How many angels can dance on the head of a pin?" – Aki Jan 26 at 9:02
feedback

Effectively, yes - processes could, in theory, address 2^64 bytes of memory. But as you pointed out, there are ways around this limit.

link|improve this answer
feedback

You would be correct. You can address up to 16 exabytes of RAM. Now.. whether the operating system can handle it would be another question....

link|improve this answer
feedback

Your question already contains the answer. The underlying logic also has been revealed.

So, yes, you are right.

link|improve this answer
feedback

2^64 addresses, yes you are correct

link|improve this answer
feedback

Most of today's current processors have some sort of artificial limit on their address size. For example, the AMD64 architecture has a 52-bit limit on physical memory and currently only supports a 48-bit virtual address space. (Via Wikipedia). However yes, physically ~16.4 million terabytes is possible.

link|improve this answer
feedback

Am I right in assuming that a 64bit machine could theoretically address 2^64 bytes

Yes, you're right!

link|improve this answer
feedback

The biggest advantage to 64 bits is not the RAM it can address, but everything else. You can define an address for every byte on a disk, for example, and increasing disk capacities will not invalidate this for decades.

link|improve this answer
feedback

Would be also good to note that the operating system has its own limitation about memory in a 64-bit architecture.

For example, see what wikipedia sais about Windows Vista 64:

All 64-bit versions of Microsoft operating systems currently impose a 16 TB limit on address space. Processes created on the 64-bit editions of Windows Vista can have 8 TB in virtual memory for user processes and 8 TB for kernel processes to create a virtual memory of 16 TB.[29] In terms of physical memory Windows Vista 64-Bit Basic supports up to 8 GB of RAM, Windows Vista 64-Bit Home Premium supports up to 16 GB of RAM, and Windows Vista 64-Bit Business/Enterprise/Ultimate supports up to 128 GB of RAM.[8]

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.