Sign in to follow this  
seriously disabled

Why does 64-bit address space equal 2^64 bytes of RAM?

Recommended Posts

If I remember correctly there is no actual "reason" for this, in terms of physical laws. The amount of memory space that a CPU can address is just whatever the chip's designer says it is. By convention that number is 2^X, where X is the size of the instruction word. There have been exceptions (the usual example is the Apple II and C64 chip (MOS 6502) that used 8-bit instructions but addressed 16-bit memory spaces), but that's generally how it works. Most chips today don't actually have the ability to address 2^64, but they could in theory if their motherboards (and the chip sets that run them) supported it.

 

That number (2^64) is 16 "exbibytes", by the way. It's a number type you don't hear very often, and an odd one to say out loud. It means that a 64-bit computer can, in theory, have a billion gigabytes of RAM, as opposed to the two or four gigabytes that's typical today. Guess we'll be working on that one for a while, huh? :)

Share this post


Link to post
Share on other sites
If I remember correctly there is no actual "reason" for this, in terms of physical laws. The amount of memory space that a CPU can address is just whatever the chip's designer says it is. By convention that number is 2^X, where X is the size of the instruction word.

 

But what does the "2" stand for?

Share this post


Link to post
Share on other sites
But what does the "2" stand for?

 

A binary digit (i.e. a bit) which can be 0 or 1. With 64-bits you have 64 of them, so it's 2^64.

Share this post


Link to post
Share on other sites

yes, 2^64 is the number of distinct addresses. and as RAM is addressed in byte sized blocks this means you can assign a unique address to 2^64 bytes of RAM.

Share this post


Link to post
Share on other sites

if we ignore the control lines, you`ll see a ram chip has address and data lines, the Data lines in a 1 byte wide chip has 8 lines and can represent any number from 0 to 255.

the address lines are like little storage boxes, and each box you can put in any number between 0 and 255 (data), a bit like the old pigeon holes or the way mail used to be sorted, one box for all the letters going to an address.

 

to 2^64 is is simple too, take the number 2 and then double it, you get 4, double that you get 8, 16, 32, 64, 128 etc...

in your chip, you have to keep doubling it 64 times, that`s a Massive number!

 

think about it, a chess board has 64 squares, put a small piece of paper with any number between 0 and 255 writen on it, on square number 1, then 2 peices on sqr 2, 4 on sqr 3, 8 on 4, 16 on 5 etc...

by the time you get to sqr 64, you`ll be an old man, have used up several pens, and have a pile of paper probably bigger than the empire state building! :D

Share this post


Link to post
Share on other sites

With one bit I can adress two locations, one called "0" and the other called "1".

With another bit I can addres 4 places "00", "01", "01" and "11"

Another bit lets me put a "0 or "1" on the start of those 4 names so I get twice as many adresses again.

Each bit of address length doubles the number of possible combinations and, therefore, the size of the memory that can be addressed.

The total number of possiblilities is 2^n for n bits so an n bit adress can uniquely identify 2^n possible adresses. Each one hold one byte so it can address 2^n bytes.

 

That's not an arbitrary convention on the maker's part; its a limitation of the bus design. You could do more with a different number base but virtually nobody does that .

Share this post


Link to post
Share on other sites

I think it is out of question that with N digits 0 and 1 I one can form 2^N different combinations. I would like to emphasize that still no one forces me to use a 32-bit integer to address memory just because I am on a 32-bit machine (at least in theory, in practice that is how they address their memory nowadays) - this is also what Pangloss meant, I think. Popular counter-examples:

- My 1st computer was a C64: 8-bit registers, 2 registers for addressing the memory => 64 kB addressable memory.

- Pretty much all 16 bit home PCs had by default a 1 MB addressable memory range (due to some completely moronic addressing system), more (called EMS and XMS, iirc) was accessible with loading special libraries.

 

That number (2^64) is 16 "exbibytes", by the way. It's a number type you don't hear very often, and an odd one to say out loud. It means that a 64-bit computer can, in theory, have a billion gigabytes of RAM, as opposed to the two or four gigabytes that's typical today. Guess we'll be working on that one for a while, huh? :)

The 1MB limit mentioned above was, at least according to common belief, introduced because the designer foresaw that no computer will ever need more than 1MB of RAM. Considering scientific problems there is no limit of RAM that you could fill if you wanted to (provided you have the computing power to make use of the additional data).

Share this post


Link to post
Share on other sites

well, with the use of registers in that way you can do what`s called Polling, and if you don`t mind using a few extra clock cycles to do this, you can have Several banks of 64k if you like, the C= 128 did this.

and the Zilog Z80 specifically incorporated this fuction in its architecture as well as boasting 16 bit internal registers (the 1`st 8 bit CPU to do this).

oh yeah, and for the record the C= 64`s cpu was only BASED on the 6502, it wasn`t an actual 6502.

Share this post


Link to post
Share on other sites

Whatever size word you use, with n lines you can address 2^n of them (at a time).

If the 64 bit system that the OP asks about is 64 bit (ie uses 8 byte words) then the capacity given is wrong, it should be 8 times more.

Share this post


Link to post
Share on other sites
Pretty much all 16 bit home PCs had by default a 1 MB addressable memory range (due to some completely moronic addressing system), more (called EMS and XMS, iirc) was accessible with loading special libraries.

 

"640k is good enough for anyone" LOL

 

Yes fortunately the 386 added an MMU and with it we got all the benefits of virtual memory, such as not having to worry about the balance of XMS vs EMS vs conventional memory.

Share this post


Link to post
Share on other sites

Well I'm going on record right now: No computer will ever need more than one billion gigabytes of RAM!

 

(Now the question is whether or not I will still be alive when I'm proven wrong!)

Share this post


Link to post
Share on other sites
Well I'm going on record right now: No computer will ever need more than one billion gigabytes of RAM!

 

Otherwise known as one exabyte.

 

(Now the question is whether or not I will still be alive when I'm proven wrong!)

 

Maybe not... I think you'll see CPU caches eventually replaced with general purpose RAM... and an individual CPU given a not so gigantic amount of RAM (but still way more than we have today) and massive numbers of CPU cores (billions, trillions, quadrillions)

Share this post


Link to post
Share on other sites

I will go on the record to say that an exabyte of ram will soon be the minimum required to install the new version of windows.

Share this post


Link to post
Share on other sites

If Moore's law continues for 2^64 minutes how much better will our computers be?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this