IP Library Granted Patent US 10,642,502
Granted Patent B2
US 10,642,502 · App. 16/024,617 · Granted May 5, 2020

System and method for prediction of read commands to non-sequential data

Inventors: Eran Sharon (Rishon Lezion, IL); Ariel Navon (Revava, IL); Idan Alrod (Herzliya, IL)
Assignee: Western Digital Technologies, Inc.
G06F3/0613G06F3/0656G06F3/0659G06F3/0679G06F12/10G06F2212/1024G06F2212/657
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,502
App. No.
16/024,617
Granted
May 5, 2020
Kind
B2
Abstract

Systems and methods for predicting read commands and pre-fetching data when a memory device is receiving random read commands to non-sequentially addressed data locations are disclosed. A limited length sequence of prior read commands is generated and that search sequence is then converted into an index value in a predetermined set of index values. A history pattern match table having entries indexed to that predetermined set of index values contains prior read commands that have previously followed the search sequence represented by the index value. The index value is obtained via application of a many-to-one algorithm to the search sequence. The index value obtained from the search sequence may be used to find, and pre-fetch data for, a next read command in the table that previously followed a search sequence having that index.

Claims (64)

1. A method for predicting random read commands, the method comprising:

receiving, at a memory device, a current read command for data located at a starting address discontiguous with an address range associated with a last read command received prior to the current read command;

generating, with a controller of the memory device, a search sequence comprising a plurality of prior read commands including at least the current read command and the last read command;

calculating, with the controller, based on the search sequence, an index value within a predetermined range of index values, the calculated index value representative of the search sequence;

retrieving, from an entry in a prior read command data structure stored in a first memory of the memory device and indexed by the calculated index value, data representative of a historical next read command associated with the calculated index value; and

pre-fetching data from a second memory of the memory device to the first memory of the memory device based on the retrieved data representative of the historical next read command.

2. The method of claim 1 , further comprising the controller, responsive to receiving a next read command following the current read command:

recalculating the index value for the search sequence previously generated with the current read command; and

updating the entry in the prior read command data structure indexed with the recalculated index value with read command data associated with the next read command.

3. The method of claim 1 , further comprising the controller, responsive to receiving a next read command following the current read command:

retrieving the index value calculated for the search sequence previously generated with the current read command; and

updating the entry in the prior read command data structure indexed with the index value with read command data associated with the next read command.

4. The method of claim 3 , wherein the read command data associated with the next read command comprises a start address for the next read command.

5. The method of claim 4 , wherein the read command data associated with the next read command further comprises a data length for the next read command.

6. The method of claim 2 , wherein:

the entry in the prior read command data structure comprises a single memory location; and

updating the entry in the prior read command data structure indexed with the index value with read command data associated with the next read command comprises overwriting the data representative of the historical next read command with read command data associated with the next read command.

7. The method of claim 2 , wherein:

the entry in the prior read command data structure indexed with the index value in the prior read command data structure comprises a plurality of memory locations; and

responsive to all of the plurality of memory locations already containing data representative of historical next read commands:

updating the entry comprises removing data from a memory location in the entry having an oldest historical next read command and writing read command data associated with the next read command to the entry of the prior read command data structure.

8. The method of claim 1 , wherein calculating based on the search sequence, the index value within the predetermined range of index values comprises the controller applying a many-to-one mapping function to the search sequence to assign one of the predetermined range of index values as the index value.

9. The method of claim 8 , wherein the many-to-one mapping function comprises an O(1) complexity function.

10. The method of claim 9 , wherein:

the O(1) complexity function comprises a hash function followed by a modulo operation; and

calculating the index value based on the search sequence further comprises:

the controller applying a value of the search sequence as input for the hash function and processing a result of the hash function with a modulo operation having an output limited to index values in the predetermined range.

11. A memory device comprising:

a first memory;

a second memory comprising:

a search sequence buffer; and

a prior read command data structure, the prior read command data structure having only a predetermined number of entries that are each indexed with a respective index value within a predetermined range of index values; and

a controller in communication with the first memory and the second memory, the controller configured to:

receive a current read command comprising read command data including a start logical block address (LBA) and a data length, where the start LBA of the current read command is discontiguous with an address range associated with a last read command received prior to the current read command;

generate a search sequence in the search sequence buffer based on read command data from a plurality of prior read commands including at least the current read command and the last read command;

calculate an index value, based on the search sequence, within the predetermined range of index values;

retrieve, from an entry in the prior read command data structure indexed by the calculated index value, data representative of a historical next read command associated with the calculated index value; and

pre-fetch data from the first memory to the second memory based on the retrieved data representative of the historical next read command.

12. The memory device of claim 11 , wherein:

the first memory comprises non-volatile memory; and

the second memory comprises volatile memory.

13. The memory device of claim 12 , wherein the non-volatile memory comprises a substrate formed with a three-dimensional memory structure.

14. The memory device of claim 11 , wherein the search sequence comprises the start LBA of the current read command and a respective start LBA of each of a predetermined number of prior read commands arranged chronologically in order of read command receipt at the controller.

15. The memory device of claim 11 , wherein:

the search sequence comprises a list, arranged chronologically by time of read receipt at the controller, of differential logical block address (DLBA) information for the current read command and each other of a predetermined number of prior read commands; and

each DLBA comprises a difference between a start LBA of a respective read command and a start LBA of a last read command received prior to the respective read command.

16. The memory device of claim 15 , wherein:

each of the predetermined number of entries of the prior read command data structure comprises at least one memory element configured to hold data representative of a historical next read command;

the data representative of the historical read command comprises a DLBA of the historical next read command; and

to pre-fetch data from the first memory of the memory device to the second memory based on the data representative of the historical next read command, the controller is further configured to convert the DLBA of the historical read command to a start LBA based on the start LBA in the current read command.

17. The memory device of claim 11 , wherein to calculate an index value, based on the search sequence, within the predetermined range of index values, the controller is further configured to apply a many-to-one mapping function to the search sequence to assign one of the predetermined range of index values as the index value.

18. The memory device of claim 17 , wherein the many-to-one mapping function comprises an O(1) complexity function.

19. The memory device of claim 18 , wherein:

the O(1) complexity function comprises a hash function followed by a modulo operation; and

to calculate the index value based on the search sequence, the controller is further configured to apply a value of the search sequence as input for the hash function and process a result of the hash function with the modulo operation, wherein the module operation comprises an operation to limit index values to within the predetermined range.

20. A memory device comprising:

a first memory;

a second memory;

means for updating a prior read command data structure of prior next read commands in the second memory by:

calculating, from a sequence of read commands preceding a current read command, one of a plurality of predetermined index values; and

storing read command data for the current read command in an entry of the prior read command data structure indexed by the one of the plurality of predetermined index values; and

means for predicting and pre-fetching data for a next read command by:

calculating an index value of the plurality of predetermined index values from a search sequence of prior received read commands; and

retrieving read command data from a historical next read command in an entry of the prior read command data structure indexed to the calculated index value.

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 12, 2018
From: SHARON, ERAN; NAVON, ARIEL; ALROD, IDAN
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 046334/0889 →