Personal computer systems are well known in the art. Personal computer systems in general, and IBM Personal Computers in particular, have attained wide-spread use for providing computer power to many segments of today's modern society. Personal computers can typically be defined as a desktop, floor standing, or portable microcomputer that is comprised of a system unit having a processing unit and associated volatile and non-volatile memory, including all RAM and BIOS ROM, a system monitor, a keyboard, one or more flexible diskette drives, a fixed disk storage drive (also known as a "hard drive"), a so-called "mouse" pointing device, a modem, a sound card, a CD-ROM drive, and an optional printer. One of the distinguishing characteristics of these systems is the use of a motherboard or system planar to electrically connect these components together. These systems are designed primarily to give independent computing power to a single user and are inexpensively priced for purchase by individuals or small businesses. Examples of such personal computer systems are IBM's "APTIVA" line of computers.
Typically, many of the above electronic devices are interfaced to the processor using interrupts. When a device asserts an interrupt signal on an interrupt line, the processor performs a task associated with the device that asserted the interrupt. For example, a modem is typically interfaced to the system via a serial bus controller, which is connected to the processor via a peripheral bus and an interrupt line. While receiving data, the modem will periodically interrupt the processor to perform a particular task with the received data. After the processor performs the task, the processor resumes the task it was performing when it was interrupted. Thus, interrupts are often used by a peripheral device to notify the processing unit that data gathered by the peripheral is now available for use by the processing unit.
Systems have a number of "buses" between which electrical signals pass. For example, a typical system might have a "local bus" associated with a particular processor and one or more "peripheral buses," e.g., a peripheral component interconnect (PCI) bus or an industry standard architecture (ISA) bus. The term "bus" is used to describe a plurality of associated electrical conductors, a plurality of associated electrical signals being transmitted, or both the conductors and the signals. Buses pass data at different rates and latencies. On systems with medium to high bus latencies, there can be problems with synchronizing data with interrupts used to inform the processor that the data is ready. In systems with medium to high latencies, synchronization of the processor interrupt with arrival of the data in the system's memory can be a problem. That is, the separate interrupt signal can arrive at the processor before the data has fully traversed the bus and has arrived in the system memory. This may result in the use of invalid data by the processor. Moreover, at any one time, many devices, e.g., a mouse, modem, CD-ROM drive, hard drive, etc., might all be trying to send data to and interrupt the processor contemporaneously. This aggravates the problem of data interrupt synchronization.
Various prior art ways of dealing with this problem have many drawbacks. For example, one prior art method of synchronizing the data with an associated interrupt is to time-stamp the data. This requires that the processor poll the data looking for data with the proper time-stamp, which wastes processor power.