Intel has just released a new white paper, where they discuss removing a lot of the legacy cruft of the Intel/AMD architecture they call Intel64. Only 64-bit operating systems – and a narrow set of 32-bit legacy apps that don’t use segmentation (a small subset in theory but basically all of them in practice) – will be supported. I am surprised at how excited I am, although after all this time perhaps the better word is “relieved.”

Finally, Intel computers will dispense with the illusion that the default mode is the DOS-compatible, 16-bit “real mode.” They will drop the conceit that modern memory protection, not to mention the ability to address more than 1MB of memory (approximately, yes I know about A20), is opt-in – which it currently, literally, is. All of the code to accommodate these legacy modes can be phased out. All of the circuitry and/or microcode to implement all of these legacy modes can be removed – though I’m sure Intel has had ways to keep it from doing too much damage, it definitely increased the complexity of their processors.

This is one of the biggest tech debt paydowns I’ve seen in a long time. I have long felt about Intel architecture somewhat analogously to how Richard P. Gabriel, author of “The Rise of Worse is Better”, felt about C++ and Unix decades ago:

The good news is that in 1995 we will have a good operating system and programming language; the bad news is that they will be Unix and C++.

Similarly, I have always felt that Intel architecture would become reasonable someday, that it would gradually convert itself to something less absurd than its traditional state. I was excited when AMD (not Intel, note) came out with what Intel now calls Intel64, getting rid of segmentation in 64-bit mode and adding 8 sorely needed additional general-purpose registers (for a total of 16).

Now, finally, they’re phasing out the legacy modes. No more DOS on a modern PC (and it wouldn’t work anyway for other reasons). Good!

Like many tech debt paydowns of this magnitude and this level of historical relevance, it’s about the cognitive burden as much as it’s about the actual implementation or the actual code and circuitry to work around the complexity. We can now, slowly but surely, forget the arcane details of how things used to be.

It brings me a tinge of nostalgia, actually. 16-bit DOS programming was where I first learned assembly, at least to read it. Segmentation and the different processor modes was firmly in my awareness when I used a DOS computer with Windows 3.1 as a child. I remember playing with the edge cases, like “unreal mode” which was like real mode but where each segment could be addressed with 32-bit registers. Knowing the complexity of Intel architecture was relevant, and part of how I learned computer architecture in general.

But more recently, all of this knowledge has seemed overpresent. Too many times I’ve seen people assume Intel architecture and bring these old irrelevancies of PCs into conversation and even formal talks, assuming familiarity with not just operating system and systems concepts but the Intel-specific details of them. They’ll be talking about registers and you’ll see that instead of generic names like r3, r4, they’re talking about specific Intel registers. Or they’ll mention cr3 instead of generically saying “page table base register,” or “the syscall instruction” or even the obsolescent 32-bit int 0x80 instead of saying “issuing a syscall through a trap.”

The biggest example is how often I hear people talking about “ring 0” and “ring 3” when they should be saying “kernel mode” and “user mode.” The numbered rings are so jarringly and gratuitously Intel-specific. It makes me wonder if they genuinely think all processor architectures number protection rings or privilege levels like that (they do not), or if they think the intermediate rings between 0 and 3 are still relevant to modern OS design on Intel (they are not). Or perhaps they’re just okay with assuming Intel, ignoring the mobile and embedded worlds, and also bringing in an irrelevant, overengineered concept while they’re at it.

Maybe this will stop now that Intel is eliminating the unused rings 1 and 2. Maybe people will stop occasionally talking as if protected mode was an exceptional mode, now that it won’t be a mode at all, but the only way the processor runs.