IP Library Granted Patent US 10,037,150
Granted Patent B2
US 10,037,150 · App. 15/252,889 · Granted Jul 31, 2018

Memory controller with virtual controller mode

Inventors: James R. Magro (Austin, TX); Kedarnath Balakrishnan (Austin, TX)
Assignee: Advanced Micro Devices, Inc.
G06F3/0611G06F3/0659G06F3/0674G06F13/287G06F13/4022G11C7/1072
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,037,150
App. No.
15/252,889
Granted
Jul 31, 2018
Kind
B2
Abstract

In one form, a memory controller has a memory channel controller including a command queue and an arbiter. The command queue stores memory access requests including a sub-channel number in a virtual controller mode. The arbiter is coupled to the command queue to select memory access commands from the command queue according to predetermined criteria. In the virtual controller mode, the arbiter selects from among the memory access requests in each sub-channel independently using the predetermined criteria, and sends selected memory access requests to a corresponding one of a plurality of sub-channels. In another form, a data processing system includes a plurality of memory channels and such a memory controller coupled to the plurality of sub-channels.

Claims (52)

1. A memory controller having a memory channel controller, the memory channel controller comprising:

a command queue for storing memory access requests including a sub-channel number in a virtual controller mode; and

an arbiter coupled to said command queue to select memory access commands from said command queue according to predetermined criteria, wherein in said virtual controller mode said arbiter selects from among said memory access requests in each sub-channel independently using said predetermined criteria, and sends selected memory access requests to a corresponding one of a plurality of sub-channels.

2. The memory controller of claim 1 , wherein said command queue comprises:

a plurality of entries, each entry comprising a first field for storing said sub-channel number and a second field for storing additional data about said memory access request.

3. The memory controller of claim 1 , further comprising a dispatch queue for providing memory commands to selected ones of said plurality of sub-channels.

4. The memory controller of claim 3 , wherein said dispatch queue comprises:

a plurality of entries, each entry comprising said sub-channel number and additional data about said memory access request; and

a demultiplexer having an input coupled to a last one of said plurality of entries for receiving said additional data, a control input for receiving said sub-channel number, a first output for providing a memory command to a first sub-channel, and a second output for providing a memory command to a second sub-channel.

5. The memory controller of claim 3 , wherein said arbiter determines timing eligibility using a common set of timing registers for all of said plurality of sub-channels.

6. The memory controller of claim 5 , further comprising a timing block coupled to said arbiter, wherein said timing block uses said common set of timing registers to separately determine timing eligibility for accesses in said command queue.

7. The memory controller of claim 3 , wherein said arbiter selectively picks multiple commands per memory controller clock cycle and provides each of said multiple commands to a different one of said plurality of sub-channels.

8. The memory controller of claim 3 , wherein said predetermined criteria comprise memory access type, page state, and quality of service.

9. A memory controller having a memory channel controller with a virtual controller mode, the memory channel controller comprising:

an address generator for receiving memory access requests and decoding said memory access requests to select a rank and bank of memory devices in a memory system, and in the virtual controller mode further decoding a sub-channel number of a plurality of sub-channels for each of said memory access requests;

a command queue coupled to said address generator for storing said decoded memory access requests, including said sub-channel number in the virtual controller mode;

an arbiter coupled to said command queue to select memory access requests from said command queue using said rank and said bank according to predetermined criteria, and in the virtual controller mode selecting from among said memory access requests in each sub-channel independently using said predetermined criteria; and

a dispatch queue coupled to said command queue for dispatching selected memory commands to a memory system over a physical interface, and in the virtual controller mode further dispatching said selected memory commands to a selected sub-channel.

10. The memory controller of claim 9 , wherein said command queue comprises:

a plurality of entries, each entry comprising a first field for storing said sub-channel number and a second field for storing additional data about said memory access request.

11. The memory controller of claim 10 , wherein said dispatch queue comprises:

a plurality of entries, each entry comprising said sub-channel number and additional data about said memory access request; and

a demultiplexer having an input coupled to a last one of said plurality of entries for receiving said additional data, a control input coupled to said sub-channel number, a first output for providing a memory command to a first sub-channel, and a second output for providing a memory command to a second sub-channel.

12. The memory controller of claim 9 , wherein said arbiter determines timing eligibility using a common set of timing registers for all of said plurality of sub-channels.

13. The memory controller of claim 12 , further comprising a timing block coupled to said arbiter, wherein said timing block uses said common set of timing registers to separately determine timing eligibility for accesses in said command queue.

14. The memory controller of claim 9 , wherein said arbiter selectively picks multiple commands per memory controller clock cycle and provides each of said multiple commands to a different one of said plurality of sub-channels.

15. A data processing system comprising:

a plurality of memory channels;

a memory controller coupled to said plurality of memory channels and having a memory channel controller with a virtual controller mode, said memory channel controller comprising:

a command queue for storing memory access requests including a sub-channel number in said virtual controller mode; and

an arbiter coupled to said command queue to select memory access commands from said command queue according to predetermined criteria, wherein in said virtual controller mode said arbiter selects from among said memory access requests in each sub-channel independently using said predetermined criteria, and sends selected memory access requests to a one of said plurality of memory channels corresponding to said sub-channel number.

16. The data processing system of claim 15 , wherein said command queue comprises:

a plurality of entries, each entry comprising a first field for storing said sub-channel number and a second field additional data about said memory access request.

17. The data processing system of claim 15 , further comprising a dispatch queue for providing memory commands to selected ones of said plurality of memory channels.

18. The data processing system of claim 17 , wherein said dispatch queue comprises:

a plurality of entries, each entry comprising said sub-channel number and additional data about said memory access request; and

a demultiplexer having an input coupled to said a last one of said plurality of entries for receiving said additional data, a control input coupled to said sub-channel number, a first output for providing a memory command to a first sub-channel, and a second output for providing a memory command to a second sub-channel.

19. The data processing system of claim 17 , wherein said arbiter determines timing eligibility using a common set of timing registers for all of said plurality of memory channels.

20. The data processing system of claim 19 , further comprising a timing block coupled to said arbiter, wherein said timing block uses said common set of timing registers to separately determine timing eligibility for accesses in said command queue.

21. The data processing system of claim 17 , wherein said arbiter selectively picks multiple commands per memory controller clock cycle and provides each of said multiple commands to a different one of said plurality of memory channels.

22. The data processing system of claim 17 , further comprising a plurality of memory accessing agents for providing said memory access requests.

23. A method for controlling a memory system having a plurality of memory channels, comprising:

in a virtual controller mode:

receiving memory access requests;

decoding each of said memory access requests into a bank, a rank, and a sub-channel of a plurality of sub-channels of memory devices in the memory system;

storing said memory access request including said bank, said rank, and said sub-channel in a command queue;

selecting from among a plurality of memory access requests in said command queue using predetermined criteria, wherein said selecting further comprises selecting from among said memory access requests to each sub-channel independently using said predetermined criteria; and

dispatching said memory access requests, so selected, to one of the plurality of memory channels according to said sub-channel.

24. The method of claim 23 , further comprising:

demultiplexing selected memory access requests to said plurality of memory channels based on said sub-channel.

25. The method of claim 23 , further comprising:

determining timing eligibility for said memory access requests using a common set of timing registers for all of said plurality of sub-channels.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2016
From: MAGRO, JAMES R.; BALAKRISHNAN, KEDARNATH
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 039603/0496 →
Continuity (3)
Provisional Application 62363008 · Jul 15, 2016
Provisional Application 62377265 · Aug 19, 2016
Related Publication 20180018105A1 · Jan 18, 2018
Cited By (2)
US 12,632,399 US 12,711,075