WO1998010345A1 - Dynamic pipeline depth control method and apparatus - Google Patents

Dynamic pipeline depth control method and apparatus Download PDF

Info

Publication number
WO1998010345A1
WO1998010345A1 PCT/US1997/011715 US9711715W WO9810345A1 WO 1998010345 A1 WO1998010345 A1 WO 1998010345A1 US 9711715 W US9711715 W US 9711715W WO 9810345 A1 WO9810345 A1 WO 9810345A1
Authority
WO
WIPO (PCT)
Prior art keywords
bus
agent
transaction
agents
pipeline
Prior art date
Application number
PCT/US1997/011715
Other languages
French (fr)
Inventor
Stephen S. Pawlowski
Nitin V. Sarangdhar
Michael W. Rhodehamel
Matthew A. Fisch
Peter D. Macwilliams
Original Assignee
Intel Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corporation filed Critical Intel Corporation
Priority to AU35941/97A priority Critical patent/AU3594197A/en
Publication of WO1998010345A1 publication Critical patent/WO1998010345A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/387Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4208Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus
    • G06F13/4217Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus with synchronous protocol

Abstract

A dynamic pipeline depth control method and apparatus is used with a bus (20) which supports pipelined bus transactions. An agent (50) coupled to the bus (20) includes both a transmitter (64) and a receiver (66). The transmitter (64) is used to transmit an indication to the other agents (50) coupled to the bus (20) which prevents the other agents (50) from issuing a transaction on the bus (20). The receiver (66) is used to receive the indication, from another agent (50), that prevents the agents (50) from issuing a transaction on the bus (20).

Description

Dynamic Pipeline Depth Control Method and Apparatus
BACKGROUND OF THE INVENTION
1. Related Applications
This application is a continuation-in-part of U.S. Patent Application Serial No. 08/645,836, filed May 14, 1996, which is a continuation of U.S. Patent Application Serial No. 08/206,093, filed March 1, 1994, now Patent No. 5,548,733.
This application is related to U.S. Patent Application Serial No. 08/206,091, entitled, "Method and Apparatus for Transmitting Information on a Wired-OR Bus", filed March 1, 1994, which is incorporated by reference herein.
2. Field of the Invention
The invention generally relates to computer systems and in particular relates to pipelined bus systems for use in interconnecting devices within a computer system.
3. Background
Many state of the art bus systems are pipelined to allow for multiple bus transactions to be processed concurrently. For example, bus arbitration may be performed for one transaction while data transfer is performed concurrently for a separate bus transaction. In this manner, although only a single phase of a single bus transaction can be processed at any given clock cycle, multiple transactions can nevertheless be processed in parallel with different phases of the separate bus transactions performed concurrently. The number of transactions which are being processed in parallel at a particular time is referred to as the depth of the bus pipeline at that time. A problem can occur with pipelined busses if each of the devices or agents connected to the bus is not capable of accommodating the maximum depth of the bus pipeline. For example, if one particular agent is only capable of accommodating a pipeline having a depth of two, then the overall bus system may not function properly if other agents are attempting to pipeline transactions up to a greater pipeline depth. The effective maximum depth for a bus pipeline is constrained by the agent which can accommodate only the shallowest bus pipeline depth. The bus depth to which any particular agent is capable of accommodating may depend on the particular hardware of the bus agent or it may depend upon the current state of the bus agent. For example, during start-up or initialization of an agent, the agent may not be capable of processing any bus transactions, whereas once the agent has been fully activated, the agent may be capable of accommodating a bus pipeline depth of five. In other cases, the maximum depth to which an agent can process bus request is a dynamic function of the current state of input and output queues connected to the bus. For example, if the input queue of a bus agent is empty, the agent may be capable of accommodating a pipeline depth of five. However, if the queue of the bus agent is full or nearly full, the agent may only be capable of accommodating a bus pipeline depth of one or two.
It would be desirable to provide a bus mechanism to allow the overall depth of the bus pipeline to be dynamically varied in accordance with any particular constraints of the agents connected to the bus. One solution is to provide a central arbiter which controls the depth of the pipeline. In such a system, each individual bus agent transmits a signal to the central arbiter that specifies the maximum pipeline depth that the agent can accommodate. The arbiter then controls the depth of the pipeline in accordance with the signals received from each of the various bus agents. Although such a system is feasible, it is not necessarily an ideal system since the need for each agent to transmit signals to a central arbiter renders the responsiveness to changing pipeline depth requirements somewhat sluggish and may result in circumstances where multiple bus transactions are issued before the central arbiter has a chance to recognize and respond to a pipeline depth reduction request received from one of the agents. Such may necessitate re-transmission of bus transactions, resulting in overall bus inefficiency or, under certain circumstances, could result in the loss of data. In any case, it would be desirable to provide a more effective method for dynamically controlling the depth of the bus pipeline.
SUMMARY OF THE INVENTION
A dynamic pipeline depth control method and apparatus is described herein. An agent configured in accordance with the present invention is coupled to a bus which supports pipelined bus transactions. The agent includes both a transmitter and a receiver. The transmitter is used to transmit an indication to the other agents coupled to the bus which prevents the other agents from issuing a transaction on the bus. The receiver is used to receive the indication, from another agent, that prevents the agent from issuing a transaction on the bus.
According to one embodiment of the present invention, each agent tracks how close the current depth of the bus pipeline is to the maximum permissible pipeline depth supported by the agent. If the current depth becomes too close to the maximum permissible depth, then the agent sends a signal to the other agents on the bus indicating that they are not to issue a new transaction on the bus. BRIEF DESCRIPTION OF THE DRAWINGS
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
Figure 1 is a block diagram of a computer system such as may be used with one embodiment of the present invention.
Figure 2 illustrates a bus pipeline in accordance with one embodiment of the present invention.
Figure 3 is a block diagram of one agent connected to the bus of Figure 1, particularly illustrating functional units provided within the agent for allowing the agent to dynamically control the depth of the bus pipeline according to one embodiment of the present invention. Figure 4 is a state diagram illustrating the state transitions occurring within a bus state machine provided within the bus agent of Figure 3 according to one embodiment of the present invention.
Figure 5 is a state diagram illustrating the state transitions occurring within a sampling state machine provided within the bus agent of Figure 3 according to one embodiment of the present invention.
Figure 6 is a timing diagram illustrating an exemplary sequence of selected signals on a bus in accordance with one embodiment of the present invention.
DETAILED DESCRIPTION
Referring to Figures 1 - 6, preferred embodiments of the invention will now be described. Within these descriptions, certain specific details of exemplary embodiments of the invention will be set forth. However, in many cases, embodiments may be configured without the specific details in accordance with the principles of the invention.
Figure 1 illustrates a block diagram of a computer system such as may be used with one embodiment of the present invention. Computer system 10 includes a set of four microprocessors 12, 14, 16 and 18, each connected to a system or CPU bus 20. Additional devices are also connected to the system bus including a Dynamic Random Access Memory (DRAM) controller 22 which is in turn connected to a DRAM 24. An input/output (I/O) bridge 26 is also connected to system bus 20. I/O bridge 26 interconnects system bus 20 to an external bus 28 which may be, for example, a Peripheral Component Interconnect (PCI) bus or an Extended Industry Standard Architecture (EISA) bus. Peripheral devices (not shown), such as printers, modems, and the like, may be connected via external bus 28.
Each of microprocessors 12 - 18, DRAM controller 22, and I/O bridge 26 represents a bus agent connected to system bus 20. Additional bus agents, not shown, may also be connected to system bus 20. In one embodiment, a total of eight agents may be simultaneously connected to system bus 20. The total number of agents which can be connected to system bus 20 depends, for example, upon the electrical characteristics of the system bus. In other embodiments, more or fewer bus agents may be connected directly to system bus 20. Each of microprocessors 12 - 18 may be identical or, depending upon the implementation, the various microprocessors may differ. In one implementation, each microprocessor is a complex instruction set computer (CISC) microprocessor configured in accordance with Intel® Architecture. In other embodiments, the microprocessors may be reduced instruction set computer (RISC) microprocessors. In other implementations, only a single microprocessor may be connected to system bus 20.
Each agent includes a bus controller 50 (described below with reference to Figure 3.) Each bus controller is identical to bus controllers within each other agent or, at least, is configured to perform a minimum set of identical functions of the bus controllers of every other agent. Bus 20 and the various bus controllers within each bus agent collectively provide a pipelined bus system, wherein multiple bus transactions are processed simultaneously.
Figure 2 illustrates a bus pipeline in accordance with one embodiment of the present invention. The bus clock (BCLK) represents a bus clock with a total of seventeen clock cycles illustrated. Exemplary bus transactions 30 and 32 are also illustrated. Bus transactions 30 and 32 each include the following distinct bus phases: an arbitration phase, a request phase, an error phase, a snoop phase, a response phase, and a data transfer phase. Arbitration represents a phase wherein it is determined which of the bus agents can gain control of the bus. Any of the agents connected to system bus 20 may be configured as a bus arbitrator. The manner by which bus arbitration is performed is not pertinent to the present invention and will not be described in detail herein. The request phase represents a phase in which a request, such as a memory load, is placed on the bus. The error phase represents a phase wherein any error occurring as a result of the bus request is processed. The snoop phase represents a phase wherein data caches within the various microprocessors illustrated in Figure 1 are snooped to determine, for example, whether any contents of the respective caches are relevant to the transaction being snooped. The response and data transfer phases are phases in which the bus transaction is satisfied, for example, by having data retrieved from memory transmitted to an agent requesting the data.
The various phases of bus transactions 30 and 32 are performed at different clock cycles. For example, the arbitration phase for transaction 30 is performed at the end of clock cycle 1. The request phase for transaction 30 is performed at the end of clock cycle 3. The error phase, the snoop phase, and the response and data transfer phases are performed at the ends of clock cycles 6, 7, 13 and 13, respectively. In Figure 2, the band between clock cycles 11 and 12 indicates that an arbitrary number of additional clock cycles may occur before subsequent phases are executed. In other words, depending upon the particular bus transaction, there may be numerous clock cycles before the response and data transfer phases are performed. The exact number may depend upon, for example, the speed by which DRAM 24 of Figure 1 can respond to a memory load to retrieve requested data.
Hence, the separate phases of the single bus transaction are performed sequentially in time at different clock cycles. The discrete phases of bus transaction 32 are also performed sequentially at different clock cycles, each of which is staggered in time from the corresponding phase of bus transaction 30. In the example of Figure 2, at least three clock cycles must occur between the arbitration phase for bus transaction 30 and the arbitration phase for bus transaction 32. Other pipeline implementations may have a greater or lesser number of clock cycles between each successive phase. Numerous additional bus transactions may also be performed with, for example, the arbitration phase for a third bus transaction occurring at the end of clock cycle 7 and the arbitration phase for yet another bus transaction occurring at the end of clock cycle 10.
In general, only a single phase of any one bus transaction may be performed at each clock cycle. However, at a particular clock cycle, different phases of different transactions may be performed simultaneously. For example, at clock cycle seven, both the request phase of bus transaction 32 and the error phase of bus transaction 30 are performed simultaneously. According to one embodiment of the present invention, up to eight bus transactions can be performed simultaneously, each with a different phase or no phase being processed in any given clock cycle.
Thus, Figure 2 illustrates an example of a pipeline for use with system bus 20. The illustrated pipeline has a maximum depth of eight. As will be discussed below, a mechanism is provided for allowing any of the agents connected to system bus 20 to limit the depth of the bus to prevent more than a particular number of transactions from being processed simultaneously. This particular number can be any number less than or equal to the maximum depth of the pipeline.
Figure 3 illustrates a bus controller 50 within one of the bus agents illustrated in Figure 1. Each of the agents includes a bus controller performing at least the functions illustrated in Figure 3. Each individual bus controller may be configured using different hardware so long as the same set of minimum functions are performed.
Before discussing the particular functions of the bus controller of Figure 3, a brief overview of the operation of the bus controller is provided. As noted above, an important aspect of the present invention is the provision of a mechanism for allowing each agent connected to a bus to unilaterally and dynamically limit the depth of the pipeline of the bus. This is achieved, in part, by providing an indication on the bus of when to block new transactions from being placed on the bus. In one implementation, this indication is a block next request (BNR#) signal. For clarity, the BNR# signal line 60 is shown separately from all other lines within system bus 20. However, BNR# signal line 60 may be regarded as merely one line of the overall system bus 20.
In addition, a bus state machine is also provided in each agent connected to the bus which tracks the state of the bus from that agent's perspective. There are three states to the bus including a free state, a stalled state, and a throttled state. In the free state, the agent allows the depth of the pipeline of the bus to increase and allows any agent having control of the bus to dispatch as many bus transactions onto the bus as desired, up to a maximum predetermined bus depth, which, for the exemplary embodiment described herein, is eight. In the stalled state, the agent allows the current number of outstanding transactions on the bus to decrease but prevents the agent or agents having control of the bus from transmitting new bus transactions onto the bus. In the stalled state, the current number of outstanding transactions decreases with time as transactions that had already been transmitted on the bus are completed and are "drained" from the bus. In the throttled state, the agent allows one bus transaction to be issued at a maximum rate of once every four clocks. The throttled state may be used to generally maintain the pipeline of the bus at a constant depth. Such may be achieved, for example, by repeatedly returning the state machine to the throttled state each time the state machine transitions from throttled to free or stalled. The throttled state may also be used, for example, to allow one transaction on the bus and give the agent sufficient time to check whether that transaction targets the agent and would use up the last of the agent's resources (queue entries, etc.). However, the throttled state may be exploited for other purposes as well and, even if the state machine is repeatedly returned to the throttled state, the overall depth of the pipeline may increase or decrease somewhat.
In addition, a BNR# state machine 53 is also included in the bus controller of each agent. As discussed in more detail below, the BNR# state machine 53 indicates when the agent is to drive, or assert, an active BNR# signal on the bus in order to throttle or stall the bus.
It should be noted that the limitations imposed by the BNR# signal are in addition to limitations imposed by a bus arbitration system which grants control of the bus to the bus agents. Thus, only that agent, or those agents, which have already gained control of the bus via arbitration are allowed to transmit transactions onto the bus, subject to the state of the BNR# signal. The manner by which arbitration is achieved may be performed in accordance with conventional techniques which will not be described herein. The state of the bus is controlled or influenced by each agent by transmitting the BNR# signal to all other agents through the system bus. As will be described in more detail below, the state transitions are defined, and the BNR# signal is implemented, such that any one agent can throttle or stall the bus to thereby limit further bus transactions. The details of the state machines and the state transition signals will now be described with reference to the particular functional units illustrated in Figure 3.
Within bus controller 50 of Figure 3, the state of the bus is tracked by a bus state machine 52. The bus state machine 52 indicates, from the agent's perspective, whether the bus is in the free state, the throttled state or the stalled state. A bus state machine controller 54 controls bus state machine 52 to cause the state machine to transition from one state to another based on how close the bus pipeline depth is to a maximum permissible depth supported by the agent.
Bus controller 50 also includes a bus transaction controller 62, a bus transaction transmitter 64, a bus transaction receiver 66, and a bus transaction queue 68. Bus transaction receiver 66 receives information regarding bus transactions pending on bus 20. The information is processed by transaction controller 62 and stored within a transaction queue 68. The information stored within transaction queue 68 effectively defines the current depth of the pipeline of bus 20. Bus transaction controller 62 monitors queue 68 and determines if the depth of the pipeline is reaching a depth which may exceed a currently permissible depth for the particular agent. If such is the case, transaction controller 62 controls signal transmitter 56 to transmit a BNR# signal to prevent new transactions from being placed on the bus. For example, if transaction controller 62 determines that the pipeline depth is in danger of exceeding the agent's current capacity and that the depth must be prevented from increasing, controller 62 controls signal transmitter 56 to transmit a BNR# signal in subsequent clock cycle(s)preventing further bus transactions from being issued to the bus and ultimately resulting in a decrease in the depth of the pipeline as previously issued transactions are completed. Additionally, controller 62 also controls bus state machine controller 54 to transition to either the stalled or throttled state. Which of these states is transitioned to is dependent on how close the pipeline depth is to the maximum permissible depth for the agent.
A determination of whether the pipeline has met a maximum permissible depth for the particular agent is made by transaction controller 62 based on information received from internal device logic 70 of the agent and transaction queue 68. Such may occur as a result of internal queues within device logic 70 becoming full or as a result of device logic 70 switching to a state, such as a power- up state, wherein input bus transactions cannot be processed, or on transaction queue 68 becoming full.
In the event that the particular agent illustrated in Figure 3 has control of the bus and wishes to transmit a bus transaction via transaction transmitter 64, transaction controller 62 queries the receiver 58. If the receiver 58 samples an active BNR# signal 60, then transaction controller 62 controls transmitter 64 to prevent a transaction from being transmitted onto bus 20. However, if the receiver samples an inactive BNR# signal 60, then transaction controller 62 controls transaction transmitter 64 to transmit a bus transaction. As discussed above, transactions are transmitted by transmitter 64 only if the agent has current control of the bus as a result of previous arbitration.
Controller 62 controls transmitter 56 to drive the BNR# signal 60. The timing of driving the BNR# signal on line 60 is dependent on the state of the bus, as shown in Table I below. This timing is controlled by the BNR# state machine 53. The address strobe (ADS#) signal identified in Table I is asserted by an agent in the request phase of a transaction to indicate that a valid address has been placed on the bus. Table I
Bus State BNR# driven
Free In the third clock cycle after ADS# is asserted.
Throttled Three clock cycles after last BNR# transition from active to inactive.
Stalled Every other clock cycle.
Referring to Figure 4, the particular state transitions between the free, stalled and throttled states will now be described. In Figure 4, the free, stalled and throttled states are identified by reference numerals 80, 82 and 84, respectively. As illustrated, a transition can be made from any one of the states to any other of the states.
Whether a state transition occurs in an agent, and which transition occurs, depends on the current depth of the bus pipeline and the maximum depth supported by that agent. If the pipeline has met a maximum permissible depth for the agent, then the agent transitions to stalled state. If the pipeline is at a depth close to a maximum permissible depth for the agent, such as one or two transactions away, then the agent transitions to throttled state.
Additionally, the controller 62 also controls the bus state machine 52 to determine when to control transmitter 56 to assert or deassert the BNR# signal 60. The state of the bus state machine 52, in conjunction with how close the pipeline is to the maximum permissible depth for the agent, indicates when the BNR# signal 60 needs to be asserted.
How frequently the BNR# signal is to be driven is determined by the BNR# state machine 53, as illustrated in Figure 5. As illustrated, the BNR# state machine has three states: a drive every other clock signal state 86, a drive three clocks after BNR# active to inactive state 87, and a drive three clocks after ADS# state 88. The BNR# state machine transitions between the three states based on the state of the bus. If the bus is in the free state, then the BNR# state machine stays in the three clocks after ADS# state 88. If the bus is in the throttled state, then the BNR# state machine stays in the three clocks after BNR# active to inactive state 87. If the bus is in the stalled state, then the BNR# state machine stays in the every other clock state 86. A transition to another bus state causes the BNR# state machine 53 to transition to the state corresponding to that bus state.
According to one embodiment of the present invention, if an agent is not actively driving the BNR# signal 60 then the agent is sampling it via receiver 58 discussed above. In this embodiment, a new transaction can be placed on the bus every three clock cycles along with the corresponding ADS# assertion, subject to the BNR# signal 60. Thus, an agent which has gained control of the bus through arbitration will place a new transaction on the bus three clocks after the last assertion of ADS#, assuming the BNR# signal 60 was not sampled active. However, if the BNR# signal 60 was sampled active, then the agent places a new transaction on the bus in the clock cycle following the BNR# signal 60 being sampled inactive. Also in this embodiment, an agent which wishes to issue a request on the bus evaluates the sampled value of the BNR# signal 60 in the clock cycle preceding the cycle in which that agent wishes to enter the request phase of the transaction.
The system preferably employs a wired-OR logic with a low signal level representing an active signal and a high signal representing an inactive signal, such that each agent can unilaterally force an active low BNR# signal 60 in order to inhibit requests.
In the illustrated embodiment, an agent can transition from the stalled state directly to the free state. In this embodiment, an agent which has, for example, multiple entries become available in a queue can transition directly to the free state. This alters when the agent will assert the BNR# signal, if at all, as discussed above with reference to Table I. Alternatively, transitioning limitations could be imposed on the agents, such as requiring the agents to transition from the stalled state to the free state through the throttled state. In an alternate embodiment of the present invention, the agents do not include a throttled state. In this alternate embodiment, the agents simply transition between the free and stalled states.
Figure 6 illustrates a timing diagram of an exemplary sequence of signals. Circles 90 identify sampling points at which the sampled BNR# signal affects whether an agent will issue a request on the bus. As can be seen, the sampling points do not necessarily occur at every clock cycle, but can occur at every second or third clock cycle.
As noted, in the currently preferred implementation the number of clock cycles between each sampling point is either two or three. The duration between sampling points has been selected to eliminate a wired-OR glitch problem which can occur in transmission systems employing wired-OR logic. The details of the selection of the sampling points are provided in the co-pending application identified above. However, it should be noted that those details are not pertinent to the present invention, and a wide variety of implementations may be developed using different criteria for the sampling points. Indeed, if some other form of logic, rather than wired-OR logic is employed, then a different granularity of sampling points may be necessary or desirable. In certain implementations it may be desirable to sample the state transition signal at each clock cycle. However, in the exemplary implementation, since new bus transactions can only be output at least three clock cycles apart, the sampling of the transition signals at every two or three clock cycles is sufficient to adequately sample the state of the system and to control the depth of the pipeline.
In Figure 6, the clock signal is identified by reference numeral 94 and an address strobe signal (ADS#), which is also an active low signal, is illustrated by reference numeral 96. The address strobe signal illustrates the assertion of a transaction onto the bus. As can be seen, transactions are issued onto the bus only in clock cycles 1, 5, 11, 14, and 17. The assertion of the BNR# signal in clock cycle 1 prevents an agent from placing a transaction on the bus in clock cycle 4, but deassertion of the BNR# signal sampled in clock cycle 4 allows a transaction on the bus in clock cycle 5. Similarly, assertion of the BNR# signal in clock cycle 5 prevents an agent from placing a transaction on the bus in clock cycle 8, and assertion of the BNR# signal in clock cycle 7 prevents an agent from placing a transaction on the bus in clock cycle 9. But, deassertion of the BNR# signal in clock cycle 9 allows an agent to place a transaction on the bus in clock cycle 11.
As illustrated in Figure 6, the agent asserting the BNR# signal 60 transitions the bus from the throttled state to the stalled state in clock cycle 5, and remains in the stalled state until clock cycle 8, where the agent transitions the bus to the free state.
What has been described is a bus system wherein each agent connected to the bus is capable of limiting the depth of a pipeline of the bus. Although described with respect to a particular exemplary embodiment, principles of the invention may be exploited in other embodiments and employed for different applications. The exemplary implementation described herein involves a multiprocessor computer system employing one or more microprocessors configured in accordance with Intel architecture. However, the principles of the invention may be exploited in other computer systems and environments as well. Accordingly, the embodiments described herein should be regarded as merely illustrative of the invention and should not be construed as limiting the scope of the invention.

Claims

What is claimed is:
1. In an agent coupled to a bus, the bus supporting a pipeline having a plurality of phases, a method for allowing the agent to control at least one phase of the pipeline, said method comprising the steps of: a) tracking how close current pipeline depth of the bus is to a maximum permissible pipeline depth supported by the agent; and b) unilaterally preventing other agents coupled to the bus from issuing transactions on the bus if the current pipeline depth is within a predetermined number of transactions of the maximum permissible pipeline depth.
2. The method of claim 1 , wherein the preventing step b) comprises the step of asserting a signal on the bus at a predetermined time to indicate to other agents on the bus not to place a transaction on the bus.
3. The method of claim 2, wherein the predetermined number of transactions is one transaction.
4. A computer system comprising: a bus for transmitting pipelined bus transactions; and a plurality of agents coupled to the bus, each of the plurality of agents including, a transmitter to transmit an indication to the plurality of agents to prevent any of the plurality of agents from issuing a transaction on the bus, and a receiver to receive the indication from another agent that none of the plurality of agents is to issue a transaction on the bus.
5. The computer system of claim 4, wherein the indication is a signal which is part of the bus.
6. The computer system of claim 4, wherein each of the plurality of agents further includes a bus state machine to indicate when the indication is to be transmitted, the bus state machine having a plurality of states.
7. The computer system of claim 6, wherein the plurality of states includes a free state, a throttled state, and a stalled state.
8. The computer system of claim 6, wherein the bus state machine can transition directly from any one of the plurality of states to any other of the plurality of states.
9. The computer system of claim 8, wherein which of the plurality of states the bus state machine transitions to is responsive to how close current pipeline depth of the bus is to a maximum permissible pipeline depth supported by the agent.
10. In an agent coupled to a bus, the bus supporting a pipeline having a plurality of phases, an apparatus for allowing the agent to control at least one phase of the pipeline, said apparatus comprising: means for tracking how close current pipeline depth of the bus is to a maximum permissible pipeline depth supported by the agent; and means for unilaterally preventing other agents coupled to the bus from issuing transactions on the bus if the current pipeline depth is within a predetermined number of transactions of the maximum permissible pipeline depth.
11. The apparatus of claim 10, wherein the means for unilaterally preventing comprises means for asserting a signal on the bus at a predetermined time to indicate to other agents on the bus not to place a transaction on the bus.
12. In an agent coupled to a bus, the bus supporting a pipeline having a plurality of phases, an apparatus comprising: a controller to track how close current pipeline depth of the bus is to a maximum permissible pipeline depth supported by the agent; and a transmitter, coupled to the controller, to unilaterally prevent other agents coupled to the bus from issuing transactions on the bus if the current pipeline depth is within a predetermined number of transactions of the maximum permissible pipeline depth.
13. The apparatus of claim 12, wherein the transmitter is configured to assert a signal on the bus at a predetermined time to indicate to other agents on the bus not to place a transaction on the bus.
14. The apparatus of claim 12, wherein the predetermined number of transactions is one transaction.
PCT/US1997/011715 1996-09-06 1997-07-03 Dynamic pipeline depth control method and apparatus WO1998010345A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU35941/97A AU3594197A (en) 1996-09-06 1997-07-03 Dynamic pipeline depth control method and apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/709,214 1996-09-06
US08/709,214 US5784579A (en) 1994-03-01 1996-09-06 Method and apparatus for dynamically controlling bus access from a bus agent based on bus pipeline depth

Publications (1)

Publication Number Publication Date
WO1998010345A1 true WO1998010345A1 (en) 1998-03-12

Family

ID=24848930

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1997/011715 WO1998010345A1 (en) 1996-09-06 1997-07-03 Dynamic pipeline depth control method and apparatus

Country Status (5)

Country Link
US (1) US5784579A (en)
AR (1) AR009549A1 (en)
AU (1) AU3594197A (en)
TW (1) TW347496B (en)
WO (1) WO1998010345A1 (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108736A (en) * 1997-09-22 2000-08-22 Intel Corporation System and method of flow control for a high speed bus
US7107371B1 (en) 1997-09-22 2006-09-12 Intel Corporation Method and apparatus for providing and embedding control information in a bus system
US6088370A (en) 1997-09-22 2000-07-11 Intel Corporation Fast 16 bit, split transaction I/O bus
US6609171B1 (en) * 1999-12-29 2003-08-19 Intel Corporation Quad pumped bus architecture and protocol
JP4554016B2 (en) * 2000-01-20 2010-09-29 富士通株式会社 Integrated circuit device bus control system with improved bus utilization efficiency
US7089376B2 (en) * 2003-03-20 2006-08-08 International Business Machines Corporation Reducing snoop response time for snoopers without copies of requested data via snoop filtering
US6970962B2 (en) * 2003-05-19 2005-11-29 International Business Machines Corporation Transfer request pipeline throttling
DE10347301B4 (en) * 2003-10-08 2007-12-13 Infineon Technologies Ag Circuit with a bus with multiple receivers

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4229790A (en) * 1978-10-16 1980-10-21 Denelcor, Inc. Concurrent task and instruction processor and method
US4412286A (en) * 1980-09-25 1983-10-25 Dowd Brendan O Tightly coupled multiple instruction multiple data computer system
US4480307A (en) * 1982-01-04 1984-10-30 Intel Corporation Interface for use between a memory and components of a module switching apparatus
US5006982A (en) * 1988-10-21 1991-04-09 Siemens Ak. Method of increasing the bandwidth of a packet bus by reordering reply packets
US5019967A (en) * 1988-07-20 1991-05-28 Digital Equipment Corporation Pipeline bubble compression in a computer system
US5125084A (en) * 1988-05-26 1992-06-23 Ibm Corporation Control of pipelined operation in a microcomputer system employing dynamic bus sizing with 80386 processor and 82385 cache controller
US5193179A (en) * 1988-08-09 1993-03-09 Harris Corporation Activity monitor system non-obtrusive statistical monitoring of operations on a shared bus of a multiprocessor system
US5313467A (en) * 1989-11-15 1994-05-17 Digital Equipment Corporation Integrated communication link having a dynamically allocatable bandwidth and protocol for transmission of allocation information over the link
US5369775A (en) * 1988-12-20 1994-11-29 Mitsubishi Denki Kabushiki Kaisha Data-flow processing system having an input packet limiting section for preventing packet input based upon a threshold value indicative of an optimum pipeline processing capacity

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4229790A (en) * 1978-10-16 1980-10-21 Denelcor, Inc. Concurrent task and instruction processor and method
US4412286A (en) * 1980-09-25 1983-10-25 Dowd Brendan O Tightly coupled multiple instruction multiple data computer system
US4480307A (en) * 1982-01-04 1984-10-30 Intel Corporation Interface for use between a memory and components of a module switching apparatus
US5125084A (en) * 1988-05-26 1992-06-23 Ibm Corporation Control of pipelined operation in a microcomputer system employing dynamic bus sizing with 80386 processor and 82385 cache controller
US5019967A (en) * 1988-07-20 1991-05-28 Digital Equipment Corporation Pipeline bubble compression in a computer system
US5193179A (en) * 1988-08-09 1993-03-09 Harris Corporation Activity monitor system non-obtrusive statistical monitoring of operations on a shared bus of a multiprocessor system
US5006982A (en) * 1988-10-21 1991-04-09 Siemens Ak. Method of increasing the bandwidth of a packet bus by reordering reply packets
US5369775A (en) * 1988-12-20 1994-11-29 Mitsubishi Denki Kabushiki Kaisha Data-flow processing system having an input packet limiting section for preventing packet input based upon a threshold value indicative of an optimum pipeline processing capacity
US5313467A (en) * 1989-11-15 1994-05-17 Digital Equipment Corporation Integrated communication link having a dynamically allocatable bandwidth and protocol for transmission of allocation information over the link

Also Published As

Publication number Publication date
TW347496B (en) 1998-12-11
AR009549A1 (en) 2000-04-26
US5784579A (en) 1998-07-21
AU3594197A (en) 1998-03-26

Similar Documents

Publication Publication Date Title
US5548733A (en) Method and apparatus for dynamically controlling the current maximum depth of a pipe lined computer bus system
US5873114A (en) Integrated processor and memory control unit including refresh queue logic for refreshing DRAM during idle cycles
EP1133733B1 (en) Host controller interface descriptor fetching unit
US5627976A (en) Crossing transfers for maximizing the effective bandwidth in a dual-bus architecture
US5467295A (en) Bus arbitration with master unit controlling bus and locking a slave unit that can relinquish bus for other masters while maintaining lock on slave unit
US6212592B1 (en) Computer system for processing system management interrupt requests
AU628407B2 (en) High speed bus with virtual memory data transfer capability
AU687627B2 (en) Multiprocessor system bus protocol for optimized accessing of interleaved storage modules
EP0511476A2 (en) Multiprocessor system
US5313591A (en) Computer bus arbitration for N processors requiring only N unidirectional signal leads
US5475850A (en) Multistate microprocessor bus arbitration signals
KR100708096B1 (en) Bus system and execution scheduling method for access commands thereof
JPH06161950A (en) Control method of data transmission used for computation system provided with multiple bus architecture
US5784579A (en) Method and apparatus for dynamically controlling bus access from a bus agent based on bus pipeline depth
US7054987B1 (en) Apparatus, system, and method for avoiding data writes that stall transactions in a bus interface
US5857082A (en) Method and apparatus for quickly transferring data from a first bus to a second bus
US6360285B1 (en) Apparatus for determining memory bank availability in a computer system
US6145048A (en) Method of processing system management interrupt requests
US6009477A (en) Bus agent providing dynamic pipeline depth control
JPS6237428B2 (en)
AU666999B2 (en) Pipelined data ordering system
US6961800B2 (en) Method for improving processor performance
US7099968B2 (en) System and method for generating bus requests in advance based on speculation states
US20030084223A1 (en) Bus to system memory delayed read processing
US7797472B2 (en) Method and apparatus for providing overlapping defer phase responses

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AL AM AT AT AU AZ BA BB BG BR BY CA CH CN CU CZ CZ DE DE DK DK EE EE ES FI FI GB GE GH HU IL IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SK SL TJ TM TR TT UA UG UZ VN YU ZW AM AZ BY KG KZ MD RU TJ TM

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH KE LS MW SD SZ UG ZW AT BE CH DE DK ES FI FR GB

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase

Ref country code: JP

Ref document number: 1998512631

Format of ref document f/p: F

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

NENP Non-entry into the national phase

Ref country code: CA

122 Ep: pct application non-entry in european phase