QoS-aware scheduling
First Claim
1. A method comprising:
- receiving a plurality of memory operations in a memory controller, wherein each memory operation of the plurality of memory operations has an associated quality of service (QoS) parameter indicating a requested quality of service for performance of the memory operation to a memory controlled by the memory controller; and
grouping the plurality of memory operations into a plurality of affinity groups, wherein the memory operations within a given affinity group consume less memory bandwidth when scheduled as a group than when scheduled separately, and wherein the memory controller comprises a plurality of memory channel controllers, wherein each memory channel controller is configured to control an independent memory channel to the memory, and each memory channel controller independently grouping memory operations into affinity groups from the memory operations within a corresponding memory channel; and
scheduling memory operations directed to each memory channel of the plurality of memory channels by each memory channel controller, wherein the scheduling in a given memory channel by a given memory channel controller is responsive to the QoS parameters associated with the memory operations in the given memory channel, a state of the memory controller, and sizes of the plurality of affinity groups in the given memory channel.
0 Assignments
0 Petitions
Accused Products
Abstract
In an embodiment, a memory controller includes multiple ports. Each port may be dedicated to a different type of traffic. In an embodiment, quality of service (QoS) parameters may be defined for the traffic types, and different traffic types may have different QoS parameter definitions. The memory controller may be configured to schedule operations received on the different ports based on the QoS parameters. In an embodiment, the memory controller may support upgrade of the QoS parameters when subsequent operations are received that have higher QoS parameters, via sideband request, and/or via aging of operations. In an embodiment, the memory controller is configured to reduce emphasis on QoS parameters and increase emphasis on memory bandwidth optimization as operations flow through the memory controller pipeline.
50 Citations
19 Claims
-
1. A method comprising:
-
receiving a plurality of memory operations in a memory controller, wherein each memory operation of the plurality of memory operations has an associated quality of service (QoS) parameter indicating a requested quality of service for performance of the memory operation to a memory controlled by the memory controller; and grouping the plurality of memory operations into a plurality of affinity groups, wherein the memory operations within a given affinity group consume less memory bandwidth when scheduled as a group than when scheduled separately, and wherein the memory controller comprises a plurality of memory channel controllers, wherein each memory channel controller is configured to control an independent memory channel to the memory, and each memory channel controller independently grouping memory operations into affinity groups from the memory operations within a corresponding memory channel; and scheduling memory operations directed to each memory channel of the plurality of memory channels by each memory channel controller, wherein the scheduling in a given memory channel by a given memory channel controller is responsive to the QoS parameters associated with the memory operations in the given memory channel, a state of the memory controller, and sizes of the plurality of affinity groups in the given memory channel. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A memory controller in an integrated circuit (IC), the memory controller comprising:
-
an agent interface unit coupled to receive memory operations input to the memory controller from a plurality of sources within the IC, wherein each received memory operation includes a quality of service (QoS) parameter indicating a requested quality of service for performance of the received memory operation to a memory controlled by the memory controller; and a plurality of memory channel units, wherein each memory channel unit is configured to control an independent memory channel in a memory coupled to the IC and controlled by the memory controller, wherein the agent interface unit is configured to schedule the received memory operations to the plurality of memory channel units responsive to an address accessed by each received memory operation, and wherein each of the plurality of memory channel units is configured to group memory operations received from the agent interface unit into affinity groups, wherein the memory operations within a given affinity group consume less memory bandwidth when scheduled as a group than when scheduled separately, and wherein each of the plurality of memory channel units is configured to schedule the memory operations to access a memory responsive to a size of the affinity groups and further responsive to the QoS parameters of the memory operations, and wherein each of the plurality of memory channel units is configured to group memory operations into affinity groups and to schedule the memory operations independent of other ones of the plurality of memory channel units. - View Dependent Claims (10, 11, 12, 13)
-
-
14. An apparatus for a memory controller in an integrated circuit (IC), the apparatus comprising:
-
a plurality of transaction queues configured to store memory operations from a plurality of sources within the IC and associated quality of service (QoS) parameters, wherein a given QoS parameter indicates a requested quality of service for performance of a corresponding memory operation in a memory to which the integrated circuit is coupled; an enqueue control unit coupled to the plurality of transaction queues and configured to enqueue memory operations into the plurality of transaction queues, wherein the enqueue control unit is configured to group the memory operations into affinity queues in the plurality of transaction queues, wherein the memory operations within a given affinity group consume less memory bandwidth when scheduled as a group than when scheduled separately; and a scheduler coupled to the plurality of transaction queues and configured to schedule memory operations for transmission on a memory channel responsive to the affinity queues and further responsive to the QoS parameters, wherein the memory channel is one of a plurality of memory channels in a memory coupled to the memory controller, wherein each channel includes independent affinity queues, transaction queues, and schedulers. - View Dependent Claims (15, 16, 17, 18, 19)
-
Specification