The computer is a conglomerate of individual devices (CPU, RAM, display, keyboard, etc). Getting these devices to speak to each other, mainly by the way of the CPU, requires information. The operating system, for the most part, is versed at informing the CPU on how to communicate with the system. But what happens when the OS is not there, or it has not arrived as yet?
A few things go into effect before the booting up of the operating system. First, a power on self-test (post) is sent throughout the computer. This test informs all connected devices to perform a self-check and report back.
If “post” is successful, the CPU then goes on to speak to the rest of the system. This requires communicating with devices such as the hard drive, the RAM, and the display. And only when communication is successful can the booting up of the OS, finally, begin.
Devices are driven by their drivers. These drivers, which are provided by manufacturers, assist the OS when communicating with the system. This means, for certain hardware their drivers will not be available until the operating system is up and running. But for some, like the hard drive and the RAM, they are required to be functioning in order to run the OS (a chicken and an egg scenario).
The “solution” comes by the way of a low-level software, called the firmware. Aided by the CMOS, the firmware is able to inform the CPU on system-critical devices, such as the RAM and the hard drive. The CPU then uses this information to locate the operating system and begin the loading process.
The firmware is also viewed as a standard: Meaning it can be used as a guideline by manufacturers. If you go any computer store, you will find a plethora of accessories [ranging from PCI to USB]. The firmware makes all this possible. Some [manufacturers] have even taken it upon themselves to implement supplementary [firmware] chips; which provides the user with additional features.
Because the firmware is required to run before the initialization of the hardware, conventional storage locations (such as the hard drive and RAM) are unsuitable. The only solution is to integrate the firmware chip onto the computer’s motherboard.
Initially, read only memory (ROM) was used for storage; but, due to its nature, upgrading was next to impossible. Flash memory, eventually, replaced ROM. This brought about firmware upgrading and even coined the term “flashing the BIOS”.
There were also software revisions. From the beginning, the firmware was referred to as the Basic input/output Services, or the BIOS. It first came about in the 16-bit era. Therefore, it was only 16-bits and it had 1 MB of addressing space. As technology continued to evolve, these limited specifications became insufficient.
Intel developed the extensible firmware interface (EFI); which was later depreciated, in 2005, by the unified extensible firmware interface (UEFI). Because UEFI runs in, both, 32-bit and 64-bit modes, it is able to address greater RAM sizes [when compared to the BIOS]. UEFI also accommodates bootable hard drives over 2 TB, implementation of power/thermal management, and simpler overclocking of CPUs.
But, even throughout all of its revisions, the firmware is still being referred to by many as the BIOS.
So the firmware, aka the BIOS, informs the CPU on how to speak to the rest of the system. But the information that is used is not stored within the BIOS. It is, instead, stored in CMOS (complementary metal-oxide-semiconductor).
Any changes made prior to the booting up of the OS [such as to the time or boot sequence] are all done in CMOS. The CMOS is, further, aided by a small battery that maintains any changes that are made to the settings. If the battery is removed or fails, these settings revert back to their initial states (default).
So, as varied as the computer maybe, the firmware helps to bring it all together. This is done by providing system-critical information to the CPU, which aides in the booting up of the operating system. Throughout the years the firmware was revised, but it is still known as the BIOS.