Dynamic QoS upgrading
First Claim
1. A memory controller comprising:
- an agent interface unit coupled to receive a plurality of memory operations from one or more sources, each memory operation of the plurality of memory operations accompanied by a quality of service (QoS) parameter specifying a requested quality of service for the memory operation; and
the agent interface unit comprises a plurality of memory channel interface units configured to schedule memory operations for transmission to a plurality of memory channel units for access to a memory on a plurality of memory channels, wherein the memory channel interface units are configured to arbitrate among the plurality of memory operations responsive to the QoS parameters corresponding to the plurality of memory operations;
wherein, responsive to receiving a first memory operation from a first source that has transmitted one or more previous memory operations and further responsive to a first QoS parameter corresponding to the first memory operation indicating a higher level of service than previous QoS parameters corresponding to the previous memory operations, the memory controller is configured to upgrade the previous QoS parameters to the level of service indicated by the first QoS parameter; and
wherein each memory operation includes a flow identifier indicating a flow of memory operations, and wherein the memory channel interface units are configured to upgrade the previous QoS parameters from the first source only for the previous memory operations that are from the same flow as the first memory operation.
1 Assignment
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.
30 Citations
21 Claims
-
1. A memory controller comprising:
-
an agent interface unit coupled to receive a plurality of memory operations from one or more sources, each memory operation of the plurality of memory operations accompanied by a quality of service (QoS) parameter specifying a requested quality of service for the memory operation; and the agent interface unit comprises a plurality of memory channel interface units configured to schedule memory operations for transmission to a plurality of memory channel units for access to a memory on a plurality of memory channels, wherein the memory channel interface units are configured to arbitrate among the plurality of memory operations responsive to the QoS parameters corresponding to the plurality of memory operations; wherein, responsive to receiving a first memory operation from a first source that has transmitted one or more previous memory operations and further responsive to a first QoS parameter corresponding to the first memory operation indicating a higher level of service than previous QoS parameters corresponding to the previous memory operations, the memory controller is configured to upgrade the previous QoS parameters to the level of service indicated by the first QoS parameter; and wherein each memory operation includes a flow identifier indicating a flow of memory operations, and wherein the memory channel interface units are configured to upgrade the previous QoS parameters from the first source only for the previous memory operations that are from the same flow as the first memory operation. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A system comprising:
-
a plurality of sources of memory operations, where each source is configured to transmit memory operations and corresponding quality of service (QoS) parameters indicating a requested QoS for the corresponding memory operations; and a memory controller coupled to the plurality of sources and configured to control access to a memory for the memory operations, wherein the memory controller comprises a plurality of queues configured to store memory operations, and wherein the memory controller is configured to arbitrate among the memory operations responsive to the QoS parameters, and wherein the memory controller is configured to modify the QoS parameters of pending memory operations in the queues from a first source of the plurality of sources responsive to an upgrade QoS indication from the first source, wherein the modified QoS parameters indicate a higher level of QoS than original QoS parameters of the pending memory operations, for one or more of the pending memory operations, and wherein each memory operation includes a flow identifier indicating a flow of memory operations, and wherein the upgrade QoS indication also includes a flow identifier, and wherein the memory controller is configured to modify the QoS parameters only for the pending memory operations that are from the same flow as the first memory operation. - View Dependent Claims (9, 10, 11, 12)
-
-
13. A method comprising:
-
receiving a first memory operation in a memory controller from a first source, the first memory operation having a first QoS parameter indicating a first QoS level for the first memory operation and further including a flow identifier indicating a flow of memory operations; determining that the first QoS level is to be modified in the memory controller responsive to receiving a modified QoS level from the first source subsequent to receiving the first memory operation and further responsive to receiving a second flow identifier associated with the modified QoS level, wherein the second flow identifier matches the flow identifier of the first memory operation indicating that the modified QoS level is for the same flow as the first memory operation; and changing the first QoS parameter to indicate the modified QoS level in response to the determining, wherein the modified QoS level is an upgraded QoS level indicating a higher level of service than the first QoS parameter originally indicated. - View Dependent Claims (14, 15, 16, 17, 18)
-
-
19. A memory controller comprising:
-
a plurality of ports, wherein the memory controller is coupled to receive memory operations on the plurality of ports, each memory operation having a quality of service (QoS) parameter indicating a requested QoS level for the memory operation and further having a flow identifier indicating a flow of memory operations; memory channel circuitry configured to receive the memory operations from the plurality of ports and configured to schedule each memory operation on a memory channel to which that memory operation is directed, wherein the memory channel circuitry is configured to select memory operations for scheduling at each of a plurality of scheduling points responsive to the QoS parameters of the memory operations in a given channel, and wherein the memory channel circuitry is configured to upgrade QoS levels for one or more memory operations awaiting scheduling in the memory channel circuitry responsive to a higher QoS level and a corresponding flow identifier received for a first port of the plurality of ports on which the one or more memory operations were received, wherein the higher QoS level is received for the first port subsequent to receiving the one or more memory operations on the first port, and wherein the memory channel circuitry is configured to upgrade the QoS levels for the one or more memory operations only for the memory operations that are from the same flow as indicated by the flow identifiers associated with the memory operations and the corresponding flow identifier. - View Dependent Claims (20, 21)
-
Specification