Now that Casey has given his lecture on "The Thirty-Million Line Problem" again, I'd like to talk about some of the things that came up from an operating system perspective.

x86-64 vs x86

Having written code that bare-metal boots 20 years ago and a few years ago, these are the main differences between booting on the two:

[ul]

  • Going from 32-bit mode to 64-bit mode is about 10-20 lines of assembly. However, that's not the hard part. The hard part is that there is no such thing as 64-bit "real mode", so you also need to set up page tables. This isn't difficult, and it's reasonably inexpensive now that we have 1G page tables. (But see below the discussion about APs.) Difficulty level: Hey, not too rough.
  • More complicated than this is the move from single core to multicore. I'm going to talk about this in a bit more detail in a moment. Difficulty level: Hurt me plenty.
  • [li]20 years ago, we had 32-bit plug-and-play BIOS calls to handle most hardware disc