Intel predicted the end of one of the last remnants of the original IBM PC, at the Intel Developer Forum in San Jose this week. For more than twenty years, the PC has relied on the BIOS (Basic Input Output System), a small set of fixed software subroutines normally built into a chip on the motherboard. This hangover from a distant past is causing more and more problems, said Mark Doran, the principal engineer behind the Extensible Firmware Interface (EFI) project that aims to humanely kill the antique.
"When I started, I got senior managers together from across Intel" said Doran, "and asked them what would happen if we had a blank sheet of paper to replace the BIOS. It turned into a three day bitch session." He said that the original designers of the IBM PC BIOS had no idea that it would survive this long - "They thought that 250,000 machines would see it through to the end of its life."
Most users only know the BIOS as the mysterious source of arcane configuration and test messages that appear when a PC is first switched on. Although its job is to connect the various bits of hardware in a PC to the operating system in a standard fashion, there are no standards for how it itself is created or configured -- and it's not uncommon for extension boards from different manufacturers to clash in their use of the BIOS.
And if users do have occasion to use the BIOS to change configurations or diagnose a problem, there's often not much help and absolutely no commonality across different PCs. "Even experienced support staff often end up in "Now what?" mode with the BIOS" said Doran.
EFI promises to change all that. In effect, it's a tiny operating system in its own right, freed from the constraints of the BIOS. The first difference users will see is in the splash screen, the display the PC shows when first turned on. With the BIOS, that's limited to VGA or worse, but EFI supports high resolution displays. Likewise, it can run with a proper graphical user interface, rather than the blocky text-only mode that's currently the best on offer -- and it has its own networking, so can be used for remote diagnostics.
The differences are much more than just the interface, said Doran. "The BIOS is the last place on the PC where people have to write in low-level assembler code, and we want to end that" he said. Instead, EFI is almost entirely written in C, and allows additions to be created using standard programming tools -- a statement that drew a gasp of approval from the gathered engineers. Such additions can include much more detailed and useful diagnostics, self-configuration programs and ways to sort out problems even if the operating system has died. "We even have a concept of the afterlife" said Doran, "so if your OS freezes you can go in and look at the state of the machine, change configuration, load a different driver, and do a sensible restart."
As part of the demonstration, he showed a network driver being replaced on a live machine, as well as multiple reconfigurations of various USB devices. Because EFI has its own filing system that lives on a reserved part of the hard disk, it can become the standard home for a whole set of utilities that have always had an awkward fit with the BIOS: things like disk partitioners, multiple OS boot controllers, system backup and restore, will be natural EFI applications. Because it gives a new level of control over the hardware, it's also of interest to digital rights management and security designers.
Finally, it can pretend to be a BIOS. "We're not expecting people to throw out the BIOS overnight, so EFI can support legacy systems by running on top of an existing BIOS and handing over control when appropriate." He also said that EFI could run across very different processor and hardware architectures: it's mandatory for Itanium computers, but has also been ported to IA-32 and Xscale prototypes. "But Intel is not getting into the BIOS business, and we have no plans to do so" Doran pointed out, saying that a couple of the existing BIOS writing software houses had already been working with Intel on EFI.