IP Library › Granted Patent US 10,296,230
Granted Patent B1
US 10,296,230 · App. 15/853,090 · Granted May 21, 2019

Scheduling memory requests with non-uniform latencies

Inventors: Kedarnath Balakrishnan (Whitefield, IN); James Raymond Magro (Austin, TX)
Assignee: Advanced Micro Devices, Inc.
G06F3/0611G06F3/0653G06F3/0658G06F3/0659G06F3/0685G06F13/16G06F13/161G11C7/22
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,296,230
App. No.
15/853,090
Granted
May 21, 2019
Kind
B1
Abstract

Systems, apparatuses, and methods for performing scheduling memory requests for issue to two different memory types are disclosed. A computing system includes one or more clients for processing applications. A heterogeneous memory channel within a memory controller transfers memory traffic between the memory controller and a memory bus connected to each of a first memory and a second memory different from the first memory. The memory controller determines a next given point in time that does not already have read response data scheduled to be driven on the memory bus. The memory controller determines whether there is time to schedule a first memory access command for accessing the first memory and a second memory access command for accessing the second memory. If there is sufficient time for each, then one of the access commands is selected based on weighted criteria.

Claims (61)

1. A memory controller comprising:

a first interface for receiving memory requests;

a second interface comprising:

a command bus for sending memory access commands corresponding to the memory requests to either a first memory device or a second memory device different from the first memory device; and

a data bus for transferring data between the memory controller and both the first memory device and the second memory device;

control logic, wherein in response to determining the data bus is scheduled to be available at a given point in time, the control logic is configured to determine whether a new memory access command can be scheduled for issue to either the first memory device or the second memory device such that a response to the new memory access command will be received on the data bus at the given point in time.

2. The memory controller as recited in claim 1 , wherein the given point in time is a next available point in time in which the data bus is not scheduled to have data driven on the data bus and has not yet been considered for scheduling.

3. The memory controller as recited in claim 1 , wherein to determine whether the new memory access command can be scheduled for issue at the given point in time, the control logic is configured to:

determine a response latency for the new memory access command is N clock cycles, where N is an integer; and

identify an earlier point in time that corresponds to N clock cycles before the given point in time; and

determine whether the command bus is available at the earlier point in time.

4. The memory controller as recited in claim 3 , wherein in response to determining there are two or more pending memory access commands that have the response latency, the control logic is configured to schedule one of the two or more pending memory access commands for issue at the earlier point in time.

5. The memory controller as recited in claim 3 , wherein in response to determining there is sufficient time for the new memory access command to be scheduled, the control logic is configured to:

schedule the new memory access command for issue at the earlier point in time; and

store an indication that the data bus is not available at the given point in time.

6. The memory controller as recited in claim 1 , wherein in response to determining there are two or more pending memory access commands that have the response latency, the control logic is configured to schedule one of the two or more pending memory access commands at the earlier point in time based on one or more of:

a first amount of time between the given point in time and a most recent point in time that a memory access command was issued to the first memory device; and

a second amount of time between the given point in time and a most recent point in time a memory access command was issued to the second memory device.

7. The memory controller as recited in claim 6 , wherein the control logic is further configured to select one of the one of the two or more pending memory access commands for issue based on one or more of:

priority levels of the first memory access command and the second memory access command; and

ages of the first memory access command and the second memory access command.

8. The memory controller as recited in claim 6 , wherein in response to determining a given memory access command is pending that has the response latency, the control logic is further configured to:

determine the given memory access command is a status access command targeting a same address as an earlier issued memory access command accessing the second memory device; and

determine read response data did not arrive for the earlier issued memory access command.

9. A method, comprising:

receiving memory requests by a first interface;

sending, by a second interface, memory access commands corresponding to the memory requests to either a first memory device or a second memory device different from the first memory device via a command bus;

transferring, by the second interface, data between a memory controller and both the first memory device and the second memory device via a data bus; and

in response to determining the data bus is scheduled to be available at a given point in time, determining whether a new memory access command can be scheduled for issue to either the first memory device or the second memory device such that a response to the new memory access command will be received on the data bus at the given point in time.

10. The method as recited in claim 9 , wherein the given point in time is a next available point in time in which the data bus is not scheduled to have data driven on the data bus and has not yet been considered for scheduling.

11. The method as recited in claim 9 , wherein to determine whether the new memory access command can be scheduled for issue at the given point in time, the method further comprises:

determining a response latency for the new memory access command is N clock cycles, where N is an integer; and

identifying an earlier point in time that corresponds to N clock cycles before the given point in time; and

determining whether the command bus is available at the earlier point in time.

12. The method as recited in claim 11 , wherein in response to determining there are two or more pending memory access commands that have the response latency, the method further comprises scheduling one of the two or more pending memory access commands for issue at the earlier point in time.

13. The method as recited in claim 11 , wherein in response to determining there is sufficient time for the new memory access command to be scheduled, the method further comprises:

scheduling the new memory access command for issue at the earlier point in time; and

storing an indication that the data bus is not available at the given point in time.

14. The method as recited in claim 9 , wherein in response to determining there are two or more pending memory access commands that have the response latency, the method further comprises scheduling one of the two or more pending memory access commands at the earlier point in time based on one or more of:

a first amount of time between the given point in time and a most recent point in time that a memory access command was issued to the first memory device; and

a second amount of time between the given point in time and a most recent point in time a memory access command was issued to the second memory device.

15. The method as recited in claim 14 , wherein the method further comprises selecting one of the one of the two or more pending memory access commands for issue based on one or more of:

priority levels of the first memory access command and the second memory access command; and

ages of the first memory access command and the second memory access command.

16. The method as recited in claim 14 , wherein in response to determining a given memory access command is pending that has the response latency, the method further comprises:

determining the given memory access command is a status access command targeting a same address as an earlier issued memory access command accessing the second memory device; and

determining read response data did not arrive for the earlier issued memory access command.

17. A computing system comprising:

a processor configured to generate memory access requests for data stored in a first memory device or a second memory device different from the first memory device; and

a memory controller coupled to each of the first memory device and the second memory device configured to:

send, via a command bus, memory access commands corresponding to the memory requests to either a first memory device or a second memory device different from the first memory device;

transfer, via a data bus, data between the memory controller and both the first memory device and the second memory device;

in response to determining the data bus is scheduled to be available at a given point in time, determine whether a new memory access command can be scheduled for issue to either the first memory device or the second memory device such that a response to the new memory access command will be received on the data bus at the given point in time.

18. The computing system as recited in claim 17 , wherein the given point in time is a next available point in time in which the data bus is not scheduled to have data driven on the data bus and has not yet been considered for scheduling.

19. The computing system as recited in claim 17 , wherein to determine whether the new memory access command can be scheduled for issue at the given point in time, the memory controller is configured to:

determine a response latency for the new memory access command is N clock cycles, where N is an integer; and

identify an earlier point in time that corresponds to N clock cycles before the given point in time; and

determine whether the command bus is available at the earlier point in time.

20. The computing system as recited in claim 17 , wherein in response to determining there is sufficient time for the new memory access command to be scheduled, the memory controller is configured to:

schedule the new memory access command for issue at the earlier point in time; and

store an indication that the data bus is not available at the given point in time.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 22, 2017
From: BALAKRISHNAN, KEDARNATH; MAGRO, JAMES RAYMOND
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 044956/0269 →
Cited By (2)
US 12,204,754 US 12,517,769