Method and apparatus for eliminating contention with dual bus masters
Granted 20 Aug 2002 · 1 office action
Assignee: Intel Corporation
Law firm: Law firm · Log in to unlock
Attorney: Attorney · Log in to unlock
Inventors: Hieu T. Tran, Gregory M. Daughtry, Andrew J. McRonald, Srithar Ramesh · Examiner: Xuan M. Thai · AU 2181 · TC 2100
Life of the application
9 dated eventsAbstract
A method and apparatus for eliminating contention with dual masters. One method disclosed disables a default bus master, and tests for a second bus master. If the second bus master fails to respond, the default bus master is enabled.
Description
6 parts›BACKGROUND
1. Field of the Invention
The present invention pertains to the field of computer systems. More particularly, the present invention pertains to avoiding contention of multiple devices on a bus.
2. Description of Related Art
Many bus masters in current computer systems are configured automatically by the computer system itself. For example, particular interrupt values and address ranges are typically assigned to peripheral devices, and these peripheral devices may not respond until accessed by the system. Such system self-configuration often avoids bus contention.
Nonetheless, some bus masters may expect to have control of a certain bus or a certain resource upon normal system initialization. As a result, bus contention may be caused if an additional bus master that also expects to have control of the same resource is added in a system to provide increased throughput or to otherwise upgrade the system. The capability to automatically disable one of two contending bus masters might advantageously simplify user upgrades and system manufacturer reconfigurations.
One prior art example of a bus master that may expect control of a system bus is a microprocessor. Some prior art systems allow a second microprocessor to be plugged in to an upgrade slot. In order to avoid contention between the two processors, this system continuously asserts an “upgrade present” signal to prevent the original processor from driving the bus. This approach requires a dedicated pin and a pre-defined special mode entered when the upgrade present signal is asserted.
Another example of a component that may expect to be a bus master without any initial configuration is an accelerated graphics port (A.G.P.) bus master. Typically, the A.G.P. bus is a two load bus, hosting an A.G.P. bus master and a bus controller. The bus controller may be a “north bridge” also coupled to the system processor and memory. Further details regarding the A.G.P. bus may be found in the Accelerated Graphics Port Specification, Version 2.0, May 4, 1998, which is available from the Accelerated Graphics Port Implementers Forum on the Internet at http://www.agpforum.org as of the time of filing of this application.
One prior art system includes a three load A.G.P. bus. In this system, an on-board A.G.P. bus master is provided on a computer system motherboard in addition to the north bridge. A connector that is coupled to the A.G.P. bus is also provided for adding an upgraded A.G.P. bus master on an add-in card. In order to perform an upgrade, however, a jumper block on the motherboard is used to manually disable the on-board A.G.P. master and to enable the add-in card master by routing the FRAME# signal only to the selected A.G.P. master.
Thus, the prior art may fail to provide an automatic software configurable design for a three load A.G.P. system. Such a system may be advantageous in simplifying user and reseller system reconfigurations. Moreover, the prior art may fail to provide a generalized system that avoids bus contention by disabling a default bus master to test for an alternate bus master and/or by sequencing through system reset more. than once
›SUMMARY
A method and apparatus for eliminating contention with dual masters is disclosed. One method disclosed disables a default bus master, and tests for a second bus master. If the second bus master fails to respond, the default bus master is enabled.
›BRIEF DESCRIPTION OF THE FIGURES
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings.
FIG. 1 illustrates one embodiment of a flow diagram for avoiding bus contention in a system capable of supporting multiple bus masters on a bus.
FIG. 2 illustrates one embodiment of a system that reduces contention between multiple bus masters.
FIGS. 3A-3B illustrate a detailed flow diagram for one embodiment of the system of FIG. 2 .
FIG. 4 illustrates one embodiment of a clock steering circuit that may be used with the system of FIG. 2 .
›DETAILED DESCRIPTION · 1 of 3
The following description provides a method and apparatus for eliminating contention with dual bus masters. In the following description, numerous specific details such as bus architectures, bus master types, and logic partitioning/integration choices are set forth in order to provide a more thorough understanding of the present invention. It will be appreciated, however, by one skilled in the art that the invention may be practiced without such specific details. In other instances, control structures and gate level circuits have not been shown in detail in order not to obscure the invention. Those of ordinary skill in the art, with the included descriptions, will be able to implement the necessary logic circuits without undue experimentation.
Some disclosed embodiments may provide a conveniently upgraded or reconfigured system. The system may be an automatically configured three load A.G.P. system and may avoid contention between bus masters during configuration. Such a system may control configuration via basic input/output (BIOS) routines and may advantageously use only two system level general purpose outputs (GPOs).
FIG. 1 illustrates one embodiment of a flow diagram for avoiding bus contention in a system capable of supporting multiple bus masters which each expect to have ownership of the bus. If steps such as those shown in FIG. 1 are taken, such multiple bus masters may avoid simultaneously driving the bus and may avoid both responding to bus cycles only intended for one of the bus masters. According to the process of FIG. 1, the default bus master is disabled when a second bus master (e.g., an upgrade) is present. In block 100 , the system is reset or otherwise initialized. In block 105 , a default bus master is disabled to avoid contention with the second bus master if it is present.
In block 110 , the system tests a reset indicator to determine whether the reset is an initial reset or a subsequent reset. If the reset is an initial reset, the system attempts to enable the second bus master as indicated in block 115 . Since the default bus master was disabled in block 105 , there should be no contention between the default bus master and the second bus master if and when the second bus master begins bus activity. The second bus master may be enabled at this point by steering a clock signal to the second bus master, by sending a particular signal or set of signals to the second bus master, and/or by other techniques which allow the second bus master to operate.
Thereafter, the reset indicator (e.g.,: a reset bit) is set to indicate that the next reset is not an initial reset as shown in block 120 . This bit or indicator needs to be stored in a manner or location such that the value is preserved during a system reset. In some embodiments, a non-volatile memory cell may be used. Accordingly, after the system is reset (block 100 ) and the indicator is again tested in block 110 , the indicator indicates that the reset occurring was not an initial reset.
In block 130 , a test cycle is executed. This test cycle may be a configuration cycle or another cycle that causes the second bus master (if present) to respond. If the test succeeds, and the second bus master responds, the second bus master remains activated, the default bus master remains disabled, and system initialization continues as indicated in block 135 .
If the test cycle fails, the second master is not present and/or functioning, so the default master is enabled as indicated in block 140 . As in the case of enabling the second bus master, the default bus master may be enabled by steering a clock signal to the default bus master and/or other techniques. The enabling and disabling of these bus masters, however, is performed without manual intervention (e.g., changing a jumper) as was done in the prior art.
Another test cycle is performed as indicated in block 145 . If this test cycle succeeds, the default bus master remains enabled, and system initialization continues in block 135 . If the default bus master does not respond, then neither the default bus master nor the second bus master are present and/or functioning. Therefore, the function implemented by these bus masters is not available as indicated in block 150 , and may be disabled.
FIG. 2 illustrates one system which may employ the techniques generally described with respect to FIG. 1. A more detailed flow diagram of operation of one embodiment of the system of FIG. 2 is shown in FIGS. 3A and 3B. The system includes a bus controller 205 which is coupled by a bus 202 to a processor 200 , by a bus 203 to a memory 230 , by a bus 204 to a connector 222 and an on-board master 210 , and to a bus 209 .
A second bus controller 250 is coupled to the bus controller 205 , to the bus 209 , and to a bus 256 . The bus 256 also may have coupled thereto a non-volatile memory to store Basic Input/Output System (BIOS) code. In the illustrated embodiment, a flash memory device 260 stores BIOS which may implement a number of the operations from FIGS. 1, 3 A, and 3 B as indicated by the BIOS routines 265 stored in the flash memory device 260 . The BIOS routines, or portions thereof, may be copied to main memory 230 as indicated by the routines 235 in the memory 230 .
The BIOS may be updated or upgraded via an input device 290 . For example, the input device 290 may load computer program instructions from any known or available computer instruction storage or transmission medium (a computer readable medium). In the embodiment illustrated in FIG. 2, the input device 290 may accept program instructions from a computer storage device 292 (e.g., an optical or magnetic disk or other storage device). In this case, a tangible carrier is the computer readable medium.
The BIOS may also be updated via a network or communications interface 294 . In this case, a carrier wave 296 carrying the computer instruction is the computer readable medium. The carrier wave 296 may be modulated or otherwise manipulated to contain instructions that can be decoded by the input device 290 using known or otherwise available communication techniques. For example, an upgraded or later version of the BIOS may be transmitted over the Internet.
›DETAILED DESCRIPTION · 2 of 3
The bus 256 may also have coupled thereto a non-volatile memory 270 which may be backed-up by a battery 278 . The non-volatile memory 270 includes a location 275 for storing an A.G.P. reset descriptor bit as will be further discussed below. In other embodiments, the non-volatile memory may be any memory that can maintain a value for the A.G.P. reset descriptor bit through a system reset.
The bus controller 250 may have general purpose outputs (GPOs) that can be used to implement system functions. The general purpose outputs may maintain their states through a reset or may themselves also be reset. In the illustrated embodiment, a GPO25 signal line 252 driven by the bus controller 250 is coupled to a clock steering circuit, and a GPO8 signal line driven by the bus controller 250 is coupled to a reset input 212 of the on-board master. At least GPO25 maintains its output through reset. In other embodiments, these signals may be driven by general purpose or dedicated outputs of other system components.
Turning to FIG. 3A, the operations of one embodiment of this system are described. In block 300 , a system reset occurs. Typically, when such a system reset occurs, a the clock signal on clock signal line 206 is steered to the connector 222 . In response to this reset, the BIOS code disables the on-board bus master 210 as indicated in block 302 . This may be accomplished by asserting (writing a logical zero) on the GPO8 signal line 254 to assert the reset signal of the bus master 210 .
Next, as indicated in block 304 , the BIOS code may read the A.G.P. down reset descriptor bit stored in non-volatile memory. This may be accomplished by reading the location 275 in the non-volatile memory 270 of FIG. 2 . In some embodiments, this non-volatile memory may be the system battery-backed-up random access memory. If the reset descriptor bit is not set as tested in block 306 , the reset is an initial reset, and the initialization sequence proceeds to block 308 .
As indicated by block 308 , a clock signal may be steered to the on-board bus master. In the embodiment of FIG. 2, the bus controller 250 may write a logical one on the GPO25 signal line 252 , causing a clock steering circuit 256 to direct the clock signal on a clock signal line 206 to an add-in card 220 (if present) in the connector 222 . The clock steering circuit 256 may direct the clock signal from the bus controller 205 to only one of the connector 222 and the on-board bus master 210 at a time in order to limit the load driven by the clock circuitry in the bus controller 205 . This may advantageously allow the integration of a more compact set of clock and driver circuits into the bus controller 205 than might be used if the clock was driven to both devices. One example of the clock steering circuit 256 is shown in FIG. 4 . In one embodiment, the GPO25 signal line is connected to a node 414 that is connected to an output enable (OE) of a first switch 430 . The node 414 is also connected to the output enable (OE) of a second switch 420 by an inverter 410 . Thus, one of the two switches is enabled, and the CLK signal from node 402 passes to one of node 440 (to the on-board master) or node 450 (to the connector). In one embodiment, the switches are SN74CBT3306 Dual Field Effect Transistor (FET) Bus Switches available from Texas Instruments of Dallas Texas. Additionally, a capacitor 404 may be coupled between node 402 and ground, and a resistor 406 may be coupled between node 402 and node 408 (the input to both switches 420 and 430 ). Additional resistance and capacitance may be added (e.g., at nodes 440 and 450 ) according to the specifics of a system.
After the clock signal is steered to the connector 222 , the BIOS code may wait for the clock to stabilize as indicated in block 310 . For example, the system may wait one hundred and twenty microseconds in one embodiment. Next, as indicated in block 312 , the on-board master may be brought out of reset. In one embodiment, this may be accomplished by writing a logical one to the GPO8 signal line 254 , thereby deasserting the reset input 212 of the on-board bus master 210 .
Next, the BIOS code may wait for the on-board bus master 210 to exit reset as 20 indicated in block 314 . In one embodiment, the BIOS code may wait one hundred and twenty microseconds. The clock is steered to the on-board master and the on-board master is brought out of reset (blocks 308 - 314 ) to assure that the on-board bus master can be placed in a known state. As indicated in block 316 , the on-board bus master is then put back into the reset state by writing a zero to the GPO8 signal line. To ensure that the on-board bus master 210 is put into the reset state, another one hundred and twenty microseconds. are allowed to pass (as indicated in block 318 ).
Next, the clock is steered to the connector as indicated in block 320 . This may be accomplished in one embodiment by writing a logical zero to the GPO25 signal line. The BIOS then again waits (in one embodiment, one hundred and twenty microseconds) for the clock to stabilize as indicated in block 322 . The BIOS sets the A.G.P. down reset descriptor bit in non-volatile memory as indicated in block 324 . This may be accomplished by writing to the location 275 in the non-volatile memory 270 . The system is then reset, as indicated in block 326 . The reset may be accomplished by writing to a register in the bus controller 250 (e.g., register CF9h in one embodiment).
Upon returning to block 300 , the system proceeds as previously described until reaching block 306 . Since the A.G.P. down reset descriptor bit was set in block 324 , the BIOS proceeds to block 330 in FIG. 3 B. In block 330 , the A.G.P. down reset descriptor bit is cleared. Next, initialization continues until the normal video configuration portion of the BIOS is reached as indicated in block 332 . Since the GPO25 is an output that maintains its state through reset, the clock remains steered to the connector 222 . Since the GPO8 is an output. that maintains its state through reset, the on-board bus master 210 remains in reset.
›DETAILED DESCRIPTION · 3 of 3
Thus, when a configuration cycle is executed, as indicated in block 334 , it is directed to the add-in card 220 . If an A.G.P. master is detected (as tested in block 336 ), the add-in card A.G.P. master remains activated, and initialization continues as indicated in block 350 . Thus, the A.G.P. master on the add-in card 220 is preferred if it is present; however, this order of preference could be reversed if so desired.
If an add-in card with an A.G.P. master is not detected, the system resorts to the default on-board bus master 210 if it is present. Thus, if no A.G.P. master is detected in block 336 , then the on-board A.G.P. facilities are tested starting in block 338 . In block 338 , the clock is steered back to the on-board bus master. This may be accomplished by writing a logical one to the GPO25 signal line to cause the clock steering circuit 256 to redirect the clock back to the on-board bus master 210 . The BIOS may then wait for the clock to stabilize as indicated in block 340 . In one embodiment, the wait may be one hundred and twenty microseconds.
Next, the on-board bus master is brought out of reset as indicated in block 342 . This may be accomplished by writing a logical one to the GPO8 signal line. Thereafter, a delay (one hundred and twenty microseconds in one embodiment) is allowed for the on-board master to exit reset as indicated in block 344 . A configuration cycle is executed to detect whether an on-board A.G.P. device is available and functioning as indicated in block 346 . If the A.G.P. master is detected (as tested in block 348 ), the on-board A.G.P. device remains enabled, and initialization continues as indicated in block 350 . If the A.G.P. device is not detected, the A.G.P. functionality is not present and operational in the system, as indicated in block 360 .
Thus, a method and apparatus for eliminating contention with dual bus masters is disclosed. While certain exemplary embodiments have been described and shown in the accompanying drawings, it is to be understood that such embodiments are merely illustrative of and not restrictive on the broad invention, and that this invention not be limited to the specific constructions and arrangements shown and described, since various other modifications may occur to those ordinarily skilled in the art upon studying this disclosure.
Claims as granted
23 claimsLog in to read the claims of this application.
Log in to unlockClassifications
7 codes- G06F13/42
- G06F15/17
Claim changes
SoonSee which claims were amended, added or cancelled during examination, with every added and removed word marked.
The published claims of this application are not paired with the granted ones in what we hold.
File wrapper
See the full prosecution history — every USPTO and applicant action on this file, in order.
Log in to unlockDocuments
Log in to open the documents of this file: the application as filed, every office action and response, the notice of allowance.
Log in to unlockChain of title
See the full assignment history — every owner this patent has passed through, with recordation dates and reel/frame numbers.
Log in to unlock