Requests from a plurality of different agents (10) are passed to a request handler via a request concentrator. In front of the request concentrator the requests are queued in a plurality of queues (12). A first one of the agents is configured to issue a priority changing command with a defined position relative to pending requests issued by the first one of the agents (10) to the first one of the queues (12). An arbiter (16), makes successive selections selecting queues (12) from which the request concentrator (14) will pass requests to the request handler (18), based on relative priorities assigned to the queues (12). The arbiter (16) responds to the priority changing command by changing the priority of the first one of the queues (12), selectively for a duration while the pending requests up to the defined position are in the first one of the queues (12). Different queues may be provided for read and write requests from the first one of the agents. In this case, the priority raising request from the agent may be used to raise the priority level of the write queue temporarily to the level of the read queue, until all write requests issued before the priority raising command from the agent have been passed to the request handler.
Legal claims defining the scope of protection. Each claim is shown in both the original legal language and a plain English translation.
1. A data processing circuit, comprising: a plurality of agents, each configured to issue requests; a plurality of queues for queuing the requests, a first one of the agents being coupled to a first one of the queues, said first one of the agents being configured to issue a priority changing command with a defined position relative to pending requests issued by the first one of the agents to the first one of the queues; a request handler; a request concentrator coupled between the queues and the request handler; and an arbiter, coupled to a control input of the request concentrator and configured to make successive selections selecting queues from which the request concentrator will pass requests to the request handler, based on relative priorities assigned to the queues, the arbiter being configured to respond to the priority changing command by changing the priority of the first one of the queues, selectively for a duration while the pending requests up to the defined position are in the first one of the queues.
A data processing circuit manages requests from multiple agents using queues and prioritized arbitration. Each agent can send requests that are stored in individual queues. One agent can send a special "priority changing command" that identifies its position in the queue, relative to other requests from the same agent. An arbiter selects which queue should have its request processed next based on assigned priorities. When the arbiter receives the priority changing command, it temporarily boosts the priority of the queue that the agent sent it to. The priority boost lasts only until all earlier requests from that agent (those before the defined position) have been processed. A request concentrator forwards requests from the selected queue to a request handler.
2. A data processing circuit according to claim 1 , wherein the first one of the agents is further coupled to a second one of the queues, the arbiter being configured to respond to the priority changing command by using a priority assigned to the second one of the queues for the first one of the queues for said duration.
The data processing circuit described above, where one of the agents is connected to two queues, responds to a priority change request by applying the priority normally assigned to the second queue to the first queue, but only for a limited time period. Specifically, the priority of the first queue changes to the second queue's priority for the duration specified by the priority changing command issued by the agent. This allows a single agent to have different priority levels for its different request types.
3. A data processing circuit according to claim 2 , wherein the request handler comprises a memory controller for handling read and write requests to a memory, the first one of the agents being configured to issue memory write and read requests to the first and second one of the queues respectively.
The data processing circuit in the previous description includes a memory controller that processes read and write requests to memory. One of the agents can issue memory write requests to one queue and memory read requests to another queue. By using the priority changing command, the priority of the write requests can be temporarily increased to match the priority of the read requests, allowing write operations to be handled more quickly when needed. This helps improve memory access performance by prioritizing write operations dynamically.
4. A data processing circuit according to claim 1 , wherein the arbiter is configured to raise the priority of the first one of the queue from a time of receiving the priority changing command until a last request in the first one of the queue and issued by the first one of the agents before the priority changing command has been passed to the request handler.
In the data processing circuit described in claim 1, the arbiter raises the priority of a queue immediately after receiving a priority change request. This higher priority is maintained until the last request issued by the originating agent before the priority change request has been processed by the request handler. This ensures that all older requests are handled before the system reverts to the queue's normal priority level.
5. A data processing circuit according to claim 1 , wherein the first one of the agents is configured to issue a stream of requests to the first one of the queues, and to include the priority changing command as one of the requests in said stream, whereby the defined position of the priority changing command is defined.
In the data processing circuit described in claim 1, the agent sends a continuous stream of requests to its assigned queue. The "priority changing command" is embedded directly within this request stream as one of the standard requests. Because it's part of the stream, its position relative to other requests from the same agent is clearly defined and managed sequentially. This allows precise control over when and how the priority of the queue is adjusted.
6. A data processing circuit according to claim 1 , wherein at least part of the requests comprise a request address and wherein the first one of the agents is configured to include a specified address in the priority changing command, the arbiter being configured to return the priority of the first one of the queues to its original level upon detection that the request address of a passed request from the first one of the queues that is passed to the request handler matches the specified address of the priority changing command.
In the data processing circuit described in claim 1, requests include a request address. The priority changing command also includes a specific address. The arbiter monitors the addresses of processed requests coming from the queue that issued the priority changing command. When the address of a processed request matches the address specified in the priority changing command, the arbiter automatically restores the queue to its original, normal priority. This uses address matching to determine when to end the priority boost.
7. A data processing circuit according to claim 1 , wherein the first one of the queues is configured to reorder the requests in the first one of the queues in response to the priority changing request, by moving a request specified by the priority changing request to a front of the first one of the queues, the arbiter being configured to raise the priority of the first one of the queues selectively until the request specified by the priority changing command has been passed to the request handler.
In the data processing circuit described in claim 1, a queue can reorder its requests when it receives a priority change request. Specifically, the queue moves the request that is indicated by the priority changing request to the front of the queue. The arbiter increases the priority of the queue until the reordered request has been processed by the request handler. This mechanism prioritizes a specific request by moving it to the head of the queue and boosting the queue's priority until that request is handled.
8. A data processing circuit according to claim 1 , wherein the first one of the agents comprises an instruction processing circuit, configured to issue the requests under control of instructions from a program of instructions, including instructions of the instruction processing circuit to issue the requests to the first one of the queues and to issue the priority changing command.
In the data processing circuit described in claim 1, one of the agents is an instruction processing circuit. This circuit executes instructions from a program. Some instructions cause the agent to send regular requests to a queue, and other instructions specifically cause the agent to send the priority changing command to the queue. The instruction processing circuit directly controls the generation and timing of both normal requests and priority changing commands.
9. A data processing circuit according to claim 1 , wherein the requests are memory access requests and wherein the request handler has an output coupled to a time selection input of the arbiter, the arbiter being configured to select between the queues at selected time points defined by time point selection signals generated by the request handler, the request handler comprising: storage space for access requests passed from the request concentrator; a memory control circuit configured to execute each memory access request while passing through a sequence of states in a respective plurality of cycles; a time selector coupled to the memory control circuit and configured to select timing of the time point selection signal with a state dependent, variable delay after a location in the storage space has become vacant for a new request, the delay being based on state information from the memory control circuit that is indicative for a number of cycles that have to occur before the memory control circuit will be able to handle the new request.
The data processing circuit described in claim 1 uses memory access requests and a request handler with an output coupled to a time selection input of the arbiter. The arbiter selects queues based on timing signals generated by the request handler. The request handler has storage for access requests. A memory control circuit executes each memory access request over multiple cycles. A time selector adjusts the timing of the queue selection signal, with variable delay, based on the memory control circuit's state, indicating how many cycles are needed before a new request can be processed.
10. A method of processing data, the method comprising: issuing requests from a plurality of agents; queuing the requests in a plurality of queues, at least part of the requests from a first one of the agents being queued in a first one of the queues, making successive selections selecting one of queues, each based on relative priorities assigned to the queues at a time of selection; for each successive selection, passing a request from the selected queue to a request handler; issuing a priority changing command defining a position relative to pending requests issued by the first one of the agents to the first one of the queues; responding to the priority changing command by changing the priority of the first one of the queues, selectively for a duration until the pending requests up to the defined position have been passed to the request handler.
A data processing method involves multiple agents sending requests that are placed into separate queues. A selection process chooses queues in turn based on their assigned priorities. The chosen queue's request is then passed to a request handler. A priority changing command is sent that defines its position in one queue. The method responds to this command by temporarily increasing the priority of that queue, specifically until all preceding requests (those before the defined position of the priority change request) are processed.
11. A method of according to claim 10 , the method comprising: executing a program of instructions with an instruction processor that acts as the first one of the agents; issuing the requests to the first one of the queues under control of first ones of the instructions from the program; and issuing the priority changing command under control of a second one of the instructions from the program.
The data processing method described above executes a program using an instruction processor, which acts as one of the agents. Instructions within the program control the sending of normal requests to a queue, and other instructions specifically control the sending of a priority changing command. Thus, the program code dictates both regular request behavior and the timing of the priority adjustments.
12. A computer program product, comprising a program of instructions stored on a non-transitory medium that, when executed by a programmable processor cause the programmable processor to issuing requests to a first one of a plurality of queues, and a priority changing command defining a position relative to pending requests in the first one of the queues, for raising a priority of the first one of the plurality of queues relative to other ones of the plurality of queues selectively for a duration until the pending requests up to the defined position have been passed to a request handler.
A computer program, stored on a non-transitory medium, when run on a processor, causes the processor to send requests to one of several queues, along with a priority changing command. This command specifies a position relative to pending requests within that queue. The program temporarily increases the priority of the specified queue relative to the others. This increased priority lasts only until all requests before the specified position in the queue have been processed by a request handler.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
July 27, 2009
July 2, 2013
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.