CMOS RAM
Motherboards also include a separate block of memory made from very low power consumption CMOS (complementary metal oxide silicon) RAM chips, which is kept "alive" by a battery even when the PC's power is off. This is used to store basic information about the PC's configuration: number and type of hard and floppy drives, how much memory, what kind and so on. All this used to be entered manually, but modern auto-configuring BIOSes do much of this work, in which case the more important settings are advanced settings such as DRAM timings. The other important data kept in CMOS memory is the time and date, which is updated by a Real Time Clock (RTC).

The CMOS memory is usually located with the real-time clock in the motherboard chipset or in a separate real-time clock chip. The PC reads the time from the RTC when it boots up, after which the CPU keeps time - which is why system clocks are sometimes out of sync. Rebooting the PC causes the RTC to be reread, increasing their accuracy.
In modern-day PCs the nonvolatile BIOS memory is generally an EEPROM or Flash memory chip. There is still a backup battery involved, but its role is not to maintain the data stored in the RAM, only to keep the RTC chip operational.
EFI
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.
|