EFI – Extensible Firmware Interface – explained

The BIOS has evolved very little since the birth of the PC in 1981, remaining a chunk of hand-crafted assembly language code most users know only for the series of arcane configuration and test messages fleetingly displayed when they turn on their PC.

Intel first signalled that all that was about to change in early 2000, with the release of the first version of its Extensible Firmware Interface (EFI) specification, a proposed standard for the architecture, interface and services of a brand new type of PC firmware, designed to provide a well-specified set of services that are consistent across all platforms.

EFI services are divided into two distinct groups, those that are available only before the operating system is loaded, known as Boot Services, and those that are also available after EFI has assumed its minimum footprint configuration, known as Runtime Services. Boot Services provide the breadth of functionality offered by EFI for platform configuration, initialisation, diagnostics, OS kernel image loading and other functions. Run-time Services represent a minimum set of services primarily used to query and update non-volatile EFI settings.

Services within EFI are officially specified in the EFI Specification as core services and protocol interfaces. Various protocol interfaces have been defined for access to a variety of boot devices, many of which are provided in the EFI reference implementation. Other protocol interfaces provide services for application level functions, such as memory allocation and obtaining access to a specified protocol interface.

EFI modules are generally defined as applications or drivers. Drivers conform to a model defined in the EFI specification, and are used to implement a particular protocol interface. In many cases the implementation of one protocol interface may use or enhance the functionality of an existing protocol interface, thereby providing a mechanism for an object oriented design practice called containment and aggregation.

In essence, EFI is effectively a tiny operating system in its own right, complete with its own basic networking, graphics, keyboard and storage handling software. This will allow it to have a radically different user interface to what we’ve been accustomed to, with support for high resolution displays and a proper GUI. The differences are far more than cosmetic though.

Since EFI is able to manage its own storage space – normally envisioned as a partition on a hard disk – hardware manufacturers will be able to add many more diagnostic and control options, and include support for different kinds of computer systems and configurations, without being constrained by the cost of expensive onboard flash memory. Moreover, the fact that EFI is developed in a high-level programming language will also spur innovation, allowing additional features to be created using standard programming tools. 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. Since it has its own networking capability, EFI will also be able to support remote diagnostics.

The EFI specification is primarily intended for the next generation of IA-32 and Itanium architecture-based computers, and is an outgrowth of the Intel Boot Initiative (IBI) program that began in 1998.