On Thu, Jun 16, 2022 at 9:56 AM Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > > Out bitmaps and bit fields are also all about "long" - again, entirely > unrelated to pointers. That, btw, has probably been a mistake. It's entirely historical. We would have been better off had our bitmap types been defined in terms of 32-bit chunks, because now we have the odd situation that 32-bit and 64-bit architectures get very different sizes for some flag fields. It does have a technical reason: it's often better to traverse bitmaps in maximally sized chunks (ie scanning for bits set or clear), and in that sense defining bitmaps to always act as arrays of "long" has been a good thing. But it then causes pointless problems when people can't really rely on more than 32 bits for atomic bit operations, and on 64-bit architectures we unnecessarily use "long" and waste the upper bits. In some places we then take advantage of that ugly difference (ie "we have more page flags on 64-bit architectures"), but on the whole it has probably been more of a pain than the technical gain. The bitmap scanning is probably not worth it, and could have been done differently. And continuing that for some 128-bit architecture is likely just making the same mistake even worse. So I think we have a *lot* of things we should look at, if people really get serious about 128-bit computing. But I personally think it's several decades away, if ever. Looking at historical workload growth is probably _very_ misleading - Moore's law is dying or dead. We're not that many shrinks away from some very fundamental physical limits. I do expect people will want to do academic test architectures, though. It's not clear it's going to be a "double all the widths" kind of thing, though, and I don't think there is a lot of sense in designing for a future architecture that is very hazy. It's not entirely unlikely that we'll end up with a situation where we do have access to 128-bit operations (because ALU and register width is relatively "cheap", and it helps some loads - extended precision arithmetic, crypto, integer vectors), but the address space will be 64-bit (because big pointers are bad for memory and cache use). In that situation, we'd probably just see "long long" being 128-bit ("I32LP64LL128"). That's obviously what people thought back in the ILP32/LL64 data model. They were wrong back then, and I may well be wrong now. But Moore's law limits are fairly undisputable, and a 64-bit address space is a *lot* bigger than a 32-bit address space was. So I personally will take a "let's wait for reality to catch up a bit more" approach, because it's not clear what the actual future will hold. Linus