Bus system for shadowing registers

Information

  • Patent Grant
  • 5793995
  • Patent Number
    5,793,995
  • Date Filed
    Friday, July 19, 1996
    28 years ago
  • Date Issued
    Tuesday, August 11, 1998
    26 years ago
  • CPC
  • US Classifications
    • 395
    Field of Search
    • US
    • 395 306
    • 395 308
    • 395 495
    • 395 824
    • 395 405
    • 395 293
  • International Classifications
    • G06F1300
Abstract
The present invention relates to a system and method for shadowing data of a first register and a second register of a computer system that share a common address. When a bus agent runs a write operation to the register address, retry logic of a first bridge circuit retries the write operation and masks access by the bus agent to the bus. Retry bus master logic reruns the write operation, in response to which the second bridge circuit subtractively decodes the rerun write operation and transfers the data to the second register. The bus agent is then allowed to retry the initial write operation, in response to which the first bridge circuit positively decodes the retried write operation and transfers the data to the first register. Thus, coherency is preserved between the first and second registers.
Description

BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to updating information shared between one or more bus devices in a computer system, and more particularly, to a system for shadowing registers of these devices.
2. Description of the Related Art
Personal computers are constantly evolving to provide the user with the highest performance available at the lowest cost. Performance improvements in the microprocessor and memory systems have resulted in computers so powerful that they are now capable of performing tasks that before could only be performed by large mainframe computers. Technological change is especially exemplified in the area of portable computers where power consumption efficiency is balanced against features, cost, size, weight and performance. Achieving this balance is especially challenging since many computer users demand the portable computer to provide nothing less than what a desktop unit can provide. The term "portable computers" is used broadly here to denote the class of computers powered by battery or solar power. Those familiar with portable computers will recognize labels such as portable, luggable, laptop, notebook and handheld, which are used to designate certain marketing segments of the larger portable computer market.
Many options are available to the computer system designer. While designing around the highest performance processor available will go far towards providing a high performance product, in today's competitive market that is not enough. The processor must be supported by high performance components, including a high performance expansion bus. Several standardized expansion buses are available to the system designer, including the ISA (Industry Standard Architecture) bus and the EISA (Extended Industry Standard Architecture) bus.
For the system bus, a high performance bus such as the Peripheral Component Interconnect (PCI) bus or the EISA bus is used. The three above-described buses are familiar to those skilled in the art.
Design choices also involve implementing certain special features of the computer that distinguish one manufacturer's computer from a competitor's. In the portable computer market this is especially challenging since added features can cause increased size and weight. For example, since software can require large amounts of storage, a high capacity hard disk drive is often desirable. However, such high capacity disk drives are usually larger and heavier than desirable for a portable computer. It is also desirable to have the ability to add functionality to the portable computer using expansion hardware. However, providing integral expansion bays compromises the small size.
One known method of providing additional features without sacrificing size and weight is through the use of an expansion base unit. An expansion base unit is a non-portable unit that typically operates from AC power and resides on a user's desktop. When the user is working at the desk, the portable computer plugs into the expansion base unit, which then provides the added functionality. The expansion base unit may include a network interface unit for connecting to a local area network, one or more high capacity disk drives, a floppy drive and other peripherals.
Typically, in a computer system having a laptop computer unit and an expansion base unit, information regarding floppy disk drive selects, motor selects and status bits are stored in floppy disk drive control registers. Such a computer system, however, may have two sets of these registers, one set located in a floppy drive controller of the laptop unit and one set located in a floppy drive controller of the expansion base unit. To ensure system compatibility the floppy disk drive registers of the laptop unit would typically have the same address as the corresponding registers of the expansion base unit.
Thus, these bus devices must have various registers that share common data. A problem occurs when the data in one of these registers is updated because registers sharing the same address should contain the same data.
Reflecting the contents of one register in another register is known as "shadowing." Data in a "shadowed" register is shadowed by one or more "shadowing" registers. One way to shadow a register is to perform bus write operations to every shadowing register when the shadowed register is updated with new data. However, as noted above, both the shadowed and the shadowing floppy disk drive registers should share a common address. The data is transferred to each set of floppy drive registers through an associated bridge circuit. Therefore, a problem arises in writing to both sets of floppy drive registers as the bridge circuits may not concurrently be able to transfer the data to the registers.
SUMMARY OF THE INVENTION
Briefly, the present invention relates to a system for shadowing write operations to a first register of a first bus device in a second register of a second bus device. Both the first and second registers share a common address and are accessible through a system bus. A first bridge circuit coupled to the system bus controls write operations to the first register, and a second bridge circuit coupled to the system bus controls write operations to the second register.
The first bridge circuit includes positive decode logic to detect a first write operation to the first register from a bus agent of the system bus. Upon positively decoding such a write, the retry logic interacts with first slave logic to furnish a known retry sequence on the system bus.
This aborts the first write operation which must then be retried. An arbiter of the first bridge circuit masks a system bus request from the bus agent which attempts to retry the first write operation.
A retry bus master of the first bridge circuit then performs a second write operation over the system bus to the common address using the same data and address of the first write operation. This allows second slave logic of the second bridge circuit to subtractively decode and accept the write operation. When this occurs, the second bridge circuit transfers the data to the second register.
After the second write operation, the retry logic interacts with the arbiter to unmask the system bus request from the bus agent. This allows the arbiter to grant the system bus to the bus agent. The bus agent can then retry the first write operation. This allows the first slave logic to positively decode and accept the retried first write operation. Upon this occurrence, the first bridge circuit transfers the data to the first register. Thus, updates in the register data are reflected, or shadowed, to all registers sharing the common address.





BRIEF DESCRIPTION OF THE DRAWINGS
A better understanding of the present invention can be obtained when the following detailed description of the preferred embodiment is considered in conjunction with the following drawings, in which:
FIG. 1 is a block diagram illustrating a computer system incorporating the present invention;
FIG. 2 is a block diagram illustrating the design and operation of the bridge circuit according to the invention;
FIG. 3 is a flowchart diagram illustrating a shadowing cycle according to the invention;
FIG. 4 is a schematic diagram illustrating the design and operation of the positive decode logic of the bridge circuit according to the invention;
FIG. 5 is a block diagram illustrating the design and operation of the retry logic of the bridge circuit according to the invention;
FIG. 6 is a state diagram illustrating operation of the double word state machine of FIG. 5;
FIG. 7 is a state diagram illustrating operation of the retry master state machine of FIG. 5;
FIG. 8 is a schematic diagram illustrating logic to aid in the tracking of the second write operation;
FIG. 9 is a schematic diagram illustrating the design and operation of the positive decode logic interface of FIG. 5;
FIG. 10 is a schematic diagram illustrating the design and operation of the PCI slave interface logic of FIG. 5;
FIG. 11 is a schematic diagram illustrating the design and operation of the retry engine interface logic of FIG. 5;
FIG. 12 is a schematic diagram illustrating the generation of the retry signal used to mask bus requests from the arbiter of FIG. 2; and
FIG. 13 is a state diagram illustrating operation of the PCI slave logic of FIG. 2.





DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
The following disclosures are hereby incorporated by reference:
U.S. application Ser. No. 08/684,412, entitled "CIRCUIT FOR HANDLING DISTRIBUTED ARBITRATION IN A COMPUTER SYSTEM HAVING MULTIPLE ARBITERS," by Dwight D. Riley, James R. Edwards and David J. Maguire, filed concurrently herewith;
U.S. application Ser. No. 08/684,485, entitled "LONG LATENCY INTERRUPT HANDLING AND INPUT/OUTPUT WHILE POSTING," by David J. Maguire and James R. Edwards, filed concurrently herewith;
U.S. application Ser. No. 08/684,710, entitled "SERIAL BUS SYSTEM FOR SHADOWING REGISTERS ," by David J. Maguire and Hung Q. Le, filed concurrently herewith;
U.S. application Ser. No. 08/684,584, entitled "APPARATUS AND METHOD FOR POSITIVELY AND SUBTRACTIVELY DECODING ADDRESSES ON A BUS," by Gregory N. Santos, James R Edwards, Dwight D. Riley and David J. Maguire, filed concurrently herewith;
U.S. application Ser. No. 08/671,316, entitled "TWO IS A BUS CONCEPT," by Gregory N. Santos, James R. Edwards, Dwight D. Riley and David J. Maguire, filed concurrently herewith;
U.S. application Ser. No. 08/684,490, entitled "RECONFIGURABLE DUAL MASTER IDE INTERFACE," by Gregory N. Santos, David J. Maguire, William C. Hallowell and James R. Edwards, filed concurrently herewith; and
U.S. application Ser. No. 08/684,255, entitled "COMPUTER SYSTEM INCORPORATING HOT DOCKING AND UNDOCKING CAPABILITIES WITHOUT REQUIRING A STANDBY OR SUSPEND MODE," by Richard S. Lin, David J. Maguire, James R. Edwards and David J. Delisle, filed concurrently herewith; all of which are assigned to the assignee of this invention.
1. Overview of the Computer System
Shown in FIG. 1 is a computer system having a laptop computer unit L and an expansion base unit E. The laptop computer unit L includes a central processing unit (CPU) 100 coupled to a local processor bus 104. Also coupled to the local processor bus 104 is a level two (L2) cache 102.
Interfacing the local processor bus 104 to a Peripheral Component Interconnect (PCI) bus 114 is a local processor bus-to-PCI bus interface bridge circuit 106. The PCI bus 114 includes a segment 114a in the laptop unit L and a segment 114b in the expansion base unit E. The bridge circuit 106 also functions as a system memory controller and has control and data lines coupled to a dynamic random access memory (DRAM) 108. The data lines of the memory 108 are coupled to data buffers 110. The data buffers are also coupled to the local processor bus 104 and the PCI bus 114.
The laptop computer unit L further includes a video board 112 and a Personal Computer Memory Card International Association (PCMCIA) controller 118 which are coupled to the PCI bus 114. The PCMCIA controller 118 is coupled to two PCMCIA slots 119. The laptop computer unit L includes several metal-oxide-semiconductor field-effect-transistor (MOSFET) switches represented by a Quick Switch circuit 116 for coupling and decoupling the PCI bus 114 to external PCI bus connectors (not shown).
When the laptop computer unit L senses the expansion base unit E is being hot docked into the laptop computer unit L, the laptop computer unit L performs docking operations such as idling the PCI bus 114. The laptop computer unit L then enables the Quick Switch circuit 116, which couples the PCI bus 114a to the external PCI bus connectors. This couples the PCI bus segment 114a to the PCI bus segment 114b, creating the PCI bus 114 shared by both the laptop computer unit L and the expansion base unit E.
When the laptop computer unit L senses the expansion base unit E is being undocked, the laptop computer unit L performs undocking operations such as idling the PCI bus 114. Upon this occurrence, the laptop unit L disables the Quick Switch 116. This isolates the PCI bus 114a from the external bus connectors.
The expansion base unit E further includes a PCMCIA controller 140 and two PCI card slots 142, both of which are coupled to the PCI bus 114. The PCMCIA controller 140 is coupled to two PCMCIA slots 141. Both the laptop computer unit L and the expansion base unit E include bridge circuits, bridge circuit 122a and bridge circuit 122a, respectively, of common design 122, which operate in two different modes.
References to elements and signals of the bridge circuit 122a are indicated by the suffix "a," and references to elements and signals of the bridge circuit 122b are indicated by the suffix "b." Furthermore, in this specification, the suffix ".sub.-- " denotes negative logic. The assertion of a signal with the ".sub.-- " suffix means the signal is pulled "low." The deassertion of the signal with the ".sub.-- " suffix equates to the signal being "high."
When the expansion base unit E is docked to the laptop computer unit L, the bridge circuit 122a operates in a laptop mode and the bridge circuit 122b operates in an expansion base mode, the relevant differences of which for this invention are described below.
The laptop computer unit L includes a sub-Industry Standard Architecture sub-(ISA) bus 124, a subset of the ISA bus, which is interfaced to the PCI bus 114 by the bridge circuit 122a. Similarly, the bridge circuit 122b interfaces the PCI bus 114 to a complete ISA bus 160. Both the sub-ISA bus 124 and the ISA bus 160 are expansion buses.
The sub-ISA bus 124 does not have interrupt request lines as a standard ISA bus. Instead the devices coupled to the sub-ISA bus 124 each furnish an interrupt request line to the bridge circuit 122a which can map the interrupt request signals associated with these lines to a standard set of ISA/EISA IRQ signals.
According to the PCI standard, one device on a PCI bus must subtractively decode operations on the PCI bus when no other device positively decodes that operation. These subtractively decoded operations are typically passed to the expansion bus. In FIG. 1, the bridge circuit 122a, operating in the laptop mode, subtractively decodes PCI bus cycles from the PCI bus 114 when the laptop L is not docked to the expansion base unit E. When the laptop computer unit L is docked to the expansion base unit E, the bridge circuit 122a instead acts as a positive decode device. The bridge circuit 122b, operating in the expansion base mode, always subtractively decodes the PCI bus signals.
To arbitrate between the bridge circuits 122a and 122b for the shared PCI system bus 114, a top-level arbiter in the bridge circuit 122a arbitrates between a first lower arbiter 208a (FIG. 2) in the bridge circuit 122a and a second lower arbiter 208b (FIG. 2) in the bridge circuit 122b. The arbiters 208a and 208b arbitrate control of the PCI bus 114 on a time share basis utilizing a least recently used (LRU) prioritization scheme. The bridge circuit 122a and the bridge circuit 122b combine system interrupt information through a serial interrupt bus 138 coupled to the two bridge circuits 122a and 122b, among others.
Both of these arbiters 208 are idle when the laptop computer unit L is being hot docked or undocked to or from the expansion base unit E. The term "hot docked" means the laptop computer unit L is plugged, or inserted, into the expansion base unit E while both units remain turned on. This system of arbitration is further described in the previously incorporated U.S.
Patent Application entitled "CIRCUIT FOR HANDLING DISTRIBUTED ARBITRATION IN A COMPUTER SYSTEM HAVING MULTIPLE ARBITERS".
The laptop computer unit L further includes a modem 128 coupled to the sub-ISA bus 124, an audio system 126 coupled to the sub-ISA bus 124, and an Intelligent Device Electronics (IDE) interface 137 coupled both to the sub-ISA bus 124 and the bridge circuit 122a. The bridge circuit 122a is also coupled to the bridge circuit 106 for monitoring and controlling the idle status of the bridge circuit 106.
Coupled to the sub-ISA bus 124 is a Mobile Super Input/Output (MSIO) device 134 which has an attached read only memory (ROM) 136, a pointing device 132, floppy drives 133, and a keyboard 130. The MSIO 134 also has a serial and a parallel port. Both the MSIO 134 and the bridge circuit 122a communicate information relating to power management and hot docking over a MSBDATA serial bus 135. This bus is further described in the previously incorporated U.S. Patent Application entitled "SERIAL BUS SYSTEM FOR SHADOWING REGISTERS". The expansion base unit E further includes a MSIO unit 148 coupled to the ISA bus 160 of similar design to the MSIO 134. Two ISA slots 156 are coupled to the ISA bus 160, and an IDE interface 146 is coupled to both the bridge circuit 122b and the ISA bus 160. Also coupled to the MSIO 148 are floppy drives 153, a ROM 150, a pointing device 152 and a keyboard 154.
Similar to the MSIO 134, the MSIO 148 has serial and parallel ports. The MSIO 148 also has an MSBDATA path to the bridge circuit 122b.
The MSIO 134 and the MSIO 148 each include a set of floppy drive registers which share common addresses and data. These floppy drive registers include such information as floppy drive selects, motor selects and status bits. In order to ensure coherency in the computer system, the data written to one floppy drive register in one set of floppy drive registers must be reflected in its associated floppy drive register in the other set of floppy drive registers that shares the common address.
The present invention relates to using the PCI bus 114 to shadow the floppy drive registers by employing a shadowing cycle, further described below. A shadowing cycle begins when a PCI bus agent, such as the combination of the CPU 100 and the bridge circuit 106, performs a first write operation to one of the floppy drive registers. The bridge circuit 122a subtractively decodes the first write operation. Upon this occurrence, the bridge circuit 122a indicates to the bus agent that the bus agent must retry the first write operation. The bridge circuit 122a does so by furnishing a standard, known PCI retry sequence on the PCI bus 114.
Additionally, the bridge circuit 122a temporarily inhibits the bus agent from controlling the PCI bus 114 by masking the bus access request of the bus agent from the arbiter 208a. This is further explained below beginning with the discussion of FIG. 2. Thus, the initiating bus agent cannot immediately retry the first write operation.
The bridge circuit 122a then performs a second write to the PCI bus 114 with the same data and at the same address as the first write operation. The bridge circuit 122a, however, does not positively decode the second write operation, thus allowing the bridge circuit 122b to subtractively decode the second write operation. The bridge circuit 122b then performs a write on the ISA bus 160 to transfer the data to the addressed floppy drive register inside the MSIO 148. At this point, the addressed floppy drive registers in the MSIO 148 contain shadowed data, or identical data, to that of the MSIO 134.
After a successful second write operation, the bridge circuit 122a allows the bus agent to retry the first write operation by unmasking the request of the bus agent from the arbiter 208a. The bridge circuit 122a then positively decodes and accepts the retried first write operation and perform a write on the sub-ISA bus 124 to transfer the data to the addressed floppy drive register inside the MSIO 134.
Thus, floppy drive registers sharing the same address are both updated to ensure coherency. For read operations from a floppy drive register, the bridge circuit 122a positively decodes and accepts the read operation. The bridge circuit 122a then transfers the data from the corresponding floppy drive register in the MSIO 134 to the PCI bus 114.
To summarize, the bridge circuits 122a and 122b both transfer data from the PCI bus 114 to their respective floppy drive registers. When the bridge circuit 122a positively decodes a floppy drive register access, the bridge circuit 122a forces the initiating agent to retry that write. The bridge circuit 122a, however, inhibits that retry until the bridge circuit 122a successfully writes the same data to the sub-ISA expansion bus 124.
The second write operation has the same data and address of the first write operation. Once the bridge circuit 122a drives the second write operation, the bridge circuit 122b subtractively decodes and accepts the second write operation. The bridge circuit 122a then allows the first write operation to be retried. The bridge circuit 122a then positively decodes and accepts the retried first write operation.
2. Overview of the Shadowing Cycle and System
Shown in FIG. 2 is a block diagram illustrating the design and operation of portions of the bridge circuit 122 which is an application specific integrated circuit (ASIC). The ISA bus I represents either the sub-ISA bus 124 or the ISA bus 160.
An address/command latch 202 is coupled to the PCI bus 114. When an operation is initiated on the PCI bus 114, the latch 202 provides current latched PCI address, command and byte enable signals represented by PCI.sub.-- ADDR<31..0>, PCI.sub.-- CMD<3..0> and PCI.sub.-- BE<3..0>, respectively. These signals are provided to positive decode logic 200, which furnishes signals indicative of when the floppy drive registers have been positively decoded.
As previously described, no shadowing occurs for read operations from the floppy drive registers. On such a read, PCI slave logic 210a, coupled to the PCI bus 114, accepts the read operation on the PCI bus 114. If the laptop unit L is docked to the expansion base unit E, the PCI slave logic 210a positively decodes the read operation. Otherwise, the PCI slave logic 210a subtractively decodes the read operation.
An ISA bus controller 212a reads the requested information from the MSIO 134 and presents the data, represented by WRADB<31..0>a, to a retry logic circuit 204a. The ISA bus controller 212a is coupled to the PCI slave logic 210a, the ISA bus I, the PCI bus 114 and the arbiter 208a. The retry logic circuit 204a has data lines, represented by RE.sub.-- PCI.sub.-- AD<31..0>a, coupled to the PCI bus 114 through conventional interface circuitry 214a. The remaining signals are discussed below in conjunction with FIG. 3.
FIG. 3 is a flowchart diagram illustrating the steps performed by the bridge circuit 122a after the bus agent performs the first write operation to one of the floppy drive registers, beginning the shadowing cycle. In step 250 the positive decode logic 200a positively decodes the address present on the PCI bus 114 during the first write operation. The positive decode logic 200a furnishes floppy drive decode signals FLOPPY.sub.-- DEC<2..0>a to the retry logic 204a. The floppy drive decode signals FLOPPY.sub.-- DEC<2..0>a indicate when one of the floppy drive register addresses appears during an address phase of the PCI bus 114.
Control then transfers from step 250 to step 252, where the retry logic 204a determines whether the access on the PCI bus 114 was a write operation to a floppy drive register. If not a write operation to a floppy drive register, then control transfers from step 252 to step 251 where other non-shadowing operations are performed. Control transitions from step 251 back to step 250. If in step 252 the retry logic 204a determines that a write to a floppy drive register has occurred, i.e., the first write of a shadow cycle, then control transfers to step 254.
The retry logic 204a furnishes a retry bus master logic retry signal REM.sub.-- RETRY and a retry engine retry signal RE.sub.-- RETRY to the PCI slave logic 210a. When asserted, the REM.sub.-- RETRY signal indicates that the retry bus master logic 206a is currently driving the second write of a shadowing cycle on the PCI bus 114. The REM.sub.-- RETRY signal is otherwise negated.
The retry bus master logic 206a asserts the RE.sub.-- RETRY signal when it is driving the second write operation on the PCI bus 114 and this implies the retry logic 204a is awaiting the retried first write operation from the bus agent. The RE.sub.-- RETRY signal is otherwise negated.
In step 254, the retry logic 204a asserts the REM.sub.-- RETRY signal in response to which the PCI slave logic 210a furnishes the known PCI retry sequence to the PCI bus 114. This retry sequence indicates to the initiating agent that the bridge circuit 122a has aborted the first write operation.
Control then transitions from step 254 to step 256, where the PCI slave logic 210a asserts a retry signal RETRY, which is provided to the arbiter 208a. The arbiter 208a is coupled to the PCI bus 114 and the ISA bus controller 212a. The asserted RETRY signal indicates to the arbiter 208a to mask the current PCI bus 114 request from the initiating bus agent should assert in response to the retry of step 254. This masking avoids bus thrashing problems by preventing the bus master from retrying the first write operation until the second write operation is completed. When the RETRY signal is subsequently negated, the retried first write operation has the highest arbitration priority.
A more detailed description of the arbiter 208 and the masking of PCI bus 114 requests through the use of the RETRY signal is disclosed in U.S. patent application Ser. No. 08/398,436, entitled, "Circuit for Improving Computer System Bus Performance" filed Mar. 3, 1995, commonly assigned, which is hereby incorporated by reference.
Once the known PCI retry sequence is presented to retry the first write operation and the request for control of the PCI bus 114 by the bus agent is masked, the retry logic 204a asserts a retry engine request signal RE.sub.-- REQ. The RE.sub.-- REQ signal is provided to the retry bus master logic 206a. The assertion of the RE.sub.-- REQ signal by the retry logic 204a begins the second write operation on the PCI bus 114, which is controlled by the retry bus master logic 206a.
Control then transitions from step 256 to step 258. In step 258, the retry logic 204a supplies the address signals indicated RE.sub.-- PCI.sub.-- AD<31..0> and the command signals indicated by RE.sub.-- PCI.sub.-- CBE<3..0> to the PCI bus 114 through the interface circuitry 214 during the address phase of the PCI bus 114. When the retry bus master logic 206 completes the address phase of the second write operation and transitions to the data phase, the retry bus master logic 206a indicates this by negating a RM.sub.--AD.sub.-- MUX signal, which is an address and data multiplexor signal used to indicate the current phase on the PCI bus 114. The RM.sub.-- AD.sub.-- MIX signal is negated during the data phase and asserted during the address phase. When the RM.sub.-- AD.sub.-- MUX signal is negated, the retry logic 204a furnishes the data from the first write operation represented by RE.sub.-- PCI.sub.-- AD<31..0> and the byte enables from the first write operation represented by RE.sub.--PCI.sub.-- CBE<3..0> to the interface circuitry 214. The retry bus master logic 206a asserts a bus master finish signal RM.sub.-- FINISH to indicate completion of the second write operation on the PCI bus 114. The RM.sub.-- FINISH signal is otherwise low, or negated. Completion of the second write operation indicates the bridge circuit 122b has subtractively decoded and accepted the second write operation.
Control transitions from step 258 to step 260, where the retry logic 204a drives the retry signal REM.sub.-- RETRY low, or false, allowing the arbiter 208a to grant the request of the bus agent to retry the first write operation. Control then transfers to step 262 where the bus agent performs the retried first write operation. Completion of the retried first write operation occurs when the PCI slave logic 210a positively decodes and accepts the first retried bus write operation. The ISA bus controller 212a then writes the data to the floppy drive registers in the MSIO 134 through the sub-ISA bus 124.
The retry logic 204a furnishes two additional signals to the PCI slave logic 210a to inform the PCI slave logic 210a of the identity of the PCI bus master driving the current cycle on the PCI bus 114. The retry logic 204a furnishes a DDMA.sub.-- ISA.sub.-- DECa signal, which indicates that the bus agent is retrying the first write operation when asserted. The DDMA.sub.-- ISA.sub.-- DECa signal is otherwise low.
The retry logic 204a also provides a DDMA.sub.-- MST.sub.-- DECa signal, which indicates, when asserted, that a write operation to one of the floppy drive register addresses has been detected and that the write operation is not driven by the retry bus master logic 206a. Thus, the retry logic 204 asserts the DDMA.sub.-- MST.sub.-- DEC a signal during the second and retried first write operations. The DDMA.sub.-- MST.sub.-- DEC signal is otherwise low.
In summary, for a read operation to a floppy drive register address, the PCI slave logic 210a positively decodes and furnishes the read data to the PCI bus 114. For write operations, the bridge circuit 122a initiates the shadowing cycle.
To initiate the shadowing cycle, the PCI slave logic 210a furnishes the known retry sequence to the PCI bus 114 when the positive decode logic 200a and the retry logic 204a indicate the first write operation. The retry bus master logic 206 drives the second write operation, which is subtractively decoded by the bridge circuit 122b.
The retry logic 204a initiates the generation of the second write operation by the retry bus master logic 206a and interacts with the PCI slave logic 210a and the arbiter 208a to mask the bus request from the bus agent until after the second write operation.
After the bus request is unmasked, the bus agent is then granted control of the PCI bus 114. The bus agent can then retry the first write operation, which is positively decoded and accepted by the bridge circuit 122a.
3. The Bridge Circuit
a. The Positive Decode Logic
FIG. 4 is a schematic diagram illustrating the design and operation of the positive decode logic 200. As described above, the bridge circuit 122b is a subtractive decode agent on the PCI bus 114; therefore, the positive decode logic 200b is disabled on the bridge circuit 122b and enabled on the bridge circuit 122a.
The enabling and disabling of the positive decode logic 200b is accomplished through a FLP.sub.13 DECODE.sub.-- EN signal, which when asserted indicates a laptop mode of operation and when negated, indicates an expansion base mode of operation. The FLP.sub.-- DECODE.sub.-- EN signal is provided by an associated configuration bit present in a configuration register of the bridge circuit 122.
As explained further below, when an address of one of the floppy drive registers is detected on the PCI bus 114, the FLOPPY.sub.-- DEC<2..0> signals are either equal to "b101" or "b110," where the prefix "b" denotes binary representation. If the two least significant bits of the FLOPPY.sub.-- DEC<2..0> signals are equal to "b00," then either the bridge circuit 122 is in the expansion base unit mode (bridge circuit 122b) or no floppy drive register address has been detected on the PCI bus 114.
The positive decode logic 200 includes a multiplexor 300 with its select input receiving the FLP.sub.-- DECODE.sub.-- EN signal. Signals representative of "b100" are provided to three zero inputs of the multiplexor 300, and signals representative of "b110" are provided to three one inputs of the multiplexor 300.
The select input of a multiplexor 302 receives the FLP.sub.-- DECODE.sub.-- EN signal. The zero inputs of the multiplexor 302 receive three signals representative of "b 100," and three one inputs of the multiplexor 302 receive three signals representative of "b 101."
The outputs of the multiplexor 302 are all provided to the zero through third inputs of a multiplexor 304. Each input of the multiplexor 304 receives a three bit signal. The fourth, sixth and seventh inputs of the multiplexor 304 receive the outputs of the multiplexor 300. The zero through second select inputs of the multiplexor 304 receive the three least significant PCI address lines PCI.sub.-- ADDR<2..0> furnished by the latch 202.
The floppy drive registers include seven registers. Only four of these registers are writeable, as further described below. As further explained below, when a lower floppy drive register address range is detected on the PCI bus 114, the three bit signal representative of "b101" is provided at the output of the multiplexor 304. When the higher floppy drive register address range is detected, the three bit signal representative of "b 110" is provided at the output of the multiplexor 304. If no floppy drive register addresses are detected on the PCI bus 114, then the three bit binary signal representative of "b100" is provided at the output of the multiplexor 304.
A multiplexor 306 ensures that the correct addresses are monitored on the PCI bus 114. Each input of the multiplexor 306 receives a three bit signal. The output of the multiplexer 306 furnishes the FLOPPY.sub.-- DEC<2..0> signals. The first input of the multiplexor 306 receives the output of the multiplexor 304 and the zero input of the multiplexor 306 receives FLOPPY.sub.-- IDLE<2..0> signals equal to "b000" which that indicates no floppy drive register addresses have been detected. Thus, the FLOPPY.sub.-- DEC<2> signal, when true, indicates that floppy drive register addresses have been detected on the current operation of the PCI bus 114.
The select input of the multiplexor 306 is furnished by the output of an AND gate 308.
One input of the AND 308 receives an inverted PCI.sub.-- INTA signal. When asserted, the PCI.sub.-- INTA signal indicates an interrupt acknowledgement sequence is occurring on the PCI bus 114. The PCI.sub.-- INTA signal is otherwise low.
The AND gate 308 further receives as an input an inverted PM.sub.-- IO signal. When asserted the PM.sub.-- IO signal indicates a memory cycle is occurring on the PCI bus 114, and when low the PM.sub.-- IO signal indicates an I/O cycle is occurring on the PCI bus 114.
The AND gate 308 further receives the output of an equal circuit 310, which receives as one of its inputs a twenty-nine bit parameter indicative of the high address range of the floppy drive registers, FLOP.sub.-- DEC.sub.-- HIGH<31..3>. That input is compared to the other input, the twenty-nine most significant PCI address lines PCI.sub.-- ADDR<31..3>. Thus, when the twenty-nine most significant address lines present on the PCI bus 114 are indicative of the floppy drive registers addresses, the output of the equal circuit 310 is true.
The AND gate 308 further receives the output of a not equal circuit 312, which receives as inputs a three bit binary signal representative of "b 110" and the three least significant address lines of the PCI bus 114, represented by PCI.sub.-- ADDR<2..0>. The not equal circuit 312 asserts its output when these two inputs are not equal. In the described embodiment, when these three lines PCI.sub.-- ADDR<2..0> equal "b110," this indicates an access to a non-existent floppy drive register address.
In summary, when an I/O cycle is present on the PCI bus 114, and that I/O cycle is not an interrupt acknowledgement sequence, the multiplexor 304 outputs the floppy decode signals FLOPPY.sub.-- DEC<2..0>. The FLOPPY.sub.-- DEC <2..0> signals reflect a floppy register access when the FLOPPY.sub.-- DEC<2> signal is high. In that case, one of the two least significant FLOPPY.sub.-- DEC<2..0> signals is asserted. If no access to the floppy drive register addresses is detected (i.e., FLOPPY.sub.-- DEC<2> is low), then the two least significant FLOPPY.sub.-- DEC signals are also low.
b. The Retry Logic
FIG. 5 is a schematic diagram illustrating design and operation of the retry logic 204. A positive decode logic interface 354 receives the floppy drive decode signals FLOPPY.sub.-- DEC<2..0> and interface signals from the retry bus master logic 206. From this information, the positive decode logic interface 354 furnishes a retry engine start signal RETRY.sub.-- ENGINE.sub.-- STR, which when asserted indicates the beginning of the second write operation. The RETRY.sub.-- ENGINE.sub.-- STR signal is otherwise low.
The positive decode logic interface 354 further receives current byte signals CUR.sub.-- BYTE<3..0>. The CUR.sub.-- BYTE<3..0> signals indicate which byte of data is being transferred during the second write operation, as further explained below. From this information and the information provided by the floppy decode signals FLOPPY.sub.-- DEC<2..0>, the positive decode logic interface 354 furnishes a RM.sub.-- SITES<0> signal. When the RM.sub.-- SITES<0> signal is low, this indicates that a write operation to a writeable floppy drive register address has been detected on the PCI bus 114. The RM.sub.-- SITES<0> signal is otherwise high. A RM.sub.-- REMOTE.sub.-- SITES<0> signal, the inverse of the RM.sub.-- SITES<0> signal, is also furnished by the positive decode logic interface 354.
A retry state machine 350 interacts with a double word state machine 352 to track the second write operation driven by the retry bus master logic 206a. The retry state machine 350 is clocked by the positive edge of a PCI clock signal CLK. The retry state machine 350 receives a signal RS.sub.-- START, which when asserted indicates a byte of data for a floppy drive register is present on the PCI bus 114 during the second write operation. The RS.sub.-- START signal is otherwise low.
For write or read operations to or from the floppy drive registers, the associated floppy drive register addresses are addressed on doubleword boundaries. One doubleword address identifies a high base address of a high address range of four, one byte floppy drive registers, and one doubleword address identifies a low base address of a low address range of four, one byte floppy drive registers. Any address in the floppy drive register address range that is in the lower address range is associated with the low base address. Similarly any address in the floppy drive register address range is in the high range of floppy drive register addresses is associated with the high base address.
The indexing of the particular floppy drive register location is accomplished during one of four data phases of the read or write operation. In each data phase, a thirty-two bit doubleword is present on the PCI bus 114. Each data phase corresponds to a particular floppy register address which is indexed from either the low base address or the high base address. This indexing is accomplished through the byte enable signals on the PCI bus 114.
For example, to transfer a byte of data to the floppy drive register located at one of the base addresses, this byte is the least significant byte of the doubleword present during the first data phase. As another example, to transfer a byte of data to one of the base addresses plus one, this data is the second least significant byte of the doubleword present during the second data phase.
The retry state machine 350 further receives a retry engine finish signal RM.sub.-- FINISH2, which when asserted indicates that the retry bus master logic 206 has completed the second write operation on the PCI bus 114. The RM.sub.-- FINISH2 signal is otherwise low.
The retry state machine 350 further furnishes a RMS.sub.-- LOCAL signal, which indicates the completion of a local access for the bridge circuit 122a from the sub-ISA bus 124 when one of the floppy register addresses has been detected by the positive decode logic 200a. The assertion of the RMS.sub.-- LOCAL signal indicates either the completion of the second write operation or an attempted write operation to a read only floppy drive register.
Also shown in FIG. 5 is the double word state machine 352, which is clocked by the positive edge of the PCI CLK signal. After the aborted first write operation, the double word state machine 352 uses the latched address, command and byte enable signals from that operation to track the current byte of data being transferred during the second write operation, represented by CUR.sub.-- BYTE<3..0>. The state machine 352 also monitors the PCI bus 114 for the retried first write operation by comparing the current latched PCI command, address and byte enable signals with the PCI command, address and byte enable signals latched from the first write operation which are furnished by the retry engine interface logic 358 further discussed in conjunction with FIG. 11.
Also shown in FIG. 5 is PCI slave interface logic 356 which generates the previously discussed retry signals used to control the generation of the RETRY signal and the known retry sequence by the PCI slave logic 210. The PCI slave interface logic 356 receives signals from the double word state machine 352 indicative of the states of the second write operation, as further described below.
In summary, the retry logic 204 includes the retry state machine 350, which interacts with the double word state machine 352 to track the second write operation. The positive decode logic interface 354 receives the FLOPPY.sub.-- DEC<2..0> signals and interacts with the double word state machine 352 to aid in tracking the second write operation on the PCI bus 114. The double word state machine 352 also monitors the PCI bus 114 for the retried first write operation. The retry engine interface logic 358 initiates the second write operation by asserting the RE.sub.-- REQ signal. Finally, the PCI slave interface logic 356 controls the generation of the known retry sequence by the PCI slave logic 210 which is used to abort the first write operation.
i. State Diagram of the Double Word State Machine
Now referring to FIG. 6, the doubleword state machine 352 tracks the data phases of the second write operation. When a PCI reset occurs, indicated by the assertion of a RST signal, the double word state machine 352 enters an IDLE state. The state machine 352 remains in the IDLE state until the RETRY.sub.-- ENGINE.sub.-- STR signal is asserted and a S.sub.-- NO.sub.-- BE signal is negated. The assertion of the S.sub.-- NO.sub.-- BE signal indicates that the byte enable signals on the PCI bus 114 are deasserted. The assertion of these two signals indicates the bus agent has relinquished control of the PCI bus 114 after the PCI slave logic 210 has furnished the known retry sequence to abort the first write operation.
Upon this occurrence, the state machine 352 transitions from the IDLE state to a BYTE0 state. In the BYTE0 state, the state machine 352 sets the CUR.sub.-- BYTE<3..0> signal equal to "b0001." This indicates that the base address of the high or low floppy drive register address range has a byte of data on the PCI bus 114 during the second write operation. The state machine 352 examines a latched byte enable signal PCI.sub.-- BE.sub.-- L<0> from the first write operation to determine whether a byte of floppy register data is to be transferred in the doubleword of the current data phase.
If the least significant latched byte enable signal PCI.sub.-- BE.sub.-- L<0> is asserted, or low, and the RMS.sub.-- LOCAL signal is asserted, then a byte of floppy register data has been transferred and the state machine 352 transitions from the BYTE0 state to the BYTE1 state.
If the PCI.sub.-- BE.sub.-- L<0> signal is deasserted, then no byte of data is being transferred during the current data phase. Thus, the state machine 352 transitions to the BYTE1 state on the next positive edge of the CLK signal.
The transition to BYTE2, BYTE3 and a LOCAL state are analogous to the above-described transition. Each one of the BYTE0, BYTE1, BYTE2, and BYTE3 states monitors for the write of the first, second, third, and fourth bytes of data to the double word address of the second write operation. For the BYTE1 state, the CUR.sub.-- BYTE<3..0> signal is set equal to "b0010;" for the BYTE2 state, the CUR.sub.-- BYTE<3..0> signal is set equal to "b0010;" and for the BYTE3 state, the CUR.sub.-- BYTE<3..0> signal is set equal to "b1000."
The double word state machine 352 transitions from the BYTE3 state to a LOCAL state. In the LOCAL state, the state machine 352 awaits the retried first write operation by the bus agent. When the retried first write operation is identified, then the state machine 352 transitions into a LOCAL2 state.
The state machine 352 identifies the retried first write operation by monitoring several conditions. The retried first write operation is identified when the RETRY signal negated, the current PCI address signals PCI.sub.-- ADDR<3 1..0> are equal to the latched first write operation PCI address signals PCI.sub.-- ADDR.sub.-- L<3 1..0>; the current PCI byte enable signals PCI.sub.-- BE.sub.-- <3..0> are equal to the latched first write operation PCI byte enable signals PCI.sub.-- BE.sub.-- L<3..0>; and the current PCI command signals PCI.sub.-- CMD<3..0> are equal to the latched first write operation PCI command signals PCI.sub.-- CMD.sub.-- L<3..0>. When this conditions are met, the state machine 352 transfers from the LOCAL state to the LOCAL2 state.
The PCI slave logic 210 furnishes a PCI STOP.sub.-- signal, O.sub.-- STOP, and a PCI TRDY.sub.-- signal; O.sub.-- TRDY, to the PCI bus 114. If in the LOCAL2 state the O.sub.-- STOP.sub.-- signal is asserted, or low, and the O.sub.-- TRDY.sub.-- signal is deasserted, or high, then the state machine 352 transitions from the LOCAL2 state back to the LOCAL state. This indicates the occurrence of the known retry sequence on the PCI bus 114, and the first write operation must once again be retried and detected by the state machine 352.
If the O.sub.-- TRDY.sub.-- signal is asserted this indicates the retried first write operation was accepted by the PCI slave logic 210a; therefore, when this occurs, the state machine 352 transitions from the LOCAL2 state back to the IDLE state. Otherwise, the state machine 352 remains in the LOCAL2 state until the retried first write operation is finished.
To summarize, the double word state machine 352 interacts with the retry state machine 350 to track the second write operation and the retried first operation of the shadowing cycle. Once the bus agent relinquishes control of the PCI bus 114 after the aborted first write operation, the state machine begins monitoring the second write operation.
The state machine 352 indicates which byte of the addressed double word is being written to in the second write operation through the CUR.sub.-- BYTE<3..0> signal. The state machine 352 tracks the cycles of the data phase of the second write operation through the BYTE0.sub.-- BYTE3 states. The LOCAL state is used to monitor the PCI bus 114 for the beginning of the retried first write operation, and the LOCAL2 state is used to await completion of the retried first write operation.
ii. The State Diagram of the Retry State Machine
Shown in FIG. 7 is a state diagram illustrating operation of the retry engine state machine 350. On the assertion of the PCI reset signal RST, the state machine 350 enters the IDLE state.
If the RS.sub.-- START signal is asserted and the RM.sub.-- REMOTE.sub.-- SITES<0> signal is high, then this indicates the beginning of the second write operation. If this occurs, then the state machine 350 transitions from the IDLE state to a SITEO state. The state machine 350 remains in the SITEO state until the received RM.sub.-- FINISH2 signal is asserted.
When the RM.sub.-- FINISH2 signal is asserted, then the state machine 350 transitions from the SITEO state to the LOCAL state. On the next positive edge of the CLK signal, the state machine 350 transitions from the LOCAL state to the IDLE state.
In the IDLE state, if the RS.sub.-- START signal is asserted and the RM.sub.-- REMOTE.sub.-- SITES<0> signal is low, indicating a write operation to a read only floppy drive register, then the state machine 350 transitions from the IDLE state to the LOCAL state. Otherwise, the state machine 350 remains in the IDLE state.
Thus, in summary, the state machine 350 monitors the PCI bus 114 for completion of the second write operation in the SITEO state. The state machine 350 transitions to the LOCAL state either upon completion of the second write operation or upon a failed first write operation to a read only floppy drive register.
iii. The Generation of the RS.sub.-- START Signal
Shown in FIG. 8 is logic which generates the RS.sub.-- START signal. The output of an OR gate 408 furnishes the RS.sub.-- START signal. The inputs of the OR gate 408 receive the outputs of AND gates 400, 402, 404 and 406. The inputs of the AND gates 400-406 receive signals DW.sub.-- BYTE0, DW.sub.-- BYTE1, DW.sub.-- BYTE2 and DW.sub.-- BYTE3 which, when individually asserted, indicate that the double word state machine 352 is in the BYTE, BYTE 1, BYTE2, or BYTE3 states, respectively. These signals are furnished by the double word state machine 352.
The inputs to the AND gate 400 are the inverted PCI.sub.-- BE.sub.-- L<0> signal and the DW.sub.-- BYTE0 signal. The inputs to the AND gate 402 are the inverted PCI.sub.-- BE.sub.-- L<1> signal and the DW.sub.-- BYTE1 signal. The inputs to the AND gate 404 are the inverted PCI.sub.-- BE.sub.-- L<2> signal and the DW.sub.-- BYTE2 signal. The inputs to the AND gate 406 are the inverted PCI.sub.-- BE.sub.-- L<3> signal and the DW.sub.-- BYTE3 signal.
Thus, the RS.sub.-- START signal is asserted if there is data on the PCI bus 114 during the appropriate cycle of the data phase of the second write operation driven by the retry bus master logic 206a.
iv. Positive Decode Logic Interface
Shown in FIG. 9 is circuitry to generate the RETRY.sub.-- ENGINE.sub.-- STR signal used to indicate abortion of the first write operation by the bus agent. The RETRY.sub.-- ENGINE.sub.-- STR is provided by the output of an AND gate 458. A D-type flip flop 452 receives the least two significant FLOPPY.sub.-- DEC<2..0> signals as its D inputs and as outputs provides corresponding synchronized signals FLOPPY.sub.-- DEC.sub.-- L<1..0> clocked by the CLK signal.
The FLOPPY.sub.-- DEC.sub.-- L<1..0> signals are both provided as inputs to an OR gate 454. The output of the OR gate 454 is asserted if one of the FLOPPY.sub.-- DEC.sub.-- L<1..0> signals is asserted, indicating that the positive decode logic 200a has detected a floppy drive register address on the PCI bus 114.
The output of the OR gate 454 is provided to one input of an AND gate 458. The AND gate 458 further receives the inverted 0.sub.-- STOP.sub.-- signal, a DLY.sub.-- FRAME1 signal, a DLY.sub.-- TRDY.sub.-- signal, and the output of an AND gate 460. The DLY.sub.-- FRAME1 signal is the PCI FRAME.sub.-- signal delayed by one cycle of the CLK signal. The DLY.sub.-- TRDY.sub.-- signal is the PCI TRDY.sub.-- signal delayed by one cycle of the CLK signal.
The AND gate 460 receives as its inputs an inverted ISA LOCKED signal and a latched PCI LOCKED.sub.-- signal, L.sub.-- PCILOCK.sub.--. When a floppy drive register address is presented on the PCI bus 114 and a retry of the first write operation on the PCI bus 114 is detected, the RETRY.sub.-- ENGINE.sub.-- STR signal is asserted, beginning the shadowing cycle.
Also shown in FIG. 9 is decode circuitry 501 which decodes the low range of floppy drive register addresses. Decode circuitry 503 decodes the high range of floppy drive register addresses. Both the circuit 503 and the circuit 501 are of common design 500.
Circuitry is also shown to generate the RM.sub.-- REMOTE.sub.-- SITES<0> and the RM.sub.-- SITES<0> signals. This circuitry includes a multiplexor 506 which receives a latched WR.sub.-- IO.sub.-- L signal at its select input. When the WR.sub.-- IO.sub.-- L signal is asserted, this indicates a write operation on the PCI bus 114, and when the WR.sub.-- IO.sub.-- L signal is negated, this indicates a read operation on the PCI bus 114. The zero input of the multiplexor 506 is driven low; the one input the multiplexor 506 is driven high. The output of the multiplexor 506 is provided to the one input of a multiplexor 504.
The zero input of the multiplexor 504 is driven low. The select input of the multiplexor 504 is connected to the output of an OR gate 516. The output of the multiplexor 504 furnishes the RM.sub.-- REMOTE.sub.-- SITES<0> signal. An inverter 502 receives the RM.sub.-- REMOTE.sub.-- SITES<0> signal and provides the RM.sub.-- SITES<0> signal.
Now referring to remaining decode circuitry, the outputs of an AND gate 508 from decode circuits 501 and 503 are connected to the inputs of the OR gate 516. One INPUT of the AND gate 508 is connected to the output of an OR gate 510. One input of the OR gate 510 is connected to the output of an equal circuit 514, and the other input of the OR gate 510 is connected to the output of an equal circuit 512. One input of each of the equal circuits 514 and 512 receives the CUR.sub.-- BYTE<3..0> signals.
The remaining signals received by the decode circuitry 500 furnish the decoding for the particular register address range being decoded. In the decode circuit 501 the AND gate 508a receives a LOW.sub.-- REG.sub.-- DEC signal as its other input. The LOW.sub.-- REG.sub.-- DEC signal is asserted when the FLOPPY.sub.-- DEC<2..0> signals are equal to "b101" and negated otherwise. The equal circuit 514a receives as a second input a four bit signal representative of "b0100." The equal circuit 512a receives as a second input a four bit signal representative of "b1000." While the decode circuit 500a could decode up to four register addresses for positive decoding and shadowing, in the described embodiment, only two registers are decoded in the lower address range, as selected by the inputs to the equal circuits 514a and 512a.
Similarly, in the decode circuit 503, the other input of the AND gate 508b receives a HIGH.sub.-- REG.sub.-- DEC signal. The HIGH.sub.-- REG.sub.-- DEC signal is asserted when the FLOPPY.sub.-- DEC<2..0> signals are equal to "b110." The other input of the equal circuit 514b receives a four bit signal representative of "b0001." The other input of the equal circuit 512b receives a four bit signal representative of "b1000." Thus, the circuitry 500b decodes two upper floppy drive register addresses through the equal circuits 512b and 514b. Again although the circuit decodes two registers in the upper floppy drive register address range, up to four register addresses could be decoded in alternative embodiments.
To summarize, the positive decode logic interface 354 furnishes the RETRY.sub.-- ENGINE.sub.-- STR signal, which when asserted indicates the abortion of the first write operation. The positive decode logic interface 354 also furnishes the RM.sub.-- REMOTE.sub.-- SITES<0> and the RM.sub.-- SITES<0> signals, which are used to indicate detection of the first write operation to a writeable floppy drive register.
v. The PCI Slave Interface Logic
Shown in FIG. 10 is a circuit schematic that illustrates the design operation of the PCI slave interface logic 356. The FLOPPY.sub.-- DEC<1> signal and the FLOPPY.sub.-- DEC<0> signal are provided as inputs to an OR gate 550. The output of the OR gate 550 is provided as one input to an AND gate 554, which outputs the DDMA.sub.-- MST.sub.-- DEC signal.
A second input of the AND gate 554 receives a RM.sub.-- O.sub.-- FRAME1.sub.-- signal, which reflects the PCI FRAME.sub.-- signal furnished by the retry bus master logic 206a. The third input of the AND gate 554 receives RM.sub.-- 0.sub.-- IRDY1.sub.-- signal, which reflects the PCI IRDY.sub.-- furnished by the retry bus master logic 206d. Thus, when one of the floppy drive register addresses has been detected on the PCI bus 114 and the retry bus master logic 206a is not driving the current operation on the PCI bus 114, then the DDMA.sub.-- MST.sub.-- DEC signal is asserted. The DDMA.sub.-- MST.sub.-- DEC signal is otherwise negated.
The output of the OR gate 550 is further furnished to the input of an AND gate 552, which outputs the DDMA.sub.-- ISA.sub.-- DEC signal. The other input of the AND gate 552 receives a DW.sub.-- LOCAL2.sub.-- NXT signal from the double word state machine 352. The state machine 352 asserts the DW.sub.-- LOCAL2.sub.-- NXT signal when the next state of the state machine 352 is the LOCAL state. The DW.sub.-- LOCAL2.sub.-- NXT signal is otherwise negated.
When asserted, the DW.sub.-- LOCAL2.sub.-- NXT signal indicates the retried first write operation has been identified by the state machine 352. The DW.sub.-- LOCAL2.sub.-- NXT signal remains asserted until the completion of the retried first write operation. The DW.sub.-- LOCAL2.sub.-- NXT signal is otherwise false.
Thus, when one of the floppy drive register addresses is detected on the PCI bus 114 and the bus agent is driving the retried first write operation, the DDMA.sub.-- ISA.sub.-- DEC signal is asserted. The DDMA.sub.-- ISA.sub.-- DEC signal is negated otherwise.
A D-type flip flop 560 provides the RE.sub.-- RETRY signal as its output. The flip flop 560 is clocked by the positive edge of the CLK signal. The input of the flip flop 560 is connected to the output of an AND 558, which receives the floppy decode enable signal FLP.sub.-- DECODE.sub.-- EN as one of is inputs. The other input of the AND gate 558 is connected to the output of an OR gate 556.
The OR gate 556 receives as inputs signals indicative of the next state of the state machine 352. When asserted, these signals indicate the associated next state. The DW.sub.-- BYTE0.sub.-- NXT is associated with the BYTE0 state; the DW.sub.-- BYTE1.sub.-- NXT signal is associated with BYTE1 state; the DW.sub.-- BYTE2.sub.-- NXT signal is associated with the BYTE2 state; the DW.sub.-- BYTE3.sub.-- NXT signal is associated with the BYTE3 state; and the DW.sub.-- LOCAL.sub.-- .sub.-- NXT signal is associated with the LOCAL state. Thus, for the bridge circuit 122a, the RE.sub.-- RETRY signal is asserted when the retry bus master logic 206a is driving the second write operation and before the retried first write operation is detected on the PCI bus 114.
A D-type flip flop 566 provides as its output the REM.sub.-- RETRY signal. The flip flop 566 is clocked by the positive edge of the CLK signal. The D input of the flip flop 566 is connected to the output of an AND gate 564, which receives as one of its inputs the floppy decode enable signal FLP.sub.-- DECODE.sub.-- EN. The other input of the AND gate 564 is connected to the output of OR gate 562.
The inputs to the OR gate 562 are the DW.sub.-- BYTE0.sub.-- NXT, the DW.sub.-- BYTEh.sub.-- NXT, the DW.sub.-- BYTE2.sub.-- NXT and the DW.sub.-- BYTE3.sub.-- NXT signals. Thus, the REM.sub.-- RETRY signal is asserted when the retry bus master logic 206a is driving the second write operation on the PCI bus 114.
To summarize, the PCI slave interface logic 356 furnishes the RE.sub.-- RETRY and REM.sub.-- RETRY signals to the PCI slave logic 210. The RE.sub.-- RETRY signal is asserted when the retry bus master logic 206a is driving the second write operation and also asserted before the retried first write operation is driven by the bus agent. The REM.sub.-- RETRY signal is asserted when the retry bus master logic 206a is driving the second write operation on the PCI bus 114. The DDMA.sub.-- ISA.sub.-- DEC and DDMA.sub.-- MST.sub.-- DEC signals are used to identify the first and second write operations.
vi. The Retry Engine Interface Logic
Shown in FIG. 11 is the retry engine interface logic 358. An AND gate 600 furnishes the RE.sub.-- REQ signal. The AND gate 600 receives at one input the inverted RM.sub.-- SITES<0> signal. At another input the AND gate 600 receives a RM.sub.-- SITEO.sub.-- NXT signal. The RM.sub.-- SITEO.sub.-- NXT signal is asserted by the retry master state machine 350 to indicate the retry master state machine 350 will enter the SITEO state on the next positive edge of the CLK signal. The RM.sub.-- SITE0.sub.-- NXT signal is negated otherwise.
At its third input the AND gate 600 receives a NOT.sub.-- SAME.sub.-- RM.sub.-- STATE signal. The NOT.sub.-- SAME.sub.-- RM.sub.-- STATE signal is asserted if the retry master state machine 350 does not remain in the same state on the next positive edge of the CLK signal and negated otherwise. Thus, when the retry state machine 350 transitions from the IDLE state to the SITE0 state and the bus agent has attempted the first write operation on the PCI bus 114, the RE.sub.-- REQ signal is asserted which begins the shadowing cycle. The RE.sub.-- REQ signal is negated otherwise.
Also shown in FIG. 11 is a D-type flip flop 604 which furnishes the RMFINISH2 signal at its output. The flip flop 604 is clocked on the positive edge of the CLK signal, and the flip flop 604 receives the RMFINISH signal at its input which is provided by the retry bus master logic 206.
A D-type flip flop 606 provides the latched first write operation PCI command signals PCI.sub.-- CMD.sub.-- L<3..0> at its non-inverting outputs. The flip flop 606 receives the latched current PCI command signals PCI.sub.-- CMD<3..0> signals at its D inputs. The flip flop 606 is clocked by the output of an AND gate 608.
The AND gate 608 receives a DW.sub.-- IDLE.sub.-- NXT signal at one of its inputs and the CLK signal at its other input. The DW.sub.-- IDLE.sub.-- NXT signal is asserted when the next state of the double word state machine 352 is the IDLE state. The DW.sub.-- IDLE.sub.-- NXT signal is negated otherwise. On the positive edge of the CLK signal when the DW.sub.-- IDLE.sub.-- NXT signal is asserted, the flip flop 606 is clocked. Thus, the PCI.sub.-- CMD.sub.-- L<3..0> signals are equal to the command signals PCI.sub.-- CMD<3..0> as provided during the first write operation.
A D-type flip flop 610 furnishes the latched first write operation PCI address lines PCI.sub.-- ADDR.sub.-- L<31..0>, data lines PCI.sub.-- DATA.sub.-- L<31..0> and the byte enable PCI.sub.-- BE.sub.-- L<3..0> signals at its non-inverting outputs. The flip flop 610 receives at its D inputs the current PCI address PCI.sub.-- ADDR<31..0>, the current data drives I.sub.-- AD<31..0> and the byte enable PCI.sub.-- BE.sub.-- <3..0> signals at its inputs. The current latched data lines of the PCI bus 114 are represented by IAD<31..0>. The clock input of the flip flop 610 is connected to the output of the AND gate 608.
A multiplexor 612 furnishes the RE.sub.-- PCI.sub.-- CBE<31..0> signals at its output. The multiplexor 612 receives the RM.sub.-- AD.sub.-- MUX signal at its select input. The multiplexor 612 receives the PCI.sub.-- BE.sub.-- L<3..0> signals at its zero input. The multiplexor 612 receives the PCI.sub.-- CMD.sub.-- L<3..0> signals at its one input. Thus, during the address phase of the second write operation by the retry bus master logic 206a, the multiplexor 612 furnishes the PCI.sub.-- CMD.sub.-- L<3..0> signals at its output, and during the data phase of the second write operation by the retry bus master logic 206a, the multiplexor 612 furnishes the PCI.sub.-- BE.sub.-- L<3..0> signals at its output. The output signals of the multiplexor 612 are furnished to the PCI bus 114 through the interface circuitry 214.
A multiplexor 614 furnishes the RE.sub.-- PCI.sub.-- AD<31..0> address lines at its output. The select input of the multiplexor 614 receives the RM.sub.-- AD.sub.-- MUX signal. The one input of the multiplexor 614 receives the PCI.sub.-- ADDR.sub.-- L<31..0> signals. The zero input of the multiplexor 614 receives the output of a multiplexor 616.
The select input of the multiplexor 616 receives the WR.sub.-- IO.sub.-- L signal. The zero input of the multiplexor 616 receives the ISA write data signals, represented by WRADB<31..0>, from the ISA bus controller 212. The one input of the multiplexor 616 receives the PCI.sub.-- DATA.sub.-- L<31..0> signals. Thus, during either a write or a read operation on the PCI bus 114, the multiplexor 614 furnishes the PCI.sub.-- ADDR.sub.-- L<31..0> signals to the interface circuitry 214 which furnishes these signals to the PCI bus 114 during the address phase. During the data phase, if the bus agent performed a read operation to the floppy drive registers, then the data from these registers represented by WRADB<31..0> signals is provided to the PCI bus 114. However, if the bus agent attempted to performed the first write operation to the floppy drive registers, then the latched first write operation data lines PCI.sub.-- DATA.sub.-- L<31..0> are furnished to the PCI bus 114 during the data phase of the second write operation through the interface circuitry 214.
To summarize, the retry engine interface logic 358 furnishes the RE.sub.-- REQ signal, which is used to start the second write operation. The retry engine interface logic 358 also provides the command, byte enable, address and data lines to the PCI bus 114, through the interface circuitry 214, during the second write operation.
c. The PCI Slave Logic
i. The Generation of the Retry Signal
Shown in FIG. 12 is the logic to generate the RETRY signal which is used to mask the bus request from the bus agent until the completion of the second write operation. The RETRY signal is furnished by the output of an OR gate 650. One input of the OR gate 650 receives an inverted N.sub.-- LALE signal. The N.sub.-- LALE signal is an enable signal for latching the PCI address by the latch 202. When the N.sub.-- LALE signal is negated, internal write buffers of the bridge circuit 122 (not shown) are full and the bridge circuit 122 temporarily suspends any data passing between the PCI bus 114 and the ISA bus I.
Another input of the OR gate 650 is connected to the output of an AND gate 652. The AND gate 652 receives a CPU.sub.-- OWNER signal at one of its inputs. Another input of the AND gate 652 receives a CLOCK.sub.-- SLOW.sub.-- MASK signal. The CPU.sub.-- OWNER signal, when asserted, indicates that the CPU 100 is the owner of the PCI bus 114. The CPU.sub.-- OWNER signal is negated otherwise. The CLOCK.sub.-- SLOW.sub.-- MASK signal, when asserted, indicates to retry every bus agent on the PCI bus 114 except for the CPU 100. The CLOCK.sub.-- SLOW.sub.-- MASK signal is otherwise negated.
Another input of the OR gate 650 is connected to the output of an AND gate 654. One input of the AND gate 654 receives an inverted S.sub.-- RHOLD signal. The S.sub.-- RHOLD signal, when asserted, indicates a refresh cycle hold acknowledge, and the S.sub.-- RHOLD signal is negated otherwise. Another input of the AND gate 654 receives an inverted ISA bus LOCKED signal. A third input of the AND gate 654 receives an inverted IDE.sub.-- SD.sub.-- GNT signal which is asserted when the IDE interface 137 or the interface 146 owns the ISA bus I. The IDE.sub.-- SD.sub.-- GNT signal is negated otherwise. Thus, the output of the AND gate 654 is asserted if a refresh cycle is pending and negated otherwise.
Another input of the OR gate 650 is connected to the output of an AND gate 656. One input of the AND gate 656 receives the ISA bus LOCKED signal. The other input of the AND gate 656 receives a L.sub.-- PCILOCK signal, a latched PCI LOCKED signal. Thus, the output of the AND gate 656 is asserted when the bridge 122 is locked from accesses from the PCI bus 114.
Another input of the OR gate 650 receives the REM.sub.-- RETRY signal. Another input of the OR gate 650 receives a INT.sub.-- RETRY signal which is asserted when an interrupt cycle on the PCI bus 114 needs to be retried and negated otherwise.
Thus, the RETRY signal is asserted if either the write buffer of the bridge circuit 122 is full, a non-CPU 100 cycle needs to be retried, the bridge circuit 122 is locked from accessing the PCI bus 114, a refresh cycle is pending, a shadowing cycle is beginning or an interrupt cycle on the PCI bus 114 needs to be retried.
ii. State Diagram of the PCI Slave Logic
Shown in FIG. 13 is a state diagram illustrating operation of the PCI slave logic 210 for the purposes of the present invention. The PCI slave logic 210 enters an IDLE state when the RST signal is asserted which indicates a PCI reset. The PCI slave logic 210 remains in the IDLE state until the PCI bus 114 FRAME.sub.-- signal, I.sub.-- FRAME, is asserted, or pulled low, and an O.sub.-- FRAME.sub.-- signal is deasserted, or is high. The O.sub.-- FRAME.sub.-- signal is a PCI FRAME.sub.-- signal furnished by the retry bus master logic 206. Upon the occurrence described above, the PCI slave logic 210 transitions from the IDLE state to a FAST decode state.
If a PCI DEVSEL.sub.-- signal, I.sub.-- DEVSEL, is asserted, or pulled low, which indicates a bus agent has claimed the present PCI bus 114 operation, then the PCI slave logic 210 transitions from the FAST decode state to a PCI.sub.-- BUSY state. If the PCI operation is not claimed, then the PCI slave logic 210 transitions from the FAST state to a MED decode state.
In the MED state, the PCI slave logic 210 determines whether it should retry the current cycle on the PCI bus 114. If the RE.sub.-- RETRY signal is deasserted, the DDMA.sub.-- MST.sub.-- DEC signal is asserted, the DDMA.sub.-- ISA DEC signal is deasserted and a PCI IRDY signal, S.sub.-- IRDY, is asserted, or pulled low, then the PCI slave logic 210 transitions from the MED state to the RETRY state. During the RETRY state, the PCI slave logic 210a furnishes the known retry sequence.
In the MED decode state, the PCI slave logic 210 monitors the PCI bus 114 for the retried first write operation. A CONFIG.sub.-- CYCLE signal is asserted if a configuration cycle is underway on the PCI bus 114. The CONFIG.sub.-- CYCLE signal is negated otherwise. A NO.sub.-- BE enable signal is asserted to indicate no byte enables are asserted on the PCI bus 114. The NO.sub.-- BE signal is deasserted otherwise.
If the CONFIG.sub.-- CYCLE signal and the NO.sub.-- BE signal are both deasserted; the ISA bus controller 212 has been granted control of the ISA bus I as indicated by the assertion of a PCI.sub.-- SD.sub.-- GNT signal from the arbiter 208; the DDMA.sub.-- ISA.sub.-- DEC signal is asserted; and the RETRY signal is deasserted, then the PCI slave logic 210 transitions from the MED decode state to a WAIT state. If the PCI operation is not claimed, then the PCI slave logic 210 transitions from the MED state to a SLOW decode state.
The PCI slave logic 210b of the bridge circuit 122b reaches the SLOW state during the shadowing cycle which is the state during which the bridge circuit 122b subtractively decodes the second write operation. The PCI slave logic 210 transitions from the SLOW decode state to a PCI.sub.-- BUSY state if the device select PCI DEVSEL.sub.-- signal, I.sub.-- DEVSEL, is asserted, or pulled
The PCI slave logic 210b performs subtracting decoding in the SLOW decode state. A subtractive decode enable signal SUB.sub.-- DECODE.sub.-- EN is furnished to the PCI slave logic 210b from a configuration register. The SUB.sub.-- DECODE.sub.-- EN signal is always asserted for the bridge circuit 122b and asserted for the bridge circuit 122a when the laptop unit L is not docked to the expansion base unit E.
The PCI slave logic 210 also receives a PW.sub.-- R.sub.-- signal. The deassertion of the PW.sub.-- R.sub.-- signal indicates a PCI write operation, and the assertion, or pulling low, of the PW.sub.-- R.sub.-- signal indicates a PCI read operation. The PCI slave logic 210 further receives, a NO.sub.-- POST signal. The assertion, or pulling high, of the NO.sub.-- POST signal indicates the write buffers are full, and the NO.sub.-- POST signal is negated otherwise.
If the SUB.sub.-- DECODE.sub.-- EN signal is asserted; the RETRY signal is negated; the S.sub.-- NO.sub.-- BE signal is negated; the PCI.sub.-- SD GNT signal is asserted; and either the NO.sub.-- POST signal is asserted or an I/O cycle is indicated by the assertion of the PM.sub.-- IO--signal, then the PCI slave logic 210 transitions from the SLOW decode state to the WAIT state.
If these conditions do not exist, then the PCI slave logic 210 checks whether data is available on the PCI bus 114 for the floppy drive registers. In this case, no byte enables are asserted on the PCI bus 114 as indicated by the assertion of a S.sub.-- NO.sub.-- BE signal. Alternatively, the operation on the PCI bus 114 can be a write operation with no posting required as indicated by the deassertion of the PW.sub.-- R.sub.-- signal; the negation of the NO.sub.-- POST signal; and the assertion of the PCI.sub.-- SD.sub.-- GNT signal. If neither of the above conditions occur in the SLOW decode state, then the PCI slave logic 210 transitions from the SLOW state to a slave preemption state SLV.sub.-- PRE.
In the slave preemption state SLV.sub.-- PRE, the PCI slave logic 210 determines whether the bridge circuit 122 has access to the ISA bus I. This is indicated by the negation of the PCI.sub.-- SD.sub.-- GNT signal. If the bridge circuit 122 does not have access to the ISA bus I, the PCI slave logic 210 remains in the SLV.sub.-- PRE state.
If the ISA bus controller 212 has been granted control of the ISA bus I, then the PCI slave logic 210 determines whether the PCI slave logic 212 will have to wait for access to the ISA bus I. Wait states occur either a write operation is pending as indicated by the deassertion of the PW.sub.-- R.sub.-- signal; the write posting buffers are not empty as indicated by the deassertion of the NO.sub.-- POST.sub.-- signal; or retry engine write posting buffers are not empty as indicated by the deassertion of a RE.sub.-- NO.sub.-- POST.sub.-- signal then the slave logic 210 transitions from the SLV.sub.-- PRE state to the WAIT state.
If none of the above conditions occur in the SLV.sub.-- PRE state, the slave logic 210 determines whether the data on the PCI bus 114 is ready. This occurs for a write operation on the PCI bus 114 as indicated by the deassertion of the PW.sub.-- R.sub.-- signal; the assertion of the NO.sub.-- POST signal or the negation of the RE.sub.-- NO.sub.-- POST signal. If this occurs, then the PCI slave logic 210 transitions from the SLV.sub.-- PRE state to the DATA.sub.-- RDY state.
In the DATA.sub.-- RDY state, the PCI slave logic 210 first examines the PCI bus 114 signals to determine if a retry is needed. The PCI bus 114 has associated signals well-known to those skilled in the art: FRAME. IRDY and TRDY. If a PCI FRAME.sub.-- signal, I.sub.-- FRAME, is asserted and the PCI IRDY.sub.-- signal, I.sub.-- IRDY, is asserted, then the PCI slave logic 210 transitions from the DATA.sub.-- RDY to the RETRY state.
If in the DATA.sub.-- RDY state the above-described conditions do not occur and the PCI FRAME.sub.-- signal I.sub.-- FRAME.sub.-- signal is deasserted, the PCI IRDY.sub.-- signal, I.sub.-- IRDY, IRDY.sub.-- is asserted and a PCI write operation is indicated by the deassertion of the PW.sub.-- R.sub.-- signal, then the PCI slave logic 210 transitions from the DATA.sub.-- RDY state to the IDLE state.
If none of the above conditions occur during the DATA.sub.-- RDY state, then the PCI slave logic 210 determines whether the I.sub.-- FRAME signal is deasserted, the I.sub.-- IRDY.sub.-- signal is asserted and the PW.sub.-- R.sub.-- signal is asserted which indicates a read operation. If this occurs, then the PCI slave logic 210 transitions from the DATA.sub.-- RDY state to the PCI.sub.-- BUSY state.
In the RETRY state, the PCI slave logic 210 monitors the PCI FRAME.sub.-- signal, I.sub.-- FRAME.sub.--, to determine whether the bus agent that drove the first write operation has relinquished control of the PCI bus 114. If the I.sub.-- FRAME.sub.-- signal is deasserted, then the PCI slave logic 210 transitions from the RETRY state to the PCI.sub.-- BUSY state. If not, then the PCI slave logic 210 remains in the RETRY state.
The PCI slave logic 210 remains in the PCI.sub.-- BUSY state until both the PCI FRAME signal, I.sub.-- FRAME, and the PCI IRDY.sub.-- signal, I.sub.-- RDY, are concurrently deasserted. This indicates an IDLE condition on the PCI bus 114. If the signals are not both deasserted, then the PCI slave logic 210 remains in the PCI.sub.-- BUSY state.
To summarize, the PCI slave logic 210a performs positive decoding in the MED state if the second write operation is not being driven on the PCI bus 114. The PCI slave logic 210a positively decodes accesses to the floppy drive registers. If the first write operation is positively decoded, then the PCI slave logic 210a transitions to the RETRY state. The PCI slave logic 210b performs subtractive decoding after the SLOW decode state.
4. Conclusion
In summary, for read operations to a floppy drive register address, the PCI slave logic 210a positively decodes and furnishes the data for the read operation to the PCI bus 114. For write operations, the bridge circuit 122a initiates the shadowing cycle.
To initiate the shadowing cycle, the PCI slave logic 210a furnishes the known retry sequence to the PCI bus 114 when the positive decode logic 200a indicates an access to the floppy drive registers and the retry logic 204a indicates the first write operation. The first write operation is retried, but masked, and the retry bus master logic 206a drives the second write operation, which is subtractively decoded by the bridge circuit 122b.
The retry logic 204a initiates the generation of the second write operation by the retry bus master logic 206a and interacts with the PCI slave logic 210a and the arbiter 208a to mask the bus request from the bus agent until after the second write operation.
After the bus request is unmasked, the bus agent is then granted control of the PCI bus 114. The bus agent can then retry the first write operation which is positively decoded and accepted by the bridge circuit 122a.
The foregoing disclosure and description of the invention are illustrative and explanatory thereof, and various changes in the size, shape, materials, components, circuit elements, wiring connections and contacts, as well as in the details of the illustrated circuitry and construction and method of operation may be made without departing from the spirit of the invention.
Claims
  • 1. A shadowing system for use with a computer system for shadowing write operations to a first register and a second register, the first and second registers coupled to a bus and having a common address, the computer system capable of providing a first write operation on the bus of register data to the common address and retrying the first write operation in response to a known retry sequence on the bus, the shadowing system comprising:
  • a detector coupled to the bus for detecting the first write operation to the bus of register data to the common address;
  • a retry sequencer coupled to the bus for providing the known retry sequence to the bus when said detector detects the first write operation;
  • a write generator coupled to the bus for providing a second write operation on the bus of the register data to the second register at the common address after the detector detects the first write operation; and
  • an inhibitor coupled to the bus for inhibiting the retrying of the first write operation in response to the known retry sequence until after said write generator completes the second write operation.
  • 2. The shadowing system of claim 1, wherein said inhibitor includes:
  • an arbitration request detector coupled to the bus for receiving a first arbitration request from the bus associated with the first write operation; and
  • an arbitration grant generator coupled to said arbitration request detector for providing a first arbitration grant to the bus associated with the first arbitration request, and
  • wherein said arbitration grant generator masks the first arbitration request after the first write operation and unmasks the first arbitration request after the second write operation.
  • 3. The shadowing system of claim 1, further comprising:
  • a first register write generator coupled to the bus for transferring the register data to the first register in response to the retrying of the first write operation, and
  • wherein said first register write generator positively decodes the first write operation.
  • 4. The shadowing system of claim 1, further comprising:
  • a second register write generator coupled to the bus for transferring the register data to the first register in response to the second write operation, and
  • wherein said second register write generator positively decodes the second write operation.
  • 5. The shadowing system of claim 1, wherein said computer system is capable of providing a read operation to the first bus from the common address, said shadowing system further comprising:
  • a transfer device coupled to the bus and to the first register for transferring read data from the first register to the bus in response to the read operation from the common address.
  • 6. The shadowing system of claim 5, wherein said transfer device positively decodes the read operation.
  • 7. The shadowing system of claim 1, where the first and second registers are first and second peripheral device registers and the bus is a PCI bus,
  • wherein said retry sequencer provides a standard PCI bus retry, and
  • wherein the write generator writes to the second peripheral device register.
  • 8. The shadowing system of claim 7, where the computer system includes a laptop unit dockable through quick connector circuitry within an expansion base unit, the first register is in the laptop unit and the second register is in the expansion base unit,
  • wherein said write generator writes across the quick connect circuitry.
  • 9. A computer system, the computer system comprising:
  • a bus;
  • a first register coupled to said bus and having a common address;
  • a second register coupled to said bus and having said common address;
  • a bus write generator for providing a first write operation to said bus of register data to the common address and retrying the first write operation in response to a known retry sequence on said bus;
  • a detector coupled to said bus for detecting the first write operation to said bus of register data to the common address;
  • a retry sequencer coupled to said bus for providing the known retry sequence to said bus when said detector detects the first write operation;
  • a write generator coupled to said bus for providing a second write operation on said bus of the register data to the second register at the common address after the detector detects the first write operation; and
  • an inhibitor coupled to said bus for inhibiting the retrying of the first write operation in response to the known retry sequence until after said write generator completes the second write operation.
  • 10. The computer system of claim 9, wherein said bus is a PCI bus.
  • 11. The computer system of claim 9, wherein said inhibitor includes:
  • an arbitration request detector coupled to the bus for receiving a first arbitration request from the bus associated with the first write operation; and
  • an arbitration grant generator coupled to said arbitration request detector for providing a first arbitration grant to the bus associated with the first arbitration request, and
  • wherein said arbitration grant generator masks the first arbitration request after the first write operation and unmasks the first arbitration request after the second write operation.
  • 12. The computer system of claim 9, further comprising:
  • a first register write generator coupled to the bus for transferring the register data to the first register in response to the retrying of the first write operation, and
  • wherein said first register write generator positively decodes the first write operation.
  • 13. The computer system of claim 9, further comprising:
  • a second register write generator coupled to the bus for transferring the register data to the first register in response to the second write operation, and
  • wherein said second write generator positively decodes the second write operation.
  • 14. The computer system of claim 9, wherein said computer system is capable of providing a read operation to the first bus from the common address, said shadowing system further comprising:
  • a transfer device coupled to the bus and to the first register for transferring read data from the first register to the bus in response to the read operation from the common address.
  • 15. The computer system of claim 9, wherein said transfer device positively decodes the read operation.
  • 16. The computer system of claim 9, where the first and second registers are peripheral device registers and the bus is a PCI bus.
  • 17. The computer system of claim 16, where the computer system includes a laptop unit and an expansion base unit, the first register is in the laptop unit and the second register is in the expansion base unit.
  • 18. A method for shadowing write operations to a first register and a second register of a computer system, the first and second registers coupled to a bus and having a common address, the computer system capable of providing a first write operation to the bus of register data to the common address and retrying the first write operation after a known retry sequence is present on the bus, the steps comprising:
  • detecting the first write operation on the bus of register data to the common address;
  • providing the known retry sequence on the bus when the first write operation is detected;
  • providing a second write operation to the bus of the register data to the common address after detecting the first write operation; and
  • inhibiting the retrying of the first write operation until after the providing of the second write operation.
  • 19. The method of claim 17, wherein the step of inhibiting the retrying of the first write operation includes:
  • receiving a first arbitration request from the bus associated with the first write operation; and
  • providing a first arbitration grant to the bus associated with the first arbitration request after the second write operation.
  • 20. The method of claim 17, further comprising the steps of:
  • positively decoding the first write operation; and
  • transferring the register data to the first register in response to the retrying of the first write operation.
  • 21. The method of claim 17, further comprising the steps of:
  • positively decoding the second write operation; and
  • transferring the register data to the first register in response to the second write operation.
  • 22. The method of claim 21, where the computer system is capable of providing a read operation to the first bus from the common address, the method further comprising the step of transferring read data from the first register to the bus in response to the read operation from the common address.
  • 23. The method of claim 21, further comprising the step of positively decoding the read operation.
  • 24. A shadowing system for use with a computer system having a portable computer and an expansion base unit for shadowing write operations, said portable computer and said expansion base unit coupled to a bus, the shadowing system comprising:
  • a first register coupled to said portable computer;
  • a second register coupled to said expansion base unit, the first and second registers coupled to the bus and having a common address, the computer system capable of providing a first write operation on the bus of register data to the common address and retrying the first write operation in response to a known retry sequence on the bus;
  • a detector coupled to the bus for detecting the first write operation to the bus of register data to the common address;
  • a retry sequencer coupled to the bus for providing the known retry sequence to the bus when said detector detects the first write operation;
  • a write generator coupled to the bus for providing a second write operation on the bus of the register data to the second register at the common address after the detector detects the first write operation; and
  • an inhibitor coupled to the bus for inhibiting the retrying of the first write operation in response to the known retry sequence until after said write generator completes the second write operation.
  • 25. The shadowing system of claim 24, wherein said inhibitor includes:
  • an arbitration request detector coupled to the bus for receiving a first arbitration request from the bus associated with the first write operation; and
  • an arbitration grant generator coupled to said arbitration request detector for providing a first arbitration grant to the bus associated with the first arbitration request, and
  • wherein said arbitration grant generator masks the first arbitration request after the first write operation and unmasks the first arbitration request after the second write operation.
  • 26. The shadowing system of claim 24, further comprising:
  • a first register write generator coupled to the bus for transferring the register data to the first register in response to the retrying of the first write operation, and
  • wherein said first register write generator positively decodes the first write operation.
  • 27. The shadowing system of claim 24, further comprising:
  • a second register write generator coupled to the bus for transferring the register data to the first register in response to the second write operation, and
  • wherein said second register write generator positively decodes the second write operation.
  • 28. The shadowing system of claim 24, wherein said computer system is capable of providing a read operation to the first bus from the common address, said shadowing system further comprising:
  • a transfer device coupled to the bus and to the first register for transferring read data from the first register to the bus in response to the read operation from the common address.
  • 29. The shadowing system of claim 28, wherein said transfer device positively decodes the read operation.
  • 30. The shadowing system of claim 24, where the first and second registers are first and second peripheral device registers and the bus is a PCI bus,
  • wherein said retry sequencer provides a standard PCI bus retry, and
  • wherein the write generator writes to the second peripheral device register.
US Referenced Citations (2)
Number Name Date Kind
5640570 St. Clair et al. Jun 1997
5642489 Bland et al. Jun 1997
Non-Patent Literature Citations (2)
Entry
DMA Support on the "PCIway", Aug. 2, 1995, Version 5.4, Preliminary, pp. 2-16.
PCI Specification, Rev. 2.1, A100910-940, pp. 37-72, Aug. 3, 1995.