Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip
AssigneeNetLogic Microsystems, Inc.
InventorsGaurav Garg, David T. Hass
Life of this patent
Estimating the term…
Abstract
A system, method, and computer program product are provided for optimal packet flow in a multi-processor system on a chip. In operation, a credit is allocated for each of a plurality of agents coupled to a messaging network, the allocating including reserving one or more entries in a receive queue of at least one of the plurality of agents. Additionally, a first credit is decremented in response to a first agent sending a message to a second agent, the plurality of agents including the first and second agents. Furthermore, one of the first credit or a second credit is incremented in response to a signal from the second agent.
Claims38
A machine-implemented method, comprising:
- in at least one processor that comprises one or more threads of execution:
- identifying a plurality of agents among several agents that are coupled to a messaging network;
- allocating, for each of the identified plurality of agents, a reserved credit within a receive queue that can only be used for messages received from the corresponding agent of the identified plurality of agents, the reserved credit including one or more entries in the receive queue;
- decrementing a first credit of a first agent in response to a message sent by the first agent to a second agent, the identified plurality of agents including the first and second agents;
- and
- incrementing one of the first credit or a second credit of the first agent by a credit amount in response to a signal that is sent from the second agent, in which
- the credit amount is determined based at least in part upon the signal, which corresponds to a location at which the message is stored on the second agent, and
- the credit amount of the first agent varies based at least in part upon a respective size of each of a plurality of messages sent from the first agent.
A method, comprising:
- in at least one processor that comprises one or more threads of execution:
- identifying a plurality of agents among several agents that are coupled to a messaging network;
- receiving, at a second agent, a message sent from a first agent of the identified plurality of agents coupled to the messaging network, the second agent having a receive queue that includes, for each of the identified plurality of agents, a reserved space portion that can only be used for messages received from the corresponding agent of the identified plurality of agents;
- determining whether the reserved space portion of the receive queue allocated for the second agent is available;
- storing the message in a location on the second agent based at least in part on a result of the act of determining whether the reserved space portion allocated for the second agent is available;
- and
- determining a credit amount for the first agent based at least in part upon the location, wherein
- a total credit of the first agent is incremented by the credit amount based at least in part upon a respective size of each of a plurality of messages sent from the first agent to the second agent.
A non-transitory computer readable storage medium having a sequence of instructions which, when executed by at least one processor comprising one or more processor cores having one or more threads of execution, causes the at least one processor to execute a process, the process comprising:
- identifying a plurality of agents among several agents that are coupled to a messaging network;
- allocating, for each of the identified plurality of agents, a reserved credit within a receive queue that can only be used for messages received from the corresponding agent of the identified plurality of agents, the reserved credit including one or more entries in the receive queue;
- decrementing a first credit of a first agent in response to a message sent by the first agent to a second agent, wherein the identified plurality of agents coupled to the messaging network include the first agent and the second agent;
- and
- incrementing one of the first credit or a second credit of the first agent by a credit amount in response to a signal that is sent from the second agent, in which
- the credit amount is determined based at least in part upon the signal, which corresponds to a location, at which the message is stored on the second agent, and
- the credit amount of the first agent varies based at least in part upon a respective size of each of a plurality of messages sent from the first agent.
A system, comprising:
- at least one processor that comprises one or more processor cores having one or more threads;
- a plurality of agents among several agents that are coupled to a messaging network, the plurality of agents coupled to the at least one processor and the messaging network;
- a first agent of the plurality of agents that corresponds to a first credit and a second credit, and is configured to send a message to a second agent of the identified plurality of agents, the second agent having a receive queue that includes, for each of the identified plurality of agents, a reserved space portion that can only be used for messages received from the corresponding agent of the identified plurality of agents, and includes a free space portion that can be used by any of the identified plurality of agents, wherein
- the first credit is to be decremented in response to the message and is indicative of an amount of remaining reserve space allocated to the first agent within the second agent,
- one of the first credit or the second credit is to be incremented by a credit amount in response to a signal that is sent from the second agent,
- the credit amount is to be determined based at least in part upon the signal, which corresponds to a location at which the message is stored on the second agent, and
- the credit amount of the first agent is to vary based at least in part upon a respective size of each of a plurality of messages sent from the first agent.
A non-transitory computer readable storage medium having a sequence of instructions which, when executed by at least one processor comprising one or more processor cores having one or more threads of execution, causes the at least one processor to execute a process, the process comprising:
- identifying a plurality of agents among several agents that are coupled to a messaging network;
- receiving, at a second agent, a message sent from a first agent of the identified plurality of agents coupled to the messaging network, the second agent having a receive queue that includes, for each of the identified plurality of agents, a reserved space portion that can only be used for messages received from the corresponding agent of the identified plurality of agents;
- determining whether the reserved space portion of the receive queue allocated for the first agent is available;
- storing the message in a location on the second agent based at least in part on a result of the act of determining whether the reserved space portion allocated for the first agent is available;
- and
- determining a credit amount for the first agent based at least in part upon the location, wherein
- a total credit of the first agent is incremented by the credit amount based at least in part upon a respective size of each of a plurality of messages sent from the first agent to the second agent.
A system, comprising:
- at least one processor that comprises one or more processor cores having one or more threads;
- a plurality of agents among several agents that are coupled to a messaging network and the at least one processor;
- a first agent of the plurality of agents, the first agent corresponding to a first credit;
- and
- a second agent of the plurality of agents, the second agent having a receive queue that includes, for each of the plurality of agents, a reserved space portion that can only be used for messages received from the corresponding agent of the plurality of agents, the second agent being configured to:
- determine whether a reserved space portion of a receive queue allocated for the first agent is available, and
- store the message in a location on the second agent based at least in part on whether the reserved space portion is available, wherein
- the first credit is to be incremented by a credit amount for the first agent, and
- the credit amount is to vary and is to be determined based at least in part upon the location on a respective size of each of a plurality of messages sent from the first agent.
Dependencies are inferred from the claim text.