7 ms·
"Modern operating systems can now take advantage of that seemingly vast potential memory. But even 32 bits of address space won't prove adequate as time goes on
by maxwell 8y ago
"Modern operating systems can now take advantage of that seemingly vast potential memory. But even 32 bits of address space won't prove adequate as time goes on."
But 64 bits should be enough for anybody.
- et2o 8y ago16 million terabytes will be a lot of RAM for at least a couple of decades.
- nabla9 8y agoFor local addressing inside a computer 16 exabytes is enough. For global or large system level addressing 128 to 256-bits should be enough. (note: you may want local 128-bit virtual addressing for other reasons than accessing more memory)
- cm2187 8y agoI think there are roughly 2^166 atoms on earth (translating 10^50 if I didn't mess up my maths). So clearly we don't need 256 bit addressing for any system!
- nabla9 8y agoThe problems of allocating memory addresses in global scale requires distributed probabilistic addressing or otherwise inefficient address space distributions. You don't want to share the same compact memory allocator with the malloc(3) from the other side of the galaxy, or even different city.
- jerf 8y ago"(note: you may want local 128-bit virtual addressing for other reasons than accessing more memory)" Yes, that's why IPv6 is as big as it is. We could fit pretty comfortably into 64 bits for a long time, really, if you assume we fairly tightly pack everybody in. 128 bits is really to give us some routing headroom, not because anyone seriously thinks we're going to use IPv6 on 2^128 distinct targets any time soon. (By the time we have a "galactic internet" it sure won't be using IPv6, not because it's bad or wrong but just because we're going to need something designed to handle the very different challenges involved.)
- toast0 8y agoIntergalactic (or interplanetary even) networking is more likely to be UUCP like than TCP like, but that doesn't mean it won't need addressing, and that addressing might as well be IPv6. Maybe we can get packets larger than 1500 bytes though.
- pdpi 8y agoExponentials being what they are, the 32 -> 64 jump buys us a lot of headroom.
- aogl 8y agoMoving beyond a 64-bit architecture will allow manipulation of memory address spaces that are larger than 16 Exabytes. Even high-end servers today do not contain more than 1TB of physical memory. It would take several decades if not more for memory densities to become high enough to begin to reach the boundary that 64-bit addressing limits computers. So yes, highly likely for a little while..
- magoghm 8y agoYou can have an AWS instance with up to 12 TB of RAM: https://aws.amazon.com/blogs/aws/now-available-amazon-ec2-high-memory-instances-with-6-9-and-12-tb-of-memory-perfect-for-sap-hana/ https://aws.amazon.com/blogs/aws/now-available-amazon-ec2-hi...
- stochastic_monk 8y agoCurrent x86 architectures only use 48 bits for addressing. That’s still enough to address ~280TB of RAM. I expect that to change before upgrading to 128-bit pointers.
- red75prime 8y ago128 bits are nearly enough to address every atom in the Universe. Such pointers are mostly a waste of memory space. > I expect that to change before upgrading to 128-bit pointers. Or the joke was wasted on me. Did you mean it will never be feasible?
- geocar 8y agoPeople where I work have workstations with more than 1TB of ram. I think the value of a larger pointer (immediately) would be tags, not memory density, just as it was with 64-bit systems -- my old Alpha only had 256mb of ram, and maxed out at 512mb IIRC.
- mehrdadn 8y ago> People where I work have workstations with more than 1TB of ram. Wow. What kinds of workstation tasks need this kind of memory, if I may ask?
- the_other_guy 8y ago64-bit addressing is much more than enough for many decades to come or even forever!
- bzbarsky 8y agoIn fairness, what we have right now is 48-bit addressing, not 64-bit. I've already run into cases of programs figuring that a "64-bit" address space is basically infinite and running out of address space by trying to have tens to hundreds of thousands of 4GB memory mappings (not necessarily backed by RAM).
- huntie 8y agoOther people have pointed out how much memory 64bits provides, but the real problem is when we go from 48bits to 64bits. 48bits provides 256TB of address space. Right now amd64 only uses the bottom 48bits for pointers and some systems take advantage of this for things like NANboxing. I don't really know the numbers, but losing the ability to NANbox will probably come with a performance hit.
- vetinari 8y agoNaN-boxed or tagged pointers have to be processed before use anyway - amd64 enforces canonical pointers, even if the high bits are unused (they have to be set to 1). Aarch64 on the other way...
- huntie 8y agoWhat's your point? A few bitwise operations are far quicker than reading from memory. Also are you sure that the high bits must be 1? I thought they had to be the same as the 48th bit.
- vetinari 8y agoYou are right - they can be 0 & copy of bit 47. The point was, that there will be not a problem with tagged pointers. The pointers have to be clean today when used, so those who use tagged pointers have a place in their code where they handle the cleaning.
- hinkley 8y agoI believe the new garbage collector for the JVM colors pointers in a way they are not scrubbed before use; they memory (re-)map into multiple regions to implement read and write barriers. Some very old distributed systems used 64 bit pointers where the upper bits told you what machine the data was on. And we have Intel putting SSD card in DIMM slots. I expect there are semantics attached to those address ranges as well. I dunno where we are after Spectre, but one of the microkernel architectures got its IPC speed by packing most processes into a couple of address spaces, only with different read write access. On preemption the TLB wasn’t invalidated (about half the cost), just modified. These are the sorts of tricks you do when your address space is bigger than you will ever need. I expect to see more of this as time goes on. And if we ever see 128 bit pointers, expect crazy stuff like this to be de rigeur.
- pygy_ 8y agoIIRC from the ZFS promo blurb, the energy required to flip 2^128 bits is enough to boil the oceans (assuming a maximally efficient process).
- dschn_dstryr 8y agoI don't quite reach that number. According to Landauer's principle the minimum energy required to flip a bit is 0.0172 eV. Times 2^128 is ~10^18 J. The first google result for boiling all oceans puts it around 10^29 J. Even at realistic energy values for current hardware (10 fJ), we are still 5 orders of magnitude short of boiling all oceans.
- drivingmenuts 8y ago> we are still 5 orders of magnitude short of boiling all oceans. Well, there goes that startup idea ...
- pygy_ 8y agoThat was thus marketing BS, thanks for doing the math :-)
- ilyagr 8y agoSeems like if we keep boiling, that's about what it takes to boil lake Baikal.
- quadcore 8y agoYou will regret this.