System and method for predictive read of random data
AssigneeWestern Digital Technologies, Inc.
InventorsAriel Navon, Eran Sharon, Idan Alrod
Life of this patent
Estimating the term…
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 are generated and compared to a read command history datastore. When a prior pattern of read commands is found corresponding to the search sequence, a next read command that previously followed that search sequence may be used as a predicted next read command and data pre-fetched based on the read command data location information associated with that prior read command that is being used as the predicted read command.
Claims20
A non-volatile memory system comprising:
- a non-volatile memory;
- a volatile memory;
- and
- a controller in communication with the non-volatile memory and the volatile memory, the controller configured to:
- receive a current read command comprising read command data location information for data to be read from the non-volatile memory;
- generate, in the volatile memory, a read command search sequence comprising a list of read command data location information for the current read command and for each of a predetermined number of read commands received sequentially prior to the current read command;
- compare the generated read command search sequence to a prior read command datastore, the prior read command datastore comprising a list of prior read commands arranged in chronological order of receipt;
- and
- responsive to a sequential portion of the list of prior read commands matching the generated read command sequence, retrieve predicted data location information from a next more-recent prior read command in the prior read command datastore located after the sequential portion.
A non-volatile memory system comprising:
- a non-volatile memory;
- a volatile memory;
- and
- a controller in communication with the non-volatile memory and the volatile memory, the controller configured to:
- receive a current read command comprising a start logical block address (LBA) and a data length;
- calculate a differential logical block address (DLBA) for the current read command, wherein the DLBA comprises a difference between the start LBA of the current read command and a start LBA of a last read command received prior to the current read command;
- store, in the volatile memory, the DLBA and the data length for the current read command in a read command history datastore of prior received read commands, each of the prior received read commands having respective DLBA information and data length information stored in the read command history datastore and each prior read command arranged chronologically by time of receipt at the controller;
- generate a read command search sequence in the volatile memory, the read command search sequence comprising, arranged in chronological order by time of read command receipt at the controller, the DLBA for the current read command and a respective DLBA previously determined for each of a predetermined number of prior read commands;
- compare the generated read command search sequence to the read command history datastore;
- and
- responsive to a determination that a sequential portion of the read command history datastore is a match to the generated read command search sequence:
- pre-fetch data from a predicted location on the non-volatile memory into the volatile memory, wherein the predicted location comprises an address based on DLBA information of a next read command after the sequential portion of the read command history datastore.
A method for predicting random read data comprising:
- receiving, at a controller of a memory device, a current read command comprising multiple types of read command data location information for data to be read from a first memory in the memory device;
- generating, with the controller, a read command search sequence in a second memory of the memory device, wherein the read command search sequence comprises a list of at least one of the multiple types of read command data location information for the current read command and for each of a predetermined number of prior received read commands received sequentially before the current read command;
- comparing, with the controller, the read command search sequence to a prior read command datastore in the second memory, the prior read command datastore comprising a list of prior read commands arranged in chronological order of receipt at the controller;
- responsive to a sequential portion of the list of prior read commands in the prior read command datastore matching the read command sequence, retrieving predicted data location information from a next more recent prior read command in the prior read command datastore located after the sequential portion;
- and
- pre-fetching data from the first memory to the second memory, prior to receiving a next read command at the memory device, based on the predicted data location information.
A memory device comprising:
- a non-volatile memory;
- a volatile memory;
- and
- random read prediction means for:
- receiving a current read command comprising a start logical block address (LBA) and a data length;
- calculating a differential logical block address (DLBA) for the current read command, wherein the DLBA comprises a difference between the start LBA of the current read command and a start LBA of a last read command received prior to the current read command;
- storing the DLBA and the data length for the current read command in a read command history datastore of prior received read commands in the volatile memory, each of the prior received read commands having respective DLBA information and data length information stored in the read command history datastore and each prior read command arranged in chronological order by time of receipt at a controller of the memory device;
- generating a read command search sequence in the volatile memory, the read command search sequence comprising, arranged in chronological order by time of read command receipt, the DLBA for the current read command and a respective DLBA previously determined for each of a predetermined number of prior read commands;
- comparing the generated read command search sequence to the read command history datastore;
- and
- responsive to a determination that a sequential portion of the read command history datastore is a match to the read command search sequence, pre-fetching data from an address based on DLBA information of a next read command after the sequential portion of the read command history datastore.
Dependencies are inferred from the claim text.