It is often difficult for people to understand the difference between hardware and software in a PC system. The differences can be difficult because they are both very much intertwined in the system design, construction, and operation. Understanding these differences is essential to understanding the role of the BIOS in the system.
First let's define what the BIOS is. BIOS is a term that stands for basic input/output system, which consists of low-level software that controls the system hardware and acts as an interface between the operating system and the hardware. Most people know the term BIOS by another name device drivers, or just drivers. In other words, the BIOS is drivers, meaning all of them. BIOS is essentially the link between hardware and software in a system.
When the PC was first introduced, the BIOS software containing all the device drivers for the entire system was collectively burned into one or more nonvolatile (meaning they retain their data even when the power is turned off) read-only memory (ROM) chips and placed on the motherboard. In essence, the drivers were self-contained, preloaded into memory, and accessible anytime the PC was powered on.
This ROM chip also contained a
power on self test (POST) program and a bootstrap loader. The bootstrap program
was designed to initiate the loading of an OS by checking for and loading the
boot sector from a floppy disk and, if one was not present, a hard disk. After
the OS was loaded, it could call on the low-level routines (device drivers) in
the BIOS to interact with the system hardware. In the early days, all the
necessary device drivers were in the BIOS stored in the motherboard
When the OS loaded, you didn't
have to load a driver to interact with those pieces of hardware because the
drivers were already preloaded in the
This method of adding drivers was required for certain items, such as video cards, that needed to be functional immediately when the PC was powered on. The BIOS code in the motherboard ROM had drivers only for the IBM monochrome display adapter (MDA) and color graphics adapter (CGA) video cards. If you added any card that was different from that, the drivers in the motherboard ROM would not work. That wouldn't be a problem if the new video card had its own onboard drivers in a ROM that would be linked into the BIOS immediately upon throwing the power switch.
If the device did not use an adapter card, there had to be another way to add the necessary driver to the BIOS collective. A scheme was devised whereby during the early stages of loading, the OS startup file (IO.SYS) checked for a configuration file (called CONFIG.SYS) that specified any additional drivers to load to support new hardware. The CONFIG.SYS file, along with any drivers named within, would be placed on the boot drive. Then, when the IO.SYS program read them, it loaded the specified drivers into memory and linked them into the rest of the BIOS, again adding their functionality to the collective whole. In essence, these drivers were loaded from disk into RAM and linked into the BIOS so they could be called on when necessary.
At this point, the BIOS had grown from being entirely contained in the motherboard ROM, to having additional drivers linked in from adapter card ROMs, to having even more drivers linked in after being loaded into RAM during the early stages of the boot process. The BIOS was now constructed of programs located in three different physical locations in the system, and yet it functioned as a single entity because all the programs were linked together via the BIOS subroutine calling system-of-software interrupts. The OS or an application program needing to talk to a specific piece of hardware (for example, to read from the CD-ROM drive) would make a call to a specific software interrupt, and the interrupt vector table would then route the call to the specific part of the BIOS (meaning the specific driver) for the device being called. It did not matter whether that driver was in the motherboard ROM, adapter ROM, or RAM. As far as the system was concerned, memory is memory, and as long as the routine existed at a memory address, it could be called.
The combination of the motherboard BIOS, adapter card BIOS, and device drivers loaded from disk contributed to the BIOS as a whole. The portion of the BIOS contained in ROM chips, both on the motherboard and in some adapter cards, is sometimes called firmware, which is a name given to software stored in chips rather than on disk. Of course, after you turned off the system, the drivers in nonvolatile ROM would remain intact but those in volatile RAM would instantly vanish. That was not a problem, however, because the next time the system was turned back on, it went through the boot process and again loaded the necessary supplemental drivers from disk all over again.
As the PC has evolved, more and more accessories and new hardware have been devised to add to the system. This means that more and more drivers have needed to be loaded to support this hardware. Adding new drivers to the motherboard ROM has been extremely difficult because ROM chips were relatively fixed (difficult to change) and limited space was available. The PC architecture allotted only 128KB for the motherboard ROM, and most of it was already used by the existing drivers, POST, BIOS Setup program, and of course the bootstrap loader. Putting the driver on an adapter card ROM is also difficult and expensive, and only 128KB is allocated for all adapter card ROMs to exist, not to mention the fact that the video cards have already stolen 32KB of that. So, most companies developing new hardware for the PC simply wrote a driver that was designed to be loaded into RAM during boot.
As time went on, more and more
drivers were being loaded from disk—in some
cases, even drivers that were replacing those in the motherboard. For example,
Windows 95 introduced a new hard disk driver that used 32-bit code, which shut
down the existing 16-bit coded driver that existed in the motherboard
This has progressed to today,
when 32-bit drivers have been designed to be loaded from disk to replace all the drivers in the motherboard
Therefore, today on a PC running Windows XP, for example, after XP is loaded, no more calls are made to any of the routines in the motherboard or adapter ROMs. Instead, only device drivers loaded into RAM are called. So, the instant the PC is powered on, the BIOS might be mostly in ROM, but after XP is loaded, the BIOS resides entirely in RAM.
That is most likely the way things will continue for the future. The motherboard ROM exists only to get the system started, to initialize specific hardware, to offer security in the way of power-on passwords and such, and to perform some basic initial configuration. However, after the OS is loaded, a whole new set of drivers takes over.
A PC system can be described as a series of layers—some hardware and some software—that interface with each other. In the most basic sense, you can break a PC down into four primary layers, each of which can be broken down further into subsets. Figure shows the four layers in a typical PC.
The purpose of the layered design is to enable a given operating system and applications to run on different hardware. Figure shows how two different machines with different hardware can each use different drivers (BIOS) to interface the unique hardware to a common operating system and applications. Thus, two machines with different processors, storage media, video display units, and so on can run the same application software.
In this layered architecture, the application software programs talk to the operating system via what is called an Application Program Interface (API). The API varies according to the operating system you are using and consists of the various commands and functions the operating system can perform for an application. For example, an application can call on the operating system to load or save a file. This prevents the application itself from having to know how to read the disk, send data to a printer, or perform any other of the many functions the operating system can provide. Because the application is completely insulated from the hardware, you can essentially run the same applications on different machines; the application is designed to talk to the operating system rather than the hardware.
The operating system then interfaces with or talks to the BIOS or driver layer. The BIOS consists of all the individual driver programs that operate between the operating system and the actual hardware. As such, the operating system never talks to the hardware directly; instead, it must always go through the appropriate drivers. This provides a consistent way to talk to the hardware. It is usually the responsibility of the hardware manufacturer to provide drivers for its hardware. Because the drivers must act between both the hardware and the operating system, the drivers typically are operating system specific. Thus, the hardware manufacturer must offer different drivers so that its hardware works under DOS, Windows 9x, Windows 2000, Windows XP, OS/2, Linux, and so on. Because many operating systems use the same internal interfaces, some drivers can work under multiple operating systems. For example, a driver that works under Windows Me will usually also work under Windows 98 and 95, and a driver that works under Windows XP will also often work under Windows 2000 and NT (and vice versa). This is because Windows 95, 98, and Me are essentially variations on the same OS, as are Windows NT, 2000, and XP.
Because the BIOS layer looks the same to the operating system no matter what hardware is above it (or underneath, depending on your point of view), the same operating system can run on a variety of systems. For example, you can run Windows XP on two systems with different processors, hard disks, video adapters, and so on, yet Windows XP will look and feel pretty much the same on both of them. This is because the drivers provide the same basic functions no matter which specific hardware is used.
As you can see from Figure, the application and operating systems layers can be identical from system to system, but the hardware can differ radically. Because the BIOS consists of software drivers that act to interface the hardware to the software, the BIOS layer adapts to the unique hardware on one end but looks consistently the same to the operating system at the other end.
The hardware layer is where most differences lie between various systems. It is up to the BIOS to mask the differences between unique hardware so that the given operating system (and subsequently the application) can be run. This chapter focuses on the BIOS layer of the PC.
The ROM BIOS provides the crude brains that get your computer's components working together. A simple BIOS upgrade can often give your computer better performance and more features.
The BIOS is the reason various
operating systems can operate on virtually any PC-compatible system despite
hardware differences. Because the drivers in the BIOS communicate with the
hardware, the BIOS must be specific to the hardware and match it completely. As
discussed earlier, instead of creating their own BIOS, many computer makers buy
a BIOS from specialists such as American Megatrends,
Inc. (AMI), Microid Research, or Phoenix Technologies
Often, in older systems, you must upgrade the BIOS to take advantage of some other upgrade. To install some of the larger and faster Integrated Drive Electronics (IDE) hard drives and LS-120 (120MB) floppy drives in older machines, for example, you might need a BIOS upgrade. Some of the machines you have might be equipped with older BIOS that do not support hard drives larger than 8GB, for example.
The following list shows some of the primary functions of a ROM BIOS upgrade; the exact features and benefits of a particular BIOS upgrade depend on your system:
· Adding LS-120 (120MB) SuperDisk floppy drive or Iomega Zip drive support
· Adding support for bootable USB drives
· Adding support for hard drives greater than 8.4GB or 137GB (48-bit LBA)
· Adding support for Ultra-DMA/33, UDMA/66, or faster UDMA IDE hard drives
· Adding support for bootable ATAPI CD-ROM drives (called the El Torito specification)
· Adding or improving Plug and Play (PnP) support and compatibility
· Correcting calendar-related and leap-year bugs
· Correcting known bugs or compatibility problems with certain hardware and application or operating system software
· Adding support for newer-type and -speed processors
· Adding support for ACPI power management
· Adding or fixing support for temperature monitoring and fan control
· Adding support for legacy USB devices
· Adding support for chassis intrusion support
If you install newer hardware or software and follow all the instructions properly, but you can't get it to work, specific problems might exist with the BIOS that an upgrade can fix. This is especially true for newer operating systems. Many systems need to have a BIOS update to properly work with the Plug and Play features of Windows 9x, Me, XP, and 2000. Because these problems are random and vary from board to board, it pays to periodically check the board manufacturer's Web site to see whether any updates are posted and what problems they fix. Because new hardware and software that are not compatible with your system could cause it to fail, I recommend you check the BIOS upgrades available for your system before you install new hardware or software, particularly processors.
You can use the BIOS Wizard utility available from eSupport.com (formerly Unicore) to test your BIOS for compatibility with popular BIOS features, such as Zip/LS-120 booting, ACPI power management, PCI IRQ routing, and more.
For most BIOS upgrades, you
must contact the motherboard manufacturer by phone or download the upgrade from
its Web site. The BIOS manufacturers do not offer BIOS upgrades because the
BIOS in your motherboard did not actually come from them. In other words,
although you think you have a
In the case of
· The make and model of the motherboard (or system)
· The version of the existing BIOS
· The type of CPU (for example, Pentium MMX, AMD K6, Cyrix/IBM 6x86MX, MII, Pentium II, Pentium III and later, AMD Athlon, Athlon XP, and so on)
You usually can identify the BIOS you have by watching the screen when the system is first powered up. It helps to turn on the monitor first because some take a few seconds to warm up and the BIOS information is often displayed for only a few seconds.
Look for any copyright notices or part number information. Sometimes you can press the Pause key on the keyboard to freeze the POST, allowing you to take your time to write down the information. Pressing any other key then causes the POST to resume.
In addition, you often can find the BIOS ID information in the BIOS Setup screens. eSupport also offers a downloadable BIOS Agent that can be used to determine this information, as well as the motherboard chipset and Super I/O chip used by your motherboard. After you have this information, you should be able to contact the motherboard manufacturer to see whether a new BIOS is available for your system. If you go to the Web site, check to see whether a version exists that is newer than the one you have. If so, you can download it and install it in your system.
Most BIOSs display version information onscreen when the system is first powered up. In some cases, the monitor takes too long to warm up, and you might miss this information because it is displayed for only a few seconds. Try turning on your monitor first, and then your system, which makes this information easier to see. You usually can press the Pause key on the keyboard when the BIOS ID information is being displayed, which freezes it so you can record the information. Pressing any other key allows the system startup to resume.
Part of the PC 2001 standard published by Intel and Microsoft requires something called Fast POST to be supported. Fast POST means that the time it takes from turning on the power until the system starts booting from disk must be 12 seconds or less (for systems not using SCSI as the primary storage connection). This time limit includes the initialization of the keyboard, video card, and ATA bus. For systems containing adapters with onboard ROMs, an additional 4 seconds are allowed per ROM. Intel calls this feature Rapid BIOS Boot (RBB), and it is supported in all its motherboards from 2001 and beyond some of which can begin booting from power-on in as little as 6 seconds.
A motherboard BIOS upgrade usually wipes out the BIOS Setup settings in the CMOS RAM. Therefore, you should record these settings, especially the important ones such as hard disk parameters. Some software programs, such as the Norton Utilities, can save and restore CMOS settings, but unfortunately, these types of programs are often useless in a BIOS upgrade situation. This is because sometimes the new BIOS offers new settings or changes the positions of the stored data in the CMOS RAM, which means you don't want to do an exact restore. Also, with the variety of BIOS available, I have yet to find a CMOS RAM backup and restore program that works on more than just a few specific systems.
You are better off manually recording your BIOS Setup parameters, or possibly connecting a printer to your system and using the Shift+Prtsc (Print Screen) function to print each of the setup screens. Turn on your printer, start your computer normally, and restart it without turning off the system to initialize the printer to try this option. Some shareware programs could print or even save and restore the BIOS Setup settings stored in the CMOS RAM, but these were BIOS version specific and would not work on any other system. Most of these programs were useful during the 286/386 era, but most systems released since—especially those with Plug and Play capabilities—have rendered most of these older programs useless.
If you are unable to print your screens, use a digital camera to take a picture of each BIOS setup screen. Be sure to set the camera to its close-up mode, and use the LCD display rather than the optical viewfinder to ensure you get the entire screen in the photo.
Keyboard Controller Chips
In addition to the main
system ROM, older AT-class (286 and later) computers also have a keyboard
controller or keyboard ROM, which is a keyboard-controller microprocessor
with its own built-in
The keyboard controller controls the reset and A20 lines and also deciphers the keyboard scan codes. The A20 line is used in extended memory and other protected-mode operations. In many systems, one of the unused ports is used to select the CPU clock speed. Because of the tie-in with the keyboard controller and protected-mode operation, many problems with keyboard controllers became evident on these older systems when upgrading from DOS to Windows 95/98, NT, or 2000.
Problems with the keyboard controller were solved in most systems in the early 1990s, so you shouldn't have to deal with this issue in systems newer than that. With older systems, when you upgraded the BIOS in the system, the BIOS vendor often included a new keyboard controller.
Virtually all PCs built since
1996 include a flash ROM to store the BIOS. A flash ROM is a type of EEPROM
chip you can erase and reprogram directly in the system without special
equipment. Older EPROMs required a special
ultraviolet light source and an EPROM programmer device to erase and reprogram
them, whereas flash ROMs can be erased and rewritten without even removing them
from the system. On many recent systems, the flash ROM is not a separate chip
but might be incorporated into the
Using flash ROM enables you to download ROM upgrades from a Web site or receive them on disk; you then can load the upgrade into the flash ROM chip on the motherboard without removing and replacing the chip. Normally, these upgrades are downloaded from the manufacturer's Web site, and then an included utility is used to create a bootable floppy with the new BIOS image and update program. It is important to run this procedure from a boot floppy so that no other software or drivers are in the way that might interfere with the update. This method saves time and money for both the system manufacturer and end user.
Sometimes the flash ROM in a system is write-protected, and you must disable the protection before performing an update usually by means of a jumper or switch that controls the lock on the ROM update. Without the lock, any program that knows the correct instructions can rewrite the ROM in your system—not a comforting thought. Without the write-protection, virus programs could be written that copy themselves directly into the ROM BIOS code in your system. Even without a physical write-protect lock, modern flash ROM BIOSs have a security algorithm that helps prevent unauthorized updates. This is the technique Intel uses on its motherboards.
Note that motherboard manufacturers will not notify you when they upgrade the BIOS for a particular board. You must periodically log on to their Web sites to check for updates. Usually, any flash updates are free.
Before proceeding with a BIOS upgrade, you first must locate and download the updated BIOS from your motherboard manufacturer. Consult the Vendor List on the DVD to find the Web site address or other contact information for your motherboard manufacturer. Log on to its Web site, and follow the menus to the BIOS updates page; then select and download the new BIOS for your motherboard.
If a flash BIOS upgrade is identified as being for only certain board revisions of a particular model, be sure you determine that it will work with your motherboard before you install it. You might need to open your system and look for a revision number on the motherboard or for a particular component. Check the vendor's Web site for details.
The BIOS upgrade utility is contained in a self-extracting archive file that can initially be downloaded to your hard drive, but it must be extracted and copied to a floppy before the upgrade can proceed. Different motherboard manufacturers have slightly different procedures and programs to accomplish a flash ROM upgrade, so you should read the directions included with the update. I include instructions here for Intel motherboards because they are by far the most common.
Intel and other typical flash BIOS upgrades fit on a bootable floppy disk; some recent BIOS upgrades from Intel and other vendors can also be run from within the Windows GUI. Older Intel and some other flash BIOS upgrades also provide the capability to save and verify the current BIOS version before replacing it with the new version and also provide the capability to install alternative languages for BIOS messages and the BIOS setup utility.
Before you start the flash BIOS upgrade process, you should disconnect all USB devices except for your keyboard and mouse. On some systems, leaving USB drives connected prevents a BIOS upgrade from working properly.
If you have Byte Merge enabled in an Award BIOS or a FirstBIOS-based system, disable this feature before you perform the BIOS upgrade. On some systems, leaving byte merge enabled during a BIOS upgrade can destroy your BIOS. You can re-enable this feature after you complete the upgrade.
If the BIOS setup is performed with a bootable floppy disk, the first step in the upgrade after downloading the new BIOS file is to enter the CMOS Setup and write down or record your existing CMOS settings because they will be erased during the upgrade. Then, you create a DOS boot floppy and uncompress or extract the BIOS upgrade files to the floppy from the file you downloaded. Next, you reboot on the newly created upgrade disk and follow the menus for the actual reflash procedure.
The iFlash procedure covered in this section is similar to the BIOS update process used by most non-Intel motherboards and must be used for systems running Windows 95, MS-DOS, or non-Windows operating systems such as Linux. Intel's Express BIOS update (for Windows 98, Windows NT 4, and current Windows versions) uses the InstallShield loader program familiar to Windows users to install BIOS upgrades within the Windows GUI. Here is a step-by-step procedure for the process using Intel's iFlash (DOS-based) BIOS update:
1. Save your CMOS RAM setup configuration. You can do so by pressing the appropriate key during boot to start the BIOS setup program (usually F1 with an AMI BIOS and F2 with a Phoenix BIOS) and writing down all your current CMOS settings. You also might be able to print the screens if you have a printer connected, using the PrtScr key on the keyboard. You must reset these settings after you have upgraded to the latest BIOS. Write down all the settings that are unique to the system. These settings will be needed later to reconfigure the system. Pay special attention to any hard drive settings for geometry (Cylinder/Head/Sectors per track) and translation (LBA, Large, CHS); these are very important. If you fail to restore these properly, you might not be able to boot from the drive or access the data on it.
2. Exit the BIOS Setup and restart the system. Allow the system to fully start Windows and bring up a DOS prompt window or boot directly to a DOS prompt via the Windows Start menu (for example, press F8 when you see Starting Windows, and select Command Prompt).
5. C:\>FORMAT A:
You also can use Windows Explorer to format the floppy disk.
6. The file you originally downloaded from the Intel Web site is a self-extracting compressed archive that includes other files that need to be extracted. Put the file in a temporary directory, and then from within this directory, double-click the BIOS file you downloaded or type the filename of the file and press Enter. This causes the file to self-extract. For example, if the file you downloaded is called CB-P06.EXE (for the Intel D810E2CB motherboard), you would enter the following command:
8. C:\TEMP>CB-P06 <enter>
9. The extracted files are stored in the same temporary folder as the downloaded BIOS. Recent Intel flash BIOS upgrades contain the following files: Desc.txt, License.txt, Readme.txt, Run.bat (which is run to create the bootable floppy), and SW.EXE (which contains the BIOS code).
11. Now you can restart the system with the bootable floppy in drive A: containing the new BIOS files you just extracted. Upon booting from this disk, the iFlash program automatically starts and updates the BIOS boot block and the main BIOS area.
12. When you're told that the BIOS has been successfully loaded, remove the bootable floppy from the drive and press Enter to reboot the system.
13. Press F1 or F2 to enter Setup. On the first screen within Setup, check the BIOS version to ensure that it is the new version.
If you do not set the values back to default, the system might function erratically.
If you encounter a CMOS checksum error or other problems after rebooting, try rebooting the system again. CMOS checksum errors require that you enter Setup, check and save your settings, and exit Setup a second time.
The procedure for older Intel BIOS upgrades differs from that described previously. If your BIOS upgrade contains the BIOS.EXE program, see the BIOS upgrade description contained in Upgrading and Repairing PCs, 12th Edition, included in electronic form on the DVD-ROM packaged with this book.
The BIOS is currently being updated. DO NOT REBOOT OR POWER DOWN until the update
is completed (typically within three minutes)...
If you fail to heed this warning or something interrupts the update procedure, you will be left with a system that has a corrupted BIOS. This means you will not be able to restart the system and redo the procedure, at least not easily. Depending on the motherboard, you might have to replace the flash ROM chip with one that was preprogrammed by the motherboard manufacturer or from a vendor such as BIOSWorld (www.biosworld.com), which provides replacement BIOS chips containing the same BIOS code as that provided by your motherboard vendor. This is an unfortunate necessity because your board will be nonfunctional until a valid ROM is present. This is why I still keep my trusty ROM burner around; it is very useful for those motherboards with socketed flash ROM chips. In minutes, I can use the ROM burner to reprogram the chip and reinstall it in the board. If you need a ROM programmer, I recommend Andromeda Research Labs (see the Vendor List on the DVD).
In many of the latest systems, the flash ROM is soldered into the motherboard so it can't be replaced, rendering the reprogramming idea moot. However, this doesn't mean the only way out is a complete motherboard replacement. Most motherboards with soldered-in flash ROMs have a special BIOS Recovery procedure that can be performed. This hinges on a special non-erasable part of the flash ROM that is reserved for this purpose.
In the unlikely event that a flash upgrade is interrupted catastrophically, the BIOS might be left in an unusable state. Recovering from this condition requires the following steps. A minimum of a power supply, a speaker, and a floppy drive configured as drive A: should be attached to the motherboard for this procedure to work:
1. Change the Flash Recovery jumper to the recovery mode position. Virtually all Intel motherboards and many third-party motherboards have a jumper or switch for BIOS recovery, which in most cases is labeled "Recover/Normal." Figure shows this jumper on the Intel SE440BX, a typical motherboard.
2. Install the bootable BIOS upgrade disk you previously created to do the flash upgrade into drive A: and reboot the system.
Because of the small amount of code available in the non-erasable flash boot block area, no video prompts are available to direct the procedure. So, you will see nothing onscreen. In fact, it is not even necessary for a video card to be connected for this procedure to work. The procedure can be monitored by listening to the speaker and looking at the floppy drive LED. When the system beeps and the floppy drive LED is lit, the system is copying the BIOS recovery code into the flash device.
3. As soon as the drive LED goes off and the system beeps (normally twice), the recovery should be complete. Sometimes there might be pauses where the drive stops reading during the recovery process; however, the process might not be complete. Be sure to wait for a minute or so to ensure a complete recovery before turning off the system. When you are sure the recovery is complete and there is no further activity, power off the system.
4. Change the flash recovery jumper back to the default position for normal operation.
When you power the system back on, the new BIOS should be installed and functional. However, you might want to leave the BIOS upgrade floppy in drive A: and check to see that the proper BIOS version was installed.
Note that this BIOS recovery procedure is often the fastest way to update a large number of machines, especially if you are performing other upgrades at the same time. This is how it is typically done in a system assembly or production environment.