IP Library Granted Patent US 10,642,746
Granted Patent B2
US 10,642,746 · App. 16/028,200 · Granted May 5, 2020

Controlling cached/non-cached memory access decisions based on memory access queue fill levels

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,642,746
App. No.
16/028,200
Granted
May 5, 2020
Kind
B2
Abstract

The present disclosure, in various embodiments, describes technologies and techniques for use by a data storage controller or similar device for efficiently and intelligently determining whether to use cached or non-cached memory access commands when accessing a non-volatile memory (NVM) device, such as a particular die of a multi-die NAND flash memory. In some examples, the data storage controller assesses the fill status of a particular memory access die queue (e.g., whether the queue is mostly full or mostly empty) and then determines whether to submit memory access commands to a NAND die as cached operations or non-cached operations based on the assessed fill status. In illustrative examples, the determination is made by a die manager based on the number of entries in the queue, with cached commands used if the entries exceed a predetermined threshold, and non-cached commands used otherwise. Method, system and apparatus examples are provided herein.

Claims (72)

1. A method for use by a data storage controller, comprising:

assessing a fill status of a memory access queue associated with a memory device, the memory device including a memory die with cache memory and non-cache memory;

determining whether to submit memory access operations to the memory die as cached operations or as non-cached operations based on the fill status of the memory access queue; and

submitting the memory access operations to the memory die as cached operations or as non-cached operations based on the determination.

2. The method of claim 1 , wherein assessing the fill status of the memory access queue includes determining a number of entries in the memory access queue.

3. The method of claim 2 , wherein the memory access queue includes a read request queue, and wherein determining the number of entries in the memory access queue includes receiving a value indicative of the number of entries in the read request queue.

4. The method of claim 1 , wherein, if the memory access operations are submitted to the memory die as cached operations, automatically resuming non-cached submissions if the memory access queue becomes empty.

5. The method of claim 1 ,

wherein the memory access queue is a single-stage queue; and

wherein determining whether to submit the memory access operations to the memory die as cached operations or as non-cached operations includes comparing a number of entries in the single-stage queue to a single-stage queue threshold.

6. The method of claim 5 , wherein submitting the memory access operations to the memory die comprises:

submitting the memory access operations to the memory die as cached operations if the number of entries in the single-stage queue exceeds the single-stage queue threshold; and

submitting the memory access operations to the memory die as non-cached operations if the number of entries in the single-stage queue does not exceed the single-stage queue threshold.

7. The method of claim 1 ,

wherein the memory access queue is a two-stage queue that includes a first queue and a second queue, the second queue receiving entries only if the first queue is full; and

wherein determining whether to submit the memory access operations to the memory die as cached operations or as non-cached operations includes comparing a number of entries in the second queue to a second queue threshold.

8. The method of claim 7 , wherein submitting the memory access operations to the memory die comprises:

submitting the memory access operations as cached operations if the number of entries in the second queue exceeds the second queue threshold; and

submitting the memory access operations as non-cached operations if the number of entries in the second queue does not exceed the second queue threshold.

9. The method of claim 1 , wherein the data storage controller includes a die manager, and the die manager assesses the fill status of the memory access queue and determines whether to submit the memory access operations to the memory die as cached operations or as non-cached operations.

10. The method of claim 9 ,

wherein the memory device includes a plurality of memory dies with a separate memory access queue for each die, and

wherein the die manager determines a number of entries in each separate memory access queue and separately determines, on a queue-by-queue basis, whether to submit memory access operations to a particular die as cached operations or as non-cached operations based on the number of entries in the memory access queue for the particular die.

11. A data storage controller for use with a memory device, comprising:

a queue assessment component configured to determine a fill level of a memory access queue associated with the memory device, the memory device including a memory die with cache memory and non-cache memory;

a memory access determination component configured to determine whether to submit memory access operations to the memory die as cached operations or as non-cached operations based on the fill level of the memory access queue; and

a memory access controller configured to submit the memory access operations to the memory die as cached operations or as non-cached operations based on the determination made by the memory access determination component.

12. The data storage controller of claim 11 , wherein the queue assessment component and the memory access determination component are components of a die manager, the die manager configured to determine the fill level of the memory access queue and submit the memory access operations to the memory die as cached operations or as non-cached operations based on the fill level of the memory access queue.

13. The data storage controller of claim 12 ,

wherein the memory device includes a plurality of memory dies with a separate memory access queue for each die, and

wherein the die manager is configured to determine a number of entries in each separate memory access queue and to separately determine, on a queue-by-queue basis, whether to submit memory access operations to a particular die as cached operations or as non-cached operations based on the number of entries in the memory access queue for the particular die.

14. The data storage controller of claim 11 ,

wherein the queue assessment component includes a queue entry counter configured to count a number of entries in the memory access queue to assess the fill level; and

wherein the memory access determination component includes a queue threshold comparator configured to determine whether to submit the memory access operations as cached operations or as non-cached operations by comparing the count to a queue threshold.

15. The data storage controller of claim 14 , wherein the memory access queue is configured as a single-stage queue.

16. The data storage controller of claim 14 , wherein the memory access queue is configured as a two-stage queue that includes a first queue and a second queue, the second queue configured to receive entries only if the first queue is full, and wherein the queue entry counter is configured to count the number of entries in the second stage of the two-stage queue.

17. The data storage controller of claim 11 , wherein the memory access controller comprises a cached read submission controller and a non-cached read submission controller.

18. The data storage controller of claim 17 ,

wherein the cached read submission controller is configured to submit memory access operations as cached operations while the fill level exceeds a threshold; and

wherein the non-cached read submission controller is configured to submit the memory access operations as non-cached operations so long as the fill level does not exceed the threshold.

19. The data storage controller of claim 11 , wherein the memory die is a non-volatile memory (NVM) die.

20. A data storage device, comprising:

a non-volatile memory (NVM) device having a die; and

a die manager configured to

determine a fill level of a memory access queue associated with the die, and

submit memory access operations to the die as cached operations or as non-cached operations based on the fill level of the memory access queue.

21. The data storage device of claim 20 ,

wherein the NVM device includes a plurality of dies with a separate memory access queue for each of the plurality of dies, and

wherein the die manager is configured to determine a fill level of each separate memory access queue and to separately determine, on a queue-by-queue basis, whether to submit memory access operations to a particular die as cached operations or as non-cached operations based on the fill level of the memory access queue for the particular die.

22. The data storage device of claim 20 , wherein the NVM device is a NAND storage device.

23. An apparatus for use by a data storage controller, comprising:

means for determining a number of entries in a memory access queue associated with a memory device, the memory device including a memory die with cache memory and non-cache memory;

means for determining whether to submit memory access operations to the memory die as cached operations or as non-cached operations based on the number of entries in the memory access queue; and

means for submitting the memory access operations to the memory die as cached operations or as non-cached operations based on the determination made by the means for determining.

24. The apparatus of claim 23 ,

wherein the memory access queue is a single-stage queue; and

wherein the means for determining whether to submit the memory access operations to the memory device as cached operations or as non-cached operations includes means for comparing a number of entries in the single-stage queue to a single-stage queue threshold.

25. The apparatus of claim 24 , wherein the means for submitting the memory access operations to the memory die includes:

means for submitting the memory access operations as cached operations if the number of entries in the single-stage queue exceeds the single-stage queue threshold; and

means for submitting the memory access operations as non-cached operations if the number of entries in the single-stage queue does not exceed the single-stage queue threshold.

26. The apparatus of claim 23 ,

wherein the memory access queue is a two-stage queue that includes a first queue and a second queue, the second queue receiving entries only if the first queue is full; and

wherein the means for determining whether to submit the memory access operations to the memory device as cached operations or as non-cached operations includes means for comparing a number of entries in the second queue to a second queue threshold.

27. The apparatus of claim 23 , wherein the memory die is a non-volatile memory (NVM).

28. A method for use by a data storage controller, comprising:

assessing a fill status of a memory access queue associated with a memory device;

determining a memory access procedure for use in accessing the memory device based on the fill status of the memory access queue, including determining whether to submit memory access operations to the memory device as cached operations or as non-cached operations; and

accessing the memory device based on the determined memory access procedure, wherein, if memory access operations are being submitted to the memory device as cached operations, automatically resuming non-cached submissions if the memory access queue becomes empty.

29. A data storage controller for use with a memory device, comprising:

a queue assessment component configured to determine a fill level of a memory access queue associated with the memory device;

a memory access determination component configured to determine a memory access procedure for use in accessing the memory device based on the fill level of the memory access queue; and

a memory access controller configured to control access to the memory device based on the determined memory access procedure, wherein the memory access controller comprises a cached read submission controller and a non-cached read submission controller.

Assignments (10)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 5, 2018
From: GAVENS, LEE MERRILL
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 046274/0250 →