Abstract:
A plurality of specialized controllers (e.g., 202, 204 &amp; 206), each one adapted to control a particular type of data transfer operation, control the flow of data between a system bus (104) and a local bus (106) on a computer adapter card (102). When the Direct Memory Access (DMA) controller (202) is controlling a DMA operation on the local bus, certain other controllers (204 &amp; 206) can break-in to the current DMA operation, temporarily halting the DMA opertion until the other controller has completed its data transfer operation. To break-in to a DMA operation, handshaking signals between the DMA controller and the local bus interface circuit (212) are temporarily blocked by blocking signals from a break-in logic circuit (210). The break-in circuit includes a four-state state machine to block the handshaking signals at the appropriate times, and to signal the interrupting controller to begin its data transfer operation. When breaking-in to a DMA operation in this manner, the operation of the DMA controller is not altered; instead, to the DMA controller, it appears that the local bus interface circuit is merely slow to respond with its acknowledge handshake.

Description:
BACKGROUND OF THE INVENTION 
     This invention relates to computers and, more particularly, to a computer circuit for preempting a Direct Memory Access (DMA) or other data transfer operation. 
     A computer system typically includes a plurality of controllers for transferring data throughout the system. Each of these controllers is designed to transfer data in a unique way; for example, one controller may handle direct memory access (DMA) operations, while another handles selected slave operations. To control the flow of data, each of these controllers must have access to certain &#34;system resources&#34; within the system, such as a particular bus or bus interface circuit. Since some of these resources must be shared by more than one controller, the operations performed by each one of the controllers are, in most cases, mutually exclusive. Consequently, when two controllers have data to transfer through the system at the same time, something must resolve the contention between the two controllers. 
     Since DMA operations typically transfer large amounts of data and involve use of the system resources for extended periods of time, the DMA operation may be preempted to allow another controller temporary access to the system resources. When the preempting controller completes its data transfer operation, control of the resources is returned to the DMA controller and, after re-establishing ownership of the system resources, DMA operations continue at the point they were interrupted. The problem with this preemption scheme, however, is that additional time is required by the DMA controller to re-establish its control of the system resources after the preempting controller has completed its operations. It would be desirable, however, if the preemption could be &#34;transparent&#34; to the DMA such that when the preempting controller has completed its operation, control is returned to the DMA controller which continues its DMA operation without having to re-establish ownership resources. Accordingly, the invention described below is a circuit that permits transparent preemption of DMA or other data transfer operations. 
     SUMMARY OF THE INVENTION 
     Briefly, the invention is an interface circuit for controlling the flow of data between first and second computer buses. The interface circuit includes a first controller means for controlling the transfer of data. The first controller has an output port for a first control signal and an input port for receiving a second control signal. A second controller means is also included. The second controller has an output port for a third control signal and an input port for receiving the second control signal. A bus interface controller for transferring data to and from the first bus has an output port for the second control signal and an input port for receiving the first and third control signals from the first and second controller means. Break-in circuitry is included for blocking the first control signal from the bus interface controller in response to a request signal from the second controller to transfer data. 
     In another embodiment, the invention is a computer adapter card for use in a computer system having a first bus. The adapter card includes a second bus, as well as memory and a processor connected to the second bus. Included on the adapter card are first and second controller means for controlling the transfer of data. The first controller has an output port for a first control signal, and an input port for receiving a second control signal. The second controller has an output port for a third control signal, and an input port for receiving the second control signal. Also included is a bus interface controller for transferring data to and from the first bus. The bus interface controller has an output port for the second control signal, and an input port for receiving the first and third control signals from the first and second controllers. Break-in circuitry is included for blocking the first control signal from the bus interface controller in response to a request from the second controller to transfer data. Also included is means for connecting the adapter card to the first bus. 
     In still another embodiment, the invention is a break-in circuit, for use with first and second controller means for transferring data, and a bus interface controller for transferring data to and from a computer bus. The first controller has an output port for a first control signal and an input port for a second control signal. The second controller has an output port for a third control signal and an input port for the second control signal. The bus interface controller has an output port for the second control signal and an input port for the first and third control signals. The break-in circuit includes means for blocking the first control signal from the bus interface controller in response to a request signal from the second controller to transfer data. The break-in circuit also includes a means for blocking the second control signal from the first controller in response to the request signal from the second controller. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of a computer system with an adapter circuit employing a bus master interface circuit with data transfer break-in. 
     FIG. 2 is a block diagram of a portion of the bus master interface circuit. 
     FIG. 3 is a timing diagram illustrating the data transfer break-in operation of the interface circuit. 
     FIG. 4 is a schematic diagram of the break-in circuitry. 
     FIG. 5 is a state diagram of the data transfer break-in operation. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Referring to FIG. 1, a computer adapter card 102 is connected to the system bus 104 of a computer system. System bus 104 is preferably a well know Micro Channel (tm) bus, although other computer buses may also be suitable. Adapter card 102 includes a local bus 106 to which a local microprocessor 108 is connected. Local memory 120 is also connected to the local bus 106, and is directly addressable by the device currently in control of the local bus. A bus master interface circuit 110, which is divided into two modules 112 and 114, coordinates the transfer of data between system bus 104 and local bus 106. In general, the second module 114 controls the transfer of data through the first module 112. 
     Data and control signals are passed between the two modules on the &#34;Control&#34; and &#34;IC Bus&#34; lines. The &#34;REQB&#34; line is set active by the second module 114 when it requires control of the system bus 104 to transfer data to or from the system bus. In response to this request, a system bus arbitration circuit 115 in the first module 112 performs the functions necessary to gain control of the system bus; and when mastership of the system bus is &#34;won&#34;, the first module sends an active SB --  WON signal back to the second module, indicating that the second module now has control of the system bus. 
     Similarly, when the second module requires control of the local bus, it asserts HOLD active. In response to the HOLD request, the local microprocessor 108 will release control of the local bus and assert HLDA (Hold Acknowledge) active. When HLDA is active, the second module 114 can assume control of the local bus. When the data transfer is complete, the second module releases control of the local bus and sets HOLD inactive. 
     There are several &#34;operations&#34; for transferring data through the system. These data transfer operations are described below: 
     1. LBSS (Local Bus Selected Slave) In the LBSS operation, the interface circuit 110 is addressed as an I/O slave on the local bus 106. That is, the interface circuit includes non-illustrated registers that are directly addressable from the local bus by the device currently in control of the local bus. 
     2. LB --  DMAC (Local Bus Direct Memory Access Controller) The interface circuit 110 is the master of the local bus 106 in this operation, and data is transferred between the local bus and the memory array 116 of the interface circuit. The memory array is an array of data buffers, e.g., 64 byte-wide registers, that are used in transferring data during DMA (Direct Memory Access) operations. 
     3. SB --  DMAC (System Bus Direct Memory Access Controller) For this operation, the interface circuit 110 is the master of the system bus 104, and data is transferred between the system bus and the memory array 116. 
     4. SBSS (System Bus Selected Slave) The interface circuit 110 is addressed as an I/O slave on the system bus 104 in this data transfer operation. In other words, the interface circuit 110 includes non-illustrated registers that are directly addressable from the system bus by the device currently in control of the system bus. 
     5. SBMS (System Bus Memory Slave) In this data transfer operation, memory 120 on the local bus 106 is addressable from the system bus 104 as a memory slave. That is, when the master of the system bus asserts a particular address on the system bus, a corresponding memory address on the local bus 106 is accessed, such that data is transferred between memory on the local bus and the system bus. Or, in other words, local bus memory 120 is mapped onto system bus 104 in this operation. 
     6. DMAP (Direct Memory Access Port) For this operation, the interface circuit 110 is master of the system bus 104, and data transfers occur between data registers 118 and the system bus. Data registers 118 are directly accessible from the local bus 106 as I/O slaves. 
     In FIG. 2, a block diagram of the portion of the interface circuit that contains the break-in circuitry is illustrated. Referring to this figure, the interface circuit 110 includes a Direct Memory Access Controller (DMAC) 202 that controls both the SB --  DMAC and LB --  DMAC operations described above. In addition, this portion of the interface circuit also includes a Direct Memory Access Port (DMAP) controller 204 and a System Bus Selected Slave (SBSS) 206 controller. The SBSS controller also controls SBMS operations as well. The design of these controllers, as well as the design of arbiter 208 and local bus interface circuit 212 described below, are well know in the art. Their operation, however, is described in some detail below so that the reader can understand the interconnection to, and operation of the break-in logic 210. 
     When either one of the three controllers, DMAC 202, DMAP 204 or SBSS 206 has a data transfer operation to perform, it must first request control of the appropriate system resources to determine if they are available. Each of these controllers has a request or &#34;REQ&#34; line, which is connected to an internal arbiter 208, and which is set active when the controller has an operation to perform. Specifically, DMAC controller 202 sets LB --  DMAC --  REQ active when there is a local bus DMAC operation pending; DMAP 204 sets DMAP --  REQ active when there is a DMA Port operation pending; and SBSS sets SBSS --  REQ active when there is a system bus selected slave operation pending, and MS --  REQ active when there is a system bus memory slave operation pending. If there is more than one request pending, the internal arbiter 208 determines which request should be granted first, based on a predetermined priority scheme. The internal arbiter 208 then issues a WON&#39; signal to the particular controller that &#34;won&#34; the arbitration. For example, if the request was granted to the SBSS, SBSS --  WON&#39; would be set active. When a controller has &#34;won&#34;, it takes control of its corresponding shared resources (buses, bus interface circuits, etc.) and initiates a data transfer. 
     But, if a DMAC operation is currently being executed on the local bus, and a request is asserted for either a DMAP operation (DMAP --  REQ), an SBSS operation (SBSS --  REQ) or an SBMS operation (MS --  REQ), these operations may &#34;break-in&#34; to the current DMAC operation, thereby temporarily suspending the DMAC operation. This is accomplished by the break-in logic 210. 
     Referring to FIG. 2, and to the timing diagram of FIG. 3, the DMAC first requests a local bus DMAC operation by asserting LB --  DMAC --  REQ active. In response to this request, the internal arbiter 208 sends an active HOLD request to the local microprocessor 108, which in turn responds with a HOLDA signal when it releases control of the local bus 106. In response to the release of the local bus, the internal arbiter sets LB --  DMAC --  WON active to indicate to the DMAC that it may begin a data transfer operation. 
     To perform a DMAC operation on the local bus, the DMAC controller 202 first asserts the local bus cycle start or LB --  CYC --  START line active. If there are no current break-in operations, the BLOCK --  START line from the break-in logic 210 is set low and, consequently, the active LB --  CYC --  START signal from DMAC 202 is coupled through AND gate 214 and OR gate 216 to a local bus interface controller 212. The local bus interface controller then begins the DMAC data transfer operation on the local bus and, in response, pulses a local bus cycle acknowledge or LB --  CYC --  ACK line. When no break-in operations are current, the BLOCK --  ACK output from the break-in logic 210 is set low and, consequently, the LB --  CYC --  ACK signal is coupled back to the DMAC through AND gate 218. This completes the handshake between the DMAC 202 and the local bus interface circuit 212, and allows the DMAC data transfer to continue. It should be noted that the cycle start line LB --  CYC --  START from the DMAC remains active as long as the DMAC has data transfers to perform and as long as the LB --  DMAC --  WON signal is active. Similarly, the local bus interface circuit 212 will pulse the cycle acknowledge signal LB --  CYC --  ACK once for every data transfer that it performs on the local bus. 
     If, for example, the SBSS controller 206 now needs control of the system resources of the interface circuit to perform a memory slave operation (SBMS), it asserts the SBMS --  REQ line active. Since the internal arbiter has already granted control of the internal resources to the DMAC controller by asserting LB --  DMAC --  WON, it cannot respond to the request from the SBSS controller until the DMAC operation is complete. But, the active SBMS --  REQ is also coupled to the break-in logic 210, which can and does respond to the request by setting BI --  SBMS --  WON active. This active BI --  SBMS --  WON signal is then coupled to the SBSS controller, which begins the requested memory slave operation. But first, the break-in logic asserts the BLOCK --  START line high, which &#34;blocks&#34; or inhibits the LB --  CYC --  START signal at AND gate 214 and prevents it from reaching the local bus interface circuit 212. After blocking the cycle start signal, the break-in logic sets BLOCK --  ACK active, which blocks the cycle acknowledge signal LB --  CYC --  ACK from reaching the DMAC controller 202. Consequently, it appears to the DMAC controller that it still has control of the local bus controller 212, and that the local bus interface is simply slow in responding to its request. However, the SBSS controller actually has temporary control of the local bus interface circuit 212. 
     When the SBSS controller has completed its data transfers, it sets the SBMS --  REQ line inactive and, in response, the break-in logic sets both blocking signals inactive, thereby unblocking the cycle start and cycle acknowledge signals, and returning control of the resources to the DMAC controller. 
     FIG. 4 is a schematic diagram of break-in logic 210, and FIG. 5 is a state diagram of the operation of the break-in logic. Referring to these figures, the break-in logic has four (4) states, labeled S0, S1, S2 and S3 in FIG. 5. These four states correspond to the following states of asynchronous SR latches SR1 (402), SR2 (404) and SR3 (406) of FIG. 4: 
     
         ______________________________________SR1               SR2      SR3______________________________________S0      RESET         RESET    RESETS1      SET           RESET    RESETS2      SET           SET      RESETS3      SET           SET      SET______________________________________ 
    
     When a local bus DMAC operation is underway such that LB --  DMAC --  WON is active, the break-in circuit is waiting in state S0 for a break-in request BI --  REQ to occur. BI --  REQ will be asserted active through OR gate 408 and AND gate 410 in response to a system bus memory slave operation request (SBMS --  REQ), a system bus selected slave operation request (SBSS --  REQ), or a direct memory access port operation request (DMAP --  REQ) in which SB --  WON has been asserted active. When break-in request (BI --  REQ) is active, SR1 is set through AND gate 412 at the next cycle acknowledge pulse from the local bus interface circuit 212. And, when the cycle acknowledge pulse goes low, the circuit enters the S2 state when latch SR2 is set through AND gate 414. In the S2 state, the BLOCK --  START signal is asserted active. When LB --  BUSY goes low, the circuit enters the third state wherein latch SR3 is set through AND gate 416. LB --  BUSY is a signal from the local bus interface circuit that simply indicates that the local bus interface circuit is busy completing its current operation. In state S3, the corresponding break-in won signal is set active through AND gate 418, 420 or 422. As shown in FIG. 2, the won signal, BI --  DMAP --  WON, BI --  SBSS --  WON or BI --  SBMS --  WON, enables the corresponding controller 202, 204 or 206 through one of the OR gates 220, 222 or 224, which then performs its data transfer. When the controller removes the active request signal (SBMS --  REQ, SBSS --  REQ or DMAP --  REQ), latches SR1, SR2 and SR3 are reset through inverter 424, thereby completing the break-in operation and returning control to the DMAC.