New boots for old
Published: 12 Mar 2003 17:03 GMT
Reporting from the Intel Developer Forum last month, I covered an Intel initiative called the Extensible Firmware Interface, or EFI. It was, I thought, a solid but unexciting story: Intel plans to popularise a tiny operating system designed to replace the PC's BIOS. And why not? The BIOS -- basic input output system -- is a real reptilian hindbrain hangover from the 1981 birth of the PC. It's a chunk of hand-crafted assembly language programming, the sort that looks like it's been encrypted even when it hasn't. Keeping it up to date in the modern world has been like trying to teach a crocodile to tango. Intel's proposal is focused, clever and apposite.
What the BIOS does is absolutely vital to modern computing: it holds the instructions that the computer runs first thing in the morning. It has the low-level magic that ensures that the computer's memory controller, hard disk interface, video card and so on all turn on properly: it wakes up the motherboard's workforce and gets them ready for the operating system. This has to work with whichever of a zillion different expansion options are ready -- many with their own bits of BIOS -- and it has to be uncommonly reliable. As there's no operating system loaded when the BIOS runs, and as it has to live in the restricted confines of a flash memory chip, it has to be minuscule and very highly optimised -- hence the handwritten assembler. You can't do that sort of thing in C or Java.
EFI updates the plot. Instead of the BIOS, there's a very small -- tiny enough to live on a chip -- operating system. It knows just enough to load more of itself from disk, talk over the network and handle basic files. It also has a small interpreter that can run programs originally written in C -- or whatever -- and compiled to byte code, like Java. People who need to write BIOS-type programs can now write proper software, turn them into byte code and know that they'll run on any EFI system. Intel says that this could mean the end of people having to write separate low-level drivers to make their expansion cards run in different classes of system, and the start of lots of really useful little utilities to help debug problems with hardware on PCs. All very welcome -- but there's another side.






