IP Library Granted Patent US 11,726,699
Granted Patent B2
US 11,726,699 · App. 17/217,778 · Granted Aug 15, 2023

Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification

Inventor: Shu Li (Bothell, WA)
Assignee: ALIBABA SINGAPORE HOLDING PRIVATE LIMITED
G06F3/0655G06F3/0604G06F3/0679G06F12/0862G06F2212/6026
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 11,726,699
App. No.
17/217,778
Granted
Aug 15, 2023
Kind
B2
Abstract

One embodiment provides a system which facilitates data management. The system receives, by a storage device via read requests from multiple streams, a first plurality of logical block addresses (LBAs) and corresponding stream identifiers. The system assigns a respective LBA to a first queue of a plurality of queues based on the stream identifier corresponding to the LBA. Responsive to determining that a second plurality of LBAs in the first queue are of a sequentially similar pattern: the system retrieves, from a non-volatile memory of the storage device, data associated with the second plurality of LBAs; and the system stores the retrieved data and the second plurality of LBAs in a volatile memory of the storage device while bypassing data-processing operations.

Claims (94)

1. A computer-implemented method, comprising:

receiving, by a storage device via read requests from multiple streams, a first plurality of logical block addresses (LBAs) and corresponding stream identifiers;

assigning a respective LBA to a first queue of a plurality of queues based on the stream identifier corresponding to the LBA; and

responsive to determining that a second plurality of LBAs in the first queue are of a sequentially similar pattern:

retrieving, from a non-volatile memory of the storage device, data associated with the second plurality of LBAs; and

storing the retrieved data and the second plurality of LBAs in a volatile memory of the storage device while bypassing data-processing operations, wherein the data-processing operations comprise an error correction code (ECC)-decoding and a cyclic redundancy check (CRC).

2. The method of claim 1 , further comprising:

responsive to determining, based on a predetermined threshold, that the second plurality of LBAs in the first queue are not of a sequentially similar pattern:

retrieving, from the non-volatile memory of the storage device, first data associated with the second plurality of LBAs;

refraining from storing the retrieved first data and the second plurality of LBAs in the volatile memory;

performing data-processing operations, including an error correction code (ECC)-decoding and a cyclic redundancy check (CRC), on the retrieved first data; and

returning the processed first data as error-free data to a requesting application.

3. The method of claim 1 ,

wherein the plurality of queues comprises first in, first out (FIFO) queues.

4. The method of claim 1 , wherein determining that the second plurality of LBAs in the first queue are of a sequentially similar pattern is based on a predetermined threshold and further comprises, for a first LBA and a second LBA assigned to the first queue:

truncating least significant bits of the first LBA and the second LBA;

comparing, based on a bitwise exclusive-or, the truncated first LBA and the truncated second LBA to obtain a first result;

accumulating the first result and other results from comparing pairs of truncated LBAs assigned to the first queue; and

tracking a current number of matching results based on the accumulated results.

5. The method of claim 4 , further comprising:

in response to determining that the current number of matching results is greater than the predetermined threshold, generating a decision that the second plurality of LBAs are of a sequentially similar pattern; and

in response to determining that the current number of matching results is not greater than the predetermined threshold, generating a decision that the second plurality of LBAs are not of a sequentially similar pattern.

6. The method of claim 1 , further comprising:

determining incoming LBAs associated with a first read request from a requesting application; and

comparing the incoming LBAs with the stored second plurality of LBAs to obtain a second result.

7. The method of claim 6 , wherein the retrieved data and the second plurality of LBAs are stored in the volatile memory as raw data, and wherein the method further comprises:

in response to determining, based on the second result, that the incoming LBAs match the stored second plurality of LBAs:

reading the raw data from the volatile memory;

performing data-processing operations, including an ECC-decoding and a cyclic redundancy check, on the raw data; and

returning the processed data as error-free data to a requesting application.

8. The method of claim 6 ,

in response to determining, based on the second result, that the incoming LBAs do not match the stored second plurality of LBAs:

retrieving, from the non-volatile memory of the storage device, second data associated with the incoming LBAs;

performing data-processing operations, including an ECC-decoding and a cyclic redundancy check, on the retrieved second data; and

returning the processed second data as error-free data to a requesting application.

9. The method of claim 8 ,

wherein the retrieved second data comprises requested data and unrequested data associated with the first read request,

wherein the data-processing operations are performed on the requested data associated with the first request, and

wherein the processed second data returned to the requesting application comprises the processed requested data associated with the first request.

10. The method of claim 1 , wherein determining that the second plurality of LBAs in the first queue are of a sequentially similar pattern is based on detecting a hint associated with an application.

11. A computer system, comprising:

a processor; and

a memory coupled to the processor and storing instructions which, when executed by the processor, cause the processor to perform a method, the method comprising:

receiving, by a storage device via read requests from multiple streams, a first plurality of logical block addresses (LBAs) and corresponding stream identifiers;

assigning a respective LBA to a first queue of a plurality of queues based on the stream identifier corresponding to the LBA; and

responsive to determining that a second plurality of LBAs in the first queue are of a sequentially similar pattern:

retrieving, from a non-volatile memory of the storage device, data associated with the second plurality of LBAs; and

storing the retrieved data and the second plurality of LBAs in a volatile memory of the storage device while bypassing data-processing operations, wherein the data-processing operations comprise an error correction code (ECC)-decoding and a cyclic redundancy check (CRC).

12. The computer system of claim 11 , wherein the method further comprises:

responsive to determining, based on a predetermined threshold, that the second plurality of LBAs in the first queue are not of a sequentially similar pattern:

retrieving, from the non-volatile memory of the storage device, first data associated with the second plurality of LBAs;

refraining from storing the retrieved first data and the second plurality of LBAs in the volatile memory;

performing data-processing operations, including an error correction code (ECC)-decoding and a cyclic redundancy check (CRC), on the retrieved first data; and

returning the processed first data as error-free data to a requesting application.

13. The computer system of claim 11 , wherein determining that the second plurality of LBAs in the first queue are of a sequentially similar pattern is based on a predetermined threshold and further comprises, for a first LBA and a second LBA assigned to the first queue:

truncating least significant bits of the first LBA and the second LBA;

comparing, based on a bitwise exclusive-or, the truncated first LBA and the truncated second LBA to obtain a first result;

accumulating the first result and other results from comparing pairs of truncated LBAs assigned to the first queue; and

tracking a current number of matching results based on the accumulated results.

14. The computer system of claim 13 , wherein the method further comprises:

in response to determining that the current number of matching results is greater than the predetermined threshold, generating a decision that the second plurality of LBAs are of a sequentially similar pattern; and

in response to determining that the current number of matching results is not greater than the predetermined threshold, generating a decision that the second plurality of LBAs are not of a sequentially similar pattern.

15. The computer system of claim 11 , wherein the retrieved data and the second plurality of LBAs are stored in the volatile memory as raw data, and wherein the method further comprises:

determining incoming LBAs associated with a first read request from a requesting application;

comparing the incoming LBAs with the stored second plurality of LBAs to obtain a second result; and

in response to determining, based on the second result, that the incoming LBAs match the stored second plurality of LBAs:

reading the raw data from the volatile memory;

performing data-processing operations, including an ECC-decoding and a cyclic redundancy check, on the raw data; and

returning the processed data as error-free data to a requesting application.

16. The computer system of claim 15 , wherein the method further comprises:

in response to determining, based on the second result, that the incoming LBAs do not match the stored second plurality of LBAs:

retrieving, from the non-volatile memory of the storage device, second data associated with the incoming LBAs;

performing data-processing operations, including an ECC-decoding and a cyclic redundancy check, on the retrieved second data; and

returning the processed second data as error-free data to a requesting application.

17. The computer system of claim 11 , wherein determining that the second plurality of LBAs in the first queue are of a sequentially similar pattern is based on detecting a hint associated with an application.

18. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method, the method comprising:

receiving, by a storage device via read requests from multiple streams, a first plurality of logical block addresses (LBAs) and corresponding stream identifiers;

assigning a respective LBA to a first queue of a plurality of queues based on the stream identifier corresponding to the LBA; and

responsive to determining that a second plurality of LBAs in the first queue are of a sequentially similar pattern:

retrieving, from a non-volatile memory of the storage device, data associated with the second plurality of LBAs; and

storing the retrieved data and the second plurality of LBAs in a volatile memory of the storage device while bypassing data-processing operations, wherein the data-processing operations comprise an error correction code (ECC)-decoding and a cyclic redundancy check (CRC).

19. The storage medium of claim 18 , wherein the retrieved data and the second plurality of LBAs are stored in the volatile memory as raw data, and wherein the method further comprises:

determining incoming LBAs associated with a first read request from a requesting application;

comparing the incoming LBAs with the stored second plurality of LBAs to obtain a second result; and

in response to determining, based on the second result, that the incoming LBAs match the stored second plurality of LBAs:

reading the raw data from the volatile memory;

performing data-processing operations, including an ECC-decoding and a cyclic redundancy check, on the raw data; and

returning the processed data as error-free data to a requesting application.

20. The storage medium of claim 18 , wherein the method further comprises:

responsive to determining, based on a predetermined threshold, that the second plurality of LBAs in the first queue are not of a sequentially similar pattern:

retrieving, from the non-volatile memory of the storage device, first data associated with the second plurality of LBAs;

refraining from storing the retrieved first data and the second plurality of LBAs in the volatile memory;

performing the data-processing operations on the retrieved first data; and

returning the processed first data as error-free data to a requesting application.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2026
From: ALIBABA INNOVATION PRIVATE LIMITED
To: CLOUD INTELLIGENCE ASSETS HOLDING (SINGAPORE) PRIVATE LIMITED
Reel/Frame 075494/0445 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 6, 2024
From: ALIBABA SINGAPORE HOLDING PRIVATE LIMITED
To: ALIBABA INNOVATION PRIVATE LIMITED
Reel/Frame 066397/0167 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 5, 2021
From: LI, SHU
To: ALIBABA SINGAPORE HOLDING PRIVATE LIMITED
Reel/Frame 055827/0837 →