Comment by nabla9

7 years ago

For 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)

"(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.)

  • Intergalactic (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.

I 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!

  • The 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.