IP Library Granted Patent US 10,990,321
Granted Patent B2
US 10,990,321 · App. 16/280,607 · Granted Apr 27, 2021

Memory sub-system for supporting deterministic and non-deterministic commands based on command expiration and the state of the intermediate command queue

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,990,321
App. No.
16/280,607
Granted
Apr 27, 2021
Kind
B2
Abstract

Commands in a command queue are received and scheduled. For each of the commands, scheduling includes determining an age of a command based on an entrance time of the command in the command queue. When the age of the command satisfies a first threshold, marking all other commands in the command queue as not issuable when the command is a deterministic command, and marking all other commands in the command queue as not issuable when the command is a non-deterministic command and the intermediate command queue is not empty. Scheduling the command further includes determining whether the command is a read command and marking the command as not issuable when the command is a non-deterministic read command and the intermediate command queue is empty.

Claims (54)

1. A system comprising:

a plurality of memory components; and

a processing device operatively coupled with the plurality of memory components, the processing device configured to perform operations comprising:

receiving a plurality of commands in a command queue, wherein the plurality of commands are directed to the plurality of memory components; and

scheduling the plurality of commands in the command queue, wherein scheduling the commands comprises, for each of the plurality of commands:

determining an age of a command based on an entrance time of the command in the command queue,

when the age of the command satisfies a first threshold,

marking other commands in the command queue as not issuable when the command is a deterministic command, and

marking other commands in the command queue as not issuable when the command is a non-deterministic command and an intermediate command queue is not empty,

determining whether the command is a read command, and

marking the command as not issuable when the command is a non-deterministic read command and the intermediate command queue is empty.

2. The system of claim 1 , wherein the memory components comprising a volatile memory component receiving deterministic commands and a non-volatile memory component receiving non-deterministic commands.

3. The system of claim 2 , wherein the plurality of commands received in the command queue comprise non-deterministic commands and deterministic commands.

4. The system of claim 3 , wherein the volatile memory component is a Dynamic Random-Access Memory (DRAM) and the non-volatile memory component is a Non-Volatile Dual In-Line Memory Module (NVDIMM), wherein the non-deterministic commands are NVDIMM-P commands, and deterministic commands are DRAM commands.

5. The system of claim 4 , wherein the intermediate command queue receives an intermediate command indicating that data associated with the non-deterministic read command is ready for transmission, wherein the non-deterministic read command is an XREAD command.

6. The system of claim 1 , wherein the processing device is configured to perform operations further comprising:

performing order buffer arbitration comprising:

receiving the non-deterministic command at a first port of an order buffer arbiter; and

adapting a maximum number of order buffer entries associated with the first port based on whether there is the deterministic command at a second port of the order buffer arbiter.

7. The system of claim 6 , wherein the maximum number of order buffer entries associated with the first port is decreased to a predetermined contention limit associated with the first port when there is the deterministic command at the second port.

8. The system of claim 7 , wherein deterministic commands are received at the second port of the order buffer arbiter.

9. The system of claim 8 , wherein the maximum number of order buffer entries associated with the first port is set to a predetermined maximum limit associated with the first port when there is not the deterministic command at the second port.

10. The system of claim 9 , the processing device configured to perform operations further comprising:

pre-decoding the deterministic commands and the non-deterministic commands from the order buffer arbiter, wherein the plurality of commands received in the command queue comprise the pre-decoded commands.

11. A method comprising:

receiving a plurality of commands in a command queue, wherein the plurality of commands are directed to a plurality of memory components; and

scheduling the plurality of commands in the command queue, wherein scheduling the commands comprises, for each of the plurality of commands:

determining an age of a command based on an entrance time of the command in the command queue,

when the age of the command satisfies a first threshold,

marking other commands in the command queue as not issuable when the command is a deterministic command, and

marking other commands in the command queue as not issuable when the command is a non-deterministic command and an intermediate command queue is not empty,

determining whether the command is a read command, and

marking the command as not issuable when the command is a non-deterministic read command and the intermediate command queue is empty.

12. The method of claim 11 , wherein the plurality of commands received in the command queue comprise non-deterministic commands and deterministic commands, wherein the deterministic commands are commands to volatile memory components and the non-deterministic commands are commands to non-volatile memory components.

13. The method of claim 12 , wherein the volatile memory component is a Dynamic Random-Access Memory (DRAM) and the non-volatile memory component is a Non-Volatile Dual In-Line Memory Module (NVDIMM), wherein the non-deterministic commands are NVDIMM-P commands, and deterministic commands are DRAM commands.

14. The method of claim 13 , wherein the intermediate command queue receives an intermediate command indicating that data associated with the non-deterministic read command is ready for transmission, wherein the non-deterministic read command is an XREAD command.

15. The method of claim 11 , further comprising:

performing order buffer arbitration comprising:

receiving the non-deterministic command at a first port of an order buffer arbiter, and

adapting a maximum number of order buffer entries associated with the first port based on whether there is the deterministic command at a second port of the order buffer arbiter.

16. The method of claim 15 , the maximum number of order buffer entries associated with the first port is decreased to a predetermined contention limit associated with the first port when there is the deterministic command at the second port.

17. The method of claim 16 , wherein deterministic commands are received at the second port of the order buffer arbiter.

18. The method of claim 17 , wherein the maximum number of order buffer entries associated with the first port is set to a predetermined maximum limit associated with the first port when there is not the deterministic command at the second port.

19. The method of claim 18 , further comprising:

pre-decoding the deterministic commands and the non-deterministic commands from the order buffer arbiter, wherein the plurality of commands received in the command queue comprise the pre-decoded commands.

20. At least one non-transitory machine-readable storage medium comprising instructions that, when executed by a processing device, cause the processing device to perform operations comprising:

receiving a plurality of commands in a command queue, wherein the plurality of commands are directed to a plurality of memory components;

scheduling the plurality of commands in the command queue, wherein scheduling the commands comprises, for each of the plurality of commands:

determining an age of a command based on an entrance time of the command in the command queue,

when the age of the command satisfies a first threshold,

marking other commands in the command queue as not issuable when the command is a deterministic command, and

marking other commands in the command queue as not issuable when the command is a non-deterministic command and an intermediate command queue is not empty,

determining whether the command is a read command, and

marking the command as not issuable when the command is non-deterministic read command and the intermediate command queue is empty.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 27, 2023
From: MICRON TECHNOLOGY, INC.
To: LODESTAR LICENSING GROUP, LLC
Reel/Frame 065041/0564 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 17, 2020
From: LA FRATTA, PATRICK A; WALKER, ROBERT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 052427/0919 →
RELEASE OF SECURITY INTEREST Recorded Nov 15, 2019
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 051041/0317 →
RELEASE OF SECURITY INTEREST Recorded Oct 14, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050724/0392 →
SUPPLEMENT NO. 12 TO PATENT SECURITY AGREEMENT Recorded Apr 19, 2019
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 048948/0677 →
SUPPLEMENT NO. 3 TO PATENT SECURITY AGREEMENT Recorded Apr 19, 2019
From: MICRON TECHNOLOGY, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 048951/0902 →