Dynamic allocation of queue space using counters
First Claim
1. A computer system having a processor that creates request packets to access memory and creates response packets that satisfy queries made by the system, the system comprising:
- a dynamically allocable buffer space for storing and routing the request packets and the response packets; and
an arbiter for receiving the request packets and the response packets from the processor, and for making determinations whether to send the request packets and the response packets to the buffer space;
wherein said determinations are made in part, under control of;
a request counter that stores a number value representing a total number of request packets currently stored in the buffer space;
a response counter that stores a number value representing a total number of response packets currently stored in the buffer space;
a total counter that stores a number value representing a total number of both request packets and response packets currently stored in the buffer space;
a request limit value representing a maximum number of request packets that is capable of being stored in the buffer space;
a response limit value representing a maximum number of response packets that is capable of being stored in the buffer space; and
a total limit value representing a maximum number of both request packets and response packets that is capable of being stored in the buffer space.
4 Assignments
0 Petitions
Accused Products
Abstract
The space of a buffer is logically partitioned into space reserved for requests only, space reserved for responses only, and space that can be used for either requests or responses, i.e., dynamically usable as needed by the system. An arbiter uses three registers to keep track of the request buffer space, the response buffer space and the dynamic space. The arbiter compares each of the registers with a corresponding limit to determine if a request packet or a response packet should be sent to the buffer. The limits are set by software and define the maximum number of request products, response packets, and total number of packets the buffer can hold. For example, the limit may be set to eight requests, eight responses and ten total. Thus two spaces are reserved for requests and two spaces are reserved for responses, and six are dynamically usable.
-
Citations
32 Claims
-
1. A computer system having a processor that creates request packets to access memory and creates response packets that satisfy queries made by the system, the system comprising:
-
a dynamically allocable buffer space for storing and routing the request packets and the response packets; and an arbiter for receiving the request packets and the response packets from the processor, and for making determinations whether to send the request packets and the response packets to the buffer space; wherein said determinations are made in part, under control of; a request counter that stores a number value representing a total number of request packets currently stored in the buffer space; a response counter that stores a number value representing a total number of response packets currently stored in the buffer space; a total counter that stores a number value representing a total number of both request packets and response packets currently stored in the buffer space; a request limit value representing a maximum number of request packets that is capable of being stored in the buffer space; a response limit value representing a maximum number of response packets that is capable of being stored in the buffer space; and a total limit value representing a maximum number of both request packets and response packets that is capable of being stored in the buffer space. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A multi-processor computer system having a dynamically allocable buffer space for handling request packets and response packets, the computer system comprising a plurality of nodes interconnected by a plurality of SCI rings, a node of the plurality of nodes comprising:
-
at least one processor that creates request packets to access memory and creates response packets that satisfy queries made by the system; a memory for storing data; at least one processor agent for dispatching packets, and comprising; an arbiter that receives the request packets and the response packets from the processor and makes determinations whether to send the request packets and the response packets to the buffer space; at least one memory agent for controlling access to the memory, that receives the packet from the processor agent and determines a target location for that packet; and at least one crossbar for routing the response packets and the request packets between the processor agent and the memory agent, and comprises the buffer space; and wherein when the memory agent determines that the target location is within the node, then the memory agent delivers the packet to the location; and when the memory agent determines that the target location is located on a remote node, then the memory agent forwards the packet to the SCI controller, the SCI controller sends the packet to the remote node through the SCI ring, comprising; a request counter that stores a number value representing a total number of request packets currently stored in the buffer space; a response counter that stores a number value representing a total number of response packets currently stored in the buffer space; a total counter that stores a number value representing a total number of both request packets and response packets currently stored in the buffer space; a request limit is a number value representing a maximum number of request packets that is capable of being stored in the buffer space; a response limit is a number value representing a maximum number of response packets that is capable of being stored in the buffer space; and a total limit is a number value representing a maximum number of both request packets and response packets that is capable of being stored in the buffer space. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25)
-
-
26. A method for dynamically allocating buffer space in a computer system, the method comprising the steps of:
-
accepting request packets to access a memory; accepting response packets that satisfy queries made by the system; determining whether to send the request packets and the response packets to the buffer space; dynamically allocating the buffer space so as to accommodate a maximum number of both request packets and response packets; storing the request packets and the response packets in the buffer space; storing a request count representing a total number of request packets currently stored in the buffer space; storing a response count representing a total number of response packets currently stored in the buffer space; storing a total count representing a total number of both request packets and response packets currently stored in the buffer space; storing a request limit representing a maximum number of request packets that is capable of being stored in the buffer space; storing a response limit representing a maximum number of response packets that is capable of being stored in the buffer space; and storing a total limit representing a maximum number of both request packets and response packets that is capable of being stored in the buffer space. - View Dependent Claims (27, 28, 29, 30, 31, 32)
-
Specification