# RAM Limitation on 64 bit arch

ORIGINAL QUESTION: (you can read this mess of a question, but I suggest jumping to the re-written question)

I see that there are a lot of places mentioning 16 EB RAM limitation... However, isn't a modern register 64 bit? and if so, 2^64 should point to the number of registers possible and since they are each 8 bytes, the actual limit should be 128 EB ((2^64)*8 bytes). Example: 32 bits go to one decoder of 32X(2^32) and the other 32 bits go to the other 32X(2^32) decoder in order to switch on the right wires in each decoder and therefore access a specific register of the (2^32)^2 registers available, each one having 64 bits of data (for the 64 bit bus to be saved).

Clearly I am either missing something or there's an odd chance that I am right and 16 EB is not really the limit...

EDIT:

This was written a long time ago, when I was teaching myself about RAM, I've stumbled across multiple sources that contradicted (at least in my mind, but I can't remember exactly why I got confused enough to write a question about it) and must have gotten confused.

I would like to re-clarify my original question rather than deleting so that it's more useful to future readers (but I don't need an answer, I've taught myself about this a few years ago and even got a Computer Science degree since then).

THE QUESTION: (written in a way that's more useful to other people)

When I was asking this question, I used the term "register" very loosely to refer to a memory location and assuming that RAM was word-addressable (hence the use of 8 bytes for a 64 bit architecture). If RAM was word-addressable, each memory location would hold 8 bytes and therefore 16E * 8 bytes = 128EB.

As most modern computers use byte-addressing, the actual size of each memory location would be 1 byte (8 bits) and therefore 16E * 1 byte = 16EB.

USEFUL NOTE:

Having byte-addressable RAM makes it easier to manage so that the difference between 32 bit and 64 bit isn't as big, but a call to RAM would still get the entire 64 bit word (by ignoring the last 3 bits of the address for the retrieval part, then if only 1 byte is needed, the other 7 bytes can be ignored).

Another useful note: in 64 bit addressing, usually only 40-52 bits are used, this leaves a sufficient amount of maximum RAM (between 1TB and 4PB).

• could it be that you mixed bit and byte up? if so, it would come to 16 EB – Schwertspize Aug 7 '15 at 15:41
• – MC10 Aug 7 '15 at 15:44
• 64 bit register = 8 bytes and 16 EB seems to point to the register only having 8 bit registers – user1683642 Aug 7 '15 at 15:58
• @user1683642 Memory is addressed in bytes and not in sizeof(register), so the size of the register doesn't matter. – Darth Android Aug 7 '15 at 16:25
• thanks Darth Android, your answer was the most useful one – user1683642 Aug 8 '15 at 8:42