Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

This is a bit "one megabyte should be enough for anyone", but...

A 64-bit flat address space allows up to 4.3ish billion times more space than a 32-bit address space. That's 17,179,869,184 GiB.

Obviously, the transition from 8 bits to 16 bits was pretty quick (I'm viewing things in a teen-during-the-80s way, ignoring all those mainframes and minis because they couldn't run a port of Elite). The transition from 16 bits to 32 bits took a bit longer, and 32 bits actually lasted quite a while.

Now we have 64 bits, would it be stupid to say "17,179,869,184 GiB should be enough for anyone"?

This is a programmers question because I really have the programming viewpoint in mind. Even if a computer some day has a seemingly infinite amount of working memory, that doesn't mean that applications will need to see a seemingly infinite flat address space.

Basically, can we programmers breath a sigh of relief and say "well, whatever integers or floats may do, at least I don't have to worry about my pointers growing any more?".

share|improve this question
5  
How much data does the LHC generate each day? –  Peter Taylor Jun 15 '11 at 9:51
    
@Peter 2Gb/s max. –  lukas Jun 15 '11 at 10:34
6  
8-bit processors actually had a 16-bit address space - hence the "quick transition" :-) –  nbt Jun 15 '11 at 11:04
1  
@Rein: In other words, not enough. How can we simulate a universe with not enough memory addresses for even half the atoms in just our own galaxy. amiright –  qes Jun 15 '11 at 18:27
4  
I think this can be answered quite easily; Star Trek Holodeck. Enough said. –  Dunk Oct 24 '11 at 21:37
show 6 more comments

15 Answers

up vote 12 down vote accepted

I don't think we're going to have machines with more than 2^64 bytes of RAM in the foreseeable future, but that's not all that address space is useful for.

For some purposes, it's useful to map other things into the address space, files being an important example. So, is it reasonable to have more than 2^64 bytes of any sort of storage attached to a computer in the foreseeable future?

I'd have to say yes. There's got to be well over 2^64 bytes of storage out there, since that's only about 17 million people with terabyte hard disks. We've had multiple-petabyte databases around for a few years now, and 2^64 is only about 17 thousand petabytes.

I think we're likely to have a use for a > 2^64 address space within the next few decades.

share|improve this answer
3  
This makes me think of flat addressing to address any byte of storage available on the internet. I think I heard something about operating systems that provide a flat addressing of all storage on the system (no need to map files into memory - they're already there). Making an IP address into part of your memory address will certainly need more than 64 bits - IPv6 already needs 128 bits just for the address. There would be a huge amount of redundancy in the address space, but it could still make sense. –  Steve314 Jun 15 '11 at 23:25
1  
Yes. It would simplify life if you mapped all your drives & files into the address space. An awful lot of code concerned with manipulating files on disk would be much simpler if you simply had a pointer to the whole file. A segment:offset architecture would be ideal for this sort of thing. –  Loren Pechtel Jun 16 '11 at 3:12
    
This assumes that each byte of all mass storage devices would be directly addressable. –  vartec Jun 16 '11 at 11:56
1  
@steve314: You're thinking of the single-level store concept, pioneered by the IBM S/38. Interesting stuff, but I think it'd be tough to integrate it with today's systems. –  TMN Oct 24 '11 at 12:38
1  
@TMN: well, IBM i (a.k.a i5/OS, a.k.a OS/400) still uses it and is arguably still one of "today's systems". –  Joachim Sauer Jun 19 '13 at 6:55
show 2 more comments

yes apps dont fill up every byte of virtual space. address space layout randomization would get the biggest benefit.

share|improve this answer
add comment

20 years ago, there were 2 billion less people on the planet and most computer systems had addressable memory that could be measured in kilobytes. Today, the population of the world increases at the same rate and the number of computer users increases exponentially every year.

It is true that very few systems need a full 64 byte address space. Some systems store terabytes of information every day, however. This has been possible due to the increase of computer users and internet speeds. We can already support 10 GB/s internet speeds after only 23 years after HTTP was invented. At this rate I think it would be foolish to not expect 1 TB/s or higher internet speeds in 50 years. When we can all move data this fast, there will be more data to be stored while more people will exist to store this data and it is almost inevitable that there will need to be another widespread transition into a 128 bit system, and eventually 256 and 512 bit.

share|improve this answer
    
You're correct in all regards, however you missed my point. The computing industry is less than 100 years old and if it continues to grow as it has for the past few decades it would be not only be foolish to assume that we have hit our limit at this point in time but it is ignorant of the demands of the future. Address space is not the only reason why we would need a 64 bit architecture. Instruction sets may grow so large and that pointers 128 bits wide is more efficient and preferred. Another benefit is the CPU registry space that switch to a higher bit architecture provides. –  Andrew Katz May 6 '13 at 19:18
    
I don't know why I wrote all those comments - just a bad mood is my best excuse. The downvote isn't mine, though. –  Steve314 May 6 '13 at 20:01
add comment

Just “thinking out loud” here, but it just occurred to me that one could do interesting semantic things with the remaining 64 bits on a, let’s say, 128 bit computer. Cf. the way IP works.

I am sure people could come up with fun uses for something like this. :) Anybody know what the PS3 uses its 128 bit addresses for? Surely you wouldn’t waste all that extra memory (and I am talking about just the memory for the actual addresses, not what those addresses point to). Addresses as data. You could even encode a branch in the address itself... i.e., 0x[ifAddress][elseAddress] Multi-core systems might benefit from this type of segmentation too. And... And...

share|improve this answer
add comment

What would happen if every memory location had a globally unique address?

  • Network protocols could become a whole lot simpler.
  • Distributed objects would be interesting -- all objects could exist in the same memory space.
  • Maybe we'd switch to "write once" memories and include time as part of the address structure. You could read objects that existed in the past.
  • All secondary storage would be directly addressable. Goodbye FILE, fopen(), etc.
  • You could be arrested for writing to a bad pointer and hosing somebody else's machine.
  • Students would have to have to be screened before taking their first CS class: very few people can withstand the Total Perspective Vortex.
share|improve this answer
add comment

Well, we could definitely use a large address space.

Imagine this:

  1. The address space is not limited to a single computer. Instead, an address uniquely identifies a memory cell in a universal address space. So you can have a pointer to a memory cell on any computer in the world. There will need to be some protocol to enable reading from remote memory, but that's an implementation detail. :-)

  2. The memory is Write Once, Read Many, i.e. you can only write data to a memory address once. For a mutable value, you'll have to allocate a new piece of memory every time it changes. We programmers have started seeing the pros of immutability and transactional memory, so a hardware design that doesn't even allow memory overwrites may not be such an impossible idea.

Combine these two ideas, and you'll need a huge address space.

share|improve this answer
add comment

The more capable computers become, the more complex problems they are requested to work with.

The largest supercomputer listed on top500.org is http://www.top500.org/system/10587 with around 220 Tb RAM and 180000 cores. In other words, that is what "real life applications" can work with on this platform.

Todays computers are as powerful as supercomputers 10-15 years ago (even though the computing power may be hidden in your graphics card).

So a factor 100 in memory in 10-15 years will mean that the 64 bit address space will be a limiting factor in about 100 years (since log (100 million)/log(100) is around 6) if the current trend holds.

share|improve this answer
    
note: math unverified, probably quite off. –  user1249 Jun 15 '11 at 9:34
14  
it's just like prediction from 1800's, that if traffic grows so much, whole cities will be covered by mountains of horse manure :-P –  vartec Jun 15 '11 at 9:56
1  
220 GB is not that much these days. There are servers with 256 GB RAM. 180000 cores? Now that's something :). I'm only pointing this out because OP's main concern is RAM size. –  Tamás Szelei Jun 15 '11 at 9:59
1  
@vartec, just shows that blind extrapolation may not be valid. Same thing here. –  user1249 Jun 15 '11 at 10:05
6  
Tamás was right: In the link you provided, it states "229376 GB", which would be more like 220 TB. Also, assuming 4MB L2 cache per core, 180K cores already have 720 GB L2 cache ;) –  back2dos Jun 15 '11 at 10:22
show 2 more comments

This whole thread is quite funny to read, very strong opinion for and against...

Here something ..

I understand from the question that it was technology agnostic and not bound by time. Thus current development in silicon, quantum computers or the Infinite Monkey Peddling Abacus are in effect irrelevant.

Calculations and extrapolations are also quite funny, though the answer from back2dos works quite well to illustrate the sheer size of what this number represents. so let's work with that.

Put your mind in the future where man is no longer bound to the confine of it's little planet, a realistic means of transportation was developed to allow transportation over very large distances and the social structures (economic, political etc) have evolved to transcend generations. Pharaonic projects spanning have become common places. Let's focus on two aspects of this far fetched vision of the future yet, should one wishes to spend to time to explain every details I'm quite certain one could rationalize all of it through a series of plausible evolutions on current technologies. In other words a plausible, albeit unlikely future... anyhow...

The first project called Colossus in memory of that first electronic computer as it is the first planetary computer. The Colossus Brotherhood has indeed figured out a means to capture a small planetoid and transform it into a working computer. Recently discovered in the Kuyper belt that is perticularely rich in fusible isotopes making it energetically autonomous, they made the construction process completely autonomous with probes, robots etc making the computer system self repairing and self constructing. In this condition it would be conceivable that 2^64 address space being somewhat confining for this project as they wish to get a continuous address space to easily port applications already existing for another project also under-way.

The other project is more of a an experiment in networking than a physical system, yet, it quickly demonstrated that larger address space were needed. 540 years ago a young hacker was toying with the idea of creating a gigantic bot net. The internet had already expanded to include the nascent colonies around the solar system building on major advances made in fusion power. His ideas was basically to have little bots spread around the network but the payload was destined to provide a unified virtual machine where code would be written assuming it had all the power of all bots combined. Great efforts were put in the compiler and deployment attempting to optimize lags and sophisticated algorithms designed to take into account the inherent unreliability of the underlying medium. A language was specifically written to target this new "computer" that put major emphasis on concurrency. It took many years to discover this botnet since it never delivered any attacks, our hacker created instead an umbrella company and sell the computing power to the highest bidder. When he died he donated this botnet and all technologies to a foundation. At that point the botnet had already been running for 64 years and had already outgrew the 2^64 address space quite a while ago shattering the 1000 year old preconception that we would never require larger address space. Nowadays 2^128 is the norm and what will be used for Colossus but there is already plans to expand this to 2^256.

I could probably come up with more quasi plausible scenarios that illustrate that yes... it is quite possible, nay, almost certain, that one day we will require address space larger than this.

That said however I do not think I would loose sleep over this, if your application requires a certain address space to work correctly then most likely it will live in a VM that gives it all it needs...

Thus... short answer...

YES, Most likely

but

Why not deal with this when the problem comes... Personally I never make assumptions in my programs thus never get surprises.

share|improve this answer
1  
I'm amused at the level of detail in your fictitious example. Are you writing a short story somewhere? –  Christopher Bibbs Jun 15 '11 at 18:10
add comment

The super computer Thorbjoern linked has about 2^47 B of physical memory.
Assuming Moore's Law holds for memory of super computers, it will become 2^64 B of physical memory in only 34 years. This is like "OMG, we will live to see that!!!!". Maybe. And indeed, it is fascinating. But just as irrelevant.

The question is, do I need 128 bit address space to use 2^65 B of physical memory?
The answer is NO. I need 128 bit address space to address 2^65 B of virtual memory from a single process.

So the question is: How soon will we have single processes, that use 2^65 B of memory. I hope never.

The big problem of our time is that the processing power of a single CPU is limited. There's a limit in size defined by the size of atoms, and for a given size, there is a limit in the clock rate, given by the speed of light, the speed at which information about changes in magnetic fields is propagated in our universe.
And actually, the limit was reached a few years back and we have settled at clock rates below what they have previously been. CPU power will no longer scale up linearly. Performance is now enhanced through out of order execution, branch prediction, bigger caches, more op codes, vector operations and what not. There has been architectural optimization.
And an important idea is that of parallelization. The problem with parallelization is, it doesn't scale up. If you wrote slow code 20 years ago, it worked a lot faster 10 years ago. If you write slow code now, it won't get much faster in 10 years.

Processes that use 2^65 B of memory are a sign of utmost stupidity. This shows, that there has been no architectural optimization. To sensibly process this data, you'd need some 10 million cores, most of which would spend time waiting for some resource to become available, because those cores that actually acquired the resource are using physical memory over ethernet on a completely different machine. The key to dealing with big, complex problems is decomposing them into small, simple problems and not building ever bigger and ever more complex systems. You need horizontal partitioning, when dealing with sh*tloads of data.

But even assuming, this insanity should go on, rest assured 128 bit is enough:

  • Earth has about 8.87e+49 atoms, which is 2^166 atoms that we have.
  • Let's assume it costs 2^20 atoms to hold one bit. This includes also all the wiring and plastics and power that goes with it. You can't just throw transistors into a box and call it a computer. So 2^20 seems rather optimistic.
  • To use up 128 bit address space, we need 2^133 bits, so 2^152 atoms that we need. Assuming equal distribution of atoms on earth, Let's see how much crust we must take of to get them:

    let
       q  := ratio of atoms needed to atoms present = 2^-14
       Vc := volume of the crust to be used
       Ve := volume of the earth
       re := the radius of the earth = 6.38e6
       tc := the required thickness of the crust
       k  := 0.75*pi
    thus
                                 Vc / Ve = q 
       (k*re^3 - k*(re-tc)^3) / (k*re^3) = q
                    1 - ((re-tc) / re)^3 = q        
                              (re-tc)/re = root3(1-q)
                                      tc = re * (1 - root3(1-q))
                                      tc = 6.38e6 * (1 - (1 - 2^-14)^(1/3))
                                      tc = 129.804073
    

    So you have 130 meters to take of on the whole surface (including the 80% covered in water, sand or ice). It's not gonna happen. Even assuming you can dig it up (lol) and all this matter is suitable to be processed into chips, where will you get the energy?

share|improve this answer
6  
On the other hand you would need a very large computer to do the environmental impact assessment for strip mining the entire planet so perhaps it would justify itself (getting a bit Hitch Hikers here) –  Martin Beckett Jun 15 '11 at 16:31
2  
One bit = 10^6 atoms. The whole Earth = 10^50 atoms. The whole universe = 10^80 atoms. Exponential notation is awesome! :-) –  Konamiman Oct 24 '11 at 11:47
add comment

Unless computers start using some break-through technologies which do not exist yet even in laboratories, having more than 264 addressable space is just not physically possible with current silicon technology. The technology is hitting the physical limits. The speed (GHz) limit was hit already few years ago. The miniaturization limit is also very near. Currently most advanced technology in production is 20nm, in labs it's 4nm with transistors made of 7 atoms.

Just to put it in perspective how long it takes for new technology to be developed: current computers are based on transistors invented in 1925, and the current silicon technology dates back to 1954.


As for alternative technologies:

  • optical computing — could give boost in computing speed, but doesn't solve miniaturization problem for the storage;
  • quantum computing — to be used fully, will require completely new programming paradigm, so if pointers will be 64- or 128-bit is least of your worries. Also same physical limitations on miniaturization apply to this technology;
  • DNA computing — these are proof-of-concept toys, designed to solve one particular class of problems. Not feasible for real life use. To get computations which on normal PC would be done under one second, would take DNA-tank of a size of Pacific Ocean and few thousand years. As it's natural, biological process, there is no way to miniaturize or speed that up.
share|improve this answer
1  
and maybe the address spac would be an obsolete techonolgy when there will be the need for more than 2^64. –  lukas Jun 15 '11 at 10:37
4  
So basically, you're saying there will be no technological breakthroughs anymore? We'll be stuck with silicon technology forever. Radically new things like quantum computing or DNA computers will stay in research forever. Do you really believe that? –  nikie Jun 15 '11 at 11:01
2  
@Thor: well, it isn't physically possible to put man on the Moon in 2011 either. –  vartec Jun 15 '11 at 11:21
4  
Why -1? The summary has some very solid grounding. 2^64 is a very, very, very large number. It's not 2^32*2, it's a whole lot bigger, and 2^128 is pretty insane. It would take an awful lot of time just to do for(unsigned __int128 i=0; i<2^128; i++){}. With current technology there's not much use of 128 bit integers. Aside from maybe getting back to unprotected address space, because accidentally stepping on other applications memory in 128 bit address space would be pretty impossible to do, even if you were writing to random addresses randomly. –  Coder Jun 15 '11 at 11:38
1  
@vartec, I really like the lack of distinction between some experiments, and actually bringing men safely back from the moon, while in the same breath stating that some other experimental technology is useless. –  user1249 Jun 15 '11 at 11:52
show 14 more comments

Will applications ever need that much memory? Quite possible. Applications like weather forecasts, physical simulations in general or cryptography will probably always benefit from more memory and more processing power. And who knows what the killer-app in 50-100 years will be? Holographic displays? Rainbow tables for every possible 100-character password?

Is it physically possible to represent that much memory? Definitely possible. For example, a 100-qubit quantum computer can represent the same number of states as a classical 2^100 bit computer. Way more than the 2^67 bits of address space we have now. (I know, a 100-qubit quantum computer sounds like science-fiction. I'm not convinced it will ever be possible to build one. But on the other hand, the same could probably be said about any technology that will be used 50 or 100 years from now.)

But I seriously doubt that "flat address spaces" will be the main worry by then. Maybe we'll be developing quantum algorithms by then, where the concept of an "address space" doesn't make much sense. Even if computers stay "classical" we'll probably have to deal with a scary number of processing units with non-uniform memory attached to them.

share|improve this answer
add comment

Storing this amount of information is one thing and doing something useful with it is another. From my point of view I see no need for this storage unless we have the processing power to utilize it. Perhaps caching huge databases is one thing but for numerical processing I think we need processors first.

share|improve this answer
add comment

Yes, there will be. (Games? Artificial Intelligence-related stuff?)

A more appropriate question might be whether it will count to the typical programmer, though. Think of how Ruby automatically converts numbers from FixNum to BigNum and back when needed. I'd be surprised if other languages (at least the dynamic ones) don't do the same eventually.

share|improve this answer
1  
oh yeah. hell yeah. i wanna play a game that is sooo cool it has to use 128 bit arithmetic !!!!!!!!! –  Ritwik G Jun 15 '11 at 12:29
1  
Duke Nukem Forever Rev 2.0? Or Madden Football 2025? –  John R. Strohm Jun 15 '11 at 14:20
add comment

Well, I think that for a few years to come you can probably breath a sigh of relief. If you look at the speed of innovation in hardware, it can be observed that over the last few years no significant breakthroughs have happened. CPUs with 2.x GHz frequencies have been around for a while now and any increase in processing power nowadays comes from packing more cores on the chip. Drive capacity is still going up, but not at the same rates as 10 years ago.

I think that our current technology is approaching the limits of physics.

What does that mean for the future? I think that in order to get new quantum leaps in information processing, entirely new technologies will have to be utilised. These technologies will likely use "software", albeit possibly in a context quite alien to what it is today. And who knows what address space requirements they have or can provide? Or whether address space is even a meaningful concept in that technology?

So don't retire on this just yet.

share|improve this answer
    
cpu speed is a somewhat different concept than memory size. –  user1249 Jun 15 '11 at 10:08
    
I'm not sure you can draw the conclusion that because processor speeds haven't gone up much in the last few years has anything to do with approaching the limits of physics. It is a fact that multicore CPUs have been all the rage over the last few years and it could be that the CPU manufacturers are investing their money on how to best utilize all those processors together rather than spending their money on clocking improvements. Even the big companies have a limit on their R&D dollars. Drive capacity is still going up pretty fast IMO. Just saw a 3 TB drive for $140. –  Dunk Oct 24 '11 at 21:35
add comment

Sure, I see no reason why that amount of space wouldn't be required in the future. If you consider game development, there is no limit to how realistic or complex a game can be made, right? (Detail of the graphics/number of polygons used and algorithms defining objects interaction and behaviour)?

Who knows, in 10 years time we might be playing 10TB games with min requirements of 12GB ram and an 8 core processor. :P

share|improve this answer
    
There's no limit to detail. But there is a limit to silicon. –  Billy ONeal Jun 15 '11 at 16:49
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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