Method and apparatus for dynamic buffer allocation in a bus bridge for pipelined reads
First Claim
1. A bridge circuit for transmitting message packets between a first and second node in a system employing a packet switched, split transaction bus protocol, the bridge circuit comprising:
- first and second buffers, each buffer having an input line, an output line and a number of buffer slots for temporarily storing message packets; and
a first state machine coupled to the first node, to the input line of the first buffer and to the output line of the second buffer, the first state machine including a first counter for monitoring outstanding read transactions launched to the first node, a second counter for monitoring read response transactions loaded into the first buffer by the first node, and a third counter for monitoring currently loaded buffer slots of the first buffer, the first state machine including logic for transferring transactions to and from the first node according to launch and load slot availability criteria determined from the first, second, and third counters; and
a second state machine coupled to the second node, to the input line of the second buffer, and to the output line of the second buffer, the second state machine including a first counter for monitoring outstanding read transactions launched to the second node, a second counter for monitoring read response transactions loaded into the second buffer by the second node, and a third counter for monitoring currently loaded buffer slots of the second buffer, the second state machine also including logic for transferring transactions to and from the second node according to launch and load slot availability criterion determined from the first, second, and third counters.
2 Assignments
0 Petitions
Accused Products
Abstract
A bus bridge circuit employs a dynamic allocation scheme that allows read transactions to be pipelined without deadlock and without the need for permanently reserving multiple buffer slots for read response transactions. The bus bridge circuit associates input and output buffers with a node and includes a state machine to monitor the number and type of transaction packets currently in slots that make up the buffers. In particular, the state machine monitors the number of transaction packets loaded in the output buffer slots, the number of outstanding read transactions for the node, and the number of read response transactions currently loaded in the output buffer. The state machine then allows the node to load a READ or WRITE transaction only if the monitored data indicates at least one of the buffer slots will be available to service a READ RESPONSE subsequently loaded by the node. The state machine launches READs to the node only when an unallocated buffer slot is available to service the corresponding READ RESPONSE.
119 Citations
29 Claims
-
1. A bridge circuit for transmitting message packets between a first and second node in a system employing a packet switched, split transaction bus protocol, the bridge circuit comprising:
-
first and second buffers, each buffer having an input line, an output line and a number of buffer slots for temporarily storing message packets; and a first state machine coupled to the first node, to the input line of the first buffer and to the output line of the second buffer, the first state machine including a first counter for monitoring outstanding read transactions launched to the first node, a second counter for monitoring read response transactions loaded into the first buffer by the first node, and a third counter for monitoring currently loaded buffer slots of the first buffer, the first state machine including logic for transferring transactions to and from the first node according to launch and load slot availability criteria determined from the first, second, and third counters; and a second state machine coupled to the second node, to the input line of the second buffer, and to the output line of the second buffer, the second state machine including a first counter for monitoring outstanding read transactions launched to the second node, a second counter for monitoring read response transactions loaded into the second buffer by the second node, and a third counter for monitoring currently loaded buffer slots of the second buffer, the second state machine also including logic for transferring transactions to and from the second node according to launch and load slot availability criterion determined from the first, second, and third counters. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A state machine for regulating transfer of data packets between a node and associated input and output buffers, the state machine comprising:
-
a transmission line for receiving outbound data packet information from the node and sending a packet loading signal to the node; a transmission line for receiving inbound data packet information from the input buffer and sending a packet launching signal to the input buffer; a status memory location for tracking a data packet in a slot associated with the output buffer; first and second transaction type memory locations for tracking outstanding read data packets and loaded read response data packets, respectively; and control logic for transferring data packets to and from the node when the status and transaction type memory locations indicate that a slot availability criterion has been met. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. In a packet transfer circuit comprising a plurality of output buffer slots for coupling transaction packets from a first node to a second node and a plurality of input buffer slots for coupling transaction packets from the second node to the first node, a method for dynamically allocating one of the plurality of output buffer slots for a transaction packet, the method comprising the steps of:
-
monitoring the plurality of output buffer slots to determine a first number of the output buffer slots that are loaded with transaction packets determining a second number of the loaded transaction packets that are read response transactions; monitoring the plurality of input buffer slots to determine a third number of outstanding read transactions that have been launched to the first node; loading a transaction from the first node when the first, second, and third numbers satisfy a load slot availability criterion. - View Dependent Claims (23, 24, 25, 26, 27, 28, 29)
-
Specification