up vote 2 down vote favorite

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|flag
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

migrated from stackoverflow.com

9 Answers

up vote 5 down vote

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|flag
2  
Too small.... today!!!! – snicker Nov 3 '09 at 20:32
up vote 3 down vote

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

link|flag
up vote 0 down vote

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

So, yes, you are right.

link|flag
up vote 0 down vote

2^64 addresses, yes you are correct

link|flag
up vote 0 down vote

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|flag
up vote 0 down vote

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|flag
up vote 0 down vote

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

Yes, you're right!

link|flag
up vote 0 down vote

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|flag
up vote 0 down vote

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|flag

Your Answer

get an OpenID
or
never shown

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