PCI System and adapter requirements following reset
Abstract
A method of registering a newly added peripheral device with a computer system by responding with a status message from the device to a bus of the computer system, in response to an access attempt, and within a predetermined time period from the deasserting of the reset signal applied to device, so as to avoid stalling and thereby avoid the need to reboot the system in order to initialize the new peripheral device with the operating system. The device may be allowed to initially send a retry response, provided the response occurs during an initial latency period which is less than the predetermined time period. The invention also enables the peripheral device to respond to non-configuration cycles immediately following configuration completion. Internal logic of the peripheral device can be initialized after responding with the status message. Non-configuration access to the peripheral device can be prevented until it is ready to respond, by setting a bit (in the configuration space of the peripheral device to indicate that the peripheral device is ready.

Term
Term ended
Projected expiry passed 11 March 2019, 7.5 years ago.
- Priority
- Filed
- Published
- Projected expiry
- Today
17 claims: 2 independent, 15 dependent
- 1A method of registering a peripheral device with a computer (100), comprising the steps of:isolating a slot (112, 114, 116), which is adapted to receive the peripheral device, from a bus of the computer;inserting the peripheral device into the slot;connecting the slot to the bus (110), after said inserting step;deasserting a reset signal on the slot, after said inserting step;responding with a status message from the peripheral device to the bus in response to an access attempt, within a predetermined time period established by the computer;and initializing the peripheral device with an operating system of the computer in response to said responding step.
- 11A computer system (100) comprising:a memory device (104);processor means (102) for carrying out program instructions stored in said memory device;a peripheral device;means (112, 114, 116) for connecting said peripheral device to said processor means;and means for responding with a status message from said peripheral device within a predetermined time period from a deasserting of a reset signal applied to said peripheral device and in response to an attempt to access said peripheral device.
Independent claims2
29 paragraphs, as filed
<u>Field of the Invention</u>
The present invention generally relates to computer systems, and more specifically to a method of configuring a computer system having peripheral devices, particularly adapter devices (such as graphics adapters or network adapters) which require configuration after a system reset, and which are interconnected to the system's processor using a peripheral (local) bus.
<u>Background of the Invention</u>
A typical structure for a conventional computer system includes one or more processing units connected to a system memory device (random access memory or RAM) and to various peripheral, or input/output (I/O), devices such as a display monitor, a keyboard, a graphical pointer (mouse), and a permanent storage device (hard disk). The system memory device is used by a processing unit in carrying out program instructions, and stores those instructions as well as data values that are fed to or generated by the programs. A processing unit communicates with the other components by various means, including one or more interconnects (buses), or direct memory-access channels. A computer system may have many additional components, such as serial and parallel ports for connection to, e.g., printers, and network adapters. Other components might further be used in conjunction with the foregoing; for example, a display adapter might be used to control a video display monitor, a memory controller can be used to access the system memory, etc.
Several different bus designs have been developed for interconnecting the various computer components. The original personal computer (PCs) introduced by International Business Machines Corp. (IBM--assignee of the present invention) used an "expansion" bus referred to as the XT bus, which allowed a user to add various optional devices, such as additional memory (RAM), sound cards, telephone modems, etc. This early design was improved upon by adding more data and address lines, new interrupt lines, and direct memory-access (DMA) control lines, to create the well-known AT bus, which is also referred to as the Industry Standard Architecture (ISA) bus. The AT design allowed the microprocessor to run at a faster speed than the expansion bus. A 32-bit extension to this bus was later created, which is referred to as the Extended Industry Standard Architecture (EISA). Another 32-bit expansion bus developed by IBM is the Microchannel Architecture (MCA) bus.
In addition to the foregoing designs, several other bus designs have been developed allowing the use of a system bus which interconnects the processor and the system memory device(s), along with a separate, local bus which interconnects the peripheral devices to the system bus (using a bus bridge). Two well-known standards are the Video Electronics Standards Association (VL) bus, and the Peripheral Component Interconnect (PCI) bus.
The PCI specification allows up to four PCI-compliant expansion cards to be installed in "slots" constructed along the PCI bus (up to 10 loads can be placed on the bus, but each device requires two loads as a connector for a slot constitutes a load, so four devices can be added at most (8 loads), since the bridge also counts as a load). A PCI local bus system uses a PCI controller, which must be installed in one of the PCI-compliant slots. An expansion bus controller for a system's ISA, EISA, or MCA slots can optionally be installed as well, providing increased synchronization for all of the system's bus-installed resources. A PCI controller exchanges data with the microprocessor either 32 bits or 64 bits at a time, depending on the implementation, and allows certain "intelligent" PCI-compliant adapters to perform tasks concurrently with the microprocessor, using a technique called bus mastering. The PCI specification also allows for multiplexing, a technique that permits more than one electrical signal to be present on the bus at one time.
A typical PCI system <b>10</b> is illustrated in <b>Figure 1</b>. System <b>10</b> includes a central processing unit (CPU) <b>12</b>, firmware or read-only memory (ROM) <b>14</b>, and a dynamic random access memory (DRAM) <b>16</b> which are all connected to a system bus <b>18</b>. CPU <b>12</b>, ROM <b>14</b> and DRAM <b>16</b> are also coupled to a PCI local bus <b>20</b> using a PCI host bridge <b>22</b>. PCI host bridge <b>22</b> provides a low latency path through which processor <b>12</b> may access PCI devices mapped anywhere within bus memory or I/O address spaces. PCI host bridge <b>22</b> also provides a high bandwidth path to allow the PCI devices to access DRAM <b>16</b>.
Attached to PCI local bus <b>20</b> are a local area network (LAN) adapter <b>24</b>, a small computer system interface (SCSI) adapter <b>26</b>, an expansion bus bridge <b>28</b>, an audio adapter <b>30</b>, and a graphics adapter <b>32</b>. Lan adapter <b>24</b> is used to connect computer system <b>10</b> to an external computer network <b>34</b>. SCSI adapter <b>26</b> is used to control high-speed SCSI disk drive <b>36</b>. Expansion bus bridge <b>28</b> is used to couple an ISA expansion bus <b>38</b> to PCI local bus <b>20</b>. As shown, several user input devices are connected to ISA bus <b>38</b>, including a keyboard <b>40</b>, a microphone <b>42</b>, and a graphical pointing device (mouse) <b>44</b>. Other devices may also be attached to ISA bus <b>38</b>, such as a CD-ROM drive <b>46</b>. Audio adapter <b>30</b> controls audio output to a speaker <b>48</b>, and graphics adapter <b>32</b> controls visual output to a display monitor <b>50</b>.
In earlier computer systems, all of the peripheral components had to be connected (inserted in the PCI or ISA slots) at the time that the computer was first turned on, in order to properly register (initialize) the devices with the computer's operating system. These devices are checked during the system's power-on self test (POST), which includes a set of routines stored in ROM <b>14</b> (also referred to as read-only storage, or ROS) that test the peripherals to see if they are properly connected and operating. If problems with any of the devices are detected, these routines alert the user by sounding a series of beeps or displaying a message, often accompanied by a diagnostic numeric value, to the standard output device or standard error device (usually the display screen).
In the earlier systems, if a device were simply not present during the POST, then it would not be recognized when it was later inserted in a slot (while the computer was still running). Instead, those systems were required to be "rebooted" in order to be able to communicate with and utilize the later-added devices. "Rebooting" refers to the restarting of a computer system by reloading its most basic program instructions, viz., the operating system. A system can be rebooted using the software itself (a warm boot) or by actuating the system's hardware, i.e., the reset or power buttons (a cold boot). After rebooting, the new device can be identified using various techniques. See, e.g., U.S. Patent No. 5,594,873.
More recent computer systems have the ability to recognize devices which are added to a bus while the computer is operating, that is, without having to reboot the system. One example is the "plug and play" specification, which allows a PC to configure itself automatically to work with peripherals. A user can "plug" in a peripheral and "play" it without manually configuring the system. Plug and play operation requires both ROM that supports the specification, and a special expansion card. While this approach allows the system to recognize a newly added device, it is still often necessary to reset the system in order to properly initialize the device with the operating system. A further improvement in this area is the "hot-plug" specification, wherein separate reset lines are provided for each peripheral device, such that a device can be initialized with the operating system without requiring the entire system to be rebooted (this ability of the device/system is referred to as "hot-pluggable").
One problem that persists in the initialization of peripheral devices is that, following a deactivation of the reset signal (RST=), there may be a long time before an adapter is prepared to respond to configuration cycles with even a RETRY response (which is used to indicate that the adapter is functioning, but it is currently too busy to respond to the initialization). As a result, following deactivation of RST#, a system may consider an adapter as not present or defective if it does not respond. If the device responds to configuration or regular (non-configuration) cycles with RETRY, the PCI bus and/or the system processor can stall, resulting in the requirement to reboot the system.
Previously, this problem has not been significant, but now there are a number of situations that may result in an adapter card and/or a group of adapters being reset while the processor and the rest of the I/O subsystem remains operational. One factor that contributes to this problem is the increased complexity of adapters, such as an adapter that must initialize a programmable logic array (PLA) following RST# deactivation before it can handle a configuration cycle or even respond with RETRY, or an adapter with an on-board processor that must load registers and complete other initialization steps before it can handle a configuration cycle or even respond with RETRY. Another factor is the provision of separate reset lines to the adapters, such as is provided in the hot-plug specification and similar PCI power management specifications, or in diagnostic analysis of an individual card while the rest of the system and PCI I/O subsystem remains operational.
In light of the foregoing, it would be desirable to devise a method of avoiding rebooting requirements associated with delayed initialization responses from peripheral devices. It would be further advantageous if, following configuration completion, the adapter were prepared to respond to normal (non-configuration) cycles without a RETRY response.
<u>Disclosure of the Invention</u>
The invention provides a method of registering a peripheral device with a computer, generally comprising the steps of isolating a slot from a bus of the computer, inserting the peripheral device into the slot, connecting the slot to the bus, deasserting a reset signal on the slot, responding with a status message from the peripheral device to the bus in response to an access attempt within a predetermined time period established by the computer, and initializing the peripheral device with an operating system of the computer in response to the responding step. If the status message is a retry response, the responding step occurs during an initial latency period which is less than the predetermined time period. The invention can also enable the peripheral device to respond to non-configuration cycles immediately following configuration completion. Internal logic of the peripheral device can be initialized after the responding step; in other words, part of the internal initialization can be moved to other operations, such as a diagnostic operation.
The invention also contemplates the use of device driver to peripheral device communications via the configuration space of the peripheral device, to prevent non-configuration access to the peripheral device until the peripheral device is ready to respond to such non-configuration access. This feature may be implemented by setting a bit (in the configuration space of the peripheral device.
<u>Brief Description of the Drawings</u>
The invention will now be described, by way of example only, with reference to the accompany drawings, in which: <ul id="ul0001" list-style="none"><li><b>Figure 1</b> is a block diagram of a conventional computer system having a Peripheral Component Interconnect (PCI) bus which allows peripheral devices to be added to the computer system; and</li><li><b>Figure 2</b> is a block diagram of one embodiment of a computer system constructed in accordance with the present invention, having a PCI bus with a plurality of slots for receiving peripheral devices, and a "hot-plug" controller used to initialize the devices while the remainder of the system is still running.</li></ul>
<u>Detailed Description of the Invention</u>
With reference now to the figures, and in particular with reference to <b>Figure 2</b>, there is depicted one embodiment of a computer system <b>100</b> constructed in accordance with the present invention. System <b>100</b> includes a CPU or processor <b>102</b> connected to a system memory device <b>104</b> using a system bus <b>106</b>. A Peripheral Component Interconnect (PCI) host bridge <b>108</b> is used to couple a PCI local bus <b>110</b> to system bus <b>106</b>. Various peripheral devices may be removably connected to the system using a plurality of slots, three of which <b>112, 114</b> and <b>116</b> are shown. Each slot is connected to PCI bus <b>110</b> using respective hot-plug switches <b>118</b>, <b>120</b> and <b>122</b>, which can be used to isolate all the signals on a slot from bus <b>110</b> while the rest of the platform is running. Switches <b>118, 120</b> and <b>122</b> also remove all power from a slot while the remainder of the platform is still fully powered. A hot-plug controller <b>124</b> is also connected to PCI host bridge <b>108</b> and each of the hot-plug switches <b>118, 120</b> and <b>122</b>.
In the depicted embodiment, computer system 100 is compliant with the hot-pluggable design set forth in the document "PCI Hot-Plug Specification," revision 1.0, published by Intel Corp. (October 6, 1997). As such, slots <b>112, 114</b> and <b>116</b> are designed for adapter cards that are 32-bits or 64-bits wide, operate at 33 MHz or 66 MHz, and use 3.3 volt or 5 volt signalling (the adapter cards have novel constructions as described further below). An adapter card could contain a single PCI device or multiple devices behind a PCI-to-PCI bridge. Each slot has a logical slot identifier that uniquely identifies a particular slot.
Hot-plug controller <b>124</b> controls the electrical aspects of powering up and down a PCI slot. More than one hot-plug controller can be used. A software driver (hot-plug system driver) is used to control and monitor hot-plug controller <b>124</b>. If there is more than one hot-plug controller, then more than one hot-plug system driver can be used. Higher-level software (a hot-plug "service") has overall control of the hot-plug operations. This service includes a user interface, and can issue requests to the operating system to quiesce adapter activity, and further issue requests (primitives) to the hot-plug system driver to turn the slots on or off, using switches <b>118, 120</b> and <b>122</b>.
An adapter placed in one of the slots <b>112, 114</b> and <b>116</b> can be initialized with the operating system of computer system <b>100</b> without requiring rebooting of the entire system. A slot is powered down and isolated from PCI bus <b>110</b> prior to inserting an adapter card, using hot-plug controller <b>124</b>. After inserting the card, the user notifies the hot-plug service, which turns on the slot containing the new adapter, by issuing a primitive to the hot-plug system driver. The hot-plug system driver then uses hot-plug controller <b>124</b> to power up the slot, connect the slot to PCI bus <b>110</b> using the appropriate hot-plug switch (slot-specific reset pins are independently controlled), and deassert the reset signal (RST#) on the slot. The hot-plug service thereafter notifies the operating system that the new adapter card is installed, so the operating system can initialize the adapter and prepare to use it (the user may also be notified that the card is ready with a message on the display monitor).
The present invention avoids the problem noted in the Background, of an adapter excessively delaying its response to the deactivation of the reset signal such that a reboot is required. A predetermined time (T<sub>x</sub>) is established for the period of time from deactivation of RST# to the first configuration access attempted by processor <b>102</b>, to allow an adapter's internal bus logic to be initialized (for example, one or two seconds). In order to reduce the likelihood that system <b>100</b> will consider the adapter as being not present or defective, the card is designed to handle configuration accesses, normally without RETRY responses, after this time period T<sub>x</sub> has passed. In other words, the card conforms to the specification of being able to respond with a non-retry status message (or acknowledgement) within this time period. An occasional RETRY response is acceptable, provided it adheres to initial latency requirements of, e.g., 16 clock cycles. The adapter hardware and/or software are implemented to meet T<sub>x</sub>. An adapter constructed in accordance with the present invention is further preferably capable of responding to normal (non-configuration) cycles following configuration completion, i.e., immediately following the configuration space setup and the enablement of the adapter's address spaces (again normally without a RETRY response, and with any such response adhering to the initial latency requirements).
For more complicated adapter cards which may require lengthy internal initialization, one solution for complying with the T<sub>x</sub> requirement is to move the functions that would cause long internal initialization times out of the initialization routine, and into to another operation, such as a built-in self-test (BIST) operation. Those functions can thereby be initiated during a later "diagnostic" operation via the BIST rather than as part of the initialization operation (that is, immediately following a reset).
For those very complex peripheral devices which still might not otherwise respond to normal cycles with something other than a long series of RETRY responses or wait states, an alternate solution is to implement an adapter driver which prevents normal (non-configuration) access to the adapter until the adapter is prepared to respond to the accesses. A bit in the adapter configuration space may be defined to allow configuration software or a device driver to check this bit to determine if the adapter (by setting that bit) has indicated that it is ready to respond to normal cycles.
Various modifications of the disclosed embodiments, as well as alternative embodiments of the invention, will become apparent to persons skilled in the art upon reference to the description of the invention. For example, the invention is applicable to similar reset responses, such as those generated by PCI power management services.
3 sheets
Sheet 1 Sheet 2 Sheet 3
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US5548782A | Cites | United States of America | Search report |
| US5594873A | Cites | United States of America | Search report |
| US5737524A | Cites | United States of America | Search report |
10 members in 6 offices
Priority claims4
| Document | Office | Kind | Date |
|---|---|---|---|
| 67042 | United States of America | – | |
| 6704298 | United States of America | A | |
| 67042 | – | – | – |
| US19980067042 | – | – | – |
Members10
| Document | Office | Kind | |
|---|---|---|---|
| CN1233799A | China | A | |
| EP0953902A2This record | European Patent Office (EPO) | A2 | |
| KR19990082733A | Republic of Korea | A | |
| JPH11353267A | Japan | A | |
| US6035355A | United States of America | A | |
| TW426833B | Taiwan Province of China | B | |
| KR100339442B1 | Republic of Korea | B1 | |
| EP0953902A3 | European Patent Office (EPO) | A3 | |
| CN1130645C | China | C | |
| JP3974288B2 | Japan | B2 |
10 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Application deemed to be withdrawnWithdrawn18D | 18D | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWNSTAA | STAA | |
| Designation fees paidAKX | AKX | |
| Request for examination filed17P | 17P | |
| Designated contracting statesAK | AK | |
| Request for extension of the european patentAX | AX | |
| Search report despatchedORIGINAL CODE: 0009013PUAL | PUAL | |
| Designated contracting statesAK | AK | |
| Request for extension of the european patentAL;LT;LV;MK;RO;SIAX | AX | |
| Public reference made under article 153(3) epc to a published international application that has entered the european phaseORIGINAL CODE: 0009012PUAI | PUAI |
Numbers
- Publication
- 0953902
- Publication, DOCDB
- 0953902
- Publication, EPODOC
- EP0953902
- Application
- 99301856
- Application, DOCDB
- 99301856
- Application, EPODOC
- EP19990301856
Titles3
- German
- Anforderungen an PCI-System und Umsetzer nach Rückstellung
- English
- PCI System and adapter requirements following reset
- French
- Exigences imposées au système et adapteur PCI après remise à zero
Classification
- CPC, 1
- G06F9/4411
- IPC, 3
- G06F13 10
- G06F9 445
- G06F13 14
Designated states3
- Contracting states, 2
- United Kingdom
- Sweden
- Extension states, 1
- Slovenia