Personal computer systems in general, and IBM personal computers in particular, have attained widespread use for providing computer power to many segments of today's society. A personal computer system can usually be defined as a desk top, floor standing, or portable computer that includes a system unit having a system processor, a display monitor, a keyboard, one or more diskette drives, a fixed disk storage, an optional pointing device such as a "mouse," and an optional printer. These systems are designed primarily to give independent computing power to a single user or small group of users and are inexpensively priced for purchase by individuals or businesses. Examples of such personal computer systems are sold under the trademarks: IBM's PERSONAL COMPUTER, PERSONAL COMPUTER XT, PERSONAL COMPUTER AT and IBM's PERSONAL SYSTEM/2 (hereinafter referred to as the IBM PC, XT, AT, and PS/2, respectively) Models 25, 30, 50, 55, 57, 60, 65, 70, 80, 90 and 95.
These systems can be classified into two general families. The first family, usually referred to as Family 1 Models, uses a bus architecture exemplified by the IBM AT computer and other "IBM compatible" machines. The second family, referred to as Family 2 Models, uses IBM's MICRO CHANNEL bus architecture (MCA) exemplified by IBM's PS/2 Models 50 through 95. The bus architectures used in Family 1 and Family 2 are well known in the art.
Beginning with the earliest personal computer system of the Family 1 models, the IBM PC, and through the Family 2 models the system processor was chosen from the Intel "86 Family" of processors (i.e., microprocessors). The Intel 86 Family of processors includes the 8088, 8086, 80286, 80386, and 80486 processors commercially available from Intel Corporation. The architecture of the Intel 86 Family of processors provides an upwardly compatible instruction set which assists in preserving software investments from previous processors in the 86 Family of processors. This upward compatibility preserves the software application base and is one of the major factors which contributed to the enormous success of the IBM PC and subsequent models.
The IBM PC and XT were the first models of the IBM personal computer line and used the Intel 8088 processor. The next significant change to IBM personal computer systems was the IBM AT which used the Intel 80286 processor. The PS/2 line spanned several of the Intel processors. A system similar to the PC and XT was a version of the PS/2 Model 30 which used an Intel 8086. The PS/2 Models 50 and 60 both used the Intel 80286 processor. The Intel 80386 processor is used in the IBM PS/2 Model 80 and certain versions of the IBM PS/2 Model 70. Other versions of the IBM PS/2 Model 70, as well as the PS/2 Models 90 XP 486 and 95 XP 486, used the Intel 80486 processor. One of the common points in all these systems is the use of an Intel 86 Family processor. A variety of commonly available and well known software operating systems, such as a DOS or an OS/2 operating system, can operate on various members of the Intel Family of processors.
The processors in the Intel 86 Family support a variety of "modes." The basic mode in the Intel 86 Family of processors is a "Real" mode. Real mode is the only operating mode of the 8088 and 8086 processors. Real mode supports a one megabyte address space. There are no protection mechanisms available in the 8088 and 8086 processors. The 80286 supports both a Real and a "Protected" mode of operation. As the name "Protected" implies, Protected mode provides a protected mode of operation. This protection prevents an application from interfering with the operation of other applications or the operating system. The 80286 provides extended addressing capabilities over the 8088 and 8086 by allowing up to sixteen megabytes of memory to be addressed directly. To maintain downward compatibility, the 80286 can be operated in Real mode to emulate the Real mode of the 8088 or 8086. The 80386 and 80486 extend the Intel 86 Family architecture even further by providing the ability to address up to four gigabytes of physical memory. The 80386 and 80486 also support a "Virtual 86" mode of operation. The Virtual 86 mode supports the operational characteristics of the Real mode within the overall confines of the Protected mode environment. This Virtual 86 mode is useful for providing a very high level of compatibility with applications which run under the DOS operating system but must now operate within an overall Protected mode operating system.
Beginning also with the earliest personal computer system of the Family 1 models, such as the IBM Personal Computer, it was recognized that a goal of achieving software-hardware compatibility would be of great importance. In order to achieve this goal, an insulation layer of system resident code, also referred to as "microcode," was established between the hardware and the software. This code provided an operational interface between a user's application program/operating system and the hardware device to relieve the user of the concern about the characteristics of hardware devices. Eventually, the code developed into a basic input/output system (BIOS), for allowing new devices to be added to the system, while insulating the application program from the peculiarities of the hardware. The importance of BIOS was immediately evident because it freed a device driver from depending on specific device hardware characteristics while providing the device driver with an intermediate interface to the device. Because BIOS was an integral part of the system and controlled the movement of data in and out of the system processor, it was resident on a system planar of the system unit and was shipped to the user in a read-only memory (ROM). For example, BIOS in the original IBM Personal Computer occupied 8K (a kilobyte or "K" refers to a quantity of 1024 bytes) of ROM resident on the planar board. In addition to the ROM, the planar board included the system processor, a main random access memory (RAM), and other components which were fixed in a substantially coplanar relationship on the board. The ROM also contained a power-on self test (POST) program which was used to test and initialize the computer system. The accumulation of code resident in the computer system ROM became known as the "system firmware," or simply "firmware." Thus, the firmware included a POST portion and a BIOS portion.
As new models of the personal computer family were introduced, the firmware had to be updated and expanded to support new hardware devices such as input/output (I/O) devices. As could be expected, the firmware started to increase in memory size. For example, with the introduction of the IBM PERSONAL COMPUTER AT, the firmware grew to require 32K bytes of ROM. With the introduction of the IBM PERSONAL SYSTEM/2 computer system with MICRO CHANNEL architecture, a significantly new BIOS, known as Advanced BIOS, or ABIOS, was developed. However, to maintain software compatibility, BIOS from the Family 1 models had to be included in the Family 2 models. The Family 1 BIOS became known as compatibility BIOS or CBIOS. Thus, BIOS evolved to include more than one type of BIOS such as the Compatibility Basic Input Output System (CBIOS) and the Advanced Basic Input Output System (ABIOS). Present architectural definitions for personal computer systems allow for up to 128K of system firmware address space.
Today, with the continuing development of new technology, personal computer systems are becoming even more sophisticated and are being enhanced more frequently. Because the technology is changing rapidly and new I/O devices are being added to the personal computer systems, implementing modifications and effecting extensions to the firmware have become significant problems in the development cycle of personal computer systems. In addition, maintenance of the firmware in computer systems which are installed at user locations is also a problem.
Sometimes, personal computer systems are linked to form a network (e.g., a Local Area Network) so that users can exchange information, share I/O devices, and utilize a particular direct access storage device (DASD) such as a particular fixed disk storage. Typically, the LAN includes "Clients" and a "Server." A Client includes a computer system having usually no DASD other than possibly a diskette drive. A Server is a computer system which includes a DASD for supplying the storage for the Clients of the local area network. Clients may require modifications, updates, extensions or maintenance of the firmware.
As a result of these problems and requirements, and of a desire to modify the firmware as late as possible in the development cycle, it has become necessary to provide the ability to modify the firmware with a minimal disruption to the operation of the personal computer system. Because marketability and consumer acceptance of personal computer systems appear to require the ability to add new I/O devices and to minimize cost, it should be appreciated that an easy modification of the firmware is a substantial factor in achieving success in marketing personal computer systems. Personal computer systems have traditionally stored at least a part of the system firmware in ROM. See, for example, commonly owned U.S. patent application Ser. No. 07/398,865, entitled "Initial BIOS Load for a Personal Computer System," which is hereby incorporated by reference. The major drawback of ROM is that once the ROM is manufactured its contents cannot be altered. For example, if the POST program code must be changed, the ROM must be physically changed. The ROM has traditionally been socketed to allow for the ROM to be replaced. However, changing the ROM in the field (i.e., at a customer location) is time consuming and, thus, costly.
It is known to replace the ROM with an electrically erasable and reprogrammable (i.e., alterable) nonvolatile random access memory (e.g., Flash memory), and to store POST and/or BIOS therein. See, for example, the publication from Intel Corporation, entitled Memory Products 1991, Intel Order No. 210830, ISBN 1-55512-117-9, and particularly Chapter 6 (Flash Memories, pgs. 6-1 through 6-420), which chapter is hereby incorporated by reference. This permits the firmware to be modified easily.
However, the present inventors believe that there exists a need to ensure the integrity of system firmware efficiently while permitting the system firmware to be modified easily.